原创 Xilinx PCIE IP modelsim 仿真

2012-8-21 20:14 8596 9 26 分类: FPGA/CPLD

以下是代码片段:
    第一篇博文该写些什么,笔者思虑很久了,回想自笔者接触电子行业以来调过单片机,画过电路板,做个PCI,PCIE,嵌入式开发系统,处理器接口,但每每思之,都感觉各个项目只是浮光掠影,不敢在本论坛班门弄斧,但想到写总结一来可以巩固自己的知识,加深理解,二来可以给要做类似项目的同行一点点启示,三来可以和同行们交流,让大家批评指正,不亦说乎。
    思之再三,还是从最近做的PCIE的项目开始,项目背景就不介绍了,有兴趣的可以私聊。好了,言归正传,介绍一下PCIE的Modelsim仿真。 
    PCIE的仿真难点应该就是PCIE传输层包的构建了,因为整个设计一端时2.5Gbps的差分信号,一端是你要仿真的用户逻辑,一种方法是用testbench模拟Xilinx IP 输出端并行总线的时序,这样要求设计者对PCIE的包结构非常熟悉,无疑这样工作量很大;方法二是将工程编译完成,用chipscope下到FPGA中,将板卡插入主机之上调试,这样比较耗时,而且也费力。以上两种方法笔者都试过,如果您也在这么做,那么恭喜你,现在不用这么做了,因为Xilinx已经把我们想做的都做了。下面笔者就介绍PCIEmodelsim仿真,这种方法是用逻辑构建2PCIE设备,一个用于测试时模拟主机的行为,另一个就是您要测试的部分了。

 

   

1 编译xilinx库文件(13.2 modelsim仿真需要6.6d以上的modelsim版本)

开始->Design suite->ISE Design Tool –> Tool->Simulation Library Compilation Wizard编译xilinx库文件;

20120821201150716001.jpg

2编译好后,打开modelsimini文件,增加初始化库文件,并指定到编译好的库文件中。

20120821201157242002.jpg

其中lib名字一定要和Simulation Library Compilation Wizard生成的库文件名相同,否则modelsim编译时会显示找不到库的错误。

3 例化一个PCIEIP,打开modelsim,改变文件夹到例化到的例子的simulationfunctional文件夹,将ISE/verilog/src/文件中的glbl.v文件在work库中编译一下,并去掉simulate_mti.do文件中的glbl.v文件的加载,然后编译就可以了。

20120821201204836003.jpg

运行,过程中出现modelsim让终止的对话框选择no,运行结果如下:

20120821201212391004.jpg

经仿真,例子只给了链路训练的仿真。

仿真文档参考Virtex-6 FPGA Integrated Block for PCI Express User Guideug517)。

模块的结构图如下:

20120821201219731005.jpg

Board为顶层模块,EP为用户例化PCIE PIO例子,实际调试中可以改为添加用户逻辑的PCIE代码,RP为测试模块代码,RP源文件在simulationfunctionaldsport文件中。

Pci_exp_usrapp_rx/tx分别定义了用于仿真的package产生task,可以根据需要调用task进行测试。

 

    //Test starts here

    if (testname == "dummy_test")

    begin

      $display("[%t] %m: Invalid TESTNAME: %0s", $realtime, testname);

      $finish(2);

    end

    `include "tests.v"

    else begin

      $display("[%t] %m: Error: Unrecognized TESTNAME: %0s", $realtime, testname);

      $finish(2);

End

Pci_exp_usrapp_tx一段代码,测试程序可以在tests.v文件中通过调用task经行测试。实际测试中需要把用户测试代码添加到sample_test1文件中。

仿真的打印信息:

20120821201225483006.jpg

仿真首先要TSK_BAR_INIT,然后再进行其他操作,才会出来波形,否则只能进行链路训练。

仿真环境默认只支持一个bar,如果有多个bar可将pci_exp_usrapp_tx.v中的pio_check_design改为0(检测在TSK_BAR_INIT中完成)。

20120821201232888007.jpg

20120821201238566008.jpg

如果用户想实测带有用户逻辑的代码,需要在example design的基础上添加用户代码,但是要注意最好不要改变设计中顶层模块的名字以便simulation_mit.do文件找不到编译文件,如果改变了,用户可以通过修改.do文件的内容来仿真。

E:/loongson/PCIE/Xilinx_PCIe_V6/pcie_1x1_example/ipcore_dir/pcie/simulation/functional仿真PCIE PIO的例子

20120821201245484009.jpg

 

PARTNER CONTENT

文章评论17条评论)

登录后参与讨论

用户1826710 2015-12-29 15:54

问下博主,在下载调试的时候有没有遇到过上位机蓝屏的情况

用户1577612 2015-12-16 10:25

正在学习PCIE,想先做个仿真看看,仔细拜读了几遍,也许基础太差,没用过modelsim,怎么都弄不出来。希望能有个小白都能会的教程。

用户1360512 2015-1-5 23:40

xapp1052 找这个例子即可

用户1821650 2014-11-22 11:19

楼主,最近我想学习使用V5 PCIe IP核,在 User Guide 文档中提到的例程:The Root Port Modle and The Programmed Input Output (PIO) example design 在官网中什么地方能够下载到? 不知道通过什么方式查。。求指导!

用户1252893 2014-8-11 17:31

这还推荐啊

用户1639460 2014-2-15 15:14

收了

用户1631568 2014-1-20 09:55

我用Xilinx生成一个PCIE PHY,然后连自己的控制器。仿真结果,当GTXRESET有效取消后,PHYSTATUS就变红(复位期间是1)。这就导致无法继续跑下去了!有建议能给些不~~

用户377235 2014-1-14 14:42

你好,我最近在学习xilinx的PCIE核,但是我在仿真的时候提示一个B_PCIE_2_0 is not defined.我想是我编译的库的问题。 我用的软件版本: ISE 12.3 ModelSim SE 6.5 不知道,能不能给我一些指点,谢谢了。

用户377235 2013-9-29 15:24

我的qq是2480736935,本人菜鸟,很想掌握pcie,希望指导下小弟,互相交流下,谢谢。

用户440271 2013-6-26 19:57

对了我qq448274685,如果能帮忙讨论一下,可以联系我
相关推荐阅读
用户1360512 2012-09-19 20:32
FPGA开发PCIE(三 PCIE DMA设计)
继续前面的介绍,前面部分的PPT基本将PCIE协议,PCIE DMA以及影响PCIE 数据传输率的几个因素都介绍了,下面给一张图,是一个典型PCIE DMA的结构,本来可以再前一篇中直接写的,但是...
用户1360512 2012-09-18 16:48
FPGA开发PCIE(三 PCIE DMA设计--待续)
下面是本人做项目过程中和同事分享心得所做的一个ppt,拿出来和大家分享,项目需要,屏蔽都项目相关的具体细节,有描述不清之处,希望留言交流。 设计参考 1 Virtex-6 FPG...
用户1360512 2012-09-18 16:48
FPGA开发PCIE (二)
由于最近有一个防火墙的项目要做,任务比较重,一直没时间写,请大家多多包涵。 前面大致介绍了PCIE的FPGA板卡设计的几个问题,下面介绍PCIE的链路调试。 PCIE的链路调试就是通过在F...
用户1360512 2012-09-18 16:48
FPGA开发PCIE(一)
PciE是pci express的简称,是为了解决pci带宽限制而开发的新技术。并行信号由于受信号串扰的影响,带宽做到pcix 64bit位宽x133M基本已经到了瓶颈了,要进一步提高总线带宽一种...
用户1360512 2012-09-17 21:10
FPGA开发PCIE(三 PCIE DMA设计)
    继续前面的介绍...
我要评论
17
9
关闭 站长推荐上一条 /3 下一条