2011第4章 VHDL应用实例_第1页
2011第4章 VHDL应用实例_第2页
2011第4章 VHDL应用实例_第3页
2011第4章 VHDL应用实例_第4页
2011第4章 VHDL应用实例_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第4章 VHDL应用实例2022年5月8日14时34分1第第4 4章章 VHDLVHDL应用实例应用实例 4.1 4.1 组合逻辑电路设计组合逻辑电路设计 4.2 4.2 时序逻辑电路设计时序逻辑电路设计4.3 4.3 状态机设计状态机设计 本本 章章 小小 结结第4章 VHDL应用实例2022年5月8日14时34分24.1 4.1 组合逻辑电路设计组合逻辑电路设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY nand1 ISPORT(a,b:IN STD_LOGIC; y:OUT STD_LOGIC);END nand1;ARCHITECTU

2、RE rtl OF nand1 ISBEGIN y=a NAND B;END rtl; 4.1.1 基本门电路基本门电路 基本门电路有与门、或门、非门、与非门、或非门和异或门基本门电路有与门、或门、非门、与非门、或非门和异或门等,用等,用VHDLVHDL语言来描述十分方便。语言来描述十分方便。 【例【例4.1】2输入与非门电路输入与非门电路第4章 VHDL应用实例2022年5月8日14时34分3LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY GATE ISPORT (A,B:IN STD_LOGIC; YAND,YOR,YNAND,YNOR,YN

3、OT,YXOR:OUT STD_LOGIC);END GATE;ARCHITECTURE ART OF GATE IS BEGIN YAND=A AND B; -与门输出与门输出 YOR=A OR B; -或门输出或门输出 YNAND=A NAND B; -与非门输出与非门输出 YNOR=A NOR B; -或非门输出或非门输出 YNOT=A NOT B; -反相器输出反相器输出 YXOR=A XOR B; -异或门输出异或门输出 END ART;【例【例4.2】同时实现一个与门、或门、与非门、或非门、】同时实现一个与门、或门、与非门、或非门、 异或门及反相器的逻辑异或门及反相器的逻辑第4章

4、VHDL应用实例2022年5月8日14时34分4【例【例4.3】实现实现74LS138三线三线-八线译码器(输出低电平有效)。八线译码器(输出低电平有效)。LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY decoder38 ISPORT(a, b, c, g1, g2a, g2b:in std_logic; y:out std_logic_vector(7 downto 0);END decoder38;ARCHITECTURE behave38 OF decoder38 ISsignal indata:std_logic_vector(2 do

5、wnto 0);BEGIN indatayyyyyyyyy=XXXXXXXX; END case; ELSE y=11111111; END IF; END PROCESS; END behave38; 4.1.2 3-8译码器译码器第4章 VHDL应用实例2022年5月8日14时34分5 8-3线优先编码器,输入信号为线优先编码器,输入信号为A、B、C、D、E、F、G和和H,输出信,输出信号为号为OUT0、OUT1和和OUT2。输入信号中。输入信号中A的优先级别最低,依次类推,的优先级别最低,依次类推,H的优先级别最高。的优先级别最高。【例【例4.4】用】用3种方法设计种方法设计8-3线优先

6、编码器。线优先编码器。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ENCODER IS PORT (A,B,C,D,E,F,G,H: IN STD_LOGIC: OUT0,OUT1,OUT2: OUT STD_LOGIC);END ENCODER; 4.1.3 编码器编码器1. 8-3线优先编码器线优先编码器第4章 VHDL应用实例2022年5月8日14时34分6方法方法1:使用条件赋值语句使用条件赋值语句ARCHITECTURE ART1 OF ENCODER IS SIGNAL OUTS:STD_LOGIC_VECTOR(2 DOWNTO

7、 0); BEGIN OUTS (2 DOWNTO 0)= 111 WHEN H=1 ELSE 110 WHEN G=1 ELSE 101 WHEN F=1 ELSE 100 WHEN E=1 ELSE 011 WHEN D=1 ELSE 010 WHEN C=1 ELSE 001 WHEN B=1 ELSE 000 WHEN A=1 ELSE XXX; OUT0=OUTS(0); OUT1=OUTS(1); OUT2=0 AND INPUTS(I)/=1 LOOP I:=I-1; END LOOP; (OUT2,OUT1,OUT0)=CONV_STD_LOGIC_VECTOR(I,3); E

8、ND PROCESS;END ART2;第4章 VHDL应用实例2022年5月8日14时34分8方法方法3:使用使用IF语句语句LIBRARY IEEE;USE IEEE. STD_LOGIC_1164.ALL;ENTITY ENCODER IS PORT(IN1:IN STD_LOGIC_VECTOR(7 DOWNTO 0); OUT1:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END ENCODER;ARCHITECTURE ART3 OF ENCODER ISBEGIN PROCESS(INT1) BEGIN IF IN1(7)=1 THEN OUT1=111;

9、ELSIF IN1(6)=1 THEN OUT1=110; ELSIF IN1(5)=1 THEN OUT1=101; ELSIF IN1(4)=1 THEN OUT1=100; ELSIF IN1(3)=1 THEN OUT1=011; ELSIF IN1(2)=1 THEN OUT1=010; ELSIF IN1(1)=1 THEN OUT1=001; ELSIF IN1(0)=1 THEN OUT1=000; ELSE OUT1 S S S S S S S S S S S S S S S S S = B0000; END CASE; END PROCESS ;END struc;第4章

10、VHDL应用实例2022年5月8日14时34分12【例【例4.6】8位数值比较器的位数值比较器的VHDL描述描述 LIBRARY IEEE;USE IEEE. STD_LOGIC_VECTOR(7 DOWNTO 0);ENTITY COMPARE IS PORT (A,B:IN STD_LOGIC_VECTOR(7 DOWNTO 0); EQ:OUT STD_LOGIC);END COMPARE;ARCHITECTURE ART OF COMPARE IS BEGIN EQ =1 WHEN A=B ELSE 0;END ART;4.1.4 数值比较器数值比较器 数值比较器可以比较两个二进制是否

11、相等,下面是一个数值比较器可以比较两个二进制是否相等,下面是一个8位位比较器的比较器的VHDL描述。有两个描述。有两个8位二进制数,分别是位二进制数,分别是A和和B,输,输出为出为EQ,当,当A=B时,时,EQ=1,否则,否则EQ=0。第4章 VHDL应用实例2022年5月8日14时34分13【例【例4.7】4选选1选择器的选择器的VHDL描述描述 LIBRARY IEEE; USE IEEE. STD_LOGIC_1164.ALL; ENTITY MUX41 IS PORT( INP: IN STD_LOGIC_VECTOR(3 DOWNTO 0); A,B:IN STD_LOGIC; Y:

12、OUT STD_LOGIC); END MUX41; ARCHITECTURE ART OF MUX41 IS SIGNAL SEL :STD_LOGIC_VECTOR(1 DOWNTO 0);4.1.5 数据选择器数据选择器 4选选1选择器用于四路信号的切换。选择器用于四路信号的切换。4选选1选择器有选择器有4个信号输个信号输入端入端INP(0)INP(3),两个信号选择端,两个信号选择端A、B,一个信号输出端,一个信号输出端Y。当。当A、B输入不同的选择信号时,就可以使输入不同的选择信号时,就可以使INP(0)INP(3)中某个相应的输入信号与输出端中某个相应的输入信号与输出端Y接通。接通

13、。第4章 VHDL应用实例2022年5月8日14时34分14BEGIN SEL=B&A; PROCESS(INP,SEL) BEGIN IF (SEL=00)THEN Y=INP(0); ELSIF (SEL=01)THEN Y=INP(1); ELSIF (SEL=11)THEN Y=INP(2); ELSE Y=INP(3); END IF; END PROCESS;END ART;第4章 VHDL应用实例2022年5月8日14时34分15LIBRARY IEEE;USE IEEE. STD_LOGIC_1164.ALL;ENTITY half ISPORT (a,b:IN std

14、_LOGIC; s,co:OUT std_LOGIC);END half;ARCHITECTURE half1 OF half ISBEGIN s =a XOR b; co =a AND b;END half1; 4.1.6 算术运算电路算术运算电路1. 半加器半加器【例【例4.8】半加器半加器第4章 VHDL应用实例2022年5月8日14时34分16LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY half ISPORT (a, b:IN std_LOGIC; s,co:OUT std_LOGIC);END half;ARCHITECTURE h

15、alf1 OF half ISBEGIN s =a xor b; co =a and b;end half1;LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY full ISPORT (a,b,cin:IN std_LOGIC; s,co: OUT std_LOGIC);END full;ARCHITECTURE full1 OF full IS COMPONENT half PORT (a, b:IN std_LOGIC; s,co:OUT std_LOGIC); END COMPONENT;SIGNAL u0_co,u0_s,u1_co:std

16、_logic;BEGIN u0:half port map(a,b,u0_s,u0_co); u1:half port map(u0_s,cin,s,u1_co); co=u0_co or u1_co;end full1; 【例【例4.9】由半加器由半加器组成全加器,以元件组成全加器,以元件方式调用。方式调用。全加器:全加器:Sum = A B CCarry = AB + (A B) C2. 全加器全加器半加器:半加器:Sum = A B Carry = AB 第4章 VHDL应用实例2022年5月8日14时34分17【例【例4.10】三态门电路的三态门电路的VHDL描述描述 LIBRARY

17、IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY TRISTATE IS PORT (EN,DIN :IN STD_LOGIC; DOUT :OUT STD_LOGIC);END TRISTATE;ARCHITECTURE ART OF TRISTATE ISBEGIN PROCESS(EN,DIN) BEGIN IF EN=1 THEN DOUT=DIN; ELSE DOUT=Z; END IF ; END PROCESS;END ART;4.1.7 三态门及总线缓冲器三态门及总线缓冲器三态门和总线缓冲器是驱动电路经常用到的器件。三态门和总线缓冲器是驱动电路经常

18、用到的器件。1. 三态门电路三态门电路第4章 VHDL应用实例2022年5月8日14时34分18 在微型计算机的总线驱动中经常要用单向总线缓冲器,它通常由多个三在微型计算机的总线驱动中经常要用单向总线缓冲器,它通常由多个三态门组成,用来驱动地址总线和控制总线。一个态门组成,用来驱动地址总线和控制总线。一个8 8位的单向总线缓冲器如图位的单向总线缓冲器如图4.54.5所示。所示。图图4.5 单向总线缓冲器单向总线缓冲器DOUT7.0ENDIN7.0ENTRI_BUF8DOUT7.0DIN7.0 2. 单向总线驱动器单向总线驱动器第4章 VHDL应用实例2022年5月8日14时34分19【例【例4

19、.11】单向总线缓冲器的单向总线缓冲器的VHDL描述描述 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY TR1_BUF8 IS PORT (DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); EN: IN STD_LOGIC; DOUNT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);ARCHITECTURE ART OF TR1_BUF8 IS BEGIN PROCESS(EN,DIN) IF(EN=1)THEN DOUT=DIN; ELSE DOUT=ZZZZZZZZ; END IF; END PR

20、OCESS;END ART;第4章 VHDL应用实例2022年5月8日14时34分204.2 时序逻辑电路设计时序逻辑电路设计 时序电路主要有触发器、寄存器、计数器、序列信号时序电路主要有触发器、寄存器、计数器、序列信号发生器和序列信号检测器等。发生器和序列信号检测器等。4.2.1 时钟信号时钟信号第4章 VHDL应用实例2022年5月8日14时34分21描述描述1 1:label: process (clk) begin if (clkevent and clk =1 ) then end process;1. 时钟上升沿描述时钟上升沿描述:描述描述2:labe2: process (clk

21、) begin wait until clk =1 end process;描述描述3 3:labe3: process (clk) begin if (clklast_value =0 and clkevent and clk =1 ) then end process;描述描述4 4:labe4: process (clk) begin if (rising_edge(clk) then end process;第4章 VHDL应用实例2022年5月8日14时34分22描述描述1 1:label: process (clk) begin if (clkevent and clk =0 )

22、then end process;2. 时钟下降沿描述时钟下降沿描述:描述描述2:labe2: process (clk) begin wait until clk =0 end process;描述描述3 3:labe3: process (clk) begin if (clklast_value =1 and clkevent and clk =0 ) then end process;描述描述4 4:labe4: process (clk) begin if (falling_edge(clk) then end process;第4章 VHDL应用实例2022年5月8日14时34分23

23、4.2.2 触发器触发器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164. ALL;ENTITY ASYNC_RDFF IS PORT(CLK,D,RESET:IN STD_LOGIC; Q,QB:OUT STD_LOGIC);END ASYNC_RDFF;ARCHITECTURE ART OF ASYNC_RDFF ISBEGIN PROCESS(CLK,RESET) BEGIN IF(RESET=0)THEN -复位信号为复位信号为0,则触发器被复位,则触发器被复位 Q =0; QB =1; ELSIF(CLKEVENT AND CLK=1) THEN Q =D;

24、QB =NOT D END IF; END PROCESS;END ART;【例【例4.13】异步异步复位的复位的D触发器触发器第4章 VHDL应用实例2022年5月8日14时34分24LIBRARY IEEE;USE IEEE.STD_LOGIC_1164 . ALL;ENTITY ASYNC_RDFF IS PORT(D,CLK,RESET:IN STD_LOGIC; Q,QB:OUT STD_LOGIC);END ASYNC_RDFF;ARCHITECTURE ART OF ASYNC_RDFF ISBEGIN PROCESS(CLK) BEGIN IF(CLKEVENT AND CLK

25、=1)THEN IF(PRESET=0)THEN Q=0; -时钟边沿到来且有复位信号,触发器被复位时钟边沿到来且有复位信号,触发器被复位 QB =1; ELSE Q=D; QB = NOT D; END IF; END IF; END PROCESS;END ART;【例【例4.14】同步同步复位的复位的D触发器触发器第4章 VHDL应用实例2022年5月8日14时34分25LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY JKCFQ IS PORT(J,K,CLK:IN STD_LOGIC; Q,QB:BUFFER STD_LOGIC);END

26、 JKCFQ;ARCHITECTURE ART OF JKCFQ ISSIGNAL Q_S,QB_S:STD_LOGIC;BEGIN PROCESS(CLK,J,K) BEGIN IF(CLKEVENT AND CLK=1)THEN IF(J=0 AND K=1) THEN Q_S=0; QB_S=1; ELSIF(J=1AND K=0)THEN Q_S=1; QB_S=0; ELSIF(J=1AND K=1)THEN Q_S=NOT Q_S; QB_S=NOT QB_S; END IF; END IF ; Q=Q_S; QB=QB_S;END PROCESS;END ART;【例【例4.15

27、】 JK触发器触发器第4章 VHDL应用实例2022年5月8日14时34分26G:使能控制输入端。:使能控制输入端。 G=1时,时,Q7.0D7.0; G=0时,锁存器的状态保持不变。时,锁存器的状态保持不变。OE:三态输出控制端。:三态输出控制端。OE=1时,输出为高阻态;时,输出为高阻态; OE=0时,锁存器正常输出状态。时,锁存器正常输出状态。 4.2.3 寄存器和移位寄存器寄存器和移位寄存器1. 锁存器锁存器 ( (具有三态输出的具有三态输出的8D8D锁存器锁存器74LS373 )74LS373 )第4章 VHDL应用实例2022年5月8日14时34分27LIBRARY IEEE;US

28、E IEEE.STD_LOGIC_1164.ALL;ENTITY latch8 IS PORT(g,oe:IN STD_LOGIC; d:IN STD_LOGIC_VECTOR(7 DOWNTO 0); q:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0);END latch8;ARCHITECTURE one OF latch8 ISSIGNAL q_temp:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN PROCESS(g,oe,d) BEGIN IF (oe=0) THEN IF (g=1) THEN q_temp = d; END IF;

29、else q_temp = ZZZZZZZZ; END IF; q = q_temp; END PROCESS;END one; 【例【例4.16】74LS3738D锁存器锁存器第4章 VHDL应用实例2022年5月8日14时34分28 寄存器与锁存器的功能相同,但寄存器与锁存器的功能相同,但寄存器是同步时钟控制,寄存器是同步时钟控制,锁存器是电平信号控制锁存器是电平信号控制。将锁存器源程序中的的使能控制输入。将锁存器源程序中的的使能控制输入端端G改为同步时钟控制方式即可。改为同步时钟控制方式即可。4.2.3 寄存器和移位寄存器寄存器和移位寄存器2. 寄存器寄存器 (74LS374 )(74L

30、S374 )第4章 VHDL应用实例2022年5月8日14时34分29【例【例4.17】一个一个8 8位的移位寄存器,具有左移一位或右移一位、并行输入和位的移位寄存器,具有左移一位或右移一位、并行输入和 同步复位的功能。同步复位的功能。LIBRARY IEEE;USE IEEE. STD_LOGIC_1164.ALL;ENTITY SHIFTER IS PORT(DATA:IN STD_LOGIC_VECTOR(7 DOWNTO 0);SHIFT_LEFT:IN STD_LOGIC;SHIFT_RIGHT:IN STD_LOGIC;RESET:IN STD_LOGIC;MODE:IN STD_

31、LOGIC_VECTOR(1 DOWNTO 0);QOUT:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0);END SHIFTER; 3. 移位寄存器移位寄存器 移位寄存器除了具有存储代码的功能以外,还具有移位功能。所谓移移位寄存器除了具有存储代码的功能以外,还具有移位功能。所谓移位功能,是指寄存器里存储的代码能在移位脉冲的作用下依次左移或右移。位功能,是指寄存器里存储的代码能在移位脉冲的作用下依次左移或右移。因此,移位寄存器不但可以用来寄存代码,还可用来实现数据的串并转换、因此,移位寄存器不但可以用来寄存代码,还可用来实现数据的串并转换、数值的运算以及数据处理等。数值

32、的运算以及数据处理等。第4章 VHDL应用实例2022年5月8日14时34分30ARCHITECTURE ART OF SHIFTER ISBEGIN PROCESS BEGIN WAIT UNTIL(RISING_EDGE(CLK); IF(RESET=1)THEN QOUTQOUTQOUTQOUTNULL; END CASE; END IF; END PROCESS;END ART;第4章 VHDL应用实例2022年5月8日14时34分31【例【例4.18】一个模为一个模为6060,具有异步复位、同步置数功能的,具有异步复位、同步置数功能的8421BCD8421BCD码计数器。码计数器。

33、LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNTM60 IS PORT(CI:IN STD_LOGIC; NRESET,LOAD: IN STD_LOGIC; D:IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK:IN STD_LOGIC; CO:OUT STD_LOGIC; QH:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); QL:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); END CNT

34、M60; 4.2.4 计数器计数器 计数器是数字系统中使用最多的时序电路,不仅能用于脉冲计数,还计数器是数字系统中使用最多的时序电路,不仅能用于脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。1. 同步计数器同步计数器第4章 VHDL应用实例2022年5月8日14时34分32ARCHITECTURE ART OF CNTM60 ISBEGIN CO=1WHEN(QH=“0101”AND QL=“1001”AND CI=1)ELSE0; -进位输出的产生进位输出的产生 PROCESS(CLK,NRESET)

35、BEGIN IF(NRESET=0)THEN -异步复位异步复位 QH=0000; QL=0000; ELSIF(CLKEVENT AND CLK=1)THEN -同步置数同步置数 IF(LOAD=1)THEN QH=D(7 DOWNTO 4) QL=D(3 DOWNTO 0);第4章 VHDL应用实例2022年5月8日14时34分33 ELSIF(CI=1)THEN -模模6060的实现的实现 IF(QL=9)THEN QL=0000; IF(QH=5)THEN QH=0000; ELSE -计数功能的实现计数功能的实现 QH=QH+1; END IF ELSE QL=QL+1; END I

36、F; END IF; -end if load END IF; -end if reset END PROCESS;END ART; ELSIF(CI=1)THEN -模模6060的实现的实现 IF(QL=9)THEN QL=0000; IF(QH=5)THEN QH=0000; ELSE -计数功能的实现计数功能的实现 QH=QH+1; END IF ELSE QL=QL+1; END IF; END IF; -end if load END IF; -end if reset END PROCESS;END ART;第4章 VHDL应用实例2022年5月8日14时34分34 2. 异步计数

37、器异步计数器 用用VHDLVHDL语言描述异步计数器,与上述同步计数器语言描述异步计数器,与上述同步计数器不同之不同之处主要表现在对各级时钟的描述上。处主要表现在对各级时钟的描述上。 增加增加加减控制输入端加减控制输入端(UPDOWN):): 当当UPDOWN=0时,计数器作加法操作,时,计数器作加法操作, UPDOWN=1时,计数器作减法操作。时,计数器作减法操作。3. 可逆计数器可逆计数器第4章 VHDL应用实例2022年5月8日14时34分354.3 4.3 状态机设计状态机设计图图4.11 状态机的结构示意图状态机的结构示意图 状态机状态机(State Machine)(State M

38、achine)是一是一类很重要的时序电路,是很多数字类很重要的时序电路,是很多数字电路的核心部件,是大型电子设计电路的核心部件,是大型电子设计的基础。状态机相当于一个控制器,的基础。状态机相当于一个控制器,它将一项功能的完成分解为若干步,它将一项功能的完成分解为若干步,每一步对应于二进制的一个状态,每一步对应于二进制的一个状态,通过预先设计的顺序在各状态之间通过预先设计的顺序在各状态之间进行转换,状态转换的过程就是实进行转换,状态转换的过程就是实现逻辑功能的过程。现逻辑功能的过程。 状态机有状态机有摩尔摩尔(Moore)(Moore)型和米型和米立立(Mealy)(Mealy)型型两种。两种。

39、MooreMoore型状态机型状态机的输出信号只与当前状态有关;的输出信号只与当前状态有关;MealyMealy型状态机的输出信号不仅与型状态机的输出信号不仅与当前状态有关,还与输入信号有关。当前状态有关,还与输入信号有关。第4章 VHDL应用实例2022年5月8日14时34分36(1) (1) 状态机内部状态转换。状态机经历一系列状态,下一状态机内部状态转换。状态机经历一系列状态,下一状态由状态译码器根据当前状态和输入条件决定。状态由状态译码器根据当前状态和输入条件决定。(2) (2) 产生输出信号序列。输出信号由输出译码器根据当前产生输出信号序列。输出信号由输出译码器根据当前状态和输入条件

40、决定。状态和输入条件决定。 寄存器部分用于存储状态机的内部状态;组合逻辑部分寄存器部分用于存储状态机的内部状态;组合逻辑部分又分为状态译码器和输出译码器,状态译码器确定状态机的又分为状态译码器和输出译码器,状态译码器确定状态机的下一个状态,即确定状态机的激励方程,输出译码器确定状下一个状态,即确定状态机的激励方程,输出译码器确定状态机的输出,即确定状态机的输出方程。态机的输出,即确定状态机的输出方程。状态机的基本操作有两种:状态机的基本操作有两种: 状态机可认为包括两个主要部分:状态机可认为包括两个主要部分:组合逻辑部分和寄存器部分组合逻辑部分和寄存器部分。第4章 VHDL应用实例2022年5

41、月8日14时34分37状态定义:状态定义:S0S0表示初态,表示初态,S1S1表示投入表示投入5 5角硬币,角硬币,S2S2表示投入表示投入1 1元硬币,元硬币,S3S3表示投表示投入入1 1元元5 5角硬币,角硬币,S4S4表示投入表示投入2 2元硬币。元硬币。输入信号:输入信号:state_input(1)state_input(1)表示投入表示投入1 1元元硬币,硬币,state_input(0)state_input(0)表示投入表示投入5 5角角硬硬币。币。输入信号为输入信号为1 1表示投入硬币,输入信号为表示投入硬币,输入信号为0 0表示未投入硬币。表示未投入硬币。输出信号输出信号

42、:comb_outputs(1)comb_outputs(1)表示输出货物,表示输出货物,comb_outputs(0)comb_outputs(0)表示找表示找5 5角零钱。角零钱。输出信号为输出信号为1 1表示输出货物或找钱,输出信号为表示输出货物或找钱,输出信号为0 0表示不输出货物或不找钱。表示不输出货物或不找钱。 摩尔型状态机摩尔型状态机【例【例4.19】完成自动售货机的】完成自动售货机的VHDL设计。设计。 要求:有两种硬币:要求:有两种硬币:1元或元或5角。投入角。投入1元元5角硬币输出货物,角硬币输出货物, 投入投入2元硬币输出货物并找元硬币输出货物并找5角零钱。角零钱。第4章

43、 VHDL应用实例2022年5月8日14时34分38状态定义:状态定义:S0S0表示初态,表示初态,S1S1表示投入表示投入5 5角硬币,角硬币,S2S2表示投入表示投入1 1元硬币,元硬币,S3S3表示投表示投 入入1 1元元5 5角硬币,角硬币,S4S4表示投入表示投入2 2元硬币。元硬币。输入信号:输入信号:state_input(1)state_input(1)表示投入表示投入1 1元,硬币元,硬币state_input(0)state_input(0)表示投入表示投入5 5角角 硬币。硬币。输出信号输出信号:comb_outputs(1)comb_outputs(1)表示输出货物,表

44、示输出货物,comb_outputs(0)comb_outputs(0)表示找表示找5 5角零钱。角零钱。第4章 VHDL应用实例2022年5月8日14时34分39LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;ENTITY moore IS PORT(clk,reset:IN std_logic: state_inputs:IN std_logic_vector(0 TO 1); comb_outputs:OUT std_logic_vector(0 TO 1);END moore ARCHITECTURE be OF moore IS TYPE fsm_st IS (S0,S1,S2,S3,S4);-状态的枚举类型定义状态的枚举类型定义 SIGNAL current_state,next_state:fsm_st;-状态信号的定义状态信号的定义BEGIN根据状态转换图设计的根据状态转换图设计的VHDL源程序:源程序:第4章 VHDL应用实例2022年5月8日14时34分40 reg:PROCESS(reset,clk) -时序进程时序进程 BEGIN IF reset=1 THEN current_state=S0;-异步复位异步复位 ELSIF rising_edge(clk)THEN curren

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论