EDA技术实用教程(第二版) 教学课件 ppt 作者 潘松 黄继业 第2版ppt 第9章_VHDL基本语句

上传人:E**** 文档编号:89186512 上传时间:2019-05-20 格式:PPT 页数:114 大小:1.43MB
返回 下载 相关 举报
EDA技术实用教程(第二版) 教学课件 ppt 作者 潘松 黄继业 第2版ppt 第9章_VHDL基本语句_第1页
第1页 / 共114页
EDA技术实用教程(第二版) 教学课件 ppt 作者 潘松 黄继业 第2版ppt 第9章_VHDL基本语句_第2页
第2页 / 共114页
EDA技术实用教程(第二版) 教学课件 ppt 作者 潘松 黄继业 第2版ppt 第9章_VHDL基本语句_第3页
第3页 / 共114页
EDA技术实用教程(第二版) 教学课件 ppt 作者 潘松 黄继业 第2版ppt 第9章_VHDL基本语句_第4页
第4页 / 共114页
EDA技术实用教程(第二版) 教学课件 ppt 作者 潘松 黄继业 第2版ppt 第9章_VHDL基本语句_第5页
第5页 / 共114页
点击查看更多>>
资源描述

《EDA技术实用教程(第二版) 教学课件 ppt 作者 潘松 黄继业 第2版ppt 第9章_VHDL基本语句》由会员分享,可在线阅读,更多相关《EDA技术实用教程(第二版) 教学课件 ppt 作者 潘松 黄继业 第2版ppt 第9章_VHDL基本语句(114页珍藏版)》请在金锄头文库上搜索。

1、第9章 VHDL基本语句,EDA技术实用教程,9.1 顺序语句,9.1.1 赋值语句,9.1.2 IF 语句,信号赋值语句,变量赋值语句,赋值目标,赋值符号,赋值源,9.1.3 CASE语句,CASE语句的结构如下: CASE 表达式 IS When 选择值 = 顺序语句; When 选择值 = 顺序语句; . END CASE ;,9.1 顺序语句,接下页,【例9-1】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux41 IS PORT (s4,s3, s2,s1 : IN STD_LOGIC; z4,z3, z2,z1 : OUT

2、 STD_LOGIC); END mux41; ARCHITECTURE activ OF mux41 IS SIGNAL sel : INTEGER RANGE 0 TO 15; BEGIN PROCESS (sel ,s4,s3,s2,s1 ) BEGIN sel= 0 ; - 输入初始值 IF (s1 =1) THEN sel = sel+1 ;,ELSIF (s2 =1) THEN sel z1 z2 z3 z4=1 ; - 当sel为815中任一值时选中 END CASE ; END PROCESS ; END activ ;,接下页,【例9-3】 LIBRARY IEEE; USE

3、 IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY alu IS PORT( a, b : IN STD_LOGIC_VECTOR (7 DOWNTO 0); opcode: IN STD_LOGIC_VECTOR (1 DOWNTO 0); result: OUT STD_LOGIC_VECTOR (7 DOWNTO 0) ); END alu; ARCHITECTURE behave OF alu IS CONSTANT plus : STD_LOGIC_VECTOR (1 DOWNTO 0) := b“00“

4、; CONSTANT minus : STD_LOGIC_VECTOR (1 DOWNTO 0) := b“01“; CONSTANT equal : STD_LOGIC_VECTOR (1 DOWNTO 0) := b“10“; CONSTANT not_equal: STD_LOGIC_VECTOR (1 DOWNTO 0) := b“11“;,【例9-2】 SIGNAL value : INTEGER RANGE 0 TO 15; SIGNAL out1 : STD_LOGIC ; . CASE value IS - 缺少以WHEN引导的条件句 END CASE; . CASE valu

5、e IS WHEN 0 = out1 out1 out1 out1= 0; END CASE;,BEGIN PROCESS (opcode,a,b) BEGIN CASE opcode IS WHEN plus = result result - a、b相等 IF (a = b) THEN result - a、b不相等 IF (a /= b) THEN result = x“01“; ELSE result = x“00“; END IF; END CASE; END PROCESS; END behave;,9.1.4 LOOP语句,(1) 单个LOOP语句,其语法格式如下: LOOP标号

6、: LOOP 顺序语句 END LOOP LOOP标号 ;,. L2 : LOOP a := a+1; EXIT L2 WHEN a 10 ; - 当a大于10时跳出循环 END LOOP L2; .,9.1 顺序语句,9.1.4 LOOP语句,(2) FOR_LOOP语句,语法格式如下: LOOP标号: FOR 循环变量,IN 循环次数范围 LOOP 顺序语句 END LOOP LOOP标号;,9.1 顺序语句,接下页,【例9-4】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY p_check IS PORT ( a : IN STD_L

7、OGIC_VECTOR (7 DOWNTO 0); y : OUT STD_LOGIC ); END p_check; ARCHITECTURE opt OF p_check IS SIGNAL tmp :STD_LOGIC ; BEGIN PROCESS(a) BEGIN tmp =0; FOR n IN 0 TO 7 LOOP,tmp = tmp XOR a(n); END LOOP ; y = tmp; END PROCESS; END opt;,【例9-5】 SIGNAL a, b, c : STD_LOGIC_VECTOR (1 TO 3); . FOR n IN 1 To 3 LO

8、OP a(n) = b(n) AND c(n); END LOOP;,a(1)=b(1) AND c(1); a(2)=b(2) AND c(2); a(3)=b(3) AND c(3);,9.1.5 NEXT语句,NEXT; - 第一种语句格式 NEXT LOOP标号; - 第二种语句格式 NEXT LOOP标号 WHEN 条件表达式; - 第三种语句格式,【例9-6】 . L1 : FOR cnt_value IN 1 TO 8 LOOP s1 : a(cnt_value) := 0; NEXT WHEN (b=c); s2 : a(cnt_value + 8 ):= 0; END LOO

9、P L1;,9.1 顺序语句,【例9-7】 . L_x : FOR cnt_value IN 1 TO 8 LOOP s1 : a(cnt_value):= 0; k := 0; L_y : LOOP s2 : b(k) := 0; NEXT L_x WHEN (ef); s3 : b(k+8) := 0; k := k+1; NEXT LOOP L_y ; NEXT LOOP L_x ; .,9.1.6 EXIT语句,EXIT; - 第一种语句格式 EXIT LOOP标号; - 第二种语句格式 EXIT LOOP标号 WHEN 条件表达式; - 第三种语句格式,9.1 顺序语句,【例9-8】

10、 SIGNAL a, b : STD_LOGIC_VECTOR (1 DOWNTO 0); SIGNAL a_less_then_b : Boolean; . a_less_then_b b EXIT ; ELSIF (a(i)=0 AND b(i)=1) THEN a_less_then_b = TRUE ; - a b EXIT; ELSE NULL; END IF; END LOOP; - 当 i=1时返回LOOP语句继续比较,9.1.7 WAIT语句,WAIT; - 第一种语句格式 WAIT ON 信号表; - 第二种语句格式 WAIT UNTIL 条件表达式; - 第三种语句格式 W

11、AIT FOR 时间表达式; - 第四种语句格式, 超时等待语句,9.1 顺序语句,9.1.7 WAIT语句,9.1 顺序语句,【例9-9】 SIGNAL s1,s2 : STD_LOGIC; . PROCESS BEGIN . WAIT ON s1,s2 ; END PROCESS ;,9.1.7 WAIT语句,9.1 顺序语句,【例9-10】 (a) WAIT_UNTIL结构 (b) WAIT_ON结构 . LOOP Wait until enable =1; Wait on enable; . EXIT WHEN enable =1; END LOOP;,9.1.7 WAIT语句,【例9

12、-11】 PROCESS BEGIN WAIT UNTIL clk =1; ave = a; WAIT UNTIL clk =1; ave = ave + a; WAIT UNTIL clk =1; ave = ave + a; WAIT UNTIL clk =1; ave = (ave + a)/4 ; END PROCESS ;,9.1.7 WAIT语句,【例9-12】 PROCESS BEGIN rst_loop : LOOP WAIT UNTIL clock =1 AND clockEVENT; - 等待时钟信号 NEXT rst_loop WHEN (rst=1); - 检测复位信号

13、rst x = a ; - 无复位信号,执行赋值操作 WAIT UNTIL clock =1 AND clockEVENT; - 等待时钟信号 NEXT rst_loop When (rst=1); - 检测复位信号rst y = b ; - 无复位信号,执行赋值操作 END LOOP rst_loop ; END PROCESS;,接下页,【例9-13】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY shifter IS PORT ( data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); shift_left:

14、 IN STD_LOGIC; shift_right: IN STD_LOGIC; clk: IN STD_LOGIC; reset : IN STD_LOGIC; mode : IN STD_LOGIC_VECTOR (1 DOWNTO 0); qout : BUFFER STD_LOGIC_VECTOR (7 DOWNTO 0) ); END shifter; ARCHITECTURE behave OF shifter IS SIGNAL enable: STD_LOGIC;,BEGIN PROCESS BEGIN WAIT UNTIL (RISING_EDGE(clk) ); -等待时

15、钟上升沿 IF (reset = 1) THEN qout qout qout qout NULL; END CASE; END IF; END PROCESS; END behave;,9.1.8 子程序调用语句,9.1 顺序语句,过程名(形参名= 实参表达式 ,形参名= 实参表达式) ;,(1) 将IN和INOUT模式的实参值赋给欲调用的过程中与它们对应的形参; (2) 执行这个过程; (3) 将过程中IN和INOUT模式的形参值返回给对应的实参。,1. 过程调用,接下页,【例9-14】 PACKAGE data_types IS - 定义程序包 SUBTYPE data_element IS INTEGER RANGE 0 TO 3 ;- 定义数据类型 TYPE data_array IS ARRAY (1 TO 3) OF data_element; END data_types; U

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

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

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