夏宇闻复习笔记第12章:同步状态机设计

12.1 moore机&mealy机

mealy机
输出信号=G(当前状态,输入信号)
在这里插入图片描述
moore机
输出信号=G(当前状态)
在这里插入图片描述

p168 12.1 三段式状态机实例

在这里插入图片描述

/******************************p168 12.1 三段式状态机实例********************************/
module  StateMachine0(rst_n,clk,A,k);
input               rst_n,clk;
input               A;
reg         [3:0]   Now_State;
output  reg [3:0]   Next_State;
output      [1:0]   k;

//独热码
parameter   IDLE    =   4'b0001;
            START   =   4'b0010;
            STOP    =   4'b0100;
            CLEAR   =   4'b1000;

//状态转换为时序逻辑       
always@(posedge clk or negedge rst_n)   begin
    if(!rst_n)  State   <=  IDLE;
    else        State   <=  Next_State;
end

//next状态的case设置为组合逻辑
always@(state or A)   begin
    case(state) 
        IDLE:       if(A)   Next_state  =   START;
                    else    Next_State  =   IDLE;
        START:      if(!A)  Next_State  =   STOP;
                    else    Next_State  =   START;
        STOP:       if(A)   Next_State  =   CLEAR;
                    else    Next_State  =   STOP;
        CLEAR:      if(!A)  Next_State  =   IDLE;
                    else    Next_State  =   CLEAR;
        default:            Next_State  =   IDLE;
end

//输出为组合逻辑
always@(state or rst_n or A)   begin
    if(!rst_n)                  k   =   2'b00;
    else if(state==STOP && A)   k   =   2'b10;
    else if(state==CLEAR && !A) k   =   2'b01;
    else                        k   =   2'b00;
end

endmodule
测试模块
/******************************p174 12.2 状态机测试模块********************************/
`timescale  1ns/1ns
module  test;
reg             A,clk,rst_n;
wire    [1:0]   k;

initial begin
    A=0;
    rst_n=1;
    #10;
    rst_n=0;
    #10;
    repeat(10)  begin
        #50 A={$random} %2;
    end
    rst_n=1;
    #10;
    $finish;
end

always  #10 clk=~clk;

StateMachine0   fsm0(.clk(clk),.rst_n(rst_n),.A(A),.k(k));

endmodule
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值