EDA技术及应用 教学课件 ppt 作者 吴延海 第6-8章 第6章

上传人:E**** 文档编号:89346042 上传时间:2019-05-23 格式:PPT 页数:269 大小:1.36MB
返回 下载 相关 举报
EDA技术及应用 教学课件 ppt 作者 吴延海 第6-8章 第6章_第1页
第1页 / 共269页
EDA技术及应用 教学课件 ppt 作者 吴延海 第6-8章 第6章_第2页
第2页 / 共269页
EDA技术及应用 教学课件 ppt 作者 吴延海 第6-8章 第6章_第3页
第3页 / 共269页
EDA技术及应用 教学课件 ppt 作者 吴延海 第6-8章 第6章_第4页
第4页 / 共269页
EDA技术及应用 教学课件 ppt 作者 吴延海 第6-8章 第6章_第5页
第5页 / 共269页
点击查看更多>>
资源描述

《EDA技术及应用 教学课件 ppt 作者 吴延海 第6-8章 第6章》由会员分享,可在线阅读,更多相关《EDA技术及应用 教学课件 ppt 作者 吴延海 第6-8章 第6章(269页珍藏版)》请在金锄头文库上搜索。

1、第 6 章 VHDL描述语句,6.1 顺序描述语句 6.2 并行描述语句 6.3 属性描述与定义语句 6.4 文本文件操作语句,6.1 顺序描述语句 6.1.1 赋值语句 赋值语句将一个值或表达式的运算结果传递给某一数据对象,如变量、信号或由此组成的数组。VHDL设计实体内的数据传递以及端口数据的读写都是通过赋值语句的运行实现的。,1变量赋值语句 变量赋值语句格式为 /- 目的变量:= 表达式; -/ 例如: a:= 3; b:= c+d;,2信号赋值语句(信号代入) 信号赋值语句格式为 /- 目的信号量= 信号表达式; -/ 例如:y = a AND b; 表示将信号量 a 和b相与的结果赋

2、给目的信号量y。, 从语句格式看,变量赋值语句用“:=”;信号赋值语句用 “=”。 从有效的范围看,变量值是一个局部的、暂时性的数据对象;信号具有全局性特性,它不但可作为一个设计实体内部各单元之间数据传送的载体,而且可通过信号与其他实体进行通信。, 从有效的时间看,变量赋值是立即发生的(假设进程已启动),即是一种时间延迟为0的赋值行为;信号赋值通常不是立即发生的,而是发生在一个进程结束时,赋值过程总是有某个延时的,它反映了硬件系统的重要性,综合后可以找到与信号对应的硬件结构(如一个I/O口、一个D触发器等)。,6.1.2 WAIT 语句 下面介绍WAIT语句的格式。 1无限等待语句 无限等待语

3、句格式为 /- WAIT; -/ 说明:该语句使进程处于无限等待状态。,2敏感信号等待语句 敏感信号等待语句格式为 /- WAIT ON 敏感信号,敏感信号; -/ 说明:该语句使进程处于等待状态,直到敏感信号表中的某个信号发生变化时才能够把进程激活,从而使其处于执行 状态。,【例6.1】 WAIT语句示例。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY res_dff1 IS PORT(clk, reset, d: IN STD_LOGIC; q: OUT STD_LOGIC ); END res_dff1;,ARCHITECTURE r

4、tl OF res_dff1 IS BEGIN PROCESS BEGIN IF (reset=1) THEN q = 0; ELSIF (clkevent AND clk=1) THEN q = d; END IF ; WAIT ON clk,reset; END PROCESS; END rtl;,例6.1给出的是一个描述异步复位D触发器的VHDL程序,其中的WAIT ON语句表明该进程对信号clk和reset敏感。clk和reset只要有一个信号发生变化,进程就将结束等待状态而进入执行状态。当进程处于执行状态时,如果reset有效,则q将被赋0;如果reset无效且时钟上升沿有效,则q将

5、被赋成d的值。执行完进程语句后,进程将再次处于等待状态,等待信号clk或reset再次发生变化。,3条件等待语句 条件等待语句格式为 /- WAIT UNTIL 条件表达式; -/ 说明:该语句使进程处于等待状态,直到条件表达式中所含信号发生变化,且条件表达式为TRUE时,进程才能脱离等待状态,恢复执行WAIT后面的语句。,【例6.2】 条件等待语句示例。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY res_dff2 IS PROT(clk, reset, d: IN STD_LOGIC; q: OUT STD_LOGIC ); END

6、res_dff2;,ARCHITECTURE rtl OF res_dff2 IS BEGIN PROCESS BEGIN WAIT UNTIL clkevent AND clk = 1; IF (reset=1) THEN q = 0; ELSE q = d; END IF ; END PROCESS; END rtl;,4超时等待语句 超时等待语句格式为 /- WAIT FOR 时间表达式; -/ 说明:从执行到当前的WAIT语句开始计时,进程处于等待状态,当计时达到“时间表达式”所规定的时间后,进程自动恢复执行WAIT FOR下面的语句。,【例6.3】 超时等待语句示例。 LIBRARY

7、 IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY clk_generator IS PROT(clk: OUT STD_LOGIC ); END clk_generator;,ARCHITECTURE rtl OF clk_generator IS BEGIN PROCESS BEGIN WAIT FOR 250 ns; clk = 0; WAIT FOR 250 ns; clk = 1; END PROCESS; END rtl;,例6.3给出的是一个描述2 MHz时钟发生器的VHDL程序,进程中包含两个WAIT FOR语句。当进程执行到第一个WAIT F

8、OR语句时开始计时,进程处于等待状态,当计时达到250 ns后,进程又处于执行状态,将0赋给时钟信号clk,然后进程执行到第二个WAIT FOR语句时再次开始计时,进程再次处于等待状态,直到等待250 ns后才会处于执行状态,将1赋给时钟信号clk;执行完后进程又处于等待状态,当等待时间达到250 ns后进程再次执行,即该进程将会反复执行,从而在clk输出端得到一个频率为2 MHz的时钟信号。,6.1.3 IF语句 IF语句的语句格式为 /- IF 条件1 THEN 顺序处理语句1; ELSIF 条件2 THEN 顺序处理语句2;,ELSIF 条件n THEN 顺序处理语句n; ELSE 顺序

9、处理语句n+1; END IF; -/,说明: (1) IF语句的一般形式是以保留字“IF”开始,而以保留字“END IF”结尾。IF语句的保留字“IF”和保留字“END IF”之间可以包含有多个ELSIF子句和一个ELSE子句,它们是可选项。 (2) IF语句的条件是一个布尔表达式,返回值为布尔类型(“TRUE/FALSE”)。当条件满足时执行接下来的顺序语句;当条件不满足时执行下面的ELSIF子句或ELSE子句或结束该IF 语句。,【例6.4】 IF语句示例。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux4 IS PROT(in

10、put: IN STD_LOGIC_VECTOR(3 DOWNTO 0); sel: IN STD_LOGIC_ VECTOR(1 DOWNTO 0); output: OUT STD_LOGIC ); END mux4;,ARCHITECTURE rtl OF mux4 IS BEGIN PROCESS (input,sel) BEGIN IF (sel=“00”) THEN output = input(0); ELSIF (sel=“01”) THEN output = input(1);,ELSIF (sel=“10”) THEN output = input(2); ELSE out

11、put = input(3); END IF ; END PROCESS; END rtl;,说明: (1) IF_ELSIF_ELSE语句经常用来描述具有多控制条件的硬件电路。 (2) IF_ELSIF语句中顺序语句的执行条件具有向上相“与”的功能。 (3) IF语句不仅可用于选择器设计,而且用于比较器、译码器等也是相当方便的。,6.1.4 CASE语句 CASE语句格式如下: /- CASE 条件表达式 IS WHEN 选择值1 = 顺序处理语句1; WHEN 选择值2 = 顺序处理语句2; WHEN OTHERS = 顺序处理语句n; END CASE; -/,(1) CASE语句的一般

12、形式是以保留字“CASE”后跟一个条件表达式和一个保留字“IS”开始,而以保留字“END CASE”结尾。CASE语句的保留字“CASE”和保留字“END CASE”之间可以包含有多个WHEN语句,它们是可选项。,(2) VHDL程序具体执行哪一个顺序处理语句,取决于条件表达式的值与哪一个 WHEN语句的选择值或OTHERS相匹配。如果条件表达式的值与某一个 WHEN语句的选择值或OTHERS相匹配,则执行它们后面所跟的顺序处理语句,执行完顺序处理语句后将结束该 CASE语句。,(3) WHEN语句中的选择值必须在条件表达式的取值范 围内。 (4) CASE语句中每一条件语句的选择只能出现一次

13、,相同选择值的条件语句不能重复出现。 (5) 所有条件表达式的值都必须穷举,不能穷举的值用OTHERS表示(OTHERS代表已给的所有条件语句中未能列出的其他可能取值,这样可以避免综合器插入不必要的寄存器)。,(6) CASE语句执行时必须选中,且只能选中所列条件语句中的一条。 (7) CASE语句中,WHEN语句可以颠倒次序而不影响语句功能,IF语句却不能(IF隐含有优先级判别)。但是,同样的逻辑功能,CASE结构综合后比IF语句将消耗更多的芯片资源。,【例6.5】 CASE语句示例。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux4 IS PROT(input: IN STD_LOGIC_VECTOR(3 DOWNTO 0); sel: IN STD_LOGIC_ VECTOR(1 DOWNTO 0); output: OUT STD_LOGIC ); END mux4;,ARCHITECTURE rtl OF mux4 IS BEGIN

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

当前位置:首页 > 高等教育 > 大学课件

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