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

下载本文档

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

文档简介

1、5.1组合逻辑电路设计,组合逻辑电路:任意时刻的输出仅取决于该时刻数据的输入,与电路原来的状态无关。,主要有基本门电路、编码器、译码器、加法器、三态输出电路,【例】基本逻辑门电路的VHDL描述LIBRARYieee;USEieee.STD_LOGIC_1164.ALL;ENTITYgateISPORT(a,b:INSTD_LOGIC;y1,y2,y3,y4,y5,y6:OUTSTD_LOGIC);END;ARCHITECTUREoneOFgateISBEGINy1=aandb;-构成与门y2=aorb;-构成或门y3=nota;-构成非门y4=anandb;-构成与非门y5=anorb;-构成

2、或非门y6=not(axorb);-构成异或非门END;,1.基本逻辑门电路,在数字系统中,常常需要将某信息变换为某一特定的代码。把二进制码按一定的规律进行编排,使每组代码具有特定的含义,称为编码。具有编码功能的逻辑电路称为编码器。编码器是将2N个分立的信息代码以N个二进制码来表示。,2.8-3优先编码器的设计,8线-3线编码真值表,LIBRARYieee;USEieee.STD_LOGIC_1164.ALL;ENTITYencoder8_3ISPORT(i:INSTD_LOGIC_VECTOR(7downto0);y:OUTSTD_LOGIC_VECTOR(2downto0);END;ARC

3、HITECTUREoneOFencoder8_3ISBEGINProcess(i)isbegincaseiis,8线-3线编码器的VHDL描述,when“00000001”=yyyyyyyyy=000;endcase;endprocess;endprocess;end;,8线-3线编码器功能仿真波形图,译码是编码的逆过程,它的功能是将具有特定含义的二进制码进行辨别,并转换成控制信号。具有译码功能的逻辑电路称为译码器。,3.译码器设计,1)3-8译码器,G1G2AG2BA2A1A0Y0Y1Y2Y3Y4Y5Y6Y7111111111111111111011111111100000011111111

4、0000110111111100010110111111000111110111110010011110111100101111110111001101111110110011111111110,输入输出,3线8线译码器74138真值表,按数据流描述方式编写的3线8线译码器74138VHDL源代码,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYdecoder138_v2ISPORT(G1,G2A,G2B:INSTD_LOGIC;A:INSTD_LOGIC_VECTOR(2DOWNTO0);Y:OUTSTD_LOGIC_VECTOR(7DOWNTO0)

5、;ENDdecoder138_v2;ARCHITECTUREdataflowOFdecoder138_v2ISBEGINPROCESS(G1,G2A,G2B,A)BEGINIF(G1=1ANDG2A=0ANDG2B=0)THEN,CASEAISWHEN000=YYYYYYYY=01111111;ENDCASE;ELSEY=11111111;ENDIF;ENDPROCESS;ENDdataflow;,总线显示方式的3线8线译码器74138仿真波形图,7段数码显示译码电路是一个组合逻辑电路,通常的小规模专用集成IC,如74系列或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和

6、运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用译码程序在FPGA/CPLD中来实现。,2)7段数码显示译码器设计,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYLED_SEGISPORT(A:INSTD_LOGIC_VECTOR(3DOWNTO0);LED:OUTSTD_LOGIC_VECTOR(6DOWNTO0);END;ARCHITECTUREoneOFLED_SEGISBEGINPROCESS(A)BEGIN,【例】7段BCD译码显示器的VHDL描述,CASEAISWHEN0000=LEDLED

7、LEDLEDLEDLEDLEDLEDLEDLEDLEDLEDLEDLEDLEDLEDNULL;ENDCASE;ENDPROCESS;END;,例子中输出信号LED的7位分别接数码管的7个段,高位在左,低位在右。例如当LED输出为“1101111”时,数码管的7个段:g、f、e、d、c、b、a分别接1、1、0、1、1、1、1;接有高电平的段点亮,低电平的段不亮,于是数码管显示“9”。,图7段数码显示译码电路功能仿真波形,全加法器电路的外部配置如图所示,其中Cin表示低位的进位,Cout表示向高位的进位。,4.加法器设计,表4-1为全加器的真值表,根据真值表,可推导出布尔方程式:,BCDout=A

8、xorBxorCinCout=(AandB)or(AandCin)or(BandCin),全加器真值表,LIBRARYieee;USEieee.STD_LOGIC_1164.ALL;USEieee.STD_LOGIC_unsigned.ALL;ENTITYadder_4bitISPORT(a,b:INSTD_LOGIC_VECTOR(3DOWNTO0);ci:INSTD_LOGIC;s:OUTSTD_LOGIC_VECTOR(3DOWNTO0);co:OUTSTD_LOGIC);END;ARCHITECTUREoneOFadder_4bitISSIGNALtemp:STD_LOGIC_VECT

9、OR(4DOWNTO0);BEGINtemp=(0,【例】四位二进制全加器的VHDL描述,4位全加器的仿真结果,VHDL语言通过指定大写的Z值表示高阻状态a:std_logic;a_bus:std_logic_vector(7downto0);指定高阻状态如下:a=Z;a_bus=“ZZZZZZZZ”;,5.三态门与双向缓冲电路设计,三态门,是指逻辑门的输出除有高、低电平两种状态外,还有第三种状态高阻状态的门电路,高阻态相当于隔断状态。三态门都有一个EN为控制使能端,来控制门电路的通断。具备这三种状态的器件就叫做三态(门、总线、.)。VHDL设计中,如果用STD_LOGIC数据类型的Z对一个变

10、量赋值,即会引入三态门,并在使能信号的控制下可使其输出呈高阻态,这等效于使三态门禁止输出。,1)三态门设计,LIBRARYieee;USEieee.STD_LOGIC_1164.ALL;USEieee.STD_LOGIC_unsigned.ALL;ENTITYtri_gateISPORT(en:INSTD_LOGIC;din:INSTD_LOGIC_VECTOR(3DOWNTO0);dout:OUTSTD_LOGIC_VECTOR(3DOWNTO0);END;ARCHITECTUREoneOFtri_gateISBEGINPROCESS(en,din)BEGINIF(en=1)thendout

11、=din;elsedout=ZZZZ;endif;endprocess;END;,【例】4位三态控制门电路的VHDL描述,图5.11三态门电路的RTL电路,图5.12三态门电路的功能仿真图,双向总线缓冲器用于对数据总线的驱动和缓冲。一般双向总线缓冲器的模式为:两个数据输入输出端口A、B,一个使能端EN,一个方向控制端DIR。,2)双向总线缓冲器,双向总线驱动电路,双向总线驱动电路真值表,libraryieee;useieee.std_logic_1164.all;ENTITYDUB_GATEISPORT(a,b:INOUTSTD_LOGIC_VECTOR(7DOWNTO0);en:INSTD_

12、LOGIC;dr:INOUTSTD_LOGIC);ENDDUB_GATE;ARCHITECTUREaOFDUB_GATEISSIGNALabuf,bbuf:STD_LOGIC_VECTOR(7DOWNTO0);BEGINP1:PROCESS(a,dr,en)BEGINif(en=0)and(dr=1)thenbbuf=a;,【例】双向总线缓冲器的VHDL描述,elsebbuf=ZZZZZZZZ;endif;b=bbuf;ENDPROCESS;P2:PROCESS(b,dr,en)BEGINif(en=0)and(dr=0)thenabuf=b;elseabuf=ZZZZZZZZ;endif;a

13、=abuf;ENDPROCESS;ENDa;,触发器、寄存器、计数器、分频器、信号发生器等。,5.2时序逻辑电路设计,时序逻辑电路:是指数字电路在任何时刻的输出不仅取决于当时的输入信号,而且还取决于电路原来的状态,或者说和以前的输入有关。,任何时序电路都以时钟信号为驱动信号,时序电路仅在时钟信号的边沿到来时,其状态才发生改变。因此,时钟信号通常是描述时序电路程序的执行条件.另外,时序电路也总是以时钟进程的形式进行描述的。,1、时钟信号描述,(一)时序电路特殊信号描述,时钟脉冲上升沿描述,IF(clkEVENTANDclk=1)THENWAITUNTILclk=1;IF(clklast_valu

14、e=0ANDclkeventANDclk=1)THENIF(rising_edge(clk)THEN,时钟脉冲下降沿描述,IF(clkEVENTANDclk=0)THENWAITUNTILclk=0;IF(clklast_value=1ANDclkeventANDclk=0)THENIF(falling_edge(clk)THEN,注意:a.在对时钟边沿说明时,一定要注明是上升沿还是下降沿。b.一个进程中只能描述一个时钟信号。c.waituntil语句只能放在进程的最前面或最后面。,2、触发器的复位信号描述,按复位信号对触发器复位的操作不同,可以分为同步复位和异步复位两种。,同步复位:当复位信

15、号有效且在给定的时钟边沿到来时,触发器才被复位。异步复位:当复位信号有效时,触发器即被复位,不用等待时钟边沿信号。,同步复位描述在用VHDL语言描述时,同步复位一定在以时钟为敏感信号的进程中定义,且用IF语句来描述必要的复位条件。另外,描述复位条件的IF语句一定要嵌套在描述时钟边沿条件的IF语句的内部。,同步复位描述的VHDL描述,PROCESS(clock_signal)BEGINIF(clock_edge_condition)THENIF(reset_condition)THENSignal_out=reset_value;ELSESignal_out=signal_in;ENDIF;EN

16、DIF;ENDPROCESS;,非同步复位的VHDL语言描述,非同步复位非同步复位又称异步复位,其描述时与同步方式的不同。首先,在进程的敏感信号表中除时钟外,还应添上复位信号;另外,描述复位的IF语句应放在进程的第一条语句位置,PROCESS(clock_signal,reset_signal)BEGINIF(reset_condition)THENSignal_out=reset_value;ELSIF(clock_edge_condition)THENSignal_out=signal_in;ENDIF;ENDPROCESS;,(二)常用时序电路设计包括触发器、寄存器、计数器,1.触发器,

17、触发器的定义在数字电路中,能够存储一位信号的基本单元电路就被称为触发器。触发器的分类(根据电路形式和控制方式):D触发器、JK触发器、T触发器、锁存器和RS触发器等。,1)D触发器,包括基本触发器、同步复位D触发器、异步复位D触发器,基本D触发器,逻辑表达式:Q=D,LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYbasic_dffISPORT(d,clk:INstd_logic;q,qb:OUTstd_logic);ENDbasic_dff;ARCHITECTURErtl_arcOFbasic_dffISBEGINPROCESS(clk)BEGINI

18、F(clkeventANDclk=1)THENq=d;qb=NOTd;ENDIF;ENDPROCESS;ENDrtl_arc;,异步复位的D触发器,电路符号和功能表:,LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYasync_rdffISPORT(d,clk:INstd_logic;reset:INstd_logic;q,qb:OUTstd_logic);ENDasync_rdff;ARCHITECTURErtl_arcOFasync_rdffISBEGINPROCESS(clk,reset)BEGINIF(reset=0)THENq=0;qb=1;

19、ELSIF(clkeventANDclk=1)THENq=d;qb=NOTd;ENDIF;ENDPROCESS;ENDrtl_arc;,异步复位的D触发器,同步置位/复位的D触发器,电路符号和功能表:,LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYsync_rsdffISPORT(d,clk:INstd_logic;set:INstd_logic;reset:INstd_logic;q,qb:OUTstd_logic);ENDsync_rsdff;,ARCHITECTURErtl_arcOFsync_rsdffISBEGINPROCESS(clk)B

20、EGINIF(clkeventANDclk=1)THENIF(set=0ANDreset=1)THENq=1;qb=0;ELSIF(set=1ANDreset=0)THENq=0;qb=1;ELSEq=d;qb=NOTd;ENDIF;ENDIF;ENDPROCESS;ENDrtl_arc;,RS触发器由两个与非门(或者或非门)的输入和输出交叉连接而成。,RS触发器原理图,RS触发器真值表,2)RS触发器设计,【例】RS触发器的VHDL程序代码LIBRARYieee;USEieee.STD_LOGIC_1164.ALL;ENTITYRSFFISPORT(R,S:INSTD_LOGIC;Q,QB:

21、OUTSTD_LOGIC);END;ARCHITECTUREoneOFRSFFISSIGNALQ_TEMP,QB_TEMP:STD_LOGIC;BEGINQ_TEMP=SNANDQB_TEMP;QB_TEMP=RNANDQ_TEMP;Q=Q_TEMP;QB=QB_TEMP;END;,具体实例:带有异步置位/复位的JK触发器。电路符号与功能表:,3)JK触发器设计,LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYasync_rsjkffISPORT(j,k:INstd_logic;clk:INstd_logic;set:INstd_logic;reset

22、:INstd_logic;q,qb:OUTstd_logic);ENDasync_rsjkff;,ARCHITECTURErtl_arcOFasync_rsjkffISSIGNALq_temp,qb_temp:std_logic;BEGINPROCESS(clk,set,reset)BEGINIF(set=0ANDreset=1)THENq_temp=1;qb_temp=0;ELSIF(set=1ANDreset=0)THENq_temp=0;qb_temp=1;ELSIF(clkeventANDclk=1)THENIF(j=0ANDk=1)THENq_temp=0;qb_temp=1;ELS

23、IF(j=1ANDk=0)THENq_temp=1;qb_temp=0;ELSIF(j=1ANDk=1)THENq_temp=NOTq_temp;qb_temp=NOTqb_temp;ENDIF;ENDIF;q=q_temp;qb=qb_temp;ENDPROCESS;ENDrtl_arc;,注意观察其功能的实现。,2.寄存器和移位寄存器,寄存器串入/串出移位寄存器串入/并出移位寄存器循环移位寄存器,定义:通常把能够用来存储一组二进制代码的同步时序逻辑电路称为寄存器。如何存储N位二进制码?只需要把N个触发器的时钟端口连接起来即可构成一个存储N位二进制码的寄存器。具体实例:8位寄存器74LS37

24、4。,74LS374的电路符号和功能表:,LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYreg_74LS374ISPORT(d:INstd_logic_vector(7DOWNTO0);oe:INstd_logic;clk:INstd_logic;q:INOUTstd_logic_vector(7DOWNTO0);ENDreg_74LS374;,实体部分,结构体部分,ARCHITECTURErtl_arcOFreg_74LS374ISBEGINPROCESS(clk,oe)BEGINIF(oe=0)THENIF(clkeventANDclk=1)TH

25、ENq=d;ElSEq=q;ENDIF;ELSEq=ZZZZZZZZ;ENDIF;ENDPROCESS;ENDrtl_arc;,移位功能的定义:指寄存器里面存储的代码能够在时钟的作用下进行依次左移或者是右移。移位寄存器的定义:通常把具有存储和移位功能的寄存器称为移位寄存器。移位寄存器的分类:串入/串出移位寄存器、串入/并出移位寄存器和循环移位寄存器等。,(2)串入/串出移位寄存器,串入/串出移位寄存器的定义:,所谓串入/串出移位寄存器是指它的第一,个触发器的输入端口用来接收外来的输入信号,而其余的每一个触发器的输入端口均与前面一个触发器的Q端相连。这样,移位寄存器输入端口的数据将在时钟边沿的作

26、用下逐级向后移动,然后从输出端口串行输出。,串入/串出移位寄存器,LIBRARYIEEE;-USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSHIFTREGIS-PORT(DATAIN:INSTD_LOGIC;CLK:INSTD_LOGIC;Q:OUTSTD_LOGIC);ENDSHIFTREG;,ARCHITECTUREexampleOFSHIFTREGIS-SIGNALQQ:STD_LOGIC_VECTOR(7DOWNTO0);BEGINPROCESS(C

27、LK)BEGINIFCLKEVENTANDCLK=1THENQQ(7DOWNTO1)=QQ(6DOWNTO0);QQ(0)=DATAIN;ENDIF;ENDPROCESS;Q=QQ(7);ENDexample;,定义:数字电路中用来记忆时钟脉冲个数的逻辑电路。原理:采用几个触发器的状态,按照一定规律随时钟变化来记忆时钟的个数。计数器的模:一个计数器所能记忆时钟脉冲的最大数目。,3.计数器,1)计数器简介,2)计数器的分类,(1)同步计数器、异步计数器。,(2)加法计数器、减法计数器和可逆计数器。(3)二进制计数器、二十进制计数器和循环,计数器等。,(4)十进制计数器、十六进制计数器和六十进,制

28、计数器等。,LIBRARYieee;USEieee.STD_LOGIC_1164.ALL;USEieee.STD_LOGIC_unsigned.ALL;ENTITYCNT16ISPORT(CLK,RST,EN:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUT:OUTSTD_LOGIC);END;ARCHITECTUREoneOFCNT16ISBEGIN,3)十六进制加法计数器设计,带有异步复位和同步时钟使能,PROCESS(CLK,RST,EN)VARIABLECQI:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFRST=

29、1THENCQI:=(OTHERS=0);-计数器高电平复位ELSIFCLKEVENTANDCLK=1THENIFEN=1THEN-计数器控制端高电平有效IFCQI0);ENDIF;ENDIF;ENDIF;IFCQI=15THENCOUT=1;ELSECOUT=0;ENDIF;CQ=CQI;ENDPROCESS;END;,十六进制加法计数器的功能仿真图,LIBRARYieee;USEieee.STD_LOGIC_1164.ALL;USEieee.STD_LOGIC_unsigned.ALL;ENTITYCNT16ISPORT(CLK,RST,EN:INSTD_LOGIC;CQ:OUTSTD_L

30、OGIC_VECTOR(3DOWNTO0);END;ARCHITECTUREoneOFCNT16ISBEGIN,4)十六进制减法计数器设计,PROCESS(CLK,RST,EN)-接上页VARIABLECQI:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFRST=1THENCQI:=1111;ELSIFCLKEVENTANDCLK=1THENIFEN=1THENIFCQI0THENCQI:=CQI-1;ELSECQI:=1111;ENDIF;ENDIF;ENDIF;CQ=CQI;ENDPROCESS;END;,十六进制减法计数器功能仿真波形图,异步计数器,它的下一位计数器

31、的输出作为上一位计数器的时钟信号,这样一级一级串行连接起来就构成了一个异步计数器。用VHDL语言描述异步逻辑电路时,由于一个时钟进程只能构成对应单一时钟信号的时序电路,如果在进程中需要构成多触发器时序电路,也只能产生对应某个单一时钟的同步时序逻辑,异步时序逻辑一般采取多个时钟进程来构成。,3.异步计数器设计,【例】4个触发器构成的异步计数器的VHDL底层模块程序libraryieee;useieee.std_logic_1164.all;entitydffrisport(clk,clr,d:instd_logic;q,qb:outstd_logic);end;architecturestrof

32、dffrissignalq_in:std_logic;Begin,qb=not(q_in);q=q_in;process(clk)beginif(clr=1)thenq_in=0;elsif(clkeventandclk=1)thenq_in=d;endif;endprocess;end;,【例】4个触发器构成的异步计数器的顶层VHDL描述libraryieee;useieee.std_logic_1164.all;entityrplcontisport(clk,clr:instd_logic;count:outstd_logic_vector(3downto0);end;architectu

33、restrofrplcontissignalcount_in_bar:std_logic_vector(4downto0);,componentdffrisport(clk,clr,d:instd_logic;q,qb:outstd_logic);endcomponent;begincount_in_bar(0)count_in_bar(i),clr=clr,d=count_in_bar(i+1),q=count(i),qb=count_in_bar(i+1);endgen1;end;,4个触发器构成的异步计数器的RTL电路图,小结:,掌握组合逻辑电路和时序逻辑电路的设计方法。学会分析每个电路

34、的VHDL程序写法,体会各种语句的用法。由已知电路的功能能够编写出相应的程序。熟悉常用组合时序逻辑电路的功能、特点。,5.3状态机的设计,5.3.1状态机概述,1.什么是状态机通俗地说,状态机就是事物存在状态的一种综合描述。状态机是由状态寄存器和组合逻辑电路构成的,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心。状态机可归纳为4个要素:即现态、条件、动作及次态。这样的归纳,主要是出于对状态机的内在因果关系的考虑。“现态”和“条件”是因,“动作”和“次态”是果。,现态:是指当前所处的状态。条件:又称为“事件”。当一个条件被满足,将会触发一个动作,或者执

35、行一次状态的迁移。动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。,2.为什么要使用状态机,状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点,状态机的结构模式相对简单,设计方案相对固定。,状态机容易构成性能良好的同步时序逻辑模块(消除毛刺),状态机的VHDL表述丰富多样,程序层次分明,结构清晰。,在高速运算和控制方面,状态机更有其巨大的优势。,就可靠性而言,状态机的优势也是十分明

36、显的。,3.状态机的分类,从信号输出方式分:Mealy型状态机和Moore型状态机,从结构上分:单进程状态机和多进程状态机,从状态表达方式上分:符号化状态机、确定状态编码状态机,从编码方式上分:顺序编码状态机、一位热码编码状态机或其他编码方式状态机,所有的状态均可表达为CASEWHEN结构中的一条CASE语句,而状态的转移则通过IF_THEN_ELSE语句实现。应用VHDL设计有限状态机的流程如图所示。,4.有限状态机的设计流程,VHDL设计有限状态机的流程图,(1)选择状态机类型(2)建立状态表或者画出状态图(3)根据状态表或状态图,构建状态机的VHDL模型(4)利用EDA工具进行仿真、验证

37、,5.状态机的设计步骤,6.状态机使用的数据类型,TYPE语句用法如下:TYPE数据类型名IS数据类型定义OF基本数据类型;或TYPE数据类型名IS数据类型定义;,以下列出了两种不同的定义方式:TYPEst1ISARRAY(0TO15)OFSTD_LOGIC;数组数据类型TYPEweekIS(sun,mon,tue,wed,thu,fri,sat);枚举数据类型,数据类型详见p231,TYPEm_stateIS(st0,st1,st2,st3,st4,st5);SIGNALpresent_state,next_state:m_state;,布尔数据类型的定义语句是:TYPEBOOLEANIS(

38、FALSE,TRUE);,TYPEmy_logicIS(1,Z,U,0);SIGNALs1:my_logic;s1=Z;,符号化状态机:用文字符号表示二进制数。,确定化状态机:直接用数值表示。,1.说明部分,2.主控时序进程,一般状态机结构框图工作示意图,ARCHITECTURE.ISTYPEFSM_STIS(s0,s1,s2,s3);SIGNALcurrent_state,next_state:FSM_ST;.,负责状态机运转,在时钟驱动下负责状态转换的进程。,一般状态机包含如下四个部分:,5.3.2一般状态机的VHDL描述,3.主控组合进程,根据外部输入的控制信号(包括来自状态机外部的信号

39、和来自状态机内部其它非主控的组合或时序进程的信号),或(和)当前状态的状态值确定下一状态(next_state)的取向,即next_state的取值内容,以及确定对外输出或对内部其它组合或时序进程输出控制信号的内容。,4.辅助进程,用于配合状态机工作的组合进程或时序进程。,【例】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYs_machineISPORT(clk,reset:INSTD_LOGIC;state_inputs:INSTD_LOGIC_VECTOR(0TO1);comb_outputs:OUTINTEGERRANGE0TO15);ENDs

40、_machine;ARCHITECTUREbehvOFs_machineISTYPEFSM_STIS(s0,s1,s2,s3);SIGNALcurrent_state,next_state:FSM_ST;BEGINREG:PROCESS(reset,clk)-主控时序进程BEGINIFreset=1THENcurrent_state=s0;-异步复位ELSIFclk=1ANDclkEVENTTHENcurrent_state=next_state;ENDIF;ENDPROCESS;-信号current_state将值带出此进程COM:PROCESS(current_state,state_Inputs)-接下页,BEGINCASEcurrent_stateISWHENs0=comb_outputscomb_outputscomb_outputscomb_outputs=14;IFstate_

温馨提示

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

评论

0/150

提交评论