您好,欢迎访问三七文档
时序逻辑电路的设计基本时序电路的设计包括:触发器、寄存器、计数器、分频器、信号发生器等。1.时钟信号常用的描述方式:(1)进程的敏感信号有时钟信号,在进程内部用IF语句描述时钟的边沿条件。(2)在进程中用WAITUNTIL语句描述时钟信号,此时进程没有相应的敏感信号。注意:(1)在对时钟边沿说明时,要注明是上升沿还是下降沿。(1)进程中只能描述一个时钟信号(可综合)。一.时序电路特殊信号的描述最常用的时钟沿表述:上升沿:clock’EVENTANDclock=’1’下降沿:clock’EVENTANDclock=’0’2.触发器的复位信号描述(1)同步复位(2)异步复位二.常用时序电路设计1.触发器(Flip_Flop)(1)D触发器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYdff1ISPORT(clk,d:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDdff1;PROCESS(clk)BEGINIF(clk'eventANDclk='1')THENq=d;ENDIF;ENDPROCESS;ENDhav;(2)异步置位/复位D触发器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYdff2ISPORT(clk,d,clr,pset:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDdff2;ARCHITECTUREhavOFdff2ISBEGINPROCESS(clk,pset,clr)BEGINIF(pset='1')THENq='1';ELSIF(clr='1')THENq='0';ELSIF(clk'eventANDclk='1')THENq=d;ENDIF;ENDPROCESS;ENDhav;(3)同步置位/复位D触发器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYdff3ISPORT(clk,d,clr,pset:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDdff3;ARCHITECTUREhavOFdff3ISBEGINPROCESS(clk,pset,clr)BEGINIF(clk'eventANDclk='1')THENIF(pset='1')THENq='1';ELSIF(clr='1')THENq='0';ELSEq=d;ENDIF;ENDIF;ENDPROCESS;ENDhav;(4)带有置位复位的锁存器(Latch)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYlatch1ISPORT(gate,d,clr,pset:INSTD_LOGIC;--gate为电平信号q:OUTSTD_LOGIC);ENDlatch1;ARCHITECTUREhavOFlatch1ISBEGINPROCESS(gate,d,clr,pset)BEGINIF(pset='1')THENq='1';ELSIF(clr='1')THENq='0';ELSIF(gate='1')THENq=d;ENDIF;ENDPROCESS;ENDhav;(5)T触发器当控制信号T=1时,每来一个时钟信号它的状态就翻转一次;当T=0时,时钟信号到达后它的状态保持不变。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYtff1ISPORT(clk,t:INSTD_LOGIC;q:BUFFERSTD_LOGIC);ENDtff1;ARCHITECTUREhavOFtff1ISBEGINPROCESS(clk,t)BEGINIF(clk'eventANDclk='1')THENIF(t='1')THENq=notq;ENDIF;ENDIF;ENDPROCESS;ENDhav;LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYRSFF2ISPORT(clk,S,R:INstd_logic;Q,QF:OUTstd_logic);ENDRSFF2;ARCHITECTUREBHVOFRSFF2ISBEGINP1:PROCESS(clk,S,R)VARIABLED:STD_LOGIC;BEGINIF(clk'eventANDclk='1')THENIFR='1'andS='1'THENREPORTBOTHRANDSIS'1';--报告出错信息ELSIFR='1'andS='0'THEND:='0';ELSIFR='0'andS='1'THEND:='1';ENDIF;ENDIF;Q=D;QF=NOTD;ENDPROCESS;ENDBHV;(6)RS触发器(7)JK触发器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYjkff1ISPORT(clk,j,k:INSTD_LOGIC;q,qn:BUFFERSTD_LOGIC);ENDjkff1;ARCHITECTUREhavOFjkff1ISBEGINPROCESS(clk,j,k)VARIABLED:std_logic;BEGINIF(clk'eventANDclk='1')THENIF(j='1'ANDk='0')THEND:='1';ELSIF(j='0'ANDk='1')THEND:='0';ELSIF(j='0'ANDk='0')THEND:=D;ELSED:=NOTD;ENDIF;ENDIF;q=D;qn=NOTD;ENDPROCESS;ENDhav;2.寄存器8位串行输入,串行输出移位寄存器(多个触发器连接起来)。DENAQPRECLRDENAQPRECLRDENAQPRECLRDENAQPRECLRDENAQPRECLRDENAQPRECLRDENAQPRECLRDENAQPRECLR\g1:7:dffx\g1:6:dffx\g1:5:dffx\g1:4:dffx\g1:1:dffx\g1:0:dffxbclka\g1:3:dffx\g1:2:dffxz(0)z(1)z(2)z(3)z(4)z(5)z(6)z(7)z(8)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYshift8_1ISPORT(a,clk:INSTD_LOGIC;b:OUTSTD_LOGIC);ENDshift8_1;ARCHITECTUREsampleOFshift8_1ISCOMPONENTdffPORT(d,clk:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALz:STD_LOGIC_VECTOR(0TO8);BEGINz(0)=a;g1:FORiIN0TO7GENERATEdffx:dffPORTMAP(z(i),clk,z(i+1));ENDGENERATE;b=z(8);ENDsample;方法(1)结构描述方法(2)描述信号的传递过程,信号流的方式LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYshift8_2ISPORT(a,clk:INSTD_LOGIC;b:OUTSTD_LOGIC);ENDshift8_2;ARCHITECTURErt1OFshift8_2ISSIGNALs1,s2,s3,s4,s5,s6,s7:STD_LOGIC;BEGINPROCESS(clk)BEGINIF(clk'EVENTANDclk='1')THENs1=a;s2=s1;s3=s2;s4=s3;s5=s4;s6=s5;s7=s6;b=s7;ENDIF;ENDPROCESS;ENDrt1;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYshift8_2ISPORT(a,clk:INSTD_LOGIC;b:OUTSTD_LOGIC);ENDshift8_2;ARCHITECTURErt1OFshift8_2ISSIGNALs:STD_LOGIC_VECTOR(0TO8);BEGINPROCESS(clk)BEGINIF(clk'EVENTANDclk='1')THENFORiIN0TO7LOOPs(i+1)=s(i);ENDLOOP;ENDIF;ENDPROCESS;s(0)=a;b=s(8);ENDrt1;采用循环语句:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYshiftISPORT(clk,load:INSTD_LOGIC;din:INSTD_LOGIC_VECTOR(7DOWNTO0);dout:OUTSTD_LOGIC_VECTOR(7DOWNTO0);qb:OUTSTD_LOGIC);ENDshift;ARCHITECTUREbehavOFshiftISSIGNALreg8:STD_LOGIC_VECTOR(7DOWNTO0);BEGINPROCESS(clk,load)BEGINIFclk'EVENTANDclk='1'THENIFload='1'THENreg8=din;ELSEreg8(6DOWNTO0)=reg8(7DOWNTO1);ENDIF;ENDIF;ENDPROCESS;qb=reg8(0);dout=reg8;ENDbehav;例5-8含预置、并行输出的8位移位寄存器P151DQPREENACLRDENAQPRECLRSELDATAADATABOUT0MUX21clkloadqbdin[7..0]dout[7..0]reg8[7]reg8~[6..0]reg8[6..0]例5-9移位模式可控的8位移位寄存器P152LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYSHIFTISPORT(CLK,C0:INSTD_LOGIC;--时钟和进位输入MD:INSTD_LOGIC_VECTOR(2DOWNTO0);--移位模式控制字D:INSTD_LOGIC_VECTOR(7DOWNTO0);--待加载移位的数据QB:OUTSTD_LOGIC_VECTOR(7DOWNTO0);--移位数据输出CN:OUTSTD_LOGIC);--进位输出ENDENTITY;ARCHITECTUREBEHAVOFSHIFTISSIGNALREG:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALCY:STD_LOGIC;BEGINPROCESS(CLK,MD,C0)BEGINIFCLK'EVENTANDCLK='1'THENCASEMDISWHEN001=REG(0)=C0;REG(7DOWNTO1)=REG(6DOWNTO0);CY=REG(7);--带进位循环左移WHEN“010”=REG(0)=REG(7);REG(7DOWNTO1)=REG(6DOWNTO0);--自循环左移WHEN011=REG(7)=REG(0);REG(6DOWNTO0)=REG(7DOWNTO1);--自循环右移WHEN100=REG(7)=C0;REG(6DOWNTO0)=REG(7DOWNTO1);CY=REG(0);--带进位循环右移WHEN101=REG(7DOWNTO0)=D(7DOWNTO0);--加载待移数WHENOTHERS=REG=REG;CY=CY;--保持ENDCASE;ENDIF;ENDPROCESS;QB(7DOWNTO0)=REG(7DOWNTO0);CN=CY--移位后输出ENDBEHAV;3.计数器(1)同步计数器在时钟脉冲(计数脉冲)的控制下,构成计数器的各触发器状态同时发生变化的计数器。分为:同步计数器和异步计数器。LIBRARYIEEE;USEIEEE.STD_LOGIC_116
本文标题:时序逻辑电路的设计
链接地址:https://www.777doc.com/doc-2412455 .html