赞
踩
有限状态机(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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。