VHDL语言的主要描述语句课件

上传人:我*** 文档编号:143667695 上传时间:2020-09-01 格式:PPT 页数:77 大小:450KB
返回 下载 相关 举报
VHDL语言的主要描述语句课件_第1页
第1页 / 共77页
VHDL语言的主要描述语句课件_第2页
第2页 / 共77页
VHDL语言的主要描述语句课件_第3页
第3页 / 共77页
VHDL语言的主要描述语句课件_第4页
第4页 / 共77页
VHDL语言的主要描述语句课件_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《VHDL语言的主要描述语句课件》由会员分享,可在线阅读,更多相关《VHDL语言的主要描述语句课件(77页珍藏版)》请在金锄头文库上搜索。

1、第六章 VHDL语言的主要描述语句,VHDL语言描述系统硬件行为时,按语句执行顺序可以分为顺序(Sequential)描述语句和并发(Concurrent)描述语句。灵活运用这两类语句就可以正确地描述系统的并发行为和顺序行为。 例如,进程语句(Process Statement)是一个并发语句。在一个构造体内可以有几个进程语句同时存在,各进程语句是并发执行的。但是,在进程内部所有语句应是顺序描述语句,也就是说,是按书写的顺序自上至下,一个语句一个语句地执行的。例如,IF 语句、LOOP语句等都属于此类顺序描述语句。,6.1 顺序描述语句,执行顺序与书写顺序一致,与传统软件设计语言的特点相似。顺

2、序语句只能用在进程与子程序中。 在VHDL语言中顺序描述语句有以下几种:,* WAIT语句; * 断言语句; * 信号代入语句; * 变量赋值语句; * IF语句; * CASE语句; * LOOP语句; * NEXT语句; * EXIT 语句; * 过程调用语句; * NULL语句,6.1.1 WAIT语句,进程在仿真时的两个状态:执行或挂起。 进程状态的变化受WAIT语句的控制。当进程执行到WAIT语句时,就将被挂起,并设置好再次执行的条件。 WAIT语句可以设置4种不同的条件:无限等待、时间到、条件满足以及敏感信号量变化。其书写格式为: WAIT :无限等待 WAIT ON :敏感信号量

3、变化 WAIT UNTIL: 条件满足 WAIT FOR: 时间到,1、WAIT ON,WAIT ON 语句的完整书写格式为: WAIT ON 信号,信号; WAIT ON 后面跟着的是一个或多个信号量,例如: WAIT ON a , b; 该语句表明,等待信号量a或b中只要有一个发生变化,进程将结束挂起状态,而继续执行WAIT ON 语句的后继语句,从而再次启动进程的执行。从这一点来看,与进程指定的敏感信号量有新的变化时,也会启动进程的情况相类似。,举例1,PROCESS (a,b) BEGIN y=a AND b; END PROCESS;,PROCESS BEGIN y=a AND b;

4、 WAIT ON a,b; END PROCESS;,上面两个进程的描述是完全等价的,只是WAIT ON和PROCESS中所使用的敏感信号量的书写方法有区别。在使用WAIT ON语句的进程中,敏感信号量应写在进程中的WAIT ON语句后面;而在不使用WAIT ON语句的进程中,敏感信号量只应在进程开头的PROCESS后跟的括号中说明。,敏感信号量列表和 wait on 语句只能选其一,两者不能同时使用。,注意,举例2,如果PROCESS 语句已有敏感信号量说明,那么在进程中再不能使用WAIT ON 语句。例如,下面的描述是非法的。,PROCESS (a,b) BEGIN y=a AND b;

5、WAIT ON a,b; 错误语句 END PROCESS;,2、WAIT UNTIL,WAIT UNTIL 语句的完整书写格式为: WAIT UNTIL 表达式; 当表达式的值为“真”时,进程被启动,否则进程被挂起。 该语句在表达式中将建立一个隐式的敏感信号量表,当表中的任何一个信号量发生变化时,就立即对表达式进行一次评估。如果评估结果使表达式返回一个“真”值,则进程脱离等待状态,继续执行下一个语句。例如:,WAIT UNTIL (X*10)100); 在这个例子中,当信号量X的值大于或等于10时,进程执行到该语句将被挂起;当X的值小于10时进程再次被启动,继续执行WAIT 语句的后继语句。

6、,例:用wait until语句描述时钟沿,实现D触发器 architecture rtl of d is begin process begin wait until clkevent and clk=1; q = d; end process; end rtl;,举例,3、WAIT FOR,WAIT FOR 语句的完整书写格式为: WAIT FOR 时间表达式; WAIT FOR 语句后面跟着的是时间表达式,当进程执行到该语句时将被挂起,直到指定的等待时间到时,进程再开始执行WAIT FOR 语句后继的语句。 例如: WAIT FOR 20ns; 这个语句中时间表达式是一个常数值20ns,

7、当进程执行到该语句时将等待20ns。一旦20ns时间到,进程将执行WAIT FOR 语句的后继语句。,例如: WAIT FOR (a*(b+c); 此语句中,FOR后面是一个时间表达式,a*(b+c)是时间量。WAIT FOR 语句在等待过程中,要对表达式进行一次计算,计算结果返回的值就作为该语句的等待时间。例如,a=2,b=50ns,c=70ns。那么WAIT FOR (a*(b+c)这个语句将等待240ns,也就是说该语句和WAIT FOR 240ns是等价的。,4、多条件WAIT语句,在前面已叙述的3个WAIT语句中,等待的条件都是单一的,要么是信号量,要么是布尔量,要么是时间量。实际上

8、WAIT语句还可以同时使用多个等待条件。例如: WAIT ON nmi,interrupt UNTIL (nmi=TRUE) OR (interrupt=TRUE) FOR 5us; 上述语句等待的是3个条件: 第一,信号量nmi和interrupt任何一个有一次新的变化; 第二,信号量nmi或interrupt任何一个取值为“真”; 第三,等待5us。 只要上述3个条件中一个或多个条件满足,进程将再次启动,继续执行WAIT语句的后继语句。,6.1.2 断言语句(ASSERT),ASSERT语句主要用于程序仿真、调试中的人机对话,它可以给出一个文字串作为警告和错误信息。ASSERT语句的书写格

9、式为: ASSERT 条件 REPORT 输出信息 SEVERITY 级别; 如果条件为真则向下执行另一个语句,如果条件为假,则输出错误信息和错误级别。REPORT后面的错误信息应用双引号括起来。 ASSERT语句给程序的调试和仿真带来极大的方便,这样的语句一般只用于行为级仿真中,而不能进行逻辑综合。,例: ASSERT(sendB= 1 ) REPORT “sendB timed out at 1 ” SEVERITY ERROR; 该断言语句的条件信号量是sendB=1。如果执行到该语句时,信号量sendB=0,说明条件不满足,就会输出REPORT后跟的文字串。该文字串说明,出现了超时等待

10、错误。SEVERITY后跟的错误等级告诉操作人员,其出错等级为ERROR。,6.1.3 信号代入语句,书写格式: 目的信号量=信号量表达式; 意义:将右边信号量表达式的值赋给左边的目的信号量。,6.1.4 变量赋值语句,书写格式: 目的变量:=表达式; 意义:表达式的值替代目的变量的值,立即有效。,1)赋值方式的不同: 变量:= 表达式; 信号 = 表达式; 2)硬件实现的功能不同: 信号代表电路单元、功能模块间的互联,代表实际的硬件连线;变量代表电路单元内部的操作,代表暂存的临时数据。 3)有效范围的不同: 信号:程序包、实体、结构体;全局量。 变量:进程、子程序;局部量。 4)赋值行为的不

11、同: 信号赋值延迟更新数值;变量赋值立即更新数值;,补充:变量与信号的差异,6.1.5 IF语句,IF语句可用于选择器、比较器、编码器、译码器、状态机的设计,是VHDL语言中最基础、最常用的语句。 IF语句根据制定的条件来确定语句执行顺序,共有三种类型。,1、IF语句的门闩控制,格式: IF 条件 THEN 顺序处理语句; END IF; 当程序执行到该IF语句时,就要判断IF语句所指定的条件是否成立。如果条件成立,则执行顺序处理语句;不成立则跳过IF语句所包含的顺序处理语句,而向下执行IF语句的后续语句。这里的条件起到门闩的控制作用。,D触发器的描述举例,LIBRARY IEEE; USE

12、IEEE.STD.LOGIC.1164.ALL; ENTITY dff IS PORT(clk,d : IN STD_LOGIC; q : OUT STD_LOGIC); END dff; ARCHITECTURE rtl OF dff IS BEGIN PROCESS( clk ) BEGIN IF( clkEVENT AND clk= 1 ) THEN q=d; END IF; END PROCESS; END trl;,注,此例中,IF语句的条件是时钟信号clk事件发生,且时钟clk=1(时钟脉冲上升沿到来)。只有在这个时候d端信号值才赋值给q端。当该条件不满足时,q端维持原来的输出值。

13、,2、IF语句的二选择控制,格式: IF 条件 THEN 顺序处理语句; ELSE 顺序处理语句; END IF; 当条件满足时,则执行THEN和ELSE之间的顺序处理语句;如不满足则执行ELSE和END IF之间的顺序处理语句。,IF二选择控制举例,二选一电路 ARCHITECTURE rtl OF mux2 IS BEGIN PROCESS( a, b, sel ) BEGIN IF ( sel = 1 ) THEN c= a; ELSE c=b; END IF; END PROCESS; END rtl;,此例中,二选一电路的输入端为a和b,选择控制端为sel,输出端为c。,注,3、IF

14、语句的多条件控制,格式: IF 条件 THEN 顺序处理语句; ELSIF 条件 THEN 顺序处理语句; ELSIF 条件 THEN 顺序处理语句; ELSE 顺序处理语句; END IF;,在多选择控制的IF语句中,设置了多个条件。当某个条件满足时就执行跟在该条件这后的顺序处理语句, 如果条件都不满足则执行ELSE和END IF之间的语句。 IF语句的多选择控制又称为IF语句的嵌套。,注,IF语句多条件控制语句举例,四选一电路: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux4 IS PORT ( input : IN STD_L

15、OGIC_VECTOR ( 3 DOWNTO 0); sel : IN STD_LOGIC_VECTOR ( 1 DOWNTO 0); y: OUT STD_LOGIC); END mux4; ARCHITECTURE rtl OF mux4 IS BEGIN PROCESS( input, sel ) BEGIN IF ( sel = “00” ) THEN y = input ( 0 ); ELSIF ( sel = “01” ) THEN y = input ( 1 );,ELSIF ( sel = “10” ) THEN y = input ( 2 ); ELSE y = input ( 3); END IF; END PROCESS; END rtl;,注,if_then_elsif 语句中隐含了优先级别的判断,最先出现的条件优先级最高,可用于设计具有优先级的电路。如8-3优先级编码器。,3、IF语句小结,(1)IF语句可以用于凡是可以进行条件控制的逻辑电路设计。 (2)IF语句的条件判断的输出是布尔量,即是“真”(true)或“假”(FALSE)。因此在IF语句的

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号