打印
[FPGA]

DDR3用户接口仿真问题

[复制链接]
5552|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在对DDR3控制器的用户接口仿真时,通过给的例子可以看出在init_calib_complete被拉高之前,app_en、app_wdf_end、app_addr等用户接口输入信号均是保持在高电平或者低电平,而输出端ddr3_cs_n,ddr3_ras_n等输出信号却能够发送刷新,激活等命令。
然后我又自己写了一个测试激励,把用户接口的输入信号设置为与例子同样的逻辑电平,为什么总是在仿真到1000ns的时候就断了,不往下仿真了?

QQ截图20131120102528.png (26.54 KB )

DDR3用户接口仿真

DDR3用户接口仿真

QQ截图20131120102528.png (26.54 KB )

DDR3用户接口仿真

DDR3用户接口仿真

相关帖子

沙发
dingning123|  楼主 | 2013-11-20 10:53 | 只看该作者
这是我自己写的testbench进行仿真的结果,到1000ns就断了

1.png (108.84 KB )

1.png

使用特权

评论回复
板凳
haitaox| | 2013-11-20 12:55 | 只看该作者
mcb控制器在复位之后,会对ddr3进行初始化操作,具体包括
1.reset# 保持最少200us
2.cke保持最少500us
以上两项在仿真中不是必要的
3.load MR寄存器(写入DDR3的关键参数,比如burst length等)
4.校准(calibration)

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

你说的1000ns之后就停了是什么意思

使用特权

评论回复
地板
dingning123|  楼主 | 2013-11-20 14:39 | 只看该作者
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仿真就不往下进行了

使用特权

评论回复
5
zhuyi1234567899| | 2013-11-20 16:44 | 只看该作者
用的是哪个类型的fpga?  MCB是spartan 6 里的memory controller base,也就是mig的原形

使用特权

评论回复
6
dingning123|  楼主 | 2013-11-21 10:05 | 只看该作者
zhuyi1234567899 发表于 2013-11-20 16:44
用的是哪个类型的fpga?  MCB是spartan 6 里的memory controller base,也就是mig的原形

我用的是Xilinx 7系列的FPGA  
现在的问题就是 在仿真IP核自带的例子时有一段时间APP接口的信号是保持不变的,但是输出到DDR3的输出接口却能进行刷新,激活等命令的发出。
我现在参考example_design的波形给控制器的用户接口app_wdf_wren , app_addr, app_cmd 等信号一个初始化的设置(至0或1),并维持一段时间(例如10000ns),但是并未看到控制器输出接口发出刷新、激活等命令。
现在我不知道原因出在哪里?难道是我的Testbench写错了,还是其他的原因?(用户接口的初始化完全参考例子设计的波形进行设置)

使用特权

评论回复
7
haitaox| | 2013-11-21 12:50 | 只看该作者
你好,d
我用的是spartan6的mig,没有使用过7系列的mig,不过我感觉应该是类似的
首先,复位之后,mig对ddr3的一串操作是ip核自己发出的,这个不需要用户接口配置。所以,你开始的时候,使能信号都是0,mig还是会有波形
然后,要等到mig初始化完成之后才能对mig操作,mig有一个calibration_done信号,等这个信号拉高之后,才能读写mig
最后,你说1000ns之后仿真就不进行了,请把仿真输出的log信号打印出来,看看是怎么回事
ps,mig的user guide好好看看,只有看懂了ug,才能用好mig

使用特权

评论回复
8
dingning123|  楼主 | 2013-11-21 14:24 | 只看该作者
haitaox 发表于 2013-11-21 12:50
你好,d
我用的是spartan6的mig,没有使用过7系列的mig,不过我感觉应该是类似的
首先,复位之后,mig对ddr ...

你还 ,你在利用写Testbench进行用户接口仿真时,是直接在ISE里面调用的Modelsim,还是自己写do文件,然后通过在Modelsim里面调用do文件进行的仿真,我现在认为可能是我在写完testbench进行仿真时的方法可能有问题?

使用特权

评论回复
9
zhuyi1234567899| | 2013-11-22 15:05 | 只看该作者
dingning123 发表于 2013-11-21 14:24
你还 ,你在利用写Testbench进行用户接口仿真时,是直接在ISE里面调用的Modelsim,还是自己写do文件,然 ...

example_design也是有sim文件的,直接调来仿真便是

使用特权

评论回复
10
dingning123|  楼主 | 2013-11-22 15:30 | 只看该作者
zhuyi1234567899 发表于 2013-11-22 15:05
example_design也是有sim文件的,直接调来仿真便是

你好 我现在已经利用在Modelsim上通过调用sim文件里面的do文件仿真出了控制器的所有波形,现在我想对控制器的APP接口写testbench,初始有一段时间APP接口的时序是不变的,控制器自己向输出接口发送命令,不知道为什么我在对APP接口初始化之后,控制器并不向输出端口发送命令

使用特权

评论回复
11
dingning123|  楼主 | 2013-11-22 15:42 | 只看该作者
dingning123 发表于 2013-11-22 15:30
你好 我现在已经利用在Modelsim上通过调用sim文件里面的do文件仿真出了控制器的所有波形,现在我想对控制 ...

我想知道是不是对app_en,app_wdf_end,app_wdf_wren,sys_rst,app_addr,app_cmd,app_wdf_data,app_wdf_mask这几个信号进行调用就可以将控制器应用到具体的工程里面

使用特权

评论回复
12
zhuyi1234567899| | 2013-11-22 17:52 | 只看该作者
dingning123 发表于 2013-11-22 15:42
我想知道是不是对app_en,app_wdf_end,app_wdf_wren,sys_rst,app_addr,app_cmd,app_wdf_data,app_wdf_mask ...

这个我就不清楚了,我不是做设计的

使用特权

评论回复
13
haitaox| | 2013-11-24 21:16 | 只看该作者
example design 里的sim文件夹中有一个示例的do文件,你用那个跑一下。
modelsim提示finish的时候,选择否。要不然就退出了。
如果你要自己做设计,肯定不能把example design的东西拿过来直接用,那里面有一些代码是不可综合的。

使用特权

评论回复
14
GoldSunMonkey| | 2013-11-24 22:11 | 只看该作者
使用XILINX提供的仿真文件啊

使用特权

评论回复
15
dingning123|  楼主 | 2013-11-25 09:09 | 只看该作者
GoldSunMonkey 发表于 2013-11-24 22:11
使用XILINX提供的仿真文件啊

你好,我现在已经利用example design里sim文件夹中的do文件跑出了例子设计的波形,现在我想将控制器mig_7series_v1_7(use design)应用到具体的工程里面,就对APP接口写了一段测试激励,但是没有看到ddr的输出端有波形输出
我的步骤为:
1、参照例子例子设计里面初始一段时间APP接口中sys_rst信号被拉高,其他输入信号被拉低,在控制器的输出端能够输出加载模式寄存器、刷新等命令。
2、参照例子设计,在ISE里面对mig_7series_v1_7(use design)部分新建一个Verilog test fixture,在里面输入
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;
3、仿真时间我设置成10000ns,在ise里面点击simulate  behavioral model ,在通过modelsim观察波形时没有看到输出端ddr_*这些信号有任何的输出。
我现在不知道问题出在哪里

使用特权

评论回复
16
tcswyy999| | 2014-8-6 11:05 | 只看该作者
dingning123 发表于 2013-11-25 09:09
你好,我现在已经利用example design里sim文件夹中的do文件跑出了例子设计的波形,现在我想将控制器mig_7 ...

有添加DDR3仿真模型么

使用特权

评论回复
17
gs862906973| | 2014-11-20 09:13 | 只看该作者
学习学习

使用特权

评论回复
18
aaaaaaddaw| | 2018-3-8 21:05 | 只看该作者
1000ns是因为你有always@(*)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

48

帖子

1

粉丝