VHDL主要描述语句课件.ppt
《VHDL主要描述语句课件.ppt》由会员分享,可在线阅读,更多相关《VHDL主要描述语句课件.ppt(48页珍藏版)》请在三一办公上搜索。
1、第五章,VHDL主要描述语句,主要内容,概 述行为描述语句结构描述语句,5.1 概 述,VHDL中的描述语句了分为顺序语句(Sequential Statements)和并行语句(Concurrent Statements)两大基本系列。,5.2 行为描述语句,5.2.1 赋值语句 赋值语句有两种,即信号赋值语句和变量赋值语句。每一种赋值语句都有三个基本组成部分,即赋值目标、赋值符号和赋值源。信号赋值语句和变量赋值语句的语法格式如下:信号赋值目标=赋值源;变量赋值目标:=赋值源;,标识符、数组元素目标的赋值语句示例如下:SIGNAL s1,s2:STD_LOGIC;SIGNAL array 1
2、:STD_LOGIC_VECTOR(0 TO 3);PROCESS(s1)VARIABLE v1,v2:STD_LOGIC;BEGIN,V1:=0;V2:=1;S1=s1 AND s2;S2=s1 OR s2;array 1(0)=V1;array 1(1)=V2;array 1(2)=S1;array 1(3)=S2;END PROCESS;,5.2.2 并行信号赋值语句,1.一般信号赋值语句 信号赋值目标=延迟选项 表达式 延迟表达式;,例5.1 四位并行加法器的数据流描述。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGI
3、C_UNSIGNED.ALLENTITY ADD4 IS PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);B:IN STD_LOGIC_VECTOR(3 DOWNTO 0);CIN:IN STD_LOGIC;SUM:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END ADD4;,ARCHITECTURE ADD4_concurnt OF ADD4 IS-定义包含有进位的SUM信号SIGNAL SUMINT:STD_LOGIC_VECTOR(4 DOWNTO 0);BEGINSUMINT=(0,5.2.2
4、 并行信号赋值语句(续1),2.条件信号赋值语句 赋值目标=表达式 WHEN 赋值条件 ELSE 表达式 WHEN 赋值条件 ELSE 表达式;,例5.2 3选1多路选择器的行为描述。,5.2.2 并行信号赋值语句(续2),2.条件信号赋值语句,例5.2 3选1多路选择器的行为描述。,LIBRARY IEEE;USE IEEE.STD_LOGIC 1164.ALL;ENTITY mux31 ISPORT(a,b,c:IN STD_LOGIC;en1,en2:IN STD_LOGIC;z:OUT STD_LOGIC);END mux31;ARCHITECTURE behavioral OF mu
5、x31 ISBEGINZ=a WHEN en2=1 ELSE b WHEN en1=1 ELSE c;END behavioral;,5.2.2 并行信号赋值语句(续3),3.选择信号赋值语句WITH 选择表达式 SELECT赋值目标信号=表达式 WHEN选择值,表达式 WHEN选择值,表达式 WHEN 选择值,表达式 WHEN 选择值;,例5.3 简易的指令译码器设计。,5.2.2 并行信号赋值语句(续4),3.选择信号赋值语句,例5.3 简易的指令译码器设计。,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DECODER ISPORT(A,
6、B,C:IN STD_LOGIC;data1,data2:IN STD_LOGIC;data_out:OUT STD_LOGIC);END DECODER;ARCHITECTURE behavioral OF DECODER ISSIGNAL instruction:STD_LOGIC_VECTOR(0 TO 2);BEGINInstruction=A,5.2.3 顺序控制语句,1.IF语句,第一种形式:if 条件 then-顺序语句;else-顺序语句;end if;,第二种形式:if 条件 then-顺序语句;end if;,第三种形式:if 条件 then-顺序语句;elsif 条件 t
7、hen-顺序语句;else-顺序语句;end if;,第四种形式:if 条件 then-顺序语句;elsif 条件 then-顺序语句;end if;,1.IF语句(续1),例5.4 采用两种不同IF语句结构实现同一结构和功能的数据选择器。,Entity if_statement isPort(A,B,C,X:in bit_vector(3 downto 0);Z:out bit_vector(3 downto 0);end if_statement;Architecture example1 of if_statement isbeginprocess(A,B,C,X)beginZ 1000
8、)thenZ=C;end if;end process;end example1;,1.IF语句(续2),例5.4 采用两种不同IF语句结构实现同一结构和功能的数据选择器。,Architecture example2 of if_statement isbeginPROCESS(A,B,C,X)begin if(X=1111)THENZ1000)thenZ=C;elseZ=a;end if;end process;end example2;,1.IF语句(续3),例5.5 利用IF语句的多分支嵌套实现四选一多路选择器。,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.
9、ALL;ENTITY MUX_41 ISPORT(S1,S0,A,B,C,D:IN STD_LOGIC;Z:OUT STD_LOGIC);END MUX_41;ARCHITECTURE BEHAV_MUX41 OF MUX_41 ISBEGINP1:PROCESS(S1,S0,A,B,C,D)BEGIN IF S1=0 AND S0=0 THENZ=A;ELSIF S1=0 AND S0=1 THENZ=B;ELSIF S1=1 AND S0=0 THENZ=C;ELSEZ=D;END IF;END PROCESS P1;END BEHAV_MUX41;,1.IF语句(续4),例5.6 利用I
10、F语句的多分支嵌套实现四选一多路选择器的错误示例。,P1:PROCESS(S1,S0,A,B,C,D)BEGIN IF S1=0 AND S0=0 THENZ=A;ELSIF S1=0 AND S0=1 THENZ=B;ELSIF S1=1 AND S0=0 THENZ=C;ELSIF S1=1 AND S0=1 THENZ=D;END IF;END PROCESS P1;,5.2.3 顺序控制语句,2.CASE 语句,case 表达式 iswhen 选择值_1=顺序语句;when 选择值_2|选择值_3=顺序语句;when 选择值_4 to选择值_N=顺序语句;when others=顺序语
11、句;end case;,选择值可以有四种不同的表达方式:单个普通数值,如选择值_1;并列数值,如选择值_2|选择值_3,表示取值为选择值_2或者选择值_3;数值选择范围,如选择值_4 to 选择值_N,表示取值可以是该范围中的任意一个;混合方式,以上三种方式的混合。,2.CASE 语句(续1),例5.7 CASE 语句描述的8线-3线编码器。,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY encoder_83 ISPORT(s:IN STD_LOGIC_VECTOR(7 DOWNTO 0);z:OUT STD_LOGIC_VECTOR(2 DO
12、WNTO 0);END encoder_83;ARCHITECTURE behavioral OF encoder_83 ISBEGINPROCESS(s)BEGINCASE s ISWHEN 11111110=z z z z z z z z z=XXX;END CASE;END PROCESS;END behavioral;,2.CASE 语句(续2),例5.8 整型数据类型的范围。,entity range_1 isport(A,B,C,X:in integer range 0 to 15;Z:out integer range 0 to 15);end range_1;architect
13、ure example of range_1 isbeginprocess(A,B,C,X)begincase X iswhen 0=Z Z Z Z=0;end case;end process;end example;,2.CASE 语句(续3),例5.9 数组数据类型范围的错误用法。,entity range_2 isport(A,B,C,x:in bit_vector(3 downto 0);Z:out bit_vector(3 downto 0);END range_2;architecture example of range_2 isbeginprocess(A,B,C,x)beg
14、in case x iswhen 0000=Z Z Z Z=0;end case;end process;end example;,5.2.3 顺序控制语句,3.LOOP 语句,FOR LOOP的语句格式如下:LOOP 标号:for 循环变量 in 循环次数范围 loop顺序语句end loop LOOP 标号;,WHILE LOOP的语句格式如下:LOOP标号:while 循环控制条件 loop顺序语句end loop LOOP 标号;,3.LOOP 语句(续1),例5.10 FOR LOOP语句使用示例。,entity for_loop isport(A:in integer range
15、0 to 3;Z:out bit_vector(3 downto 0);end for_loop;architecture example OF for_loop isbeginprocess(A)beginZ=0000;for i in 0 to 3 loopif(A=i)thenZ(i)=1;end if;end loop;end process;end example;,3.LOOP 语句(续2),例5.11 利用LOOP语句将向量转化为整数输出。,entity conv_int isport(vect:in bit_vector(7 downto 0);result:out integ
16、er);end conv_int;architecture A of conv_int isbegin process(vect)variable tmp:integer;begintmp:=0;for i in 7 downto 0 loopif(vect(i)=1)thentmp:=tmp+2*i;end if;end loop;result=tmp;end process;end A;,architecture B of conv_int isbegin process(vect)variable tmp:integer;variable i:integer;begintmp:=0;i:
17、=vect highwhile(i=vect low)loopif(vect(i)=1)then tmp:=tmp+2*i;end if;i:=i-1;-修改循环变量end loop;result=tmp;end process;end B;,5.2.3 顺序控制语句,4.next语句和exIt语句,NEXT的语句四种形式:NEXT;NEXT LOOP标号;NEXT WHEN 条件表达式;NEXT LOOP标号 WHEN 条件表达式;,EXIT语句四种形式:EXIT;EXIT LOOP标号;EXIT WHEN 条件表达式;EXIT LOOP标号 WHEN 条件表达式;,5.2.4 NULL语句
18、,空语句不会执行任何操作,其语句格式为:NULL;,例5.12 NULL语句的应用示例。ENTITY EX_WAIT ISPORT(CNTL:IN INTEGER RANGE 0 TO 31;A,B:IN STD_LOGIC_VECTOR(7 DOWNTO 0);Z:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END EX_WAIT;ARCHITECTURE arch_wait OF EX_WAIT ISBEGINP_WAIT:PROCESS(CNTL)BEGIN Z Z NULL;END CASE;END PROCESS P_WAIT;END arch_wait;,5.
19、2.5 WAIT语句,WAIT语句的语句格式有如下四种形式:WAIT UNTIL 条件表达式;WAIT FOR 时间表达式;WAIT ON 信号列表;WAIT;,例5.13 利用WAIT语句描述的D触发器模块。entity FF isport(D,CLK:in bit;Q:out bit);end FF;architecture BEH_1 of FF isbeginprocessbeginwait until CLK=1;Q=D;end process;end BEH_1;,5.2.6 进程语句,1.进程语句的格式进程标号:PROCESS(敏感信号参数列表)进程说明部分 BEGIN顺序描述语
20、句 END PROCESS 进程标号;2.进程设计要点同一结构体中的多个进程之间是并行运行的,但每一进程中的逻辑描述语句是顺序运行的。进程只能存在于结构体内。一个进程的执行是事件触发的,或者将可能的事件源列在敏感信号参数表中,或者直接使用WAIT语句来控制进程的执行。同一设计中的所有进程都是并行运行的,各进程彼此之间的通信是通过列于敏感信号参数表中的信号进行的。如果使用了标号,那末在进程结束语句中必须重复标号。,5.2.6 进程语句(续1),3.进程语句设计实例,例5.14 进程中敏感信号参数表和IF语句的使用。Library IEEE;use IEEE.Std_Logic_1164.all;
21、entity comp_list isport(A,B,SEL:in std_logic;Z:out std_logic);end comp_list;architecture RTL of comp_list isbeginprocess(A,B,SEL)beginif SEL=1 thenZ=A;else Z=B;end if;end process;end RTL;,3.进程语句设计实例(续2),例5.15 无复位十进制加法计数器的描述。,Library IEEE;use IEEE.Std_Logic_1164.all;entity counter is port(CLK:in std_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 主要 描述 语句 课件
链接地址:https://www.31ppt.com/p-3845325.html