《电子设计自动化eda》第八章状态机在vhdl中的实现

《电子设计自动化eda》第八章状态机在vhdl中的实现

ID:43319083

大小:324.46 KB

页数:12页

时间:2019-09-29

《电子设计自动化eda》第八章状态机在vhdl中的实现_第1页
《电子设计自动化eda》第八章状态机在vhdl中的实现_第2页
《电子设计自动化eda》第八章状态机在vhdl中的实现_第3页
《电子设计自动化eda》第八章状态机在vhdl中的实现_第4页
《电子设计自动化eda》第八章状态机在vhdl中的实现_第5页
资源描述:

《《电子设计自动化eda》第八章状态机在vhdl中的实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第八章状态机在vhdl中的实现数字电路分为组合逻辑和时序逻辑两大类。组合逻辑电路的输出只与当前的输入有关;而时序逻辑电路的输出则不仅与当前的输入有关,而且还与过去的一系列输入有关。状态机(StateMachine)可以说是一个广义的时序电路,触发器、计数器、移位寄存器等都算是他的特殊功能类型的一种。实际时序电路的状态数是有限的,因此又叫做有限状态机(FSM,FiniteStateMachine用VHDL设计状态机不必知道其电路具体实现的细节,而只需要描述在逻辑上加以描述。因此本书在提到状态机一词时,更多地是指对

2、状态及状态转移的总体描述,而不是一个具体的时序电路。状态机又分为Moore型与Mealy型,前者的输岀仅取决于其所处状态;而后者的输出则不仅与当前所处的状态有关,同时也与当前的输入有关。(区别这两种状态机的简单方法就是看状态图中,输出信号是在状态图的圈内还是圈外)下面分别介绍这两种状态机在VHDL中的实现。8.1Moore状态机的VHDL描述Moore状态机的输出仅由状态决定,一个典型的Moore状态机的状态转移图如图8—1所示,其对应的VHDL程序(带异步复位信号)见例程8—1o例程8—1的仿真波形如图8—2所

3、示。图8—1Moore状态机的状态转移图DIN=O例程8—1实现Moore状态机的状态转移libraryieee;useieee.stdJogic_1164.all;useieee.std」ogic_arith.all;useieee.std_logic_unsigned.all;entityMooreisport(Reset:INStdjogic;Clock:INStdjogic;DIN:INStdjogic;DOUT:OUTStd_Logic_vector(2downto0));end;architectur

4、eMooremachineofMooreISTYPEState.typeIS(S0,S1,S2,S3);••用枚举类型来表示状态,使程序更具可读性SIGNALState:State_type;BEGINChange_State:PROCESS(Reset,Clock)BEGINIFReset二S'THENState<=S0;ELSIFrising_edge(Clock)THENcaseSTATEISWHENS0=>IFDIN才THENState<=S1;ENDIF;WHENS1=>IFDIWTHENState<=

5、S2;ENDIF;WHENS2=>IFDIN二'「THENState<=S3;ENDIF;WHENS3=>IFDIN才THENState<=SO;ELSEState<=S1;ENDIF;ENDCASE;ENDIF;“此进程决定输出值endPROCESS;Output_Process:PROCESS(State)BEGINCASEStateISWHENS0=>DOUT<=n001n;WHENS1=>DOUTv=”Oir;WHENS2=>DOUT<=H101n;WHENS3=>D0UT<=,,111n;ENDCASE

6、;ENDPROCESS;END;图8—2例程8—1仿真波形图例8-1是MAX+plusll默认的状态机描述格式之一,因此其仿真波形图中将State以状态名的形式表示出来,使仿真波形十分直观、易懂。从图8—2中可以看出,状态机上电后默认的初始状态为定义的第1个状态(本例中为SOb决定状态转移的进程Change.State的格式是相对固定的,而决定输岀值的进程Oout_Process则可以用WITH_SELECT语句来代替,或者,如果输出值需要同步,那么也可以在输出进程中引入时钟。需要说明的是,状态机描述的格式并不是

7、只有例程8—1中给出的那种。事实上,更多的综合器建议将状态机写成例程8—2中的格式,该格式是严格按图8—3所的时钟同步状态机构写的。输入图8—3时钟同步Moore状态机结构图例程8—2图8—3对应的Moore状态机程序libraryieee;useieee.std_logic_1164.all;useieee.std」ogic_arith.all;useieee.std」ogic_unsigned.all;entitymoore8_2isport(reset:instd」ogic;clock:instd」ogic

8、;din:instd」ogic;dout:outstd_logic_vector(2downto0));end;architectureMooremachineofmoore8_2ISTYPEState.typeIS(S0,S1,S2,S3);SIGNALNextState:State_type;SIGNALPresentState:State_type;BEGINSta

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。