绿茶的学习生活

C-Linux-VHDL

  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  2 随笔 :: 7 文章 :: 2 评论 :: 0 Trackbacks
一、基本标识符
VHDL中,基本标识符有:“A-Z”,“a-z”,“0-9”以及“_"VHDL不区分大小写。标识符必须以字母开头,不能以下划线结尾,不能出现连续两个或多个下划线。

##########################################################################################

二、数据对象
数据对象可看做数值的载体,有三种形式的对象:常量,变量,信号
常量声明格式:
constant 常数名: 数据类型:=表达式
constant vcc:real:=3.1  --常数名vcc,数据类型real,赋初始值为3.1

变量声明格式:
variable 变量名:数据类型:=初始值、表达式
variable temperature:std_logic:='0'   --变量名temperature,数据类型std_logic,初始值为0
a(3 to6):=('1','1','1','0');   --段赋值
a(7):='0'      --位赋值

信号:信号是电子电路内部硬件连接的抽象,可以将结构体中分离的并行语句连接起来,并能通过端口于其他模块连接。信号可以随时间改变,不像变量赋值,立即生效,允许产生时延。
信号通常在实体(entity)、结构体和程序包中使用,但不能在进程中说名。
对信号赋值使用符号“<="号,允许产生时延(一般用delta表示延时),这和实际原件的传输延时特性吻合。
信号声明格式:
signal 信号名:数据类型:=初始值
signal a:bit:='0'  --信号名a,数据类型是位数据,初值为0
注:赋值符号“:=与<=”的不同在于,:=赋值后,会立即生效,而不产生延时。
信号可以赋初始值,也可不赋。即取默认值,指定数据类型的最左值例如:
signal INIT:bit_vector(7 downto 0);    --定义信号INIT是位矢量
signal c:integer range 0 to 15;              --定义信号c的数据类型是整数类型,整数范围0-15
signal y,x:real;                                     --定义信号y、x数据为实数
y<=x;                                                 --经过delta延时后将x值赋给y   

#####################################################################################

三、数据类型
标准数据类型
常见的数据类型共有10种:
  
数据类型    含义 备注 eg.
整数           integer +125,-345
实数 实数范围-1.0E38-1.0E38 real 1.0,——2.5e23
逻辑0或1 bit ‘1’,‘0’
位矢量 位矢量 bit_vector(双括号括起来) “0110”
布尔矢量 逻辑真或假

boolean(只有true和false)

字符 ASCII字符 character ‘a’
时间 整数和时间单位

time,fs,ps,ns,us,ms,sec,min,hr

time,fs,ps,ns,us,ms,sec,min,hr

20us
错误等级 VHDL程序在编译、仿真、综合过程的工作状态 severitylevel notewarning,errorfailure note,warning可以忽略,error,failure不可忽略
自然数、正整数 整数的子集 natural,positive
字符串 字符矢量 string双引号括起来的字符序列 “start”

          
用户自定义数据类型
VHDL允许用户自定义数据类型
定义格式:
type 数据类型名称 is 数据类型定义;
VHDL常用的用户自定义类型包括枚举类型,整数类型,数组类型,子类型等
枚举型:
type 数据类型名称 is(元素1,元素2,......);
eg.  type color is(blue,green,brown);
枚举类型,编码顺序是默认的,左边第一元素编码为0,以后依次加1.编码过程中自动将每个元素转变成位矢量,位矢量的长度由所列举元素个数决定。

整数类型,实数类型。
自定义的整数类型、实数类型是标准的整数、实数的子类型,是跟据特殊需要自己定义的。目的是降低逻辑综合的复杂型和提高芯片利用率。
定义格式:
type 数据类型名称 is integer range 整数范围;
type 数据类型名称 is real range 实数范围;

数组类型:
type 数组类型名称 is array 范围 of 数组元素的数据类型
type 数据类型名称 is array (range<>)of 数组元素的数据类型;
其中范围是用整数指明数组的上下界,是一个限定数组
例如:type stb is array (7 downto 0) of bit;
variable addend:stb      --变量addend定义为std数组

子类型:子类型说明语句就是对已经存在的基本数据类型作一些范围限制,形成了新的一种数据类型,即子类型subtype 
subtype定义格式:
subtype 子类型名 is 基本数据类型 range 约束范围
eg: type nat is integer range 0 to 999;  --自定义整数类型nat是整数,范围0-999

IEEE标准数据类型“std-logic”和“std-logic-vector”
std-logic:标准逻辑位
std-logic-vector:标准逻辑矢量
std-logic定义了9种不同的值,增加了不定态“X”和高阻态“Z”
U--初始值;  X--不定,未知;  0--0;  1--1;  Z--高阻;  W--弱信号不定,未知;
L--弱信号0;  H--弱信号1; “ 一”--不可能状态

类型转换
类型转换函数表
函数名   功能
std_logic_1164程序包
to_std_logic_vector(a) 由bit_vector转换为std_logic_vector
to_bit_vector(a) 由std_logic_vector转换为sbit_vector
to_std_logic(a) 由bit转换为std_logic
to_bit(a)    由std_logic转换位bit
std_logic_arith程序包:
conv_std_logic_vector(a) 由integer、unsigned、signed转换为std_logic_vector
conv_integer(a) 由unsigned、signed转换为integer
std_logic_unsigned程序包:
conv_integer(a) 由std_logic_vector转换为integer


(以上内容是学习VHDL语言的一些网络笔记,以备后用)

posted on 2008-07-05 12:32 绿茶 阅读(2231) 评论(0)  编辑 收藏 引用 所属分类: VHDL语言学习
只有注册用户登录后才能发表评论。