HDLBits Fsm serial receiver

module top_module(
    input clk,
    input in,
    input reset,    // Synchronous reset
    output done
); 
    
    parameter start=3'b000, receive=3'b001, stop_r=3'b010, wat=3'b011, receive_f=3'b100, stop_w=3'b101;
    reg [2:0] state,next;
    reg [3:0] cnt;
    
    always @(*) begin
        case(state)
            start: 		next<=receive;
            receive:	next<=( cnt==4'd7 && in == 1) ? stop_r: ((cnt<4'd7) ? receive: receive_f);
            receive_f:  next<=(in) ? stop_w:receive_f;
            stop_r:		next<=(in) ? wat:start;
            stop_w:		next<=(in) ? wat:start;
            wat :		next<=(in) ? wat:start;
        endcase
    end
    
    always @(posedge clk) begin
        if(reset)
            state<=wat;
        else
            state<=next;
    end
    
    always @(posedge clk) begin
       	
        case(state)
            start:		cnt<=0;
            receive:	cnt<=cnt+1'b1;
            receive_f:	cnt<=cnt+1'b1;
            stop_r:		cnt<=0;
            stop_w:		cnt<=0;
            wat :		cnt<=0;
        endcase
    end
    
    assign done = ( state== stop_r);

endmodule

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值