电子设计自动化第6章-VHDL的描述语句与描述风格课件.ppt

上传人(卖家):晟晟文业 文档编号:5157274 上传时间:2023-02-15 格式:PPT 页数:177 大小:718KB
下载 相关 举报
电子设计自动化第6章-VHDL的描述语句与描述风格课件.ppt_第1页
第1页 / 共177页
电子设计自动化第6章-VHDL的描述语句与描述风格课件.ppt_第2页
第2页 / 共177页
电子设计自动化第6章-VHDL的描述语句与描述风格课件.ppt_第3页
第3页 / 共177页
电子设计自动化第6章-VHDL的描述语句与描述风格课件.ppt_第4页
第4页 / 共177页
电子设计自动化第6章-VHDL的描述语句与描述风格课件.ppt_第5页
第5页 / 共177页
点击查看更多>>
资源描述

1、第6章 VHDL的描述语句与描述风格6.1 顺序执行语句 6.2 并发执行语句 6.3 VHDL的描述风格 6.4 其他语句和说明 6.5 实训 习题 第6章 VHDL的描述语句与描述风格6.1 顺序执行语句顺序执行语句在VHDL语言中,顺序语句只用于进程、函数、过程中。顺序语句可以进行算术运算、逻辑运算、信号和变量的赋值、子程序调用等。VHDL语言顺序是相对于仿真软件的运行和VHDL语法的编程逻辑思路而言的,其相应的硬件逻辑工作方式未必采用相同的顺序。要注意区分VHDL语言的软件行为与描述综合后的硬件行为之间的差异,也即在顺序执行语句中,执行第一条语句与执行最后一条语句之间的时间间隔是不需要

2、计算考虑的。这与单片机中的语句执行是不一样的,因为顺序语句最终也要综合成相应的硬件电路,在硬件电路中并没有一部分电路先工作而另一部分电路后工作的过程。常用的顺序语句有:信号与变量赋值语句、流程控制语句、WAIT语句、子程序调用语句、空操作(NULL)语句、断言(ASSERT)语句、REPORT语句及其相关语句等。第6章 VHDL的描述语句与描述风格6.1.1 赋值语句赋值语句在进程、子程序中的赋值语句包括变量赋值语句与信号赋值语句两种。变量赋值与信号赋值虽然都是在顺序语句中,但赋值的过程有不同之处。变量具有局部特征,它的赋值是立即发生的,是一种时间延迟为零的赋值行为。信号具有全局性特征,它不但

3、可以作为一个设计实体内部各单元之间数据传送的载体,而且可通过信号进行实体间通信。信号在顺序语句中的赋值不是立即发生的,它发生在一个进程结束时或子程序调用完成以后。信号的赋值过程总有一定的延时,它反映了硬件系统的重要特性,综合后可以找到与信号对应的硬件结构,如一根传输导线、一个输入/输出端口或一个D触发器等。变量赋值与信号赋值的语法格式如下:第6章 VHDL的描述语句与描述风格变量赋值目标:=赋值源;信号赋值目标=赋值源;在进行赋值时,如果对同一个信号赋值多次,则在进程结束时信号的值为最后一个赋值源的值。在该进程中所有用到该信号的表达式中,该信号的值都是以最后一个赋值源的值参与运算的,不管该表达

4、式出现在进程的什么位置。但是对于变量,在对变量赋值后,变量的值立即改变,下面用到该变量的值时就以新赋值的赋值源参与运算。第6章 VHDL的描述语句与描述风格在VHDL语言中,变量或信号的赋值是强制类型赋值,如果赋值目标与赋值源的类型、长度不一致是不能进行赋值的。在信号与变量赋值过程中,若发现类型不一致,可以通过调用相关的程序包运用类型转换函数进行类型转换;如果赋值两边长度不一致,可以通过并置符补充相应的位数或者通过段下标进行赋值。第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格ARCHITECTURE bb OF aa IS SIGNAL s1,s2:STD_LOGIC

5、;SIGNAL svec:STD_LOGIC_VECTOR(0 TO 7);BEGIN PROCESS(a,b)VARIABLE v1,v2:STD_LOGIC;第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格在用MAX plus进行检查时,提示有一个警告,指出在对s2赋值时第一条语句无效;在编译时有两个警告,除了指出在对s2赋值时第一条语句无效外,还指出d(8)与“地”相连。通过MAX plus仿真的波形如图6-1所示。第6章 VHDL的描述语句与描述风格图6-1 例6-1的仿真图形第6章 VHD

6、L的描述语句与描述风格6.1.2 流程控制语句流程控制语句在VHDL语言顺序执行语句中,流程控制语句占了很大的比重。流程控制语句通过条件语句决定是否执行一条或几条语句,或者重复执行一条或几条语句,或者跳过一条或几条语句。常用的流程控制语句有IF语句、CASE语句、LOOP语句等。第6章 VHDL的描述语句与描述风格1IF语句语句IF语句是一种条件语句,是VHDL顺序语句中最重要的语句结构之一,在进程、子程序中经常使用。它可以根据句中所设的一种或多种条件,有选择地执行指定的顺序语句。IF语句的常用格式有以下三种。(1)格式1:IF条件THEN 顺序执行语句;END IF;该语句起到一个门闩控制的

7、作用,当程序执行到该IF语句时,就要判断IF语句所指定的条件是否成立。如果条件成立,IF语句所包含的顺序执行语句将被执行;如果条件不成立,程序跳过IF包含的顺序执行语句,向下执行IF的后续语句。第6章 VHDL的描述语句与描述风格【例例6-2】IF(a=1)THEN c=b;END IF;如果a=1则执行c=b;否则跳过IF语句执行后续语句。第6章 VHDL的描述语句与描述风格(2)格式2:IF 条件 THEN 顺序执行语句;ELSE 顺序执行语句;END IF;该语句起到选择控制的作用。当IF条件成立时,程序执行THEN和ELSE之间的顺序执行语句部分;当IF语句的条件不成立时,程序执行EL

8、SE和END IF之间的顺序执行语句部分,即根据所指定的条件是否满足,程序可以选择两条不同的执行路径。第6章 VHDL的描述语句与描述风格【例例6-3】IF(a=1)THEN c=b;ELSE c=d;END IF;如果a=1则执行c=b;否则执行c顺序执行语句。(2)WHEN 值|值|值|值=顺序执行语句。(3)WHEN 值TO 值=顺序执行语句。(4)WHEN OTHERS=顺序执行语句。第6章 VHDL的描述语句与描述风格 使用CASE语句需要注意以下几点:(1)条件句中的“=”是操作符,它相当于IF语句中的“THEN”。(2)条件句中的选择值必须在表达式的取值范围之内。(3)CASE语

9、句中每一条语句的选择值只能出现一次,即不能有相同选择值的条件语句出现。(4)CASE语句执行中必须选中,且只能选中所列条件语句中的一条,即CASE语句至少包含一个条件语句。第6章 VHDL的描述语句与描述风格(5)除非所有条件句中的选择值能完全覆盖CASE语句中表达式的取值,否则最末一个条件句中的选择必须用“OTHERS”表示,它代表已给的所有条件句中未能列出的其他可能的取值。关键词“OTHERS”只能出现一次,且只能作为最后一条条件取值。这在表达式的类型为标准逻辑类型时务必要注意,因为该类型的取值有9种,要列出所有的取值工作量很大,也不必要,所以在最后一定要加上WHEN OTHERS。第6章

10、 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格与IF语句相比,CASE语句组的程序可读性比较好。此外,IF语句是有序的,先处理最起始、最优先的条件,后处理次优先的条件。CASE语句是无序的,所有表达式的值都并行处理。因此,所有用CASE语句描述的功能语句均可以用IF语句进行替代,但是并非所有的IF语句都可以用CASE语句替代,比如要描述一个优先编码的电路就不能用CASE语句进行描述,但可以用IF语句进行描述。第6章 VHDL的描述语句与描述风格3LOOP循环语句循环语句LOOP循环语句可以使所包含的一组

11、顺序语句被循环执行,其执行次数由设定的循环参数决定。其常用的语法格式有两种。(1)格式1:标号:FOR循环变量 IN离散范围LOOP 顺序处理语句;END LOOP 标号;第6章 VHDL的描述语句与描述风格这里的循环变量是一个临时变量,属于LOOP语句的局部变量,不必事先定义,只能作为赋值源,由LOOP语句自动定义,在LOOP语句中不要再使用其他与此变量同名的标识符。循环变量的循环范围由初值开始,每执行一次,就改变一次,直到达到指定的值。例如:ASUM:FOR i IN 1 TO 9 LOOP sum:=1+sum;END LOOP ASUM;注意,这里的sum不能是信号,否则赋值就会出现错

12、误;“i”从1开始执行,每执行一次循环,“i”自加1,直到“i”的值增加到9。第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格(2)格式2:标号:WHILE 条件 LOOP 顺序处理语句 END LOOP 标号;在该语句中,没有给出循环次数的范围,而给出了循环执行顺序语句的条件,没有自动递增循环变量的功能。如果循环控制条件为真,则进行循环,否则结束循环。一般会在顺序处理语句中有修改循环条件的语句,使循环条件不满足,从而结束循环。第6章 VHDL的描述语句与描述风格例如:sum:=0abcd:WHILE(i10)LOOP sum:=i+

13、sum;i:=i+1;-修改I的取值,使循环能够结束END LOOP abcd;在循环语句中还会用到NEXT与EXIT语句,用来结束循环或跳出循环。第6章 VHDL的描述语句与描述风格(1)NEXT语句。NEXT语句用于控制内循环的结束。NEXT语句的使用格式为NEXT 标号WHEN 条件;其中“标号”与“WHEN条件”可以省略。当“标号”与“WHEN条件”都省略时,语句执行到该处时将无条件跳出本次循环;当有“标号”无“WHEN条件”时,语句执行到该处时将无条件跳到标号处;当有“WHEN条件”无“标号”时,语句执行到该处时判断条件,如果条件成立,语句将跳出本次循环;当既有“标号”又有“WHEN

14、条件”时,语句执行到该处时判断条件,如果条件成立,语句将跳出到标号处。第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格(2)EXIT语句。EXIT语句用于结束LOOP循环状态,其使用格式为EXIT 标号 WHEN 条件;其中“标号”与“WHEN条件”可以省略。当“标号”与“WHEN条件”都省略时,语句执行到该处时将无条件跳出整个循环;当有“标号”无“WHEN条件”时,语句执行到该处时将无条件跳出整个循环,并从标号处往下执行;当有“WHEN条件”无“标号”时,语句执行到该处时判断条件,如果条件成立,语

15、句将跳出整个循环;当即有“标号”又有“WHEN条件”时,语句执行到该处时判断条件,如果条件成立,语句将跳出整个循环,并从标号处往下执行。第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格6.1.3 WAIT语句语句进程在执行过程中总是处于两种状态:执行或挂起。进程执行状态的转换可以通过进程中敏感信号的变化来控制,若敏感信号列表中有一个信号变化,则进程开始启动,处于执行状态,否则进程就处于挂起状态,直到下一次敏感信号再发生变化。进程的状态变化也可以用等待语句去控制,当

16、进程执行到等待语句时,就被挂起,并等待条件满足或信号变化从而再次执行进程。第6章 VHDL的描述语句与描述风格WAIT等待语句的使用格式有4种:(1)WAIT无限等待。(2)WAIT ON等待敏感信号变化。(3)WAITFOR等待一段时间。(4)WAITUNTIL等待某个条件满足。第6章 VHDL的描述语句与描述风格下面分别介绍这些语句的使用。(1)WAIT语句,当语句执行到该处时,进程将永远挂起。这种语句使用的情况很少。(2)WAITON语句,该语句的使用格式为WAIT ON 信号,信号;格式中的信号也可以称为敏感信号,当语句执行到该处时,等待信号发生变化,如果发生变化,则执行,否则进程处于

17、挂起状态。WAIT ON语句只对信号敏感,所以WAIT ON后面的条件必须要有一个是信号,否则进程将永远被挂起。第6章 VHDL的描述语句与描述风格【例例6-12】PROCESS(a,b)BEGIN y=a AND b;END PROCESS;该例中的进程与下例中的进程相同。第6章 VHDL的描述语句与描述风格【例6-13】PROCESS BEGIN y=实参表达式,形参名=实参表达式);一个过程的调用有三个步骤:将IN和INOUT模式的实参值赋给欲调用的过程中与它们对应的形参;执行这个过程;将过程中IN和INOUT模式的形参值返回给对应的实参。第6章 VHDL的描述语句与描述风格第6章 VH

18、DL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格2函数调用函数调用函数调用与过程调用十分相似,其不同之处在于函数调用将返还一个指定数据类型的值,函数的参量只能是输入值。函数调用格式为信号=实参表达式,形参名实参表达式);变量:=函数名(形参名=实参表达式,形参名实参表达式);第6章 VHDL的描述语句与描述风格【例例6-17】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY fun IS PORT(a:IN STD_LOGIC_VECTOR(0 TO 2);qout:OUT STD_LOGIC_VEC

19、TOR(0 TO 2);END fun;ARCHITECTURE one OF fun ISFUNCTION sam(x,y,z:STD_LOGIC)RETURN STD_LOGIC IS-定义函数体第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格6.1.5 其他顺序语句其他顺序语句在VHDL语言中,还经常使用空操作语句(NULL)、断言语句(ASSERT)、REPORT语句等进行设计与仿真。1空操作语句空操作语句(NULL)空操作语句的格式如下:NULL;空操作语句常常用在CASE语句中。在CASE语句中,所有条件句中的选择值必须能完全覆盖CASE语句中表达式的取值,

20、所以经常在最末一个条件句中用“OTHERS”表示没有列出的表达式的取值,如果不想改变任何电路结构,也可以用NULL语句表示什么都不做。第6章 VHDL的描述语句与描述风格【例例6-18】CASE opcode IS WHEN “001”=tmp:=rega AND regb;WHEN “101”=tmp:=rega OR regb;WHEN “110”=tmp:=NOT rega;WHEN others =NULL;-在另外的情况下,电路不做任何动作END CASE;第6章 VHDL的描述语句与描述风格2断言断言(ASSERT)、REPORT语句语句ASSERT语句主要用于程序仿真、调试中的人

21、机对话,它可以给出文字串作为警告或错误信息。ASSERT与REPORT语句的使用格式为ASSERT 条件 REPORT 输出信息 SEVERITY 级别如果条件为真,向下执行另一个语句;如果条件为假,则输出错误信息和错误严重程度的级别。在REPORT语句中的出错级别有:NOTE(注意)、WARNING(警告)、ERROR(错误)和FAILURE(失败)。REPORT语句不增加任何语言功能,只是提供某种语句形式的输出。第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格6.2 并发执行语句并发执行语句相对

22、于传统的软件描述语言而言,并行语句最能体现VHDL作为硬件设计语言的特点。各种并行语句在结构体中是同时并发执行的,其执行顺序与书写的顺序没有任何关系。注意,在一个结构体内存在多个进程语句时,每一个进程都是并发执行的,它们之间可以通过信号进行通信,但每个进程内部的语句是顺序执行的。只有灵活运行并行语句和顺序语句才能设计出符合VHDL语言要求和硬件特点的电路。在结构体中常用的并行语句有:并行信号赋值语句,进程语句,元件例化语句,块语句,生成语句,子程序调用语句等。其中块语句在5.3节进行了介绍,元件例化语句与生成语句常用于VHDL语言结构化的描述方式中,这部分内容将在6.3节中进行介绍。下面介绍并

23、行信号赋值语句、多进程语句和子程序调用语句。第6章 VHDL的描述语句与描述风格6.2.1 并行信号赋值语句并行信号赋值语句在VHDL语言中并行信号赋值语句主要有3种形式:简单信号赋值语句、条件信号赋值语句、选择信号赋值语句。这些信号的赋值是同时执行的,目标信号与信号的赋值源必须长度一致、类型一致,否则在检查编译时就会出错。1简单信号赋值语句简单信号赋值语句简单信号赋值语句是VHDL并行语句结构中最基本的单元,信号的赋值语句在进程中使用的是顺序语句,但是在进程外即在结构体中则使用并发语句,相当于一个进程。简单信号赋值语句的使用格式为赋值目标=表达式;第6章 VHDL的描述语句与描述风格第6章

24、VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格在信号赋值语句中如果两边类型不一致,则可以通过调用相关的程序包,运用类型转换函数进行类型转换;如果赋值两边长度不一致,可以通过并置符补充相应的位数,或者通过段下标进行赋值。信号代入语句的右边可以是算术表达式,也可以是逻辑表达式,还可以是关系表达式,所以可以仿真加法器、乘法器、除法器、比较器等多种逻辑电路。第6章 VHDL的描述语句与描述风格2条件信号赋值语句条件信号赋值语句条件信号赋值语句也是并发语句,它可以将符合条件的表达式代入信号量。其使用格式为在执行条件赋值语句时,每个赋值条件是按书写的先后关系逐项测定的,一旦发现赋值条件为

25、真,立即将表达式的值赋给目标信号。第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格在该程序中最后一项可以不跟条件子句,用于表示以上条件都不满足时,将此表达式的值赋给目标信号。条件信号赋值语句的功能与顺序语句中IF语句相似,但是两者又存在不同之处:IF语句只能用在进程、子程序内部,是顺序执行的,而条件信号语句一般用在结构体中,是并发执行的;条件信号赋值语句中的ELSE一定要有,而IF语句中可有可无;与IF语句不同,条件信号赋值语句不能进行嵌套。第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格选择信号赋值语句的功能

26、与CASE语句相似,该语句中也有敏感量,即关键词WHEN后的条件表达式。每当条件表达式的值发生变化时,就将启动此语句对各子句的选择值进行对比,当发现有满足条件的子句时,就将此子句表达式的值赋给目标信号量。各个子条件选择值有要求,不允许有条件重叠现象,也不允许有条件覆盖不全的情况。其中WHEN的条件表达式可以有4种形式:(1)WHEN 值;(2)WHEN 值|值|值|值;(3)WHEN 值TO 值;(4)WHEN OTHERS。第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格例6-22实现了一个四选一选择器的功能,该语句使用了条件信号赋

27、值语句与选择信号赋值语句。因为是并发执行语句,所以选择信号赋值语句与条件信号赋值语句书写上没有先后顺序。sel的取值仅有0、1、2、3四种情况,在选择信号赋值语句中不需要“OTHERS”语句。第6章 VHDL的描述语句与描述风格6.2.2 多进程语句多进程语句进程语句是最主要的并行语句,它在VHDL程序设计中使用得最频繁,也是最能体现硬件描述语言特点的一种语句。在进程内部的语句是顺序执行的,但是在一个构造体中多个PROCESS语句则是并发执行的,该语句有如下特点:(1)可以和其他进程语句同时执行,并可以存取构造体和实体中所定义的信号。(2)进程中的所有语句都按照顺序执行。(3)为启动进程,在进

28、程中必须包含一个敏感信号表或WAIT语句。(4)进程之间的通信是通过信号量来实现的。第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格例6-23为一个按BCD码计数的六十进制的计数器,其中包含了三个进程:第一个进程为一个十进制计数器进程;第二个进程为一个六进制计数器进程,当个位数计数到9时,再来一个脉冲则十位数进行计数;第三个进程为产生进位信号的进程,当个位数为9、十位数为5时,则再来一个脉冲,计数值清零,同时产生一个进位信号。第

29、二个进程需要用到第一个进程的个位计数值,第三个进程需要用到第一个进程的个位计数值和第二个进程的十位计数值。由例可知,进程之间的通信都是通过信号“bcd1n”、“bcd10n”进行的。第6章 VHDL的描述语句与描述风格6.2.3 并行子程序调用语句并行子程序调用语句子程序的调用可以在顺序语句中进行,也可以在并发语句中进行。并行子程序调用可以作为一个并行语句直接出现在结构体或块语句中,其中并行过程调用等同于包含一个子程序调用语句的进程。并行子程序调用语句的调用格式与前面讲的顺序子程序调用语句是相同的。并行子程序调用可以分为并行过程调用语句与并行函数调用语句。第6章 VHDL的描述语句与描述风格1

30、并行过程调用语句并行过程调用语句并行过程调用语句的格式为标号:过程名(关联参数名);过程调用语句可以并发执行,但要注意如下问题:(1)并发过程调用是一个完整的语句,在它之前可以加标号。(2)并发过程调用语句应带有IN、OUT或INOUT的参数,它们应该列在过程名后的括号内。(3)并发过程调用可以有多个返回值。第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格2并行函数调用语句并行函数调用语句并行函数调用与顺序函数调用基本相同,并行函数调用也是一个完整的语句,其不同之处是调用函数将返还一个指定数据类型的值,函数的参量只能是输入值。函数返回

31、值只有一个,就是函数的本身,所以在调用函数时必须要有一个赋值目标,而把函数的返回值作为赋值源。并行函数调用语句的使用格式为信号=实参表达式,形参名实参表达式);第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格6.3 VHDL的描述风格的描述风格前面已经介绍了结构体常用的语句,对于所希望的电路功能行为,可以在结构体中用不同的语句类型和描述方式来表示。对于相同的逻辑行为,可以有不同的语句表达方式,称之为VHDL语言的描述风格或描述方式。在VHDL语言中通常有三种描述方式:行为描述方式、数据流描述方式和结构描述方式。在实际应用中,为了能够兼

32、顾整个设计的功能、资源、性能几个方面的因素,通常混合使用这三种描述方式。第6章 VHDL的描述语句与描述风格6.3.1 行为描述方式行为描述方式如果结构体只描述了电路的功能或者电路行为,没有直接指明或涉及实现这种行为的硬件结构,则称之为行为描述。行为描述只表示输入与输出之间的转换行为,不包含任何结构信息。行为描述主要使用函数、过程和进程语句以及算法形式描述数据的转换和传送。而所谓的硬件结构,是指具体硬件电路的连接结构、逻辑门的组成结构、元件或其他各种功能单元的层次结构等。行为描述用于描述数字系统的行为,主要用于仿真和系统工作原理的研究。随着VHDL语言综合器功能的日益强大,它已经可以对大多数行

33、为级描述进行综合。第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格该程序描述的是一个具有复位功能的计数器。在程序中,不存在任何与硬件选择相关的语句,也不存在任何有关硬件内部连线的语句。整个程序只对所设计的电路系统的行为功能作了描述,不涉及任何具体器件方面的内容,也即对于电路设计人员来讲,采用行为级设计,不需要设计人员掌握太多的硬件电路知识。相对于其他硬件描述语言,VHDL语句具有强大的行为设计能力,所以在VHDL语言设计中,综合器完成的工作量是巨大的,而设计者所做的工作就相对减少了。虽然VHDL语言的综合器具有强大的功能,但是并非所有

34、的行为级描述语句都可以进行综合,这要看设计人员选择什么样的综合器。不同厂家、不同版本的综合器,其综合和优化效率是不一致的,优秀的VHDL综合器对VHDL设计的数字系统产品的工作性能和性价比都会有良好的影响。第6章 VHDL的描述语句与描述风格6.3.2 数据流描述方式数据流描述方式数据流描述方式也称RTL描述方式。RTL是寄存器传输语言的简称,所以也可称为寄存器传输级描述。数据流描述方式以规定的设计中的各种寄存器形式为特性,然后在寄存器之间插入组合逻辑。一般地,VHDL的数据流描述方式类似于布尔方程,可以描述时序电路,也可以描述组合电路,它既含有逻辑单元的结构信息,又隐含有某种行为。数据流描述

35、主要指非结构化的并行语句描述。第6章 VHDL的描述语句与描述风格数据流的描述是建立在用并行信号赋值语句描述基础上的,当语句中任一输入信号的值发生改变时,赋值语句就被激活,随着这种语句对电路行为的描述,大量有关这种结构的信息也从这种逻辑描述中“流出”。认为在一个设计中,数据是从输入到输出流出的观点称之为数据流描述方式。数据流描述直观地表达了电路底层的逻辑行为,是一种可以进行逻辑综合的描述方式。第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格6.3.3 结构描述方式结构描述方式所谓结构描述,是指描述该设计单元的硬件结构,即该硬件是如何构成的,其主要采用元件例化语句及配置语

36、句来描述元件的类型及元件的互连关系。利用结构描述可以用不同类型的结构来完成多层次的工程,即用门电路和元件来描述整个系统。元件间的连接是通过定义的端口界面来实现的,其风格最接近实际的硬件结构,即设计中的元件是互连的。结构描述表达了元件之间的互连关系,这种描述允许互连元件按层次安置。注重调用已有的元件、元件或门级电路之间的连线是结构描述的特点。采用结构描述可以提高设计效率,其设计步骤如下。第6章 VHDL的描述语句与描述风格1声明元件声明元件在调用一个元件前,必须对它进行声明。元件声明语句用于调用已生成的元件,这些元件可能在库中,也可能是预先编写的元件实体描述。元件声明语句可以在结构体(ARCHI

37、TECTURE)、程序包(PACKAGE)、块语句(BLOCK)的说明部分。元件声明语句的格式为COMPONENT 元件名PORT 说明;-端口说明END COMPONENT;第6章 VHDL的描述语句与描述风格2调用元件调用元件在声明元件之后,就可以对元件进行调用了,调用元件的格式为标号名:元件名 PORT MAP(信号,);在调用元件时,要进行本设计与调用元件之间的信号映射,实现该映射的方式有两种:位置映射和名称映射。第6章 VHDL的描述语句与描述风格(1)位置映射。位置映射是指设计单元与调用元件之间的信号的对应关系是按位置进行对应的,从左到右按顺序进行对应,这是一种常用的对应关系,也是

38、比较简单的对应关系。采用位置映射时,要求设计人员对应调用元件的端口信号书写先后顺序要非常了解,对于复杂的设计元件,在端口数目比较多的情况下,容易发生位置上的错误。第6章 VHDL的描述语句与描述风格例如,有一元件的端口说明为PORT(a,b:IN BIT;c:OUT BIT);则调用该元件时:u2:元件名 PORT MAP(n1,n2,m);这里n1对应a,n2对应 b,m对应 c。第6章 VHDL的描述语句与描述风格(2)名称映射。该映射就是将库中已有模块的端口名称赋予设计中的信号名。按上例中元件的端口说明调用该元件时,如果采用名称映射,则调用语句为u2:元件名 PORT MAP(a=n1,

39、b=n2,c=m);在调用该元件时,设计电路的信号 n1对应元件中的信号a,设计电路的信号n2对应元件中的信号 b,设计电路的信号m对应元件中的信号c。下面通过一个4位加法器介绍结构化设计的全过程,4位加法器的结构如图6-2所示。第6章 VHDL的描述语句与描述风格图6-2 4位加法器结构第6章 VHDL的描述语句与描述风格这是一个串行移位4位加法器,输入是两个4位的位矢量a、b,输出为一个4位的位矢量s及一个向高位的进位ci。也即如果设计4位加法器,可以调用4次全加器,同时全加器又可以由两个半加器及一个或门构成,其构成电路如6-3图所示。在设计全加器的过程中要调用半加器2次、或门1次。因此,

40、对于所要设计的4位加法器,可以用全加器构成,而全加器又由半加器和或门构成。第6章 VHDL的描述语句与描述风格图6-3 全加器原理第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格在该程序中调用了4次全加器,电路中的信号与元件的信号对应关系采用的是位置映射的方式。第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格因为或关系是标准逻辑关系,所以在设计过程中可以直接用“OR”表示或门,不必再对或门进行申明与调用了。第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格6.3.4 生成语句生成语句在设计

41、4位加法器时,分别用了4个元件例化语句实现4次全加器的调用,分析这4行语句发现其有一定的规律可循:第2行的对应信号比第1行的对应信号在下标上增加1,这就可以用生成语句来编写程序。生成语句是一个可以用来产生多个相同结构和描述规则的语句,用于简化一些有规律的设计结构的逻辑描述。在设计中,只要根据某些条件设计好某一元件或单元,就可以用生成语句复制一组完全相同的并行元件或单元电路结构。生成语句有以下两种格式。第6章 VHDL的描述语句与描述风格格式1:标号:FOR变量 IN 不连续区间 GENERATE;END GENERATE 标号名;FOR GENERATE形式的生成语句用于描述多重模式,结构中所

42、列举的是并发处理语句。这些语句并发执行,因此结构中不能使用EXIT语句和NEXT语句。第6章 VHDL的描述语句与描述风格格式2:标号:IF 条件 GENERATE;END GENERATE 标号名;IF GENERATE形式的生成语句用于描述结构中例外的情况,比如边界处发生的特殊情况。IF GENERATE语句在IF条件为“真”时才执行结构体内部的语句,这与顺序执行语句中的IF语句不同(在该语句中,其执行的过程是并发的),因此在这种结构中不能含有ELSE语句。一般GENERATE语句主要应用于计算机存储阵列及寄存器阵列等方面。第6章 VHDL的描述语句与描述风格【例例6-31】在上面介绍的4

43、位加法器程序中,如果把调用4次全加器的语句用生成语句表达,则程序如下。第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格在该语句中把i为0与i为3的情况排除在外,用一个FOR GENERATE语句完成。如果仅用FOR GENERATE语句完成该功能,则4位全加器的构造体语句见例6-32。第6章 VHDL的描述语句与描述风格第6章 VHDL的描述语句与描述风格6.4 其他语句和说明其他语句和说明6.4.1 属性描述与定义语句属性描述与定义语句在VHDL语言中,属性(ATTRIBUTE)的功能是用来描述设计实体的构成部分、数据类型和对象的指定特征以及相应的特性。通过预定义属性

44、描述语句,可以获得客体对象的有关值、功能、类型及范围。利用属性定义可以写出更加简明扼要的、可读性强的程序模块。属性功能有许多重要应用,可以用来检出时钟边沿,完成定时检查,从块结构、信号或子类型中获取数据,获取未约束的数据类型的范围,等等。第6章 VHDL的描述语句与描述风格预定义属性有6类:(1)数值类属性函数,返回一个简单值。(2)函数类属性函数,返回一个值,执行函数请求。(3)信号类属性函数,从另一个信号得出值,建立一个新信号值。(4)数据类型类属性函数,返回一个类型标识。(5)数据区间类属性函数,返回一个范围的值。(6)自定义类属性。第6章 VHDL的描述语句与描述风格1数值类属性数值类

45、属性数值类属性用来得到数组、块或者一般数据的有关值,其分类如下:TLEFT得到数据类或子类区间最左端的值;TRIGHT得到数据类或子类区间最右端的值;THIGH得到数据类或子类区间的高端值;TLOW得到数据类或子类区间的低端值;TLENGTH得到数组的长度值。第6章 VHDL的描述语句与描述风格另外还有STRUCTURE与BEHAVIOR属性,用于块和结构体。如果块有标号说明或者结构体有结构体说明,而且在块和结构体中不存在COMPONENT语句,那么BEHAVIOR属性将得到“TRUE”的信息;如果在块和结构体中只有COMPONENT语句或被动进程,那么属性STRUCTURE将得到“TRUE”

46、的信息。第6章 VHDL的描述语句与描述风格2函数类属性函数类属性函数类属性是指属性以函数的形式出现,其分类如下:(1)数据类属性。利用数据类属性函数可以得到有关数据类型的各种信息,如:TPOS(X)得到输入X值的位置序号;TVAL(X)得到输入位置序号X的值;TSUCC(X)得到输入X值的下一个值;TPRED(X)得到输入X值的前一个值;TLEFOF(X)得到邻近输入X值左边的值;TRIGHTOF(X)得到邻近输入X值右边的值。第6章 VHDL的描述语句与描述风格(2)数组类属性。利用数组类属性函数可以得到数组的区间,如:TLEFT(n)得到索引号为n的区间左端的位置号;TRIGHT(n)得

47、到索引号为n的区间右端的位置号;THIGN(n)得到索引号为n的区间的高端位置号;TLOW(n)得到索引号为n的区间的低端位置号。在这里n是指多维数组中所定义的多维区间的序号,当n为默认值时,代表对一维区间进行操作。T指的是一个数组,如果数组的元素是递增排列的,则TLEFT等于THIGH,TRIGHT等于TLOW;如果数组为递减排列的,则对应关系相反。第6章 VHDL的描述语句与描述风格(3)信号的函数类属性。信号函数类属性用来得到信号的行为信息,如:SEVENT如果在当前一个相当小的时间间隔内事情发生了变化,那么函数将返回一个为“TRUE”的布尔量,否则返回“FALSE”。SACTIVE如果

48、在当前一个相当小的时间间隔内信号发生了改变,那么函数将返回一个为“TRUE”的布尔量,否则返回“FALSE”。SLAST_EVENT该属性函数将返回一个时间值,即从信号前一个事情发生到现在所经过的时间。SLAST_VALUE该属性函数将返回一个值,该值是信号最后一次改变以前的值。第6章 VHDL的描述语句与描述风格SLAST_ACTIVE该属性函数将返回一个时间值,即从信号前一次改变到现在的时间。信号的函数类属性主要用于时钟的边沿检测。例如我们要检测一个时钟的上升沿,则可以使用如下语句:IF clkEVENT AND clk=1 THEN这个语句对于BIT类型的信号没有问题,但是如果clk的类

49、型为STD_LOGIC,则该语句不能保证检测出来的信号一定是上升沿,因为STD_LOGIC类型的取值有9种,任意一种状态跳到“1”状态时,该语句都将返回一个真值。如果把上面的语句改写成如下语句:IF clkEVENT AND clk=1 AND clkLAST_VALUE=0 THEN第6章 VHDL的描述语句与描述风格则对于STD_LOGIC类型的信号就能检测出上升沿了。如果是检测下降沿,则将语句改写成如下形式:IF clkEVENT AND clk=0 AND clkLAST_VALUE=1 THEN另外,对于STD_LOGIC类型的信号,可以通过RISING_ EDGE(clk)来检测时

50、钟的上升沿。第6章 VHDL的描述语句与描述风格3信号类属性信号类属性信号类属性用于产生一种特别的信号,这个信号是以所加属性的信号为基础而形成的。信号类属性有4种:SDELAYED(time)该属性将产生一个延时信号,其信号类型与该属性所加的信号相同,即以属性所加的信号为参考信号,经过括号内时间表达式所确定的时间延时后所得的延时信号。SSTABLE(time)该属性可以建立一个布尔信号,在括号内的时间表达式所说明的时间内,若参考信号没有发生事件,则该属性可以得到“TRUE”的结果。第6章 VHDL的描述语句与描述风格SQUIET(time)该属性可以建立一个布尔信号,在括号内的时间表达式所说明

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(电子设计自动化第6章-VHDL的描述语句与描述风格课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|