博客首页 | 排行榜 |

zhangshuangqing的博客

个人档案
博文分类
[FPGA博客大赛]Xilinx Sdram controller核自动刷新改进   2010-03-13 17:08

原核经过修改控制SDRAM大小后,存在以下问题:
    如在将写入SDRAM的时候,中间产生自动刷新操作,刷新操作正确执行,同时数据写入操作并未停止而继续进行,但由于控制核在进行刷新操作,数据未能经过 控制核正确输出并写入SDRAM中。
    在原Xilinx SDRAM控制器中ref_cntr.v文件中,对变量“rcount”进行监控,当“rcount”小于10时,通过控制核输出DO_REF信号为 ‘1’。
    SDRAM控制器输入接口(负责初始化控制器、将读写命令发送给控制核并控制进行读写工作,sdrm_c_interface.v文件)接收该 DO_REF信号并触发“do_cmd”变量为‘0’(do_cmd == 0时不得进行读写操作),当DO_REF信号为‘1’时,始终不进行读写工作(do_cmd <= 0)。当控制核刷新命令已经经过处理,控制核将在7个时钟周期内进行刷新,此时DO_REF信号变为‘0’,注意,由于进入刷新过程而命令并未执行,此时 仍不可进行读写操作,在DO_REF信号变为‘0’后延迟25个时钟周期后,将“do_cmd”变量设置为‘1’(可以进行读写操作),则继续进行读写操 作。
========================================
sdrm_c_interface.v内修改代 码如下:
写数据开始判断条件内加入条件:do_cmd == 1,关系为&&(并且)
读数据开始判断条件内加入条 件:do_cmd == 1,关系为&&(并且)
添加部分控制代码于初始化、读、写操作的always前:
reg    do_cmd;
reg [5:0]    do_cmd_delay;
always @(posedge clk)        //zts
    begin
        if(DO_REF == 1)
            begin
                do_cmd <= 0;
                do_cmd_delay <= 1;
            end
        else if(do_cmd_delay != 0)
            begin
                if(do_cmd_delay == 25)    //保证refresh能成功完成
                    begin
                        do_cmd <= 1;
                        do_cmd_delay <= 0;
                    end
                else
                    begin
                        do_cmd_delay <= do_cmd_delay + 1;
                        do_cmd <= 0;
                    end
            end
        else
            begin
                do_cmd <= 1;
                do_cmd_delay <= 0;
            end
    end
---------------------------------------
ref_cntr.v 内修改代码如下:
添加于module末尾:
reg do_ref;
assign    DO_REF = do_ref;
always @(rcount)    //监控rcount变量
    begin
        if(rcount <= 10)    //提前在刷新操作开始前多少时钟停止读写功能
                    //保证burst读写能将剩余数据读写完毕
            do_ref <= 1;
        else
            do_ref <= 0;
    end
========================================
以 上数据变量中(do_cmd_delay == 25、rcount <= 10)以仿真波形调整,其值与Load value for Controller MR值相关,即与burst_max、ref_max、ki_max、cas_lat_max、rcd_c_max均有关。

类别:默认 |
上一篇:[FPGA博客大赛]关于DCM在SPARTAN3E_100E上的使用
以下网友评论只代表其个人观点,不代表本网站的观点或立场