《EDA(第3讲)第3章VHDL入门.ppt》由会员分享,可在线阅读,更多相关《EDA(第3讲)第3章VHDL入门.ppt(40页珍藏版)》请在三一办公上搜索。
1、1,VHDL进阶,本讲要点:VHDL程序运行机制:并行语句和顺序语句process语句If语句 时钟边沿 同步和异步,2,3.2 简单时序电路的VHDL描述,让我们继续学习硬件描述语言,3,VHDL程序运行机制,architecture one of mux21b issignal c,e:bit;begin process(a,b,d)begin c=a+b;e=d;end process;f=c;g=d;h=c+d;end architecture one;,4,VHDL程序运行机制,architecture one of mux21b issignal c,e:bit;begin pro
2、cess(a,b,d)begin c=a+b;e=d;end process;f=c;g=d;h=c+d;end architecture one;,5,并行语句和顺序语句,电路逻辑功能的描述分为:并行语句和顺序语句两种。,顺序语句:按照语句的先后排列顺序执行。,并行语句:并行执行语句,与语句的书写顺序无关。,用在结构体语句中,用在进程语句中,6,进程语句,进程标号:PROCESS(敏感信号参数表)IS 进程说明部分 BEGIN 顺序描述语句 END PROCESS 进程标号;,7,PROCESS语句结构,进程说明,顺序描述语句,敏感信号参数表,信号赋值语句,变量赋值语句,进程启动语句,子程序
3、调用语句,顺序描述语句,进程跳出语句,PROCESS 组成,8,进程要点,1.进程PROCESS为一无限循环语句,2.进程PROCESS内部必须用顺序语句,顺序语句 也必须用在进程PROCESS内,3.进程必须由敏感信号的变化来启动,4.进程语句本身是并行语句,9,5.信号是多个进程间的通信线,6.一个进程中只允许描述对应于一个时钟信号的同 步时序逻辑,10,【例3-5】D触发器:DFF1.VHDLIBRARY IEEE;ENTITY DFF1 IS PORT(CLK:IN STD_LOGIC;D:IN STD_LOGIC;Q:OUT STD_LOGIC);END DFF1;ARCHITECT
4、URE bhv OF DFF1 IS SIGNAL Q1:STD_LOGIC;-类似于在芯片内部定义一个数据 的暂存节点 BEGIN PROCESS(CLK,Q1)BEGIN IF CLKEVENT AND CLK=1 THEN Q1=D;END IF;END PROCESS;Q=Q1;-将内部的暂存数据向端口输出 END bhv;,图3-4 D触发器,11,VHDL描述的语言现象说明,1.标准逻辑位数据类型STD_LOGIC,BIT数据类型定义:TYPE BIT IS(0,1);-只有两种取值STD_LOGIC数据类型定义:TYPE STD_LOGIC IS(U,X,0,1,Z,W,L,H,
5、-);-9种,12,2、库和程序包,1.IEEE,2.STD,3.WORK,4.VITAL,STD_LOGIC_1164;STD_LOGIC_ARITH;STD_LOGIC_UNSIGNED;STD_LOGIC_SIGNED,STANDARD;TEXTIO,YOUR LIBRARY,VITAL_TIMING VITAL_PRIMITIVES,13,库的用法:P289,LIBRARY;USE.ALL;,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;,14,3.信号定义和数据对象,EVENT,4.上升沿检测表达式和信号属性函数EVENT,5.不完整条件语句与时序
6、电路,SIGNAL Q1:STD_LOGIC;,CLKEVENT AND CLK=1,15,【例3-6】不完整的IF语句ENTITY COMP_BAD IS PORT(a1,b1:IN BIT;q1:OUT BIT);END;ARCHITECTURE one OF COMP_BAD IS BEGIN PROCESS(a1,b1)BEGIN IF a1 b1 THEN q1=1;ELSIF a1 b1 THEN q1=0;-未提及当a1=b1 时,q1作何操作 END IF;END PROCESS;END;,16,图3-5 例3-6的电路图(Synplify综合),17,图3-6 例3-7的电路
7、图(Synplify综合),【例3-7】完整的IF语句.IF a1 b1 THEN q1=1;ELSE q1=0;END IF;.,18,If-then 语法,(1),IF 条件 THEN 顺序处理语句1;顺序处理语句2;END IF;,例:IF(a=1)THEN c=b;d=e;END IF;,19,If-then-else 语法,IF 条件 THEN 语句1;语句2;。ELSE 语句1;语句2;。END IF;,(2),ARCHITECTURE rtl OF mux2 ISBEGIN PROCESS(a,b,sel)BEGIN IF(sel=1)THEN c=a;ELSE c=b;END
8、IF;END PROCESS;END rtl;,20,If-then-elsif-else 语法,IF 条件1 THEN 语句1;语句2;。ELSIF 条件2 THEN 语句1;语句2;。ELSE 语句1;语句2;。END IF;,(3),21,IF语句不仅可以用于选择器的设计,而且还可以用于比较器、译码器等凡是可以进行条件控制的逻辑电路设计。需要注意的是,IF语句的条件判断输出是布尔量,即是“真”(TRUE)或“假”(FALSE)。因此在IF语句的条件表达式中只能使用关系运算操作(=,/=,=)及逻辑运算操作的组合表达式。,22,时钟信号,任何时序电路都以时钟信号为驱动信号,时序电路仅在时钟
9、信号的边沿到来时,其状态才发生改变。因此,时钟信号通常是描述时序电路程序的执行条件。另外,时序电路也总是以时钟进程的形式进行描述的,23,时钟脉冲上升沿描述,IF(clkEVENT AND clk=1)THENWAIT UNTIL clk=1;IF(clklast_value=0 AND clkevent AND clk=1)THENIF(rising_edge(clk)THEN,24,IF(clkEVENT AND clk=0)THENWAIT UNTIL clk=0;IF(clklast_value=1 AND clkevent AND clk=0)THENIF(falling_edge(
10、clk)THEN,时钟脉冲下降沿描述,25,实现时序电路的不同描述,(1).PROCESS(CLK)BEGINIF CLKEVENT AND(CLK=1)AND(CLKLAST_VALUE=0)THEN Q=D;-确保CLK的变化是一次上升沿的跳变 END IF;END PROCESS;,(2).PROCESS(CLK)BEGINIF CLK=1 AND CLKLAST_VALUE=0 THEN Q=D;END IF;END PROCESS;,26,(3)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF3 IS PORT(CLK,D:IN
11、STD_LOGIC;Q:OUT STD_LOGIC);END;ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1:STD_LOGIC;BEGIN PROCESS(CLK)BEGIN IF rising_edge(CLK)-必须打开STD_LOGIC_1164程序包 THEN Q1=D;END IF;END PROCESS;Q=Q1;-在此,赋值语句可以放在进程外,作为并行赋值语句 END;,27,(4).PROCESS BEGIN wait until CLK=1;-利用wait语句 Q=D;END PROCESS;,28,(5).PROCESS(CLK)BEGIN I
12、F CLK=1 THEN Q=D;-利用进程的启动特性产生对CLK的边沿检测 END IF;END PROCESS,图3-7 D触发器的时序波形,29,(6).PROCESS(CLK,D)BEGIN IF CLK=1-电平触发型寄存器 THEN Q=D;END IF;END PROCESS;,图3-8 D锁存器的时序波形,30,复位信号,同步复位,就是当复位信号有效且在给定的时钟边沿到来时,触发器才被复位。换一句话说,即使复位信号有效,如果时钟脉冲边沿未到来,触发器也不会复位。异步复位则不同,一旦复位信号有效,触发器就立即复位。,31,同步复位描述的VHDL描述,PROCESS(clk)BEG
13、IN IF 时钟边沿判断 THEN IF 复位条件 THEN Signal_out=reset_value;ELSE Signal_out=signal_in;END IF;END IF;END PROCESS;,32,同步复位描述在用VHDL语言描述时,同步复位一定在以时钟为敏感信号的进程中定义,且用IF语句来描述必要的复位条件。另外,描述复位条件的IF语句一定要嵌套在描述时钟边沿条件的IF语句的内部,,33,异步复位的VHDL语言描述,首先,在进程的敏感信号表中除时钟外,还应添上复位信号;另外,描述复位的IF语句应放在进程的第一条语句位置,34,PROCESS(clock_signal,r
14、eset_signal)BEGIN IF(reset_condition)THEN Signal_out=reset_value;ELSIF(clock_edge_condition)THEN Signal_out=signal_in;END IF;END PROCESS;,35,*异步时序电路设计,【例3-8】.ARCHITECTURE bhv OF MULTI_DFF IS SIGNAL Q1,Q2:STD_LOGIC;BEGINPRO1:PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN Q1=NOT(Q2 OR A);END IF;END PROC
15、ESS;PRO2:PROCESS(Q1)BEGIN IF Q1EVENT AND Q1=1 THEN Q2=D;END IF;END PROCESS;QQ=Q2;.,36,图3-9 例3-8综合后的电路(Synplify综合),37,【例3-9】3选1选择器ENTITY mul ISPORT(a,b,c,selx,sely:IN BIT;data_out:OUT BIT);END mul;ARCHITECTURE ex OF mul IS SIGNAL temp:BIT;BEGINp_a:PROCESS(a,b,selx)BEGIN IF(selx=0)THEN temp=a;ELSE tem
16、p=b;END IF;END PROCESS p_a;p_b:PROCESS(temp,c,sely)BEGIN IF(sely=0)THEN data_out=temp;ELSE data_out=c;END IF;END PROCESS p_b;END ex;,38,VHDL程序基本结构,39,1、VHDL语句,小结:,顺序语句,并行语句,2、顺序语句:IF语句、CASE语句等,3、并行语句:进程语句process、条件信号赋值语句WHEN-ELSE 等,40,上机练习题:1、使用if语句设计 带清零和置数端的D触发器2、使用if语句设计 带清零和置数端的JK触发器3、下图所示的是双2选1多路选择器构成的电路MUXK,对于其中MUX21A,当s=0和1时,分别有y=a和y=b。试在一个结构体中用两个进程来表达此电路。,