当前位置:文档之家› PCIE_quartus13.1仿真教程(二)

PCIE_quartus13.1仿真教程(二)

Avalon_MM PCIE_quartus 13.1仿真教程(二)

Still.liu(150********) 20151008于深圳

1,引言

之前用的是quartus14.1 生成了IP_Compler for pcie来做的仿真,但是现在越来越多的

人都在使用qsys,所以很希望能在qsys中,结合pcie对自己的设计进行一个整体仿真。

从quartus的版本发展上看,我们也可以看到,在quartus14.1版本已经开始可以对自己

的qsys设计产生整体的tb了,但是你在生成的时候会发现还是会出现一些错误情况,而且

不好解决,不过相对于quartus13.1来说,这也是一个进步了,而且现在quartus15也出来了,

虽然还没有体验一把,但是我觉得altera肯定会在qsys上面有一个比较大的完善。

2,正题

这次我们采用cyclone V 的MM pcie内核来演示:

配置下PCIE内核,选用bar0和bar2,其他都可以保持默认。

发现有错误,根据报错信息消除即可:

把参考时钟和复位拉出即可:

消除所有错误后才可以生成example design,当然保存到自己设定的目录中去,不然你会发现它会保存在安装目录中。

再用qsys打开这个ep_g1*1.qsys。

发现有报错,刚才我们不是提到用cyclone V来做讲解吗,怎么还出现了Arriva V呢? 因为我们前面压根也就没有建工程,而且直接打开qsys就进行操作,虽然我们点的是CycloneV的hard ip,但是quartus13.1默认生成的还是Arriva V器件的,算是一个小bug吧,但是我们可以通过手动修改就是,值得留意的是13.1和14.1修改的地方还不在一个地方,如下图所示:

Quartus13.1

Quartus14.1

修改完器件后,我们GENERATE下。

又看到了我们熟悉的mentor了,到这里我们就可以暂时不看quartus了,改用modelsim 了。

根据前面的经验,还是有必要看下UG的,可以发现UG里面有下面一段话

我们暂时也分不清楚serial 和pipe simulation有啥区别,对于仿真时间上,我们也就不减少,等以后很熟悉后,再修改计数器值来减少时间,现在我们就按默认的serial simulation 来,按照提示修改下:

对于说要修改的enable_pipe32_sim_hwtcl,我们在ep_g1x1.v里面倒没有看到,反而在

ep_g1x1_tb.v里面看到了,再看看ug_c5_pcie_avst.pdf上面也是这样写的,所以估计

ug_c5_pcie_avmm.pdf里面的这段话是从那里copy过来的,但是我们要的是实现这个功能即可,我们可以看到默认就是使能了,此处不修改。

修改完后我们打开modelsim开始仿真了:

输入ld_bug,添加自己想观察的波形,后run一段时间看看

又出现了我们之前看到熟悉的LTSSM状态机了,也可以看到我们的速率是2.5G,和我们设定的一样。

在初始化完成后,example design和之前的IP_Compler for pcie一样,对PCIE的读写进行测试,也对DMA的读写进行测试,最后输出了测试通过的结论,如下图所示:

3,波形分析

系统基本控制信号

对应UG的释义:

写操作,注意必须在waitrequest为低时有效,写了16次,占用地址128个

读操作,注意要在readdatavalid为高时有效

DMA读写

具体读写的内容就不详细解释了,需要对这格式进行比对,详情可以参考附件的波形图。

4,展望

上面我们看到的还只是个avalon MM PCIE的一个demo的仿真,也只是简单的测试了下初始化和读写操作,只能当一个入门教程使用,实际使用将要和自己的实际代码级联起来仿真,笔者接下来将整理一个简单的用户程序和PCIE级联仿真的示例。

当然上面写的只是serial simulation,我们也可以根据UG上面的配置,改为pipe simulation,以及修改计数器时间,加快仿真速度,这样就可以把重心放在用户自己的逻辑上了。

相关主题
文本预览
相关文档 最新文档