HDLBits_Exams/2014 q3fsm

本文描述了一个使用同步时钟的模块,通过Mux状态机实现简化状态,包含IDLE和DATA两种数据收发状态。设计中利用计数器和串行操作,以及移位寄存器来控制输出信号z_reg。
摘要由CSDN通过智能技术生成
module top_module (
    input clk,
    input reset,   // Synchronous reset
    input s,
    input w,
    output z
);
    reg  state,next_state;
    parameter 	IDLE = 1'b0,
    			DATA = 1'b1;
    reg [1:0] count;
    reg [1:0] serial;
    reg z_reg;
    
    always @(*) begin
       
        next_state = (state==IDLE) ? (s ? DATA : IDLE) : DATA;
    end
    
    always @(posedge clk) begin
        if(reset) begin
            count<=2'b0;
            state<=IDLE;
            z_reg<=1'b0;
            serial<=2'b00;
        end
        else begin
            state<=next_state;
            case(state) 
                IDLE:begin 
                    z_reg<=1'b0;
                    count<=2'b00;
                    serial<=0;
                end
                
                DATA:begin
                    if(count==2'b10) begin
                    	count <= 2'b00;
                        serial <= 2'b00;
                        if((serial==2'b01) & w)
                            z_reg<=1;
                        else if((serial==2'b10) & !w )
                            z_reg<=1;
                        else 
                            z_reg <=0;
                    end
                    
                    
                    else begin
                        count<=count+1'b1;
                        z_reg <= 0 ;
                        if(w) 
                            serial <= serial+1'b1;
                        else
                            serial <= serial;
                    end
                end
            endcase
        end
    end
    
    assign z = z_reg;
    
endmodule

题目要求尽可能减少状态,故用Melay状态机,两个状态。

IDLE和DATA收发数据状态。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值