DDR3用户接口仿真问题

2020-02-02 10:36发布

在对DDR3控制器的用户接口仿真时,通过给的例子可以看出在init_calib_complete被拉高之前,app_en、app_wdf_end、app_addr等用户接口输入信号均是保持在高电平或者低电平,而输出端ddr3_cs_n,ddr3_ras_n等输出信号却能够发送刷新,激活等命令。
然后我又自己写了一个测试激励,把用户接口的输入信号设置为与例子同样的逻辑电平,为什么总是在仿真到1000ns的时候就断了,不往下仿真了?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
dingning123
1楼-- · 2020-02-02 16:24
这是我自己写的testbench进行仿真的结果,到1000ns就断了
haitaox
2楼-- · 2020-02-02 17:29
mcb控制器在复位之后,会对ddr3进行初始化操作,具体包括
1.reset# 保持最少200us
2.cke保持最少500us
以上两项在仿真中不是必要的
3.load MR寄存器(写入DDR3的关键参数,比如burst length等)
4.校准(calibration)

在校准完成之前,不要对mcb有任何操作

你说的1000ns之后就停了是什么意思
dingning123
3楼-- · 2020-02-02 18:48
haitaox 发表于 2013-11-20 12:55
mcb控制器在复位之后,会对ddr3进行初始化操作,具体包括
1.reset# 保持最少200us
2.cke保持最少500us

我不知道您所说的MCB控制器是什么,我这个iP核里面有两大部分,mig_7series_v1_7_traffic_gen和mig_7series_v1_7两部分,其中mig_7series_v1_7是控制器部分,mig_7series_v1_7_traffic_gen是生成IP核时候自带的仿真mig_7series_v1_7用户接口的例子部分,现在是不是把mig_7series_v1_7用户接口仿真起来,就可以应用的工程里面?
我对mig_7series_v1_7写了一段测试激励文件(模仿IP核自带的例子):
always #2.5  sys_clk_p=~sys_clk_p;
always #2.5   sys_clk_n=~sys_clk_n;
        initial begin
                // Initialize Inputs
                sys_clk_p = 0;
                sys_clk_n = 1;
                sys_rst=0;
                app_wdf_mask = 0;
                app_sr_req = 0;
                app_ref_req = 0;
                app_zq_req = 0;
                ddr3_vio_sync_out = 0;
                dbg_byte_sel = 0;
                dbg_sel_pi_incdec = 0;
                dbg_pi_f_inc = 0;
                dbg_pi_f_dec = 0;
                dbg_sel_po_incdec = 0;
                dbg_po_f_inc = 0;
                dbg_po_f_stg23_sel = 0;
                dbg_po_f_dec = 0;
                #200  sys_rst=1;
                #300  app_en = 0;
                      app_wdf_wren = 0;
                      app_addr = 0;
                      app_cmd = 0;
               
                //app_wdf_data = 0;
                      app_wdf_end = 0;
在仿真时并没有看到输出端对DDR3进行初始化,并且到1000ns仿真就不往下进行了

zhuyi1234567899
4楼-- · 2020-02-02 19:28
用的是哪个类型的fpga?  MCB是spartan 6 里的memory controller base,也就是mig的原形
dingning123
5楼-- · 2020-02-03 01:24
 精彩回答 2  元偷偷看……
haitaox
6楼-- · 2020-02-03 02:12
你好,d
我用的是spartan6的mig,没有使用过7系列的mig,不过我感觉应该是类似的
首先,复位之后,mig对ddr3的一串操作是ip核自己发出的,这个不需要用户接口配置。所以,你开始的时候,使能信号都是0,mig还是会有波形
然后,要等到mig初始化完成之后才能对mig操作,mig有一个calibration_done信号,等这个信号拉高之后,才能读写mig
最后,你说1000ns之后仿真就不进行了,请把仿真输出的log信号打印出来,看看是怎么回事
ps,mig的user guide好好看看,只有看懂了ug,才能用好mig

一周热门 更多>