当前位置:   article > 正文

verilog语言售货机设计#FPGA实验板_基于verilog的自动售货机电路设计分析

基于verilog的自动售货机电路设计分析
  1. 实验原理

有限状态机(Finite state machine:FSM)也就是由有限个存储单元构成的状态有限的时 序逻辑电路。一般时序逻辑电路的模型如图 3-83(a)所示,它由状态寄存电路、激励译码、 输出译码三部分电路组成,状态寄存由各类触发器组成,其输出 S 为现态,输入为触发器的激励信号E,激励译码和输出译码为组合逻辑电路,其功能时根据当前的输入 I 与当前的状态 S 确定激励信号 E 和输出信号 O。在FPGA 的设计中,由于状态寄存一般采用 D 触发器实现,因此激励信号也就演变为次态信号,激励译码演变为次态译码。

有限状态机可分为 Mealy 型和 Moore 型。Mealy 状态机的输出与当前状态和当前的输 入有关,其输出为当前状态与当前输入的函数。Moore 状态机是 Mealy 状态机的一个特例, 其输出仅与当前的状态有关,即输出仅为状态的函数。因 Moore 状态机的输出仅与状态有关,而状态的变化仅发生在时钟有效沿到达时,因此Moore 状态机的输出是与时钟同步的,其输出信号至少持续 1 个时钟周期, Moore 状态机具有非常好的时序性。Mealy 状态机的输出与状态和当前输入有关,当输入发生变化时,即使当前状态没有变化,输出也会立刻发生变化,因此 Mealy状态机的输出与时钟是不同步的。

2、实验步骤:

任务一:采用状态机的方法,设计一自动饮料售货机控制器电路,饮料 1.5 元/瓶,只接收5角和1元硬币。

1.设计分析。由于只接收 5 角和 1 元硬币,因此可设置一个 2 位输入信号 A,A=01 表示收到 5 角,A=10 表示收到 1 元,其余输入表示为未投币。可以设置 S0——S4 的 5 个状 态,分别表示初始化状态(收到 0 元)、收到 5 角、收到 1 元、收到 1.5 元和收到 2 元。考虑到友好的人机交互,可设置如图 3-92 所示的 5 个输出指示灯,假设输出高电平灯亮。根 据逻辑关系,可画出如图 3-93 所示的状态图

 

自动售货机代码:

module SHJ(

    input clk, rst,

   input[1:0]a,

  output wire[4:0]z) ;

 

   reg[4:0]current_state,next_state;

    parameter s0=5'b10000,

             s1=5'b00100,

             s2=5'b01000,

             s3=5'b00001,

             s4=5'b00011;

                             

always @ (posedge clk , negedge rst)

begin

    if(rst==0) current_state<=s0;

    else current_state<=next_state ;

end

always @(current_state,a)

begin

    case (current_state)

        s0:begin

                     if(a==2'b01) next_state<=s1;

                     else if(a==2'b10) next_state<=s2;

                     else next_state<=s0;end

        s1:begin

                     if(a==2'b01) next_state<=s2 ;

                     else if(a==2'b10)  next_state<=s3;

                     else next_state<=s1; end

         s2:begin

                     if(a==2'b01) next_state<=s3;

                     else if(a==2'b10) next_state<=s4;

                     else next_state<=s2;end

        s3:begin next_state<=s0;end

             s4:begin next_state<=s0;end

    endcase

end

assign z=current_state;

endmodule

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/641318
推荐阅读
相关标签
  

闽ICP备14008679号