第五章用VHDL语言设计基本逻辑电路_第1页
第五章用VHDL语言设计基本逻辑电路_第2页
第五章用VHDL语言设计基本逻辑电路_第3页
第五章用VHDL语言设计基本逻辑电路_第4页
第五章用VHDL语言设计基本逻辑电路_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

1、3. 4-to-1 Multiplexerf.e. 5.135.2.3 Adders and Complement Circuits1、Adders 加法器有全加器和半加器之分,全加法器有全加器和半加器之分,全加器可以用两个半加器构成加器可以用两个半加器构成; n位加法器位加法器可以由可以由n个全加器用串行进位的方法连接个全加器用串行进位的方法连接而成。而成。 二进制运算经常要用到求补的操作。二进制运算经常要用到求补的操作。 这里用八位二进制求补电路为例。这里用八位二进制求补电路为例。 我们当然可以采用结构描述方式来我们当然可以采用结构描述方式来描述构造体,但是这样对每个门进行描描述构造体,但

2、是这样对每个门进行描述和连接太繁琐。这里采用述和连接太繁琐。这里采用RTL描述就描述就显得更加简洁、清楚。显得更加简洁、清楚。2. Complement Circuit3. Multiplication CircuitLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY mul ISPORT(A,B: IN STD_LOGIC_VECTOR(2 DOWNTO 0); M: OUT STD_LOGIC_VECTOR(5 DOWNTO 0);END mul;ARCHITECTURE beha

3、OF mul ISSIGNAL tmp0:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL tmp1:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL tmp2:STD_LOGIC_VECTOR(4 DOWNTO 0);BEGIN PROCESS(A,B) BEGIN IF B(0)=1 THEN tmp0=A; ELSE tmp0=000; END IF; IF B(1)=1 THEN tmp1=A&0; ELSE tmp1=0000; END IF; IF B(2)=1 THEN tmp2=A&00; ELSE tmp2=0000

4、0; END IF; M=tmp0+tmp1+(0&tmp2); END PROCESS;END beha; Ex:设计一个四位加减法器设计一个四位加减法器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY add_sub ISPORT(sub:IN STD_LOGIC; a,b: IN STD_LOGIC_VECTOR(3 DOWNTO 0); y: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); co: OUT STD_LOGIC);END add_sub

5、;ARCHITECTURE rtl OF add_sub ISSIGNAL tmp:STD_LOGIC_VECTOR(4 DOWNTO 0);BEGIN PROCESS(sub,a,b) BEGIN IF sub=0 THEN tmp=a +b; ELSE tmp=a -b; END IF;END PROCESS; y=tmp(3 DOWNTO 0); co=tmp(4);END rtl;7.1.4 Tristate-gate and Bus Buffer 三态门和双向缓冲器是接口电路和三态门和双向缓冲器是接口电路和总线驱动电路经常用到的器件。总线驱动电路经常用到的器件。 它们虽然不属于组合电

6、路,但我们它们虽然不属于组合电路,但我们也在这里进行介绍。也在这里进行介绍。f.e. 5.17f.e. 5.18f.e. 5.19 这里对一个实体采用了三种构造体进行这里对一个实体采用了三种构造体进行描述,若要把上述三个例题写在一起,可以描述,若要把上述三个例题写在一起,可以用配置来实现:用配置来实现:ENTITY tri_gate ISEND tri_gate;ARCHITECTURE zas ISEND zas;ARCHITECTURE blk ISEND blk;ARCHITECTURE nas ISEND nas; CONFIGURATION triif OF tri_gate IS

7、FOR zas END FOR; END triif; CONFIGURATION triblk OF tri_gate IS FOR blk END FOR; END triblk; CONFIGURATION tricase OF tri_gate IS FOR nas END FOR; END tricase;3、Unidirectional Bus Buffer 在微机的总线驱动中经常要用单向在微机的总线驱动中经常要用单向总线缓冲器,它通常由多个三态门组成,总线缓冲器,它通常由多个三态门组成,用来驱动地址总线和控制总线。用来驱动地址总线和控制总线。f.e. 5.20f.e. 5.21f

8、.e. 5.224、Bi-Directional Bus Bufferf.e. 5.235.3 Design for Sequential Circuits Sequential circuits in which the values of the outputs depend on not only on the present values of the inputs but also on the past behavior of the circuit. Such circuits include storage elements that store the values of l

9、ogic signals.5.3.1 Clock Signals and Clear Signals1、Clock Signals 任何时序电路都以时钟信号为驱动信任何时序电路都以时钟信号为驱动信号,时序电路只是在时钟信号的边沿到来时,号,时序电路只是在时钟信号的边沿到来时,其状态才发生改变。因此,时钟信号通常是其状态才发生改变。因此,时钟信号通常是描述时序电路的程序执行的条件。另外,时描述时序电路的程序执行的条件。另外,时序电路也总是以时钟进程形式来进行描述的,序电路也总是以时钟进程形式来进行描述的,其描述方式一般有两种:其描述方式一般有两种:1)进程的敏感信号是时钟信号)进程的敏感信号是时

10、钟信号 在这种情况下,时钟信号应作为敏感信在这种情况下,时钟信号应作为敏感信号,显式的出现在号,显式的出现在PROCESS语句后跟的括语句后跟的括号中,如号中,如PROCESS(clock_signal)。时钟信号时钟信号边沿的到来,将作为时序电路语句执行的条边沿的到来,将作为时序电路语句执行的条件,如下例所示:件,如下例所示: 该进程在时钟信号发生变化时被启动,该进程在时钟信号发生变化时被启动,而在时钟边沿的条件得到满足后才真正执行而在时钟边沿的条件得到满足后才真正执行时序电路所对应的语句。时序电路所对应的语句。f.e. 5.242)用进程中的)用进程中的WAIT ON语句等待时钟语句等待时

11、钟 在这种情况下,描述时序电路的进程将没有敏感信号,而是用WAIT ON语句来控制进程的执行。也就是说,进程通常停留在WAIT ON语句上,只有在时钟信号到来,且满足边沿条件时,其余的语句才能执行。 如下例所示:f.e. 5.25在编写上述两个程序时应注意:在编写上述两个程序时应注意: 无论是无论是IF语句还是语句还是WAIT ON语句,在对时钟语句,在对时钟边沿说明时,一定要注明是上升沿还是下降沿,边沿说明时,一定要注明是上升沿还是下降沿,光说明边沿是不行的。光说明边沿是不行的。 当时钟信号作为进程的敏感信号时,在敏感信当时钟信号作为进程的敏感信号时,在敏感信号的表中不能出现一个以上的时钟信

12、号,除时号的表中不能出现一个以上的时钟信号,除时钟信号以外,像复位信号等是可以和时钟信号钟信号以外,像复位信号等是可以和时钟信号一起出现在敏感表中的。一起出现在敏感表中的。 WAIT ON语句只能放在进程的最前面或者最语句只能放在进程的最前面或者最后面。后面。3)时钟边沿的描述)时钟边沿的描述 为了描述时钟边沿,一定要指定是上升沿还是下降沿,这一点可以使用时钟信号的属性描述来达到。也就是说,时钟信号的值是从“0”到“1”变化;还是从“1”到“0”变化。由此可以得知是时钟脉冲信号的上升沿还是下降沿。(a)时钟脉冲上升沿描述时钟脉冲上升沿描述(b)时钟脉冲下降沿描述时钟脉冲下降沿描述 根据上面的描

13、述,时钟信号边沿检出条根据上面的描述,时钟信号边沿检出条件可以统一描述如下:件可以统一描述如下:2、触发器的同步和非同步复位、触发器的同步和非同步复位 触发器的初始状态应由复位信号来设置,触发器的初始状态应由复位信号来设置,复位信号对触发器复位的操作不同,使其可复位信号对触发器复位的操作不同,使其可以分为同步复位和非同步复位两种。以分为同步复位和非同步复位两种。 所谓同步复位,就是当复位信号有效所谓同步复位,就是当复位信号有效且在给定的时钟边沿到来时,触发器才被复且在给定的时钟边沿到来时,触发器才被复位;而非同步复位则是,一旦复位信号有效,位;而非同步复位则是,一旦复位信号有效,触发器就被复位

14、。触发器就被复位。1)Synchronous Clear 在用在用VHDL语言描述时,同步复位一定语言描述时,同步复位一定在以时钟为敏感信号的进程中定义,且用在以时钟为敏感信号的进程中定义,且用IF语句来描述必要的复位条件。语句来描述必要的复位条件。 下面两个例子就是同步复位方式的描述下面两个例子就是同步复位方式的描述实例:实例:f.e. 5.26f.e. 5.272)Asynchronous Clear 非同步复位即异步复位,在描述时与同步方式不同:首先在进程的敏感信号中,除了时钟信号以外,还应加入复位信号;其次是用IF语句描述复位条件;最后在ELSIF段描述时钟边沿的条件,并加上EVENT

15、属性。f.e. 5.28 添加添加clock_event是为了防止没有时钟事是为了防止没有时钟事件发生时的误操作。譬如,现在时钟事件发生时的误操作。譬如,现在时钟事件没有发生而是发生了复位事件,这样件没有发生而是发生了复位事件,这样该进程就得到了启动。在此情况下,若该进程就得到了启动。在此情况下,若复位条件没有满足,而时钟边沿条件却复位条件没有满足,而时钟边沿条件却是满足的,那么与时钟信号有关的那一是满足的,那么与时钟信号有关的那一段程序(段程序(ELSIF段)就会得到执行,从段)就会得到执行,从而造成错误操作。而造成错误操作。5.3.2 Flip-Flops1、Latch1).Gated D

16、 Latchf.e. 529library ieee;use ieee.std_logic_1164.all;entity dff1 isport(d,clk:in std_logic; q:out std_logic);end dff1;architecture rtl of dff1 isbegin process(clk) begin if clk=1 then q=d; end if; end process;end rtl;电平触发还是边沿电平触发还是边沿触发?触发?若改为若改为 process(clk, d),电平触发还是边沿触发?电平触发还是边沿触发?f.e. 530librar

17、y ieee;use ieee.std_logic_1164.all;entity dff2 isport(d,clk:in std_logic; q:out std_logic);end dff2;architecture rtl of dff2 isbegin process begin wait until clkevent and clk=1; q=d; end process;end rtl;2)Gated D Latch with Asynchronous Clear 非同步复位的非同步复位的D锁存器与一般的锁存器与一般的D锁存器锁存器相比多了一个复位输入端相比多了一个复位输入端c

18、lr。当当clr=0时,输出被强制复位。时,输出被强制复位。f.e.531LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dffr ISPORT(d,clk,clr: IN STD_LOGIC; q: OUT STD_LOGIC);END dffr;ARCHITECTURE rtl OF dffr ISBEGIN PROCESS(clk,clr) BEGIN IF clr=0 THEN q=0; ELSIF clkEVENT and clk=1THEN q=d; END IF; END PROCESS;END rtl;Question:if th

19、is is a D flip-flop with a synchronous clear, how to modify the program?DFF with a synchronous clear:PROCESS(clk) BEGIN IF clkEVENT and clk=1 THEN IF clr=0 THEN q=0; ELSE q=d; END IF; END IF; END PROCESS;Ex: Write the VHDL codes for a DFF with asynchronous clear and preset.Note: preset is priority of clear.2、JK Flip-Flopf.e. 534LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY jkff1 ISPORT(clk,clr,pset,j,k: IN STD_LOGIC; qb,q: OUT STD_LOGIC);END jkff1;ARCHITECTURE rtl OF jkff1 ISSIGNAL qs,qbs:STD_LOGIC;BEGIN PROCESS(j,k,clk,clr,pset)BEGINIF pset=0THEN qs=1; qbs=0; ELSIF clr=0 THEN qs=0; qbs=1;

温馨提示

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

评论

0/150

提交评论