《VHDL语言要素》PPT课件.ppt

上传人:赵** 文档编号:64395296 上传时间:2022-11-29 格式:PPT 页数:57 大小:497.50KB
返回 下载 相关 举报
《VHDL语言要素》PPT课件.ppt_第1页
第1页 / 共57页
《VHDL语言要素》PPT课件.ppt_第2页
第2页 / 共57页
点击查看更多>>
资源描述

《《VHDL语言要素》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《VHDL语言要素》PPT课件.ppt(57页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、VHDL语言要素语言要素l标识符标识符(Identifiers)l数据对象数据对象l数据类型数据类型lVHDL属性属性l运算符运算符第三讲要点回顾l有效标识符l变量信号的区别l三种数据类型l三类属性l四种操作符标识符标识符 标识符标识符(Identifiers)由英文字母由英文字母“a”到到“z”、“A”到到“Z”、数字数字“0”到到“9”以及以及下划线下划线“_”组成组成使用时注意:使用时注意:1、VHDL不区分大小写不区分大小写2、标识符一定要以字母开头、标识符一定要以字母开头3、下划线不能放在结尾、下划线不能放在结尾4、下划线不能连用、下划线不能连用5、保留字(关键字)不能做标识符、保留

2、字(关键字)不能做标识符标识符标识符有效的标识符有效的标识符A_h_1 show_new_state COUNTER-A decode3_8 counter非法的标识符非法的标识符A%h_1 show-new-state COUNTER_ T_ _1 3_8decoder IS DOWNTO数据对象数据对象l常量(常量(CONSTANT)l变量(变量(VARIABLE)l信号(信号(SIGNAL)常常 量量 常量是一个在仿真常量是一个在仿真/综合过程中固定不变综合过程中固定不变的值,可通过标识符来引用。与的值,可通过标识符来引用。与C语言中的语言中的常量的意义完全相同。常量的意义完全相同。使用

3、常量的主要目的是增加设计文件的使用常量的主要目的是增加设计文件的可读性和可维护性。可读性和可维护性。常量是全局量,在结构体、程序包说明、常量是全局量,在结构体、程序包说明、实体说明、过程说明、函数调用说明和进程实体说明、过程说明、函数调用说明和进程说明中使用说明中使用常常 量量常数的描述格式:常数的描述格式:CONSTANT 常数名:数据类型:常数名:数据类型:=表达式表达式例:例:CONSTANT Vcc:REAL:=5.0;CONSTANT DALY:TIME:=100ns;CONSTANT FBUS:BIT_VECTOR:=CONSTANT FBUS:BIT_VECTOR:=”01010

4、101”;变变 量量 变变量量只只能能在在进进程程、函函数数和和过过程程中中使使用用,用用于声明局部值,一旦赋值立即生效。于声明局部值,一旦赋值立即生效。变量的描述格式:变量的描述格式:VARIABLE 变变量量名名:数数据据类类型型 约约束束条条件件:=表达式表达式 :=初始值初始值例:例:VARIABLE x,y:INTEGER;VARIABLE VARIABLE count:count:INTEGER INTEGER RANGE RANGE 0 0 TO TO 255:=10;255:=10;变变 量量variable count:std_logic(7 downto 0);variab

5、le cou:std_logic_vector(15 downto 0):=0000000000001011;目标变量名:目标变量名:=表达式表达式a:=b+c;a:=(NOT b)AND(NOT C);信信 号号 信号是全局量,在实体说明、结构体描信号是全局量,在实体说明、结构体描述和程序包说明中使用。述和程序包说明中使用。SIGNAL用于声明用于声明内部信号,内部信号,信号除了没有方向的概念以外几信号除了没有方向的概念以外几乎和端口概念一致。乎和端口概念一致。作用:在元件之间起互联,代表电路内作用:在元件之间起互联,代表电路内部各元件之间的连接线,可以赋值给外部信部各元件之间的连接线,可以

6、赋值给外部信号。号。信信 号号信号的描述格式:信号的描述格式:SIGNAL 信号名:数据类型信号名:数据类型:=初始值初始值例:例:SIGNAL sys_clk:BIT:=0;SIGNAL ground:BIT:=SIGNAL ground:BIT:=0 0 signal aa:std_logic_vector(7 downto 0);signal aa:std_logic_vector(3 downto 0):=“1010”;信信 号号信号赋值语句语法格式信号赋值语句语法格式 目标信号名目标信号名=表达式表达式;q=count;irq=0;aa=dx1;bb=dx2;s1=s2 AFTER

7、10ns s1=s2 AFTER 10ns indata=bb(7 downto 0)&aa(7 downto 0);赋初值注意赋初值注意 建议在结构体中用赋值语句完成对建议在结构体中用赋值语句完成对信号赋初值的任务,因为综合器往往回信号赋初值的任务,因为综合器往往回忽略信号声明时所赋初值。忽略信号声明时所赋初值。信号与变量区别信号与变量区别l信号赋值可以有延迟时间,变量赋值无时间延迟信号赋值可以有延迟时间,变量赋值无时间延迟l信信号号除除当当前前值值外外还还有有许许多多相相关关值值,如如历历史史信信息息等等,变变量量只有当前值只有当前值l进程对信号敏感,对变量不敏感进程对信号敏感,对变量不敏

8、感l信信号号可可以以是是多多个个进进程程的的全全局局信信号号,但但变变量量只只在在定定义义它它之之后的顺序域可见后的顺序域可见l 信号可以看作硬件的一根连线,但变量无此对应关系信号可以看作硬件的一根连线,但变量无此对应关系l赋值的形式不同;声明的位置不同赋值的形式不同;声明的位置不同数据类型数据类型l标准数据类型标准数据类型l用户自定义的数据类型用户自定义的数据类型lIEEE预定义标准逻辑与矢量预定义标准逻辑与矢量标准数据类型标准数据类型1、整数(、整数(INTEGER)范围:范围:-2147483547-21474836462、实数(、实数(REAL)范围:范围:-1.0E38-1.0E38

9、 (综合器不支持)综合器不支持)书写时一定要有小数。书写时一定要有小数。3、位(、位(BIT)在在数数字字系系统统中中,信信号号经经常常用用位位的的值值表表示示,位位的值用带单引号的的值用带单引号的1和和0来表示来表示标准数据类型标准数据类型4、位矢量(、位矢量(BIT_VECTOR)位矢量是用双引号括起来的一组位数据位矢量是用双引号括起来的一组位数据 “010101”5、布尔量(、布尔量(BOOLEAN)只只有有“真真”和和“假假”两两个个状状态态,可可以以进进行行关关系系运算运算6、字符(、字符(CHARACTER)字符量通常用单引号括起来,对字符量通常用单引号括起来,对大小写敏感大小写敏

10、感明确说明明确说明1是字符时:是字符时:CHARACTERCHARACTER(1 1)标准数据类型标准数据类型7、字符串(、字符串(STRING)字字符符串串是是双双引引号号括括起起来来的的由由字字母母、数数字字或或、%、$组成的一串字符。区分大小写组成的一串字符。区分大小写 “laksdklakld”“1010101010”8、时间(、时间(TIME)时间的单位:时间的单位:fs,ps,ns,ms,sec,min,hr例:例:10 ns整数数值和单位之间应有空格整数数值和单位之间应有空格标准数据类型标准数据类型9、错误等级(、错误等级(SEVERITY LEVEL)在在VHDL仿仿真真器器中

11、中,错错误误等等级级用用来来表表示示系系统统的状态,它共有的状态,它共有4种:种:NOTE(注意)注意)WARNING(警告)警告)ERROR(错误)错误)FAILURE(失败)失败)标准数据类型标准数据类型10、自然数、自然数(NATURAL)正整数(正整数(POSITIVE)自自然然数数是是整整数数的的一一个个子子类类型型,包包括括0和和正正整整数数;正整数也是整数的一个子类型。正整数也是整数的一个子类型。只只能能是是正正整整数数数数据据除除定定义义类类型型外外,有有时时还还需需要定义约束范围。要定义约束范围。INTEGER RANGE100 DOWNTO 0 BIT_ VECTOR(3

12、DOWNTO 0)REAL RANGE 2.0 TO 30.0IEEE定义的逻辑位与矢量定义的逻辑位与矢量 在在IEEE的程序包的程序包std_logic_1164中定义了两中定义了两个非常重要的数据类型:个非常重要的数据类型:1、std_logic 取值:取值:0,1,Z,X,W,L,H Z:高阻高阻 X:不定不定 W:弱信号不定弱信号不定 L:弱信号弱信号0 H:弱信号弱信号1 2、Std_logic_vector注注 意意 1、在使用、在使用“std_logic”和和“std_logic_vector”时,在程序中必须声明时,在程序中必须声明库及程序包说明语句,即库及程序包说明语句,即L

13、IBRARY ieee和和std_logic_1164.ALL这两句在程序中必不可少。这两句在程序中必不可少。2、std_logic有多个取值,与有多个取值,与BIT不同,在不同,在编程时应特别注意,需要考虑全所有情况编程时应特别注意,需要考虑全所有情况。用户自定义的数据类型用户自定义的数据类型1、枚举类型、枚举类型格式:格式:TYPE 数据类型名数据类型名 IS(元素、元素、元素、元素、););TYPE STD_LOGIC IS (U U,X X,0 0,1 1,Z Z,W W,L L,H H,-);TYPE week IS(Sun,Mon,Tue,wed,Thu,Fri,Sat);TYPE

14、 color IS(red,green,yellow,blue)TYPE lift_state IS(stopon1,doorpeen,doorclose,doorwait1,doorwait2,doorwait3,doorwait4,doorwait5,up,down,stop)枚举类型的声明枚举类型的声明TYPE color IS(red,green,yellow,blue);VARIABLE A:COLOR;SIGNAL B:COLOR;A:=RED;B=YELLOW;TYPE lever IS(0,1,z);SIGNAL V:lever;V=1;用户自定义的数据类型用户自定义的数据类型

15、2、整数(、整数(INTEGER)格式:格式:TYPE 数据类型名数据类型名 IS 数据类型定义数据类型定义 约约束范围束范围例例 TYPE digit IS INTEGER RANGE 0 TO 9TYPE digit IS INTEGER RANGE 0 TO 9 VARIABLE A:DIGIT;A:=5;A:=28;用户自定义的数据类型用户自定义的数据类型3、实数(、实数(REAL)格格式式:TYPE 数数据据类类型型名名 IS 数数据据类类型型定定义义 约约束范围束范围 TYPE current IS REAL RANGE-1E4 TO TYPE current IS REAL RA

16、NGE-1E4 TO 1E41E4 VARIABLE A:CURRENT;A:=1E3;A:=1E10;用户自定义的数据类型用户自定义的数据类型4、数组(、数组(ARRAY)格格式式:TYPE 数数据据类类型型名名 ISARRAY 范范围围 OF 原数据类型名;原数据类型名;例例:TYPE word IS ARRAY(1 TO 8)OF STD_LOGIC;TYPE word IS ARRAY(INTEGER 1 TO 8)OF STD_LOGIC;数组常在总线、数组常在总线、ROMROM和和RAMRAM中使用。中使用。用户自定义的数据类型用户自定义的数据类型5 5、记录记录(RECODERE

17、CODE)类型类型将不同的数据类型放在一块,就是记录类型数据将不同的数据类型放在一块,就是记录类型数据格式:格式:TYPE 记录类型名记录类型名 IS RECORD 元素名:数据类型名;元素名:数据类型名;元素名:数据类型名;元素名:数据类型名;:END RECORDEND RECORD记录类型名记录类型名;记录记录(RECODERECODE)类型类型例:例:TYPE bank IS RECORDaddr0:STD_LOGIC_VECTOR(7 DOWNTO 0);addr1:STD_LOGIC_VECTOR(7 DOWNTO 0);r0:INTEGER;END RECORD;END RECO

18、RD;记录记录(RECODERECODE)类型类型例:例:CONSTANT LEN:integer:=100;TYPE array logic IS ARRAY(99 downto 0)OF STD_LOGIC_VECTOR(7 DOWNTO 0)TYPE table IS RECORDa:array logic;b:STD_LOGIC_VECTOR(7 DOWNTO 0);c:integer RANGE 0 to len;END RECORD;END RECORD;数据类型的转换数据类型的转换数据数据类类型型转换转换函数有函数有VHDLVHDL语语言的包提供言的包提供例如:例如:STD_LO

19、GIC_1164,STD_LOGIC_1164,STD_LOGIC_ARITH STD_LOGIC_ARITH STD_LOGIC_UNSIGNED STD_LOGIC_UNSIGNED等等等等 函数函数说明说明STD_LOGIC_1164包包TO_STDLOGIC_VECTOR(A)TO_BITVECTOR(A)TO_LOGIC(A)TO_BIT(A)由BIT_VECTOR转换成STD_LOGIC_VECTOR由STD_LOGIC_VECTOR转换成BIT_VECTOR由BIT转换成STD_LOGIC由STD_LOGIC转换成BITSTD_LOGIC_ARITH包包CONV_STD_LOGI

20、C_VECTOR(A,位长)CONV_INTEGER(A)由INTEGER,UNSIGNED和SIGNED转换成STD_LOGIC_VECTOR由UNSIGNED和SIGNED转换成INTEGERSTD_LOGIC_UNSIGNED包包CONV_INTEGER(A)STD_LOGIC_VECTOR转 换 成INTEGERVHDL属性属性VHDL没有一般程序语言中的那些运算类没有一般程序语言中的那些运算类标准函数标准函数,取而代之的是多种能反映和影响硬取而代之的是多种能反映和影响硬件行为的属性。属性在描述时序电路的件行为的属性。属性在描述时序电路的VHDL设计文件中几乎处处可见,如检测上升沿、设

21、计文件中几乎处处可见,如检测上升沿、下降沿,知道前一次发生的事件。下降沿,知道前一次发生的事件。VHDL属性属性指的是关于实体、结构体、类型及信号的一些特征。有的属性对综合(设计)非常有用。VHDL的属性可分为数值类属性、函数类属性、范围类属性、信号类属性、类型类属性。其引用的一般形式为:对象属性。数值类属性数值类属性 数值类属性用于返回数组、块或一般数数值类属性用于返回数组、块或一般数据的有关值,如边界、数组长度等信息。对据的有关值,如边界、数组长度等信息。对一般的数据有一般的数据有4种数值类属性:对象类型的左种数值类属性:对象类型的左边界、右边界、上边界、下边界,对应的关边界、右边界、上边

22、界、下边界,对应的关键字是:键字是:LEFT、RIGHT、HIGH、LOW。数组在加一个长度属性数组在加一个长度属性LENGTH。数值类属性数值类属性sdown:IN std_logic_vector(8 DOWNTO 0);sup:IN std_logic-vector(0 to 8);这两个信号的各属性值如下这两个信号的各属性值如下:sdownleft=8;sdownright=0;sdownlow=0;sdownhigh=8;sdownlength=9;supleft=0;supright=8;suplow=0;suphigh=8;suplength=9;数值类属性数值类属性TYPE b

23、it32 IS ARRAY(63 DOWNTO 32)OF BITVARIABLE:left_range,right_range,up_range,low_range,len:INTEGER;BEGIN left-range:=bit32LEFT;-return 63right-range:=bit32RIGHT;-return 32up-range:=bit32HIGH;-return 63low-range:=bit32LOW;-return 32len:=bit32LENGTH;-return 32函数类属性函数类属性 信号属性函数属于函数类属性,用来返回有信号属性函数属于函数类属性,用

24、来返回有关信号行为功能的信息。共有关信号行为功能的信息。共有5种信号属性函数,种信号属性函数,分别是分别是:EVENT(事件事件);ACTIVE(活跃活跃);LAST_EVENT(最近一次事件到现在经过多少最近一次事件到现在经过多少时间时间);LAST_ACTIVE(最近一次活跃到现在经最近一次活跃到现在经过多少时间过多少时间);LAST_VALUE(信号变化前的取值信号变化前的取值是什么是什么)EVENT EVENT:它的值为布尔型它的值为布尔型,取值为取值为TRUE或或FALSE;如果刚好有事件发生在该属性所附着的信号如果刚好有事件发生在该属性所附着的信号上上(即信号有变化即信号有变化),

25、取值为取值为TRUE。利用此属性可决定时钟边沿是否有效利用此属性可决定时钟边沿是否有效,即时钟即时钟是否发生。是否发生。EVENTSIGNAL clk:IN std_logic;clk EVENT AND clk=1 clk=1 AND clk EVENTclk EVENT AND clk=0clk=0 AND clk EVENTrising_edge(clk)falling_edge(clk)EVENT 和和ACTIVE EVENT 要求信号值发生变化;要求信号值发生变化;1到到0、0到到1 ACTIVE 信号值的任何变化,信号值的任何变化,1到到1,1 到到0,0到到1,0到到0;所有的事

26、件都是活跃,但并非所有的活跃都所有的事件都是活跃,但并非所有的活跃都是事件是事件范围类属性范围类属性 RANGE属性,其生成一个限制性数据对象属性,其生成一个限制性数据对象的范围。的范围。例例 SIGNAL data_bus:std_logic_vector(15 DOWNTO 0);data_bus RANGE=15 downto 0运算符运算符 VHDL与其他的高级语言十分相似,具有丰与其他的高级语言十分相似,具有丰富的运算操作符以满足不同描述功能的需要。在富的运算操作符以满足不同描述功能的需要。在VHDL中共有中共有4类操作符,可以分别进行逻辑运算类操作符,可以分别进行逻辑运算(Logi

27、cal)、关系运算关系运算(Relational)、算术运算算术运算(Arithmetic)、并置运算并置运算(Concatenation)逻辑运算符逻辑运算符要求运算符左右的数据类型必须相同,要求运算符左右的数据类型必须相同,AND 逻辑与逻辑与OR 逻辑或逻辑或NAND 与非与非NOT 逻辑非逻辑非NOR 或非或非XOR 异或异或NOR 同或同或逻辑运算符逻辑运算符例:例:x=(a AND b)OR(NOT c AND d);x=b AND a AND d AND e;x=(a NOR b)NOR c)NOR d;x=b OR c OR d OR e;x=a XOR d XOR e;a=(

28、x1 AND x2)OR(y1 AND y2);a=(x1 AND x2)OR(y1 AND y2);算术运算符算术运算符VHDL语言有八种算术运算符语言有八种算术运算符,它们分别是它们分别是:+加加-减减*乘乘/除除*乘方乘方 (左操作数左操作数:整数或浮点数整数或浮点数)(右操作数必须是整数右操作数必须是整数)MOD 求模求模 (只能用于整数类型只能用于整数类型)REM 求余求余 (只能用于整数类型只能用于整数类型)ABS 取绝对值取绝对值关系运算符关系运算符VHDL语言有六种关系运算符语言有六种关系运算符,它们分别是它们分别是:=等于等于/=不等于不等于 小于小于 大于大于=大于或等于大于或等于并置运算符并置运算符&并置并置,将多个对象或矢量连接成维数更大的矢量将多个对象或矢量连接成维数更大的矢量ARCHITECTURE example OF shiftrl IS BEGINPROCESS(a)BEGIN O1=0&a(7 DOWNTO 1);右移右移 O2=O1(6 DOWNTO 0)&0;左移左移 O3=a&b;合并合并a,bEND PROCESS;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁