(奇哥状态机)流水线-乒乓操作

项目框图

*

使用奇哥状态机完成最关键
在这里插入图片描述

//状态机跳转
    always@(posedge clk_50m,posedge rst_n)
    begin
        if(~rst_n)
            r_st_current <= IDLE;
        else
            r_st_current <= r_st_next;
    end

//跳转条件
    always@(*)
    begin
        case (r_st_current)
                IDLE          : r_st_next = (data_en == 1'b1) ? WRAM1: IDLE;
                WRAM1         : r_st_next = (ram1_wr_addr == 7'd99) ? WRAM2_RRAM1:WRAM1;
                WRAM2_RRAM1   :r_st_next =(ram2_wr_addr == 7'd99) ? WRAM1_RRAM2 :WRAM2_RRAM1;
                WRAM1_RRAM2   : r_st_next =(ram1_wr_addr == 7'd99) ? WRAM2_RRAM1:WRAM1_RRAM2;
            default : r_st_next=IDLE ;
        endcase

    end

    //状态机计数
 always@(posedge clk_50m,posedge rst_n)
begin
    if(rst_n)
        r_st_cnt <= 'd0;
    else if(r_st_current != r_st_next)
        r_st_cnt <= 'd0;
    else 
        r_st_cnt <= r_st_cnt + 1;
end

//状态机的驱动逻辑
    always@(*)
    case(r_st_current)
        IDLE:
            begin
                ram1_wr_en  =  1'b0;
                ram2_wr_en  =  1'b0;
            end
        WRAM1:
            begin
                ram1_wr_en  =  1'b1;
                ram2_wr_en  =  1'b0;
            end
        WRAM2_RRAM1:
            begin
                ram1_wr_en  =  1'b0;
                ram2_wr_en  =  1'b1;
            end
        WRAM1_RRAM2:
            begin
                ram1_wr_en  =  1'b1;
                ram2_wr_en  =  1'b0;
            end
        default:;
    endcase

其他就是RAM的读写操作。最后实现效果图

写入的数据
在这里插入图片描述
读出的数据
在这里插入图片描述

在这里插入图片描述
状态机跳转正常计数一直为0,输出正常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值