- 50
- 0
- 约4.49万字
- 约 39页
- 2016-10-16 发布于贵州
- 举报
第5章 VHD设计进阶
第5章 VHDL设计进阶
尽管第3章中已对所涉及的语法现象作了详尽的说明和示例诠释,但细心的读3章中通过VHDL语法结构和语言现象说明的办法,通过一些典型示VHDL语法知识:同时,对第3章中尚存的疑点作深入的VHDL程序设计的内存规律,以VHDL的数字系统设计技术。
5.1 数据对象
在VHDL(VARIABLE)、常量(CONSTANT)和信号(SlGNAL)。第3章中曾提到,数据对象类似于一种容器,它接受不同数据类型的赋值。VHDL中最有特色的语言要素之一。尽管信号和变量已在前面一些示例VHDL程序的更好理解和设计技3章中出现的一些语法现象作更为深入的讨沦。
5.1.1 常数
通常,常数的定 一旦作了数据类型和赋值定义后,在程序中就不
CONSTANT常数名:数据类型::表达式;
例如:
CONSTANT FBT:STD_LOGIC_VECTOR:=010110; --定义常数为标准位矢类型
CONSTANT DATAIN:INTEGER:=]5 j 定义常数为整数类型
第1句定义常数FBT的数据类型是STD_LOGIC_VECTOR,它等于“010110”;第2句定义常数DATAIN的数据类型是整数INTEGER,它等于15。
VHDL要求所定义的常量数据类型必须与表达式的数锯类型一致。常数定义语句所
常数的可视性,即常数的使用范围取决于它被定义的位置。如果在程序包中定义,(如含多结构体时);如果常数
5.1.2 变量
在VHDL语法规法规则中,变量是一个局部量,只能在进程和子程序中使用。变量不
定义变量的一股表述如下:
VARIABLE变量名:数据类型:=初始值;
例如以下两句表述分别定义了a的取值范围为0~15的整数变量;d为标准位类型1。
VARIABLE a:INTEGER RANGE 0 TO 15 ; --变最a定义为常数,取值范围是0~15
VARIABLE d:STD LOGIC:=1; --变量d定义为标准逻辑位数据类型,初始值是1
变量作为局部量,其适用范围仪限于定义了变量的进程或子程序的顺序语句中。在
在变量定义语句中可以定义初始值,这是一个与变量具有相同数
由于硬件电路上电后的随机性,综合器并不支持设置初始值。定义的初始值仅对HDL仿真器是有效的,对综合器无效。,变量赋值的一般表述如下:
目标变量名:=表达式 ;
由此式可见,变量赋值符号是“::”,变量数值的改变是通过变量赋值来实现的。
VARIABLE x,y:INTEGER RANGE 15 DOWNTO 0; --分别定义变量x和y为整数类型
VARIABLE a,b:STD_LOC!C_VECTOR(7 DOWNTO 0);
x:=11; --整数直接赋值
y:=2+x ; --运算表达式赋值,y也是整数变量
a:=b; --b向a赋值
a(0 T0 5) := b(2 T0 7 ) ; --位矢量类型值
5.1.3信号
信号是描述硬件系统的基本数据对象。信号可以作为设计实体中许行语句模块间的(这)。这一属性与触发器的记忆功能有很好的对应关系,只是不必
SIGNAL信号名:数据类型:=初始值;
同样,信号初始值的设置也不是必需的,而且初始值仅在VHDL的行为仿真中有
事实上,除了没有方向说明以外,信号与实体的端口(Port)概念是一致的。对于端(设计芯片内部)的端口;反之,实体的端口只是一种隐形的信号,在实体中对端(这点与Verilog有所区别)。
此外还需要注意,信号的使用和定义范围是实体、结构体和程序包。在进程和子程
当对信号定义了数据类型和表达方式后,在VHDL设计中就能对信号进行赋值了。
目标信号名=表达式 AFTER 时间量; -- AFTER 是关键词
这里的“表达式”可以是一个运算表达式,也可以是数据对象(变量、信号或常量)。(即“时间量”),如AFTER 3 ns。因此目标信号获得传(等效于AFTER 0 ns,即不作任何显式的延时设),也要经历一个特定的延时,即δ延时。因此,符号“=”两边的数值并不总是一AFTER x ns语句也仅对VHDL仿真有效,因而无法综合出任何对应的硬件电路。
信号的赋值可以出现在一个进程中,也可以直接出现在结构体的并行语句结构中,(赋值)的含义是不一样的。前肯属顺序信号赋值,这时的信号赋值操作要视
在进程中,可以允许同一信号有多个(赋值源),即在同一进程中存存多个
原创力文档

文档评论(0)