EDA技术课件修改第4章VHDL基本语句与要素

上传人:E**** 文档编号:91299066 上传时间:2019-06-27 格式:PPT 页数:156 大小:558.50KB
返回 下载 相关 举报
EDA技术课件修改第4章VHDL基本语句与要素_第1页
第1页 / 共156页
EDA技术课件修改第4章VHDL基本语句与要素_第2页
第2页 / 共156页
EDA技术课件修改第4章VHDL基本语句与要素_第3页
第3页 / 共156页
EDA技术课件修改第4章VHDL基本语句与要素_第4页
第4页 / 共156页
EDA技术课件修改第4章VHDL基本语句与要素_第5页
第5页 / 共156页
点击查看更多>>
资源描述

《EDA技术课件修改第4章VHDL基本语句与要素》由会员分享,可在线阅读,更多相关《EDA技术课件修改第4章VHDL基本语句与要素(156页珍藏版)》请在金锄头文库上搜索。

1、第4章 VHDL基本语句与要素,通过本章学习应掌握VHDL的顺序语句和并行语句的基本语法规则及应用;掌握VHDL语言要素,主要包括 VHDL文字规则、数据类型、数据对象、操作符、子程序和VHDL库等基本知识。,【学习目标】,4.1 VHDL的顺序语句,VHDL语言中顺序语句的特点是每一条语句的执行顺序与它们在程序中的书写顺序保持一致,并且在结构层次中前面的语句执行结果会直接影响后面各语句的执行结果。 顺序语句只能出现在进程、子程序(包括函数和过程)或块中,用来定义进程、子程序等的算法。顺序语句可以用来进行算术运算、逻辑运算、信号和变量的赋值、子程序调用、条件控制和迭代等。,VHDL的基本顺序语

2、句主要包括:赋值语句、IF语句、CASE语句、LOOP语句、NEXT语句、EXIT语句、WAIT语句、ASSERT语句、REPORT语句、子程序调用语句、RETURN和NULL语句等。,4.1 VHDL的顺序语句,4.1.1 赋值语句 赋值语句的功能就是将一个值或一个表达式的运算结果传递给某一数据对象,如信号或变量,或由信号、变量组成的数组。VHDL的赋值语句有两种,即信号赋值语句和变量赋值语句。,4.1 VHDL的顺序语句,4.1.1 赋值语句 (1)变量赋值语句 变量赋值语句的功能是用计算赋值符号右边的表达式所得的新值取代变量原来的值。 变量的赋值只能限定在顺序区域内,即只能在进程、过程或

3、函数中为变量赋值。变量赋值语句的书写格式如下: VARIABLE目标变量名:数据类型:=表达式;,4.1 VHDL的顺序语句,4.1 VHDL的顺序语句,(1)变量赋值语句 单值元素赋值目标,例如: VARIABLE a, b: STD_LOGIC; VARIABLE x,y:INTEGER RANGE 15 DOWNTO 0; a:=1; b:=0; x:=11; y:=2+x;,(1)变量赋值语句 数组元素赋值目标,数组元素赋值目标的表示形式如下: 标识符(下标名) 其中“下标名”可以是一个具体的数值,也可以是一个以文字表示的数字,VHDL规定程序在综合时该文字要具有确定的数值。,VARI

4、ABLE a,b:STD_LOGIC_VECTOR(7 DOWNTO 0); b(7 DOWNTO 0):=“10110010”; -数组赋初值 a:=b; -b向a赋值,4.1 VHDL的顺序语句,(1)变量赋值语句 段下标元素赋值目标,赋值目标表示形式如下: 标识符(下标1 TO或DOWNTO 下标2) 其中,括号中的“下标1”和“下标2”必须用具体数值表示,并且其数值范围必须在所定义的数组下标范围内。,例如: VARIABLE a,b : STD_LOGIC_VECTOR (1 TO 4); b(1 TO 4):=“1011“; a:=b; a(1 TO 2):=b(3 TO 4); -

5、a(1)=1,a(2)=1; a(1 TO 4):=“1011“;,4.1 VHDL的顺序语句,4.1.1 赋值语句 (2)信号赋值语句,信号赋值语句的书写格式如下:,目标信号名=表达式 AFTER 时间量; “=”为信号赋值符号。 “AFTER 时间量”可用于为数据信息的输入 设置延时量(如AFTER 3ns),4.1 VHDL的顺序语句,SIGNAL y,z : STD_LOGIC; SIGNAL a,b :STD_LOGIC_VECTOR(0 TO 3); a=“1010“; -数组元素赋值 b=“1000“; a(i)=y; -段下标元素赋值 b(3)=z; -段下标元素赋值,4.1.

6、2 IF语句,(1)用于门闩控制的IF语句,语句的书写格式如下: IF 条件 THEN 顺序语句; END IF; 当程序执行到该IF语句时,就要判断IF语句所指定的条件是否成立。如果条件成立,IF语句所包含的“顺序语句”将被执行;如果条件不成立,程序跳过IF语句所包含的“顺序语句”,执行IF语句的后续语句。,4.1 VHDL的顺序语句,【例4.1】 D触发器,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY DFF IS PORT(clk,d:IN STD_LOGIC; q:OUT STD_LOGIC); END DFF; ARCHITECT

7、URE bhv OF DFF IS BEGIN PROCESS(clk) BEGIN IF clkEVENT AND clk=1 THEN -IF语句应用 q=d; END IF; END PROCESS; END bhv;,4.1 VHDL的顺序语句,(2)用于二选一控制的IF语句,语句的书写格式如下: IF 条件 Then 顺序语句1; ELSE 顺序语句2; END IF; 当IF指定的“条件”成立时,执行“顺序语句1”;当“条件”不成立时,执行“顺序语句2”。用于二选一控制的IF语句是利用条件选择两条不同的程序执行路径。,4.1 VHDL的顺序语句,【例4.2】二选一多路选择器,LIB

8、RARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux21 IS PORT(a,b,sel:IN STD_LOGIC; c:OUT STD_LOGIC); END mux21; ARCHITECTURE example OF mux21 IS BEGIN PROCESS(a,b,sel) BEGIN IF sel=1THEN c=a; ELSE c=b; END IF; END PROCESS; END example;,4.1 VHDL的顺序语句,(3)用于多选择控制的IF语句,语句的书写格式如下: IF 条件1 THEN 顺序语句1; ELSI

9、F 条件2 THEN 顺序语句2; ELSIF 条件n THEN 顺序语句n; ELSE 顺序语句n+1; END IF; 当“条件1”成立时,执行“顺序语句1”;当“条件2”成立时,执行“顺序语句2”;当“条件n”成立时,执行“顺序语句n”;当所有条件都不成立时,执行“顺序语句n+1”。,4.1 VHDL的顺序语句,(3)用于多选择控制的IF语句 例4.3 8-3优先级编码器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY priority_encoder IS PORT(d:IN STD_LOGIC_VECTOR(7 DOWNTO 0);

10、 q:OUT STD_LOGIC_VECTOR(2 DOWNTO 0); END priority_encoder; ARCHITECTURE example OF priority_encoder IS BEGIN PROCESS(d) BEGIN IF(d(0)=0)THEN q=“111“; ELSIF(d(1)=0) THEN q=“110“; ELSIF(d(2)=0) THEN q=“101“;,4.1 VHDL的顺序语句,IF语句是顺序执行语句,此例中IF语句的执行顺序和编码器的优先级是一致的,若颠倒IF语句的顺序,则破坏了编码器的优先级,故IF语句的判别条件是不可颠倒的。,EL

11、SIF(d(3)=0) THEN q=“100“; ELSIF(d(4)=0) THEN q=“011“; ELSIF(d(5)=0) THEN q=“010“; ELSIF(d(6)=0) THEN q=“001“; ELSE q=“000“; END IF; END PROCESS; END example;,4.1 VHDL的顺序语句,4.1.3 CASE语句,CASE语句是根据满足的条件直接选择多项顺序语句中的一项执行,可以用来描述总线或编码、译码行为。 CASE语句的书写格式如下: CASE 条件表达式 IS WHEN 选择值=顺序语句1; WHEN 选择值=顺序语句2; 【WHEN

12、 OTHERS=顺序语句n; END CASE;,4.1 VHDL的顺序语句,4.1.3 CASE语句 【例4.4】4-1多路选择器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MUX41 IS PORT(S1,S2:IN STD_LOGIC; A,B,C,D:IN STD_LOGIC; Z:OUT STD_LOGIC); END ENTITY MUX41; ARCHITECTURE ART OF MUX41 IS SIGNAL S:STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN,4.1 VHDL的顺序语句,4.1

13、.3 CASE语句 SZZZZZ=X; END CASE; END PROCESS; END ART; 运算符“&”代表并置的意思。由于S的数据 STD_LOGIC_VECTOR,在VHDL综合过程中,它可能的选择值除了00、01、10和11外,还可以有其他定义于STD_LOGIC的选择值,需要用OTHERS列出。,4.1 VHDL的顺序语句,图4.1 4选1多路选择器,4.1.3 CASE语句 【例4.5】用IF语句和CASE语句共同完成的4选多路选择器,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MUX41 IS PORT(S4,S3

14、,S2,S1:IN STD_LOGIC; Z4,Z3,Z2,Z1:OUT STD_LOGIC); END MUX41; ARCHITECTURE ART OF MUX41 IS SIGNAL SEL:INTEGER RANGE 0 TO 15; BEGIN PROCESS(S4,S3,S2,S1) BEGIN,4.1 VHDL的顺序语句,SEL Z1 Z2 Z3 Z4=1;-当SEL为815时选中 END CASE; END PROCESS; END ART;,4.1 VHDL的顺序语句,4.1.3 CASE语句 由例4.5可以看出: 选择器的行为描述既可以用IF语句,也可以用CASE语句。

15、IF语句是有序的,先处理最起始、最优先的条件,后处理次 优先的条件。 CASE语句是无序的,所有表达式的值都是并行处理的。 CASE语句中的条件表达式的值必须举穷尽,且不能重复。 不能穷尽的条件表达式的值用OTHERS表示。 含有任意项输入的条件表达式,对应于任意项输出,而不能 有确定输出。,4.1 VHDL的顺序语句,4.1.4 LOOP语句,(1)无限LOOP循环语句 无限LOOP语句可以使所包含的一组顺序语句被循环执行,其执行次数可由设定的循环参数决定。 LOOP语句的书写格式有以下三种: (1)无限循环LOOP语句 语句的书写格式如下: LOOP标号:LOOP 顺序语句; END LO

16、OP;,4.1 VHDL的顺序语句, L2:LOOP A:=A+1; EXIT L2 WHEN A10; -当A大于10时跳出循环 END LOOP L2; ,4.1.4 LOOP语句 (2)FOR循环变量形式的LOOP语句,语句的书写格式如下 LOOP标号:FOR 循环变量 IN 循环次数范围LOOP 顺序语句; END LOOP LOOP标号;,上述格式中“循环变量”的值在每次循环中都会发生变化。“循环次数范围”表示循环变量在循环过程中的取值范围。,4.1 VHDL的顺序语句,4.1.4 LOOP语句 【例4.6】利用FOR-LOOP语句实现的4位并行奇校验发生器,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY parity_check IS PORT(

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

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

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