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

上传人:小飞机 文档编号:5454325 上传时间:2023-07-08 格式:PPT 页数:57 大小:497.60KB
返回 下载 相关 举报
《VHDL语言要素》PPT课件.ppt_第1页
第1页 / 共57页
《VHDL语言要素》PPT课件.ppt_第2页
第2页 / 共57页
《VHDL语言要素》PPT课件.ppt_第3页
第3页 / 共57页
《VHDL语言要素》PPT课件.ppt_第4页
第4页 / 共57页
《VHDL语言要素》PPT课件.ppt_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《《VHDL语言要素》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《VHDL语言要素》PPT课件.ppt(57页珍藏版)》请在三一办公上搜索。

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

2、_ T_ _1 3_8decoder IS DOWNTO,数据对象,常量(CONSTANT)变量(VARIABLE)信号(SIGNAL),常 量,常量是一个在仿真/综合过程中固定不变的值,可通过标识符来引用。与C语言中的常量的意义完全相同。使用常量的主要目的是增加设计文件的可读性和可维护性。常量是全局量,在结构体、程序包说明、实体说明、过程说明、函数调用说明和进程说明中使用,常 量,常数的描述格式:CONSTANT 常数名:数据类型:=表达式例:CONSTANT Vcc:REAL:=5.0;CONSTANT DALY:TIME:=100ns;CONSTANT FBUS:BIT_VECTOR:=

3、”0101”;,变 量,变量只能在进程、函数和过程中使用,用于声明局部值,一旦赋值立即生效。变量的描述格式:VARIABLE 变量名:数据类型 约束条件:=表达式:=初始值例: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 b)AND(NOT C);,信 号,信号是

4、全局量,在实体说明、结构体描述和程序包说明中使用。SIGNAL用于声明内部信号,信号除了没有方向的概念以外几乎和端口概念一致。作用:在元件之间起互联,代表电路内部各元件之间的连接线,可以赋值给外部信号。,信 号,信号的描述格式:SIGNAL 信号名:数据类型:=初始值例:SIGNAL sys_clk:BIT:=0;SIGNAL ground:BIT:=0 signal aa:std_logic_vector(7 downto 0);signal aa:std_logic_vector(3 downto 0):=“1010”;,信 号,信号赋值语句语法格式 目标信号名=表达式;q=count;i

5、rq=0;aa=dx1;bb=dx2;s1=s2 AFTER 10ns indata=bb(7 downto 0),赋初值注意,建议在结构体中用赋值语句完成对信号赋初值的任务,因为综合器往往回忽略信号声明时所赋初值。,信号与变量区别,信号赋值可以有延迟时间,变量赋值无时间延迟信号除当前值外还有许多相关值,如历史信息等,变量只有当前值进程对信号敏感,对变量不敏感信号可以是多个进程的全局信号,但变量只在定义它之后的顺序域可见 信号可以看作硬件的一根连线,但变量无此对应关系赋值的形式不同;声明的位置不同,数据类型,标准数据类型用户自定义的数据类型IEEE预定义标准逻辑与矢量,标准数据类型,1、整数(

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

7、、%、$组成的一串字符。区分大小写“laksdklakld”“1010101010”8、时间(TIME)时间的单位:fs,ps,ns,ms,sec,min,hr例:10 ns整数数值和单位之间应有空格,标准数据类型,9、错误等级(SEVERITY LEVEL)在VHDL仿真器中,错误等级用来表示系统的状态,它共有4种:NOTE(注意)WARNING(警告)ERROR(错误)FAILURE(失败),标准数据类型,10、自然数(NATURAL)正整数(POSITIVE)自然数是整数的一个子类型,包括0和正整数;正整数也是整数的一个子类型。只能是正整数数据除定义类型外,有时还需要定义约束范围。INT

8、EGER RANGE100 DOWNTO 0 BIT_ VECTOR(3 DOWNTO 0)REAL RANGE 2.0 TO 30.0,IEEE定义的逻辑位与矢量,在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.ALL这两句在程序中

9、必不可少。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,doorpeen,doorclose,doorwait1,doorwait2,doorwait3,doorwait4,doorwai

10、t5,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 RANGE 0 TO 9 VARIABLE A:DIGIT;A:=5;A:=28;,用户自定义的数据类型,3、实数(REAL)格式:TYPE 数据

11、类型名 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(INTEGER 1 TO 8)OF STD_LOGIC;数组常在总线、ROM和RAM中使用。,用户自定义的数据类型,5、记录(RECODE)类型将不同的数据类型放在一块,就是记录类型

12、数据格式:TYPE 记录类型名 IS RECORD 元素名:数据类型名;元素名:数据类型名;:END RECORD记录类型名;,记录(RECODE)类型,例:TYPE bank IS RECORDaddr0:STD_LOGIC_VECTOR(7 DOWNTO 0);addr1:STD_LOGIC_VECTOR(7 DOWNTO 0);r0:INTEGER;END RECORD;,记录(RECODE)类型,例:CONSTANT LEN:integer:=100;TYPE array logic IS ARRAY(99 downto 0)OF STD_LOGIC_VECTOR(7 DOWNTO 0

13、)TYPE table IS RECORDa:array logic;b:STD_LOGIC_VECTOR(7 DOWNTO 0);c:integer RANGE 0 to len;END RECORD;,数据类型的转换,数据类型转换函数有VHDL语言的包提供例如:STD_LOGIC_1164,STD_LOGIC_ARITH STD_LOGIC_UNSIGNED等等,VHDL属性,VHDL没有一般程序语言中的那些运算类标准函数,取而代之的是多种能反映和影响硬件行为的属性。属性在描述时序电路的VHDL设计文件中几乎处处可见,如检测上升沿、下降沿,知道前一次发生的事件。,VHDL属性,属性指的是关

14、于实体、结构体、类型及信号的一些特征。有的属性对综合(设计)非常有用。VHDL的属性可分为数值类属性、函数类属性、范围类属性、信号类属性、类型类属性。其引用的一般形式为:对象属性。,数值类属性,数值类属性用于返回数组、块或一般数据的有关值,如边界、数组长度等信息。对一般的数据有4种数值类属性:对象类型的左边界、右边界、上边界、下边界,对应的关键字是:LEFT、RIGHT、HIGH、LOW。数组在加一个长度属性LENGTH。,数值类属性,sdown:IN std_logic_vector(8 DOWNTO 0);sup:IN std_logic-vector(0 to 8);这两个信号的各属性值

15、如下: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,low_range,len:INTEGER;BEGIN left-range:=bit32LEFT;-return 63right-range:=bit32RIGHT;-return 32up

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

17、),取值为TRUE。利用此属性可决定时钟边沿是否有效,即时钟是否发生。,EVENT,SIGNAL 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;所有的事件都是活跃,但并非所有的活跃都是事件,范围类属性,RANGE属性,其生成一个限制性数据对象的范围

18、。例 SIGNAL data_bus:std_logic_vector(15 DOWNTO 0);data_bus RANGE=15 downto 0,运算符,VHDL与其他的高级语言十分相似,具有丰富的运算操作符以满足不同描述功能的需要。在VHDL中共有4类操作符,可以分别进行逻辑运算(Logical)、关系运算(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=(x1 AND x2)OR(y1 AND y2);,算术运算符,VHDL语言有八种算术运算符,它们分别是:+加-减*乘/除*乘方(左操作数:整数或浮点数)(右操作数必须是整数)MOD 求模(只能用于整数类型)REM 求余(只能用于整数类型)ABS 取绝对值,关系运算符,VHDL语言有六种关系运算符,它们分别是:=等于/=不等于 大于=大于或等于,并置运算符,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号