《VHDL语言要素》ppt课件_第1页
《VHDL语言要素》ppt课件_第2页
《VHDL语言要素》ppt课件_第3页
《VHDL语言要素》ppt课件_第4页
《VHDL语言要素》ppt课件_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

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

2、_new_state COUNTER-A decode3_8 counter非法的标识符非法的标识符A%h_1 show-new-state COUNTER_ T_ _1 3_8decoder IS DOWNTOl常量常量CONSTANTl变量变量VARIABLEl信号信号SIGNAL 常量是一个在仿真常量是一个在仿真/综合过程中固定不变综合过程中固定不变的值,可经过标识符来援用。与的值,可经过标识符来援用。与C言语中的言语中的常量的意义完全一样。常量的意义完全一样。 运用常量的主要目的是添加设计文件的运用常量的主要目的是添加设计文件的可读性和可维护性。可读性和可维护性。 常量是全局量,在构造

3、体、程序包阐明、常量是全局量,在构造体、程序包阐明、实体阐明、过程阐明、函数调用阐明和进程实体阐明、过程阐明、函数调用阐明和进程阐明中运用阐明中运用常数的描画格式:常数的描画格式:CONSTANT 常数名:数据类型:常数名:数据类型:=表达式表达式例:例: CONSTANT Vcc: REAL:=5.0; CONSTANT DALY: TIME:=100ns; CONSTANT FBUS: BIT_VECTOR:=0101; 变量只能在进程、函数和过程中运用,用变量只能在进程、函数和过程中运用,用于声明部分值,一旦赋值立刻生效。于声明部分值,一旦赋值立刻生效。变量的描画格式:变量的描画格式:V

4、ARIABLE 变量名:数据类型变量名:数据类型 约束条件:约束条件:=表达式表达式 :=初始值初始值例:例: VARIABLE x, y: INTEGER; VARIABLE count: INTEGER RANGE 0 TO 255:=10; variable count: std_logic (7 downto 0);variable cou: std_logic_vector(15 downto 0):=0000000000001011;目的变量名:目的变量名:=表达式表达式a:=b+c;a:=NOT bAND NOT C; 信号是全局量,在实体阐明、构造体描信号是全局量,在实体阐明、

5、构造体描画和程序包阐明中运用。画和程序包阐明中运用。SIGNAL用于声明用于声明内部信号,信号除了没有方向的概念以外几内部信号,信号除了没有方向的概念以外几乎和端口概念一致。乎和端口概念一致。 作用:在元件之间起互联,代表电路内作用:在元件之间起互联,代表电路内部各元件之间的衔接线,可以赋值给外部信部各元件之间的衔接线,可以赋值给外部信号。号。信号的描画格式:信号的描画格式: SIGNAL 信号名:数据类型信号名:数据类型 :=初始值初始值例:例:SIGNAL sys_clk: BIT:=0;SIGNAL ground: BIT:=0 signal aa:std_logic_vector(7

6、downto 0);signal aa:std_logic_vector(3 downto 0):=“1010;信号赋值语句语法格式信号赋值语句语法格式 目的信号名目的信号名=表达式表达式; q=count; irq=0; aa=dx1; bb=dx2; s1=s2 AFTER 10ns indata=bb(7 downto 0)&aa(7 downto 0); 建议在构造体中用赋值语句完成对建议在构造体中用赋值语句完成对信号赋初值的义务,由于综合器往往回信号赋初值的义务,由于综合器往往回忽略信号声明时所赋初值。忽略信号声明时所赋初值。l信号赋值可以有延迟时间,变量赋值无时间延迟信号赋值可以有

7、延迟时间,变量赋值无时间延迟l信号除当前值外还有许多相关值,如历史信息等,变量信号除当前值外还有许多相关值,如历史信息等,变量只需当前值只需当前值l进程对信号敏感,对变量不敏感进程对信号敏感,对变量不敏感l信号可以是多个进程的全局信号,但变量只在定义它之信号可以是多个进程的全局信号,但变量只在定义它之后的顺序域可见后的顺序域可见l 信号可以看作硬件的一根连线,但变量无此对应关系信号可以看作硬件的一根连线,但变量无此对应关系l赋值的方式不同;声明的位置不同赋值的方式不同;声明的位置不同l规范数据类型规范数据类型l用户自定义的数据类型用户自定义的数据类型lIEEE预定义规范逻辑与矢量预定义规范逻辑

8、与矢量1、整数、整数INTEGER 范围:范围:-2147483547-21474836462、实数、实数REAL 范围:范围:-1.0E38-1.0E38 综合器不支持综合器不支持书写时一定要有小数。书写时一定要有小数。3、位、位BIT 在数字系统中,信号经常用位的值表示,在数字系统中,信号经常用位的值表示,位的值用带单引号的位的值用带单引号的1和和0来表示来表示4、位矢量、位矢量BIT_VECTOR 位矢量是用双引号括起来的一组位数据位矢量是用双引号括起来的一组位数据 “0101015、布尔量、布尔量BOOLEAN 只需只需“真和真和“假两个形状,可以进展关系假两个形状,可以进展关系运算运

9、算6、字符、字符CHARACTER 字符量通常用单引号括起来,对大小写敏感字符量通常用单引号括起来,对大小写敏感明确阐明明确阐明1是字符时:是字符时: CHARACTER1 7、字符串、字符串STRING 字符串是双引号括起来的由字母、数字或字符串是双引号括起来的由字母、数字或、%、$组成的一串字符。区分大小写组成的一串字符。区分大小写 “laksdklakld “10101010108、时间、时间TIME时间的单位:时间的单位:fs,ps,ns,ms,sec,min,hr例:例: 10 ns整数数值和单位之间应有空格整数数值和单位之间应有空格9、错误等级、错误等级SEVERITY LEVEL

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

11、TO 0) REAL RANGE 2.0 TO 30.0 在在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时,在程序中必需声明库时,在程序中必需声明库及程序包阐明语句,即及程序包阐明语句,即LIBRARY ieee和和std_logic_1164.AL

12、L这两句在程序中必不可少。这两句在程序中必不可少。 2、 std_logic有多个取值,与有多个取值,与BIT不同,在不同,在编程时应特别留意,需求思索全一切情况。编程时应特别留意,需求思索全一切情况。1、枚举类型、枚举类型格式:格式:TYPE 数据类型名数据类型名 IS元素、元素、元素、元素、; TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-);TYPE week IS (Sun,Mon,Tue,wed,Thu,Fri,Sat);TYPE color IS (red,green,yellow,blue) TYPE lift_state IS (stopon1,doo

13、rpeen,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;2、整数、整数INTEGER格式:格式:TYPE 数据类型名数据类型名 IS 数据类型定义数据类型定义 约束范围约束范围例例 TYPE digit IS INTEGER RAN

14、GE 0 TO 9 VARIABLE A:DIGIT; A:=5; A:=28;3、实数、实数REAL格式:格式:TYPE 数据类型名数据类型名 IS 数据类型定义数据类型定义 约约束范围束范围 TYPE current IS REAL RANGE -1E4 TO 1E4 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

15、 (INTEGER 1 TO 8) OF STD_LOGIC;数组常在总线、数组常在总线、ROM和和RAM中运用。中运用。 5 5、记录、记录RECODERECODE 类型类型将不同的数据类型放在一块,就是记录类型数据将不同的数据类型放在一块,就是记录类型数据格式:格式:TYPE TYPE 记录类型名记录类型名 IS RECORD IS RECORD 元素名:数据类型名;元素名:数据类型名; 元素名:数据类型名;元素名:数据类型名; : :END RECORDEND RECORD记录类型名记录类型名 ; 例:例:TYPE bank IS RECORDaddr0: STD_LOGIC_VECTO

16、R(7 DOWNTO 0);addr1: STD_LOGIC_VECTOR(7 DOWNTO 0);r0: INTEGER;END RECORD; 例:例:CONSTANT LEN:integer:=100; TYPE array logic IS ARRAY 99 downto 0OF 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; 数据类型转换函数有数据类型转换函数有VH

17、DLVHDL言语的包提供言语的包提供例如:例如:STD_LOGIC_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)由 B I T _ V E C T O R 转 换 成STD_LOGIC_VECTOR由STD_LOGIC_VECTOR转换成BIT_VECTOR由BIT转换成STD_LOGIC由S

18、TD_LOGIC转换成BITSTD_LOGIC_ARITH包包CONV_STD_LOGIC_VECTOR(A,位长位长)CONV_INTEGER(A)由INTEGER,UNSIGNED和SIGNED转换成STD_LOGIC_VECTOR由UNSIGNED和SIGNED转换成INTEGERSTD_LOGIC_UNSIGNED包包CONV_INTEGER(A) STD_LOGIC_VECTOR转换成INTEGER VHDL没有普通程序文语中的那些运算类规范函数,取而代之的是多种能反映和影响硬件行为的属性。属性在描画时序电路的VHDL设计文件中几乎处处可见,如检测上升沿、下降沿,知道前一次发生的事件

19、。 属性指的是关于实体、构造体、类型及信号的一些特征。有的属性对综合设计非常有用。 VHDL的属性可分为数值类属性、函数类属性、范围类属性、信号类属性、类型类属性。其援用的普通方式为:对象属性。 数值类属性用于前往数组、块或普通数数值类属性用于前往数组、块或普通数据的有关值,如边境、数组长度等信息。对据的有关值,如边境、数组长度等信息。对普通的数据有普通的数据有4种数值类属性:对象类型的左种数值类属性:对象类型的左边境、右边境、上边境、下边境,对应的关边境、右边境、上边境、下边境,对应的关键字是:键字是:LEFT、RIGHT、HIGH、LOW。数组在加一个长度属性数组在加一个长度属性LENGT

20、H。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 bit32 IS ARRAY (63 DOWNTO 32)OF BITVARIABLE:left_range,right_range,up_range

21、,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 信号属性函数属于函数类属性,用来前往有信号属性函数属于函数类属性,用来前往有关信号行为功能的信息。共有关信号行为功能的信息。共有5种信号属性函数,种信号属性函数,分别是分别是: EVENT(事件事件) ; ACTIVE(活泼

22、活泼); LAST_EVENT (最近一次事件到如今经过多少最近一次事件到如今经过多少时间时间); LAST_ACTIVE (最近一次活泼到如今最近一次活泼到如今经过多少时间经过多少时间); LAST_VALUE(信号变化前的信号变化前的取值是什么取值是什么) EVENT:它的值为布尔型它的值为布尔型,取值为取值为TRUE或或FALSE; 假设刚好有事件发生在该属性所附着的信号假设刚好有事件发生在该属性所附着的信号上上(即信号有变化即信号有变化),取值为取值为TRUE。 利用此属性可决议时钟边沿能否有效利用此属性可决议时钟边沿能否有效,即时钟即时钟能否发生。能否发生。SIGNAL clk: I

23、N 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 要求信号值发生变化;要求信号值发生变化;1到到0、0到到1 ACTIVE 信号值的任何变化,信号值的任何变化,1到到1,1 到到0,0到到1,0到到0; 一切的事件都是活泼,但并非一切的活泼都一切的事件都是活泼,但并非一切的活泼都是事件是事件 RANGE属性,其生成一个限制性数据对属性,其生成一个限制性数据对象的范围。象的范围。 例例 SIGNAL data_bus:std_logic_vector(15 DOWNTO 0); data_bus RANGE=15 downto 0 VHDL与其他的高级言语非常类似,具有丰与其他的高级言语非常类似,具有丰富的运算操作符以满足不同描画功能的需求。在富的运算操作符以满足不同描画功能的需求。在VH

温馨提示

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

评论

0/150

提交评论