• / 39
  • 下载费用:10 金币  

第5章 VHDL设计进阶.doc

关 键 词:
第5章 VHDL设计进阶.doc
资源描述:
第 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~15VARIABLE 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
展开阅读全文
  微传网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:第5章 VHDL设计进阶.doc
链接地址:https://www.weizhuannet.com/p-9505622.html
微传网是一个办公文档、学习资料下载的在线文档分享平台!

微传网博客

网站资源均来自网络,如有侵权,请联系客服删除!

 网站客服QQ:80879498  会员QQ群:727456886

copyright@ 2018-2028 微传网络工作室版权所有

     经营许可证编号:冀ICP备18006529号-1 ,公安局备案号:13028102000124

收起
展开