EDA 技术实用教程 第10章课件

上传人:w****i 文档编号:92450731 上传时间:2019-07-10 格式:PPT 页数:96 大小:714KB
返回 下载 相关 举报
EDA 技术实用教程 第10章课件_第1页
第1页 / 共96页
EDA 技术实用教程 第10章课件_第2页
第2页 / 共96页
EDA 技术实用教程 第10章课件_第3页
第3页 / 共96页
EDA 技术实用教程 第10章课件_第4页
第4页 / 共96页
EDA 技术实用教程 第10章课件_第5页
第5页 / 共96页
点击查看更多>>
资源描述

《EDA 技术实用教程 第10章课件》由会员分享,可在线阅读,更多相关《EDA 技术实用教程 第10章课件(96页珍藏版)》请在金锄头文库上搜索。

1、EDA 技术实用教程,第 10 章 VHDL基本语句,10.1 顺序语句,KX康芯科技,10.1.1 赋值语句,信号赋值语句,变量赋值语句,10.1.2 IF语句,KX康芯科技,【例10-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 STD_LOGIC); END mux41; ARCHITECTURE activ OF mux41 IS SIGNAL sel : INTEGER RANGE 0 TO 15;

2、BEGIN PROCESS (sel ,s4,s3,s2,s1 ) BEGIN sel z1 z2 z3 z4=1 ; - 当sel为815中任一值时选中 END CASE ; END PROCESS ; END activ ;,10.1 顺序语句,KX康芯科技,10.1.3 CASE语句,【例10-2】 SIGNAL value : INTEGER RANGE 0 TO 15; SIGNAL out1 : STD_LOGIC ; . CASE value IS - 缺少以WHEN引导的条件句 END CASE; . CASE value IS WHEN 0 = out1 out1 out1

3、out1= 0; END CASE;,KX康芯科技,【例10-3】 LIBRARY IEEE; USE 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 CON

4、STANT plus : STD_LOGIC_VECTOR (1 DOWNTO 0) := b“00“; 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“; BEGIN PROCESS (opcode,a,b) BEGIN CASE opcode IS WHEN plus = result result

5、 - 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;,10.1 顺序语句,KX康芯科技,10.1.4 LOOP语句,(1) 单个LOOP语句,其语法格式如下: LOOP标号: LOOP 顺序语句 END LOOP LOOP标号 ;,. L2 : LOOP a := a+1; EXIT L2 WHEN a 10 ; - 当a大于10时跳出循环 END LOOP L2; .,10

6、.1 顺序语句,KX康芯科技,10.1.4 LOOP语句,(2) FOR_LOOP语句,语法格式如下: LOOP标号: FOR 循环变量,IN 循环次数范围 LOOP 顺序语句 END LOOP LOOP标号;,10.1 顺序语句,KX康芯科技,【例10-4】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY p_check IS PORT ( a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); y : OUT STD_LOGIC ); END p_check; ARCHITECTURE opt OF p_check I

7、S 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;,10.1 顺序语句,KX康芯科技,10.1.4 LOOP语句,【例10-5】 SIGNAL a, b, c : STD_LOGIC_VECTOR (1 TO 3); . FOR n IN 1 To 3 LOOP a(n) = b(n) AND c(n); END LOOP; 此段程序等效于顺序执行以下三个信号赋值操作:

8、 a(1)=b(1) AND c(1); a(2)=b(2) AND c(2); a(3)=b(3) AND c(3);,10.1 顺序语句,KX康芯科技,10.1.5 NEXT语句,NEXT; - 第一种语句格式 NEXT LOOP标号; - 第二种语句格式 NEXT LOOP标号 WHEN 条件表达式; - 第三种语句格式,【例10-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 LOOP L1;,10.1 顺序语句

9、,KX康芯科技,10.1.5 NEXT语句,【例10-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 ; .,10.1 顺序语句,KX康芯科技,10.1.6 EXIT语句,EXIT; - 第一种语句格式 EXIT LOOP标号; - 第二种语句格式 EXIT LOOP标号 WHEN 条件表达式;

10、 - 第三种语句格式,10.1 顺序语句,KX康芯科技,10.1.6 EXIT语句,【例10-8】 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语句继续比较,10.1 顺序语句,KX康芯科技,10.1.7 WAIT语句,W

11、AIT; - 第一种语句格式 WAIT ON 信号表; - 第二种语句格式 WAIT UNTIL 条件表达式; - 第三种语句格式 WAIT FOR 时间表达式; - 第四种语句格式,超时等待语句,10.1 顺序语句,KX康芯科技,10.1.7 WAIT语句,【例10-9】 SIGNAL s1,s2 : STD_LOGIC; . PROCESS BEGIN . WAIT ON s1,s2 ; END PROCESS ;,【例10-10】 (a) WAIT_UNTIL结构 (b) WAIT_ON结构 . LOOP Wait until enable =1; Wait on enable; . E

12、XIT WHEN enable =1; END LOOP;,10.1 顺序语句,KX康芯科技,10.1.7 WAIT语句,WAIT UNTIL 信号=Value ; - (1) WAIT UNTIL 信号EVENT AND 信号=Value; - (2) WAIT UNTIL NOT 信号STABLE AND 信号=Value; - (3),WAIT UNTIL clock =1; WAIT UNTIL rising_edge(clock) ; WAIT UNTIL NOT clockSTABLE AND clock =1; WAIT UNTIL clock =1 AND clockEVENT

13、;,10.1 顺序语句,KX康芯科技,10.1.7 WAIT语句,【例10-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 ;,10.1 顺序语句,KX康芯科技,10.1.7 WAIT语句,【例10-12】 PROCESS BEGIN rst_loop : LOOP WAIT UNTIL clock =1 AND c

14、lockEVENT; - 等待时钟信号 NEXT rst_loop WHEN (rst=1); - 检测复位信号rst x = a ; - 无复位信号,执行赋值操作 WAIT UNTIL clock =1 AND clockEVENT; - 等待时钟信号 NEXT rst_loop When (rst=1); - 检测复位信号rst y = b ; - 无复位信号,执行赋值操作 END LOOP rst_loop ; END PROCESS;,KX康芯科技,【例10-13】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY shifter IS

15、 PORT ( data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); shift_left: 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) ); -等待时钟上升沿 IF (reset = 1) THEN qout qout qout qout NULL; END CASE; END IF; END PROCESS; END behave;,10.1 顺序语句,KX康芯科技,10.1.8 子程序调用

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

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

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