第10章vhdl顺序语句

上传人:今*** 文档编号:107420632 上传时间:2019-10-19 格式:PPT 页数:60 大小:1.98MB
返回 下载 相关 举报
第10章vhdl顺序语句_第1页
第1页 / 共60页
第10章vhdl顺序语句_第2页
第2页 / 共60页
第10章vhdl顺序语句_第3页
第3页 / 共60页
第10章vhdl顺序语句_第4页
第4页 / 共60页
第10章vhdl顺序语句_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《第10章vhdl顺序语句》由会员分享,可在线阅读,更多相关《第10章vhdl顺序语句(60页珍藏版)》请在金锄头文库上搜索。

1、第10章 VHDL基本语句,并行语句 并行语句在执行顺序的地位上是平等的,其执行顺序与书写顺序无关。每一并行语句内部的语句运行方式可以有顺序和并行两种不同的方式。,功能描述语句,顺序语句 顺序语句是指完全按照程序中书写的顺序执行各语句,并且在结构层次中前面的语句执行结果会直接影响后面各语句的执行结果。顺序描述语句只能出现在进程或子程序中。,顺序语句,基本的顺序语句包括:,赋值语句 IF语句 CASE语句 LOOP语句 REPORT语句,变量赋值语句特点 具有局部特征,有效性只局限于所定义的一个进程中,或一个子程序中。对于变量的赋值是立即发生的。 变量赋值语句举例:,VARIABLE via1

2、: INTEGER ; via1 := 12 ;,赋值语句 变量赋值语句、信号赋值语句,信号赋值语句,信号赋值语句特点 具有全局性特征,不但可以作为一个设计实体内部各单元之间数据传送的载体,而且可通过信号与其他实体通信。 信号赋值语句举例,SIGNAL sig1 : INTEGER ; sig1 = 12 ;,一、第一种IF语句,IF 条件句 THEN 顺序语句 END IF,语句格式,流程控制语句if语句 (课本165页),首先判断语句中所指定的条件是否成立。如果条件成立,则程序继续执行IF语句中所含的顺序处理语句;如果条件不成立,则跳过不执行, IF语句结束。,当CP=0时,触发器不工作,

3、处于维持状态。 当CP=1时,它的功能如下: 当D=0时,次态=0, 当D=1时,次态=1。,D触发器的设计:,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY dff1 IS PORT(cp : IN STD_LOGIC; d: IN STD_LOGIC; q: OUT STD_LOGIC); END dff1;,ARCHITECTURE bhv OF dff1 IS SIGNAL q1 : STD_LOGIC; BEGIN PROCESS (cp) BEGIN IF(clkEVENT)and cp=1 THEN q1 = d; END IF

4、; q=q1; END PROCESS; END bhv;,当CP=0时,触发器不工作,处于维持状态。 当CP=1时: D=0时,次态=0, D=1时,次态=1。,二、第二种IF语句,IF 条件句 THEN 顺序语句1 ELSE 顺序语句2 END IF,语句格式,例题 P166,IF a then n:=b; else n:=c; end IF,三、第三种IF语句,If 条件句1 Then 顺序语句1; Elsif 条件句2 Then 顺序语句2; Elsif 条件语句3 Then 顺序语句3; . else 顺序语句n+1; End if;,语句格式,例题:,Signal a,b,c,p1

5、,p2,z : bit; IF (p1=1) THEN z =a; ELSIF (p2=0) THEN z = b; ELSE z = c; END IF;,c,b,a,a,画线部分意思:ELSIF (p1=0 and p2=0),注意:,例题:8线3线优先编码器,说明:数据类型为std_logic,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 ENTITY coder ;

6、,实 体 设 计,功能:设计元件外观,ARCHITECTURE a1 of coder IS,Begin,IF (I(7)=1) THEN Y=“111”;,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 ARCHITECTURE a1;,结 构 体 设 计,功能

7、:描述输入和输出之间的逻辑关系,END IF;,PROCESS( I ),END PROCESS;,Library ieee; use ieee.std_logic_1164.all; entity mux4 is Port( cdata: in std_logic_vector(3 downto 0); sel: in std_logic_vector(1 downto 0); creset: in std_logic; q: out std_logic); end entity mux4 ;,例: 带复位端的4选1选择器的设计,architecture rt1 of mux4 is beg

8、in process(creset) begin if(creset=1) then if(sel=“00”) then q=cdata(0); elsif(sel=“01”) then q=cdata(1); elsif(sel=“10”) then q=cdata(2); else q=cdata(3); end if; else q=0; end if; end process; end architucture rt1;,IF语句的条件判断输出是布尔量。,小结,IF语句可用于选择器、比较器、编码器和译码器等凡是可以进行条件控制的逻辑电路的设计,是VHDL的最基础、最常用的语句。 IF语

9、句具有优先级。,NULL语句格式: NULL; 不执行任何操作 常用于CASE语句中,用于表示在某些条件下对输出不做任何改变。,NULL语句,CASE语句(课本73页),1. CASE语句表达结构,CASE IS WHEN = ; WHEN = ; WHEN OTHERS = ; END CASE;,选择值有4种不同的表达方式: 1. 单个普通数值:如 6, “10101010”, 0 2. 数值选择范围:如 (2 TO 4),表示2,3,4 3. 并列数值:如(3|5),表示 3 或者 5 4. 混合方式:如( 1 TO 3|5 ),表示1,2,3,5,-根据条件进行相应的赋值操作。,2.C

10、ASE语句举例,SIGNAL sel : INTEGER range 0 to 20; CASE sel IS WHEN 1 = out out out out out = 5 ; END CASE; ,数值,取值范围,并列数值,混合方式,表示其它可能取的值,使用CASE语句需注意以下几点:,(2) CASE语句中每一条语句的选择值只能出现一次,即不能有相同选择值的条件语句出现。,(3) CASE语句执行中必须选中,且只能选中所列条件语句中的一条,即CASE语句至少包含一个条件语句。,(4) 除非所有条件语句中的选择值能完全覆盖CASE语句中表达式的取值,否则最末一个条件语句中的选择必须用“O

11、THERS”表示。关键词OTHERS只能出现一次,且只能作为最后一种条件取值。,(1) 条件句中的选择值必在表达式的取值范围内。,例:检查程序中的语法错误 SIGNAL value : INTEGER RANGE 0 TO 15; SIGNAL out1 : STD_LOGIC ; . . CASE value IS WHEN 0 = out1 out1 out1 out1= 0; END CASE; ,- value215的值未包括进去,- 选择值中510的值有重叠,例题: 用CASE语句设计四选一数据选择器,Z,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.A

12、LL; ENTITY mux41 IS PORT ( s1, s2 : in std_logic; a,b,c,d: in std_logic; z: out std_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;,Z,ARCHITECTURE activ OF mux41 IS SIGNAL s :std_logic_vector(1 do

13、wnto 0); BEGIN S= s1,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;,Z,CASE语句和IF语句的比较,case语句设计数码管显示程序,一、数码显示器,(一) 发光二极管,发光二极管特性:当加正向电压时,二极管导通并发光.利用这了一特性可制成共阴极和共阳极七段数码显示器。,(二) 七段数码显示器,1.工作原理,共阴极接法,2.显示代码概念,9的显示代码,显示译码器,显示译码

14、器功能,其真值表如下所示:,输入代码,输出显示代码,Library ieee; Use ieee.std_logic_1164.all; Entity btod is Port(A : in std_logic_vector(3 downto 0); Y : out std_logic_vector(6 downto 0); End btod; Architecture a1 of btod is Begin Process(A) Begin Case A is when “0000“ = Y Y= “ 0000110”; -1,when “0010“ =Y Y Y Y Y Y Y Y= “

15、1101111” ; -9 End case; End process; End a1;,练习:1.试用CASE语句描述3-8译码器。 2.试设计一个4位奇偶校验器,P348:例10-3 library IEEE; USE IEEE.STD_LOGIC_1164.ALL; use ieee.std_logic_unsigned.all; ENTITY VECTOR IS PORT(a,b:IN STD_LOGIC_vector(7 downto 0); opcode:IN STD_LOGIC_vector(1 downto 0); c:OUT STD_LOGIC_vector(7 downto

16、 0); END VECTOR;,P348:例10-3 architecture CESHI of VECTOR is begin process(a,b,opcode) begin case opcode is when “00“= c c if (a=b) then c if (a/=b) then c=x“01“; else c=x“00“;end if; end case; end process; end CESHI;,小结,CASE语句无优先级,所有的表达式都并行处理。所以传输延迟小。,CASE 语句中的条件表达式的值必须举穷尽,但又不能重复。,CASE 语句可读性好,简洁。,通常在CASE语句中,WHEN语句可以颠倒次序而不至于发生错误,而在IF语句中,颠倒条件判断的次序

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

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

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