VHDL的构造体_第1页
VHDL的构造体_第2页
VHDL的构造体_第3页
VHDL的构造体_第4页
VHDL的构造体_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VHDLVHDL的构造体:的构造体: architecture architecturearchitecture arch_name of architecture arch_name of entity_name isentity_name is 说明部分说明部分 declarations and definitions; declarations and definitions; beginbegin 语句部分语句部分 concurrent statement; concurrent statement; end arch_name;end arch_name;构造体语法要点构造体语法要点

2、每个构造体必须属于一个实体;每个构造体必须属于一个实体;每个构造体必须有一个名称:每个构造体必须有一个名称:通常可以根据描述方式起名:通常可以根据描述方式起名: str rtl behstr rtl beh构造体分为两部分:构造体分为两部分:is is bigin: bigin: 说明语句;说明语句;bigin bigin end: end: 并行语句;并行语句; 构造体的说明语句构造体的说明语句type declarations; type declarations; 类型说明类型说明signal declarations; signal declarations; 信号说明信号说明cons

3、tant declarations; constant declarations; 常量说明常量说明component declarations; component declarations; 元件说明元件说明function definitions; function definitions; 函数说明函数说明procedure definitions; procedure definitions; 过程说明过程说明构造体的并行语句构造体的并行语句信号赋值语句信号赋值语句 数据流描述数据流描述元件例化语句元件例化语句 结构描述结构描述进程语句进程语句 行为描述行为描述每条并行语句形成一个电

4、路逻辑单元。每条并行语句形成一个电路逻辑单元。构造体的其他语法要点构造体的其他语法要点除了第一句和除了第一句和beginbegin句外,其余各句均句外,其余各句均以分号结束;以分号结束;在每一部分中,各语句处于并列状态,在每一部分中,各语句处于并列状态,执行时不分先后次序;执行时不分先后次序;定义语句需要考虑使用的顺序。定义语句需要考虑使用的顺序。VHDLVHDL的数据对象的数据对象SignalSignal 信号信号ConstantConstant 常量常量VariableVariable 变量变量每个数据对象必须有特定的名称;每个数据对象必须有特定的名称;数据对象的命名规则与实体名相同;数据

5、对象的命名规则与实体名相同;VHDLVHDL的信号:的信号:signal电路中端口、连接线的体现,具有具体物电路中端口、连接线的体现,具有具体物理含义,在构造体内为全局变量;理含义,在构造体内为全局变量;信号使用前必须先进行说明:信号使用前必须先进行说明: 输入输入/ /输出信号在实体中说明;输出信号在实体中说明; 通用信号在包集合中进行说明;通用信号在包集合中进行说明; 模块内部信号在结构体内说明;模块内部信号在结构体内说明;信号说明语句基本格式信号说明语句基本格式signal signal_name : signal_type; signal signal_name : signal_ty

6、pe; 信号名信号名 信号类型信号类型 例:例:signal temp : std_logic;signal temp : std_logic;signal bus_a : std_logic_vector(7 signal bus_a : std_logic_vector(7 downto 0);downto 0);注意:端口(输入注意:端口(输入/ /输出)信号已在实体输出)信号已在实体中说明,在结构体中就不再说明;中说明,在结构体中就不再说明;信号的赋值信号的赋值在程序中采用在程序中采用“=”“=”(赋值语句)进行:(赋值语句)进行: 信号名信号名 = = 信号值(表达式);信号值(表达

7、式);例:例: temp=1 temp=1;z=x and not yz=x and not y; d= d0);0):(others=0);当没有指定初始值时,默认为其数据类型中的当没有指定初始值时,默认为其数据类型中的第一个值(最左边的值);第一个值(最左边的值);变量的赋值变量的赋值注意:注意:变量只在函数、过程、进程等子结构中变量只在函数、过程、进程等子结构中使用,一旦子结构执行结束,变量值随使用,一旦子结构执行结束,变量值随即消失;即消失; 因此,在一个结构体中,同一个变量因此,在一个结构体中,同一个变量名可以出现在不同的子程序中,表达不名可以出现在不同的子程序中,表达不同的数据对象

8、。同的数据对象。VHDLVHDL的数据类型的数据类型每一个数据对象都必须规定其类型;每一个数据对象都必须规定其类型;类型规定了数据的数据形式、取值范围、类型规定了数据的数据形式、取值范围、排列顺序、可进行的运算;排列顺序、可进行的运算;VHDLVHDL规定了若干预定义类型,用户可以规定了若干预定义类型,用户可以利用预定义类型来设置自定义类型;利用预定义类型来设置自定义类型;常用预定义类型常用预定义类型预定义类型在相关的包集合中定义预定义类型在相关的包集合中定义std.standardstd.standard: bitbit(位)、(位)、booleanboolean(布尔)(布尔) integ

9、erinteger(整数)、(整数)、realreal(实数)(实数)ieee.std_logic_1164ieee.std_logic_1164: std_logic(std_logic(标准逻辑量标准逻辑量) );ieee.std_logic_arithieee.std_logic_arith: signedsigned、unsignedunsigned;常用预定义类型常用预定义类型bitbit、bit_vectorbit_vector:2 2值逻辑值逻辑数据范围(数据范围(0 0,1 1),用于逻辑运算),用于逻辑运算说明方式:说明方式:signal xsignal x:bitbit;-

10、x-x为为1 1位逻辑信号;位逻辑信号;signal ysignal y:bit_vectorbit_vector(3 downto 03 downto 0););-y-y为为4 4位逻辑信号,最高位为位逻辑信号,最高位为y y(3 3),),在最左边;在最左边;常用预定义类型常用预定义类型bitbit、bit_vectorbit_vector:常数表达形式:常数表达形式一位逻辑量采用单引号:一位逻辑量采用单引号: 1 0多位逻辑量采用双引号:多位逻辑量采用双引号: 1001可以采用其他进制的缩写形式:可以采用其他进制的缩写形式: b 1001 o 7777 xffff常用预定义类型常用预定义

11、类型booleanboolean:(:(falthfalth,truetrue)逻辑量,用于关系判断;逻辑量,用于关系判断;可进行逻辑运算可进行逻辑运算; ;不能表达为多位数组;不能表达为多位数组;常用预定义类型常用预定义类型integerinteger:(:(-2-231-131-1 - +2+231-131-1)算术量,用于算术运算;算术量,用于算术运算;其子集合有其子集合有naturalnatural和和positivepositive;考虑到电路综合效率,对于整数类型考虑到电路综合效率,对于整数类型, ,可可以在说明时对数据范围进行限制;以在说明时对数据范围进行限制;常用预定义类型常用

12、预定义类型例:整数类型的范围例:整数类型的范围entity t isentity t isport(a,b: in integer range 0 to 15;port(a,b: in integer range 0 to 15; f: out bit);f: out bit);end t;end t;如果不加范围限制,如果不加范围限制,a a、b b都是都是3232位,加位,加限制后,变为限制后,变为4 4位;位;常用预定义类型常用预定义类型整数类型的一些常数表达形式整数类型的一些常数表达形式十进制数十进制数 120000=12E4=120_000 ; 120000=12E4=120_000

13、 ;二进制数二进制数 2#1111_1111#=2:1111_1111: 2#1111_1111#=2:1111_1111: 1616进制数进制数 16#FFFF#=16:FFFF: 16#FFFF#=16:FFFF:常用预定义类型常用预定义类型charactercharacter、stringstring:ISO 8ISO 8位字符集(前位字符集(前128128个为个为ASCASC编码符号),综合性较差,主要用编码符号),综合性较差,主要用于仿真;于仿真;在字符类型中,大写字母和小写字母表达不同在字符类型中,大写字母和小写字母表达不同含义,需要加以区分;含义,需要加以区分;例如:例如:AA和

14、和aa分别表达不同的字符。分别表达不同的字符。 常用预定义类型常用预定义类型可通过连接运算将字符组合为字符串,可通过连接运算将字符组合为字符串,或将短字符串连接成长字符串:或将短字符串连接成长字符串: & &字符串的例子:字符串的例子: string & literal Hello, I said! %Sale: 50% off!%;常用预定义类型常用预定义类型realreal:(:(-10-103838 - +10+103838)算术量,只能用)算术量,只能用于抽象描述及仿真,不可综合;于抽象描述及仿真,不可综合;例:十进制数例:十进制数 120000.0=1.2E5

15、=12.0E4 120000.0=1.2E5=12.0E4 timetime:物理量,由整数和相关单位字符构成,:物理量,由整数和相关单位字符构成,不可综合;不可综合;例:例: 50 ns 3 sec 25 hr 50 ns 3 sec 25 hr 可进行算术运算可进行算术运算常用预定义类型常用预定义类型std_logicstd_logic、std_logic_vectorstd_logic_vector:8 8值逻辑值逻辑数据范围(数据范围(X X,0 0,1 1,Z Z,W W,L L,H H,- -)std_ulogicstd_ulogic、std_ulogic_vectorstd_ul

16、ogic_vector:9 9值逻辑值逻辑数据范围(数据范围(U U,X X,0 0,1 1,Z Z,W W,L L,H H,- -)用于逻辑运算;用于逻辑运算;常用预定义类型常用预定义类型std_logicstd_logic、std_logic_vectorstd_logic_vector:8 8值逻辑值逻辑数据范围(数据范围(X X,0 0,1 1,Z Z,W W,L L,H H,- -)用于逻辑运算;用于逻辑运算;X X:强不定;:强不定; 0 0:强:强0 0; 1 1:强:强1 1; Z Z:高阻:高阻W W:弱不定;:弱不定; L L:弱:弱0 0; H H:弱:弱1 1; - -

17、:不出现;:不出现;只有只有0 0、1 1、Z Z可以综合,其他只用于仿真;可以综合,其他只用于仿真;常用预定义类型常用预定义类型std_logicstd_logic、std_logic_vectorstd_logic_vector:特点:特点此类信号能够更清楚地表现电路中的实际电平此类信号能够更清楚地表现电路中的实际电平情况;情况;设置有解决总线冲突问题的专用函数;设置有解决总线冲突问题的专用函数;当多个电平连接到同一接点上的时候,当多个电平连接到同一接点上的时候,可以根据该判决函数决定连接点状态。可以根据该判决函数决定连接点状态。常用预定义类型常用预定义类型std_logicstd_logic、std_logic_vectorstd_logic_vector:判决函数表:判决函数表常用预定义类型常用预定义类型std_ulogicstd_ulogic、std_ulogic_vectorstd_ulogic_vector:9 9值逻辑值逻辑数据范围(数据范围(U U,X X,0 0,1 1,Z Z,W W

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论