VHDL课件第三讲顺序语句改

上传人:E**** 文档编号:91251483 上传时间:2019-06-26 格式:PPT 页数:39 大小:314KB
返回 下载 相关 举报
VHDL课件第三讲顺序语句改_第1页
第1页 / 共39页
VHDL课件第三讲顺序语句改_第2页
第2页 / 共39页
VHDL课件第三讲顺序语句改_第3页
第3页 / 共39页
VHDL课件第三讲顺序语句改_第4页
第4页 / 共39页
VHDL课件第三讲顺序语句改_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《VHDL课件第三讲顺序语句改》由会员分享,可在线阅读,更多相关《VHDL课件第三讲顺序语句改(39页珍藏版)》请在金锄头文库上搜索。

1、顺 序 语 句,1、顺序语句的特点: 每一条顺序语句的执行顺序都和它们的书写顺序基本一致。 2、出现的位置: 只能出现在进程和子程序中,子程序包括函数(Function)和过程(Procedure),顺序语句,赋值语句 WAIT语句 IF 语句 CASE 语句 FOR-LOOP 语句 NEXT-LOOP 语句 EXIT-LOOP 语句 NULL 语句 ASSERT 语句,变量赋值语句,格式: 目的变量:=表达式 例: c:=a+d D:=3; 注意: 1、限定在进程、函数、过程等顺序区域 2、变量赋值无时间特性 3、变量值具有局部性 4、赋值符号两边的变量和表达式的数据类型和长度必须保持一致,

2、信号赋值语句,格式: 目的信号量=信号量表达式 例: a=b; 注意: 1、限定在进程、函数过程等顺序区域 2、进程结束时起作用 3、与小于等于的关系操作符的差别 4、赋值符号两边的变量和表达式的数据类型和长度必须保持一致,Signal s1,s2 : std_logic ; Signal sec : std_logic_vector(0 to 7); Process (s1 , s2) Variable v1,v2 : std_logic; Begin v1 := 1; v2 := 1 ; s1 = 1; s2 = 1; sec(0) = v1; sec(1) = v2;,sec(2) =

3、s1; sec(3) = s2; v1 : = 0; v2 : = 0; s2 = 0; sec(4) = v1; sec(5) = v2; sec(6) = s1; sec(7) = s2; END PROCESS,“ 0100 0111 ”,sec =,WAIT语句,WAIT 无限等待 WAIT ON 敏感信号量变化 WAIT UNTIL 条件满足 WAIT FOR 时间到,WAIT 语句,格式:WAIT ON 信号,信号 例: PROCESS BEGIN y=a AND b; WAIT ON a,b; END PROCESS; 该例中的进程与下例中进程相同:,例: PROCESS(a,b

4、) BEGIN y=a AND b; END PROCESS; 注意: 如果PROCESS中已有敏感信号量的说明,那么在进程中就不能再使用WAIT 语句,WAIT UNTIL,WAIT UNTIL 直到条件满足 格式: WAIT UNTIL 布尔表达式 当进程执行到该语句时,被挂起;若布尔表达式为真时,进程将被启动。 例: WAIT UNTIL (x*10)100),WAIT UNTIL,WAIT UNTIL 语句有两种表达方式 1、WAIT UNTIL 信号=VALUE; 2、WAIT UNTIL 信号EVENT AND 信号=VALUE,PROCESS BEGIN WAIT UNTIL C

5、LKEVENT AND CLK=1; IF(RESET=1) THEN Q=0; ELSE Q=D; END IF ; END PROCESS;,WAIT FOR,WAIT FOR 等到时间到 格式: WAIT FOR 时间表达式 当进程执行到该语句时,被挂起;等待一定的时间后,进程将被启动. 例: WAIT FOR 20 ns,(1) IF的门闩控制,格式:IF 条件 THEN 顺序执行语句 END IF; 例: IF (ab) THEN out=1; END IF;,IF 语句,格式: IF 条件 THEN ELSE END IF;,(2) 二选一控制的IF语句,例: IF (ab) TH

6、EN out=1; ELSE out=0; END IF;,(3) 多选择控制的IF语句,格式:IF 条件 THEN ELSIF 条件 THEN : ELSIF 条件 THEN ELSE END IF;,例1:,Process(A) Begin If A=“00” then f=D0; elsif A=“01” then f=D1; elsif A=“10” then f=D2; else f=D3; end if; end process;,例:,Signal a,b,c,p1,p2,z : bit; IF (p1=1) THEN z =a; ELSIF (p2=0) THEN z = b;

7、 ELSE z = c; END IF;,?,选择方式,c,b,a,a,画线部分意思:ELSIF (p1=0 and p2=0),注,例题2:8线3线优先编码器,LIBRARY IEEE ;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY coder IS,PORT(I : IN STD_LOGIC_VECTOR(0 TO 7),Y: OUT STD_LOGIC_VECTOR(1 TO 3);,END coder ;,实 体 设 计,功能:设计元件外观,ARCHITECTURE a1 of coder IS,Begin,IF (I(7)=1) THEN Y=“111”;

8、,ELSIF (I(6)=1) THEN Y=“110”;,ELSIF (I(5)=1) THEN Y=“101”;,ELSIF (I(4)=1) THEN Y=“100”;,ELSIF (I(3)=1) THEN Y=“011”;,ELSIF (I(2)=1) THEN Y=“010”;,ELSIF (I(1)=1) THEN Y=“001”;,ELSE Y=“000”;,END a1;,结 构 体 设 计,功能:描述输入和输出之间的逻辑关系,END IF;,BEGIN PROSESS(I),END PROCESS;,CASE 语句,格式: CASE 表达式 IS WHEN 条件表达式=顺序

9、处理语句 END CASE; 其中WHEN的条件表达式可以有4种形式: WHEN 值=顺序处理语句 WHEN 值|值|值|值=顺序处理语句 WHEN 值TO 值=顺序处理语句 WHEN OTHERS=顺序处理语句 条件表达式的值可以是一个值;或者是多个值的“或”关系;或者是一个取值范围;或者表示其它所有的缺省值。,例题1: 用CASE语句设计四选一数据选择器,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 s

10、td_logic); END ENTITY mux41;,ARCHITECTURE activ OF mux41 IS SIGNAL s :std_logic_vector(1 downto 0); BEGIN S z z z z z=x; END CASE; END PROCESS; END activ;,ARCHITECTURE activ OF mux41 IS SIGNAL s :std_logic_vector(1 downto 0); BEGIN S= s1,ARCHITECTURE activ OF mux41 IS SIGNAL s :std_logic_vector(1 do

11、wnto 0); BEGIN S z z z z z=x; END CASE; END PROCESS; END activ;,例题2:,SIGNAL SEL : INTEGER RANGE 0 TO 15; CASE SEL IS WHEN 0 = Z1 Z2 Z3Z4=1;,IF 与 CASE比较,IF语句中条件句之间是相与的关系, CASE语句中条件句之间是相或的关系。,2. CASE条件语句必须将所有情况列出而IF则不必。,3. IF语句可实现优先级,CASE语句则不可以。,LOOP语句,(1) 单个LOOP语句,LOOP标号: LOOP 顺序语句 END LOOP LOOP标号;,例

12、:,L2 : LOOP a:= a + 1 ; EXIT L2 WHEN a 10; END LOOP L2;,LOOP 语句,标号: FOR 循环变量 IN 离散范围 LOOP 顺序处理语句 END LOOP 标号; 例: ASUM: FOR i IN 1 TO 9 LOOP sum:=i+sum; END LOOP ASUM;,(2) FOR_LOOP语句,(2) FOR_LOOP语句,LOOP标号: FOR 循环变量 IN 循环次数范围 LOOP 顺序语句; END LOOP LOOP 标号 ;,例:试设计一个八位奇偶校验器,注: 0 XOR a = a,LIBRARY IEEE; US

13、E IEEE.STD_LOGIC_1164.ALL; ENTITY JIOU IS PORT (a : IN STD_LOGIC_VECTOR(7DOWNTO 0); y: OUT STD_LOGIC); END JIOU; ARCHITECTURE OPT OF JIOU 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;,(3) WHILE-LOOP语句,标号:

14、 WHILE 循环控制变量条件表达式 LOOP 顺序语句 END LOOP 标号;,例1:,Shift1 : PROCESS (inputx) VARIABLE n : POSITIVE :=1 BEGIN L1 : WHILE n8 LOOP outputx(n)= inputx(n+8); n:= n+1; END LOOP L1; END PROCESS Shift1;,POSITIVE是INTEGER的子类,指正整数。,(4) NEXT与EXIT语句,NEXT; NEXT LOOP 标号; NEXT LOOP 标号 WHEN 条件表式;,EXIT; EXIT LOOP 标号; EXIT

15、 LOOP 标号 WHEN 条件表达式;,循环语句转向控制,NEXT语句的规则如下: (1) NEXT语句结束本次循环迭代,而转入下一次循 环迭代。 (2)标号表明下一次循环的起始位置。 (3)WHEN条件是NEXT语句的执行条件。 (4)若NEXT语句后不跟标号,即从LOOP语句的起始位置进入下一个循环。 (5)若NEXT语句后不跟标号和WHEN条件,则NEXT语句立即无条件跳出本次循环,从LOOP的起始位置进入下一次循环。 (6)NEXT语句主要用于LOOP语句的内部循环控制。,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY BIJIAO

16、 IS PORT (a : IN STD_LOGIC_VECTOR(0 TO 7); b : IN STD_LOGIC_VECTOR(0 TO 7); y: OUT STD_LOGIC); END BIJIAO; ARCHITECTURE JIEGOU OF BIJIAO IS Signal tmp : STD_LOGIC_VECTOR(0 TO 7); Signal tmq : std_logic; BEGIN PROCESS (a,b) BEGIN FOR n IN 0 TO 7 LOOP tmp(n)= a(n) xnor b(n); tmq = tmp(n); Next when (tmp(n)=1); END LOOP

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

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

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