西安电子科大【数字电路与逻辑设计】第7章.ppt

西安电子科大【数字电路与逻辑设计】第7章.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
  一个简单的有限状态机的状态图如图7-7所示,对应的VHDL描述如下:   LIBRARYIEEE;   USE IEEE.std_logic_1164.all;      ENTITY state_machine IS    PORT(reset,clk,x:INSTD_LOGIC;    z:OUTSTD_LOGIC);    END ENTITY state_machine;      ARCHITECTURE behavioral OF state_machine IS    TYPE statetype IS(state0,state1);    SIGNAL state,next_state:statetype:=state0;   BEGIN    Comb_process:PROCESS(state,x)IS     BEGIN      CASE state IS       WHEN state0=        IF x=′0′THENnext_state=state1;z=′1′;        ELSE next_state=state0;z=′0′;        ENDIF       WHEN state1=        IFx=′1′THEN next_state=state0;z=′0′;        ELSE next_state=state1;z=′1′; END IF     END CASE;    END PROCESSComb_process;       Clk_process:PROCESS(reset,clk)IS     BEGIN      IF(reset=′1′)THENstate=state0;     ELSEIF(rising_edge(clk))THENstate=next_state;      END IF     END PROCESSClk_process;   END ARCHITECTURE behavioral; 图7-7 有限状态机的状态图   5.自动售货机的描述   自动售货机作为一个较为复杂的有限状态机设计,它的VHDL描述具有一定的代表性。设计的功能描述是:某自动售货机中仅有一种饮料可以出售,此饮料的售价为2.5元;此自动售货机可以识别1元、2元和5角等三种货币;如果投入金额总值等于或超过2元就可以将饮料放出,并具有相应的找零钱功能。   解决方案是可以使用有限自动机实现自动售货机的控制。该自动机的输入包括y1(表示投入1元),y2(表示投入2元)和j5(表示投入5角)。这三个信号在有相应货币输入时保持一个周期的有效,并且最多只有一个信号为有效。此外,该自动机还必须有时钟clk和复位信号rst输入。该自动机的输出信号有三个:cola_out,有效时表示输出一罐饮料;j5_out,有效时表示找5角的零钱;y1_out,有效时表示找1元的零钱。   该有限自动机的状态转移图如图7-8所示。 图7-8 自动售货机的总体结构和有限状态自动机   上述自动机的状态转移图看似复杂,却非常有规律。其中,每个状态表示了当前已经投入的金额,5表示已经投入5角,10表示已经投入1元,等等;系统复位后的初始状态为0,表示未有钱币投入。   对于从0~20的五个状态,由于已经投入的钱币还没有达到2.5元,因此系统还能接收新的钱币。所以,这些状态的输出均有三条不同的路径。以状态20为例,此时已经接收了2元,如果继续投入5角则进入25状态,表示接收了2.5元;如果继续投入1元则进入35状态,表示已经接收了3.5元;如果继续投入2元,则进入40状态,表示已经接收了4元。   对于25、30、35和40等状态,由于输入的金额已经超过了2.5元,因此不再接收输入,主要进行找零和放出饮料操作。对于25状态,由于输入的金额刚好等于2.5元,因此此时直接放出饮料即可。对于30和35状态,则需要在放出饮料的同时进行找零操作(分别找零5角和1元)。对于40状态,由于需要找零两次,因此先找零1元,并将状态转移到30状态,然后继续后续的找零和放出饮料操作。   该有限自动机的VHDL程序如下所示:   LIBRARYIEEE;   USEIEEE.std_logic_1164.all;   ENTITYvending_machineIS     PORT(clk,rst:INSTD_LOGIC;        j5,y1,y2:INBOOLEAN;        cola_out,j5_out,y1_out:OUTSTD_LOGIC);   ENDENTITYvending_machine;  ARCHI

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档