第一种配置方法如下。按最高2666MHz配置,这边输入的参考时钟看个人板卡情况,我这边输入是200MHz。
第二种配置方法如下。按2400MHz配置(需要换芯片型号),这边输入的参考时钟看个人板卡情况,我这边输入是200MHz。
这边是输入时钟设置及输出时钟设置。我这边输入是差分时钟,且不需要再要其他时钟。
配置好之后,打开example design,切换仿真平台至modelsim,点击simulation开始仿真。
在wave窗口中加入MIG IP核用户端的信号,查看时序。
先看app_en的逻辑部分,assign app_en = cmd_en & (app_rdy) ;其中cmd_en为下图。
再看什么时候才能算一次读和写的时序。
从上面两部分代码可以知道,cmd_en是app_rdy的延迟一拍信号,而一次完整可被记录的读和写时序必须要两个周期app_rdy的信号。后面cmd_en一直为1是因为当完成写的个数之后,会一直保持为自身,未有其他赋值。
再来看app_en和app_addr以及cmd_cnt的波形。
app_addr的代码如下。逻辑很明显,不再详述。
app_wdf_data、app_wdf_wren和app_wdf_end以及所涉及的wr_en代码及波形如下,逻辑很明显,不再详述。
整体上的写时序波形如下。仔细观察会发现,写入的地址和数据在个数上是相同的,但是两个分别有了五个周期的停摆现象。但是不影响最后的结果。
前面和最后面放大看一下。
然后我们来看读时序,读时序紧接着写时序,开头就在上面的图,这边不再截新图。中间阶段如下,app_en只与app_rdy有关,且地址只在为1的时候更新。写入命令个数从10'h64到10'h0c7,共100个读命令,对应地址从28'h0到28'h318。
最后是验证的代码和波形图,大家可以自行查看。