Xilinx PCIE IP快速仿真

本文介绍了如何使用Xilinx PCIe IP进行PIO和DMA例程的仿真,重点讲解了环境准备、PIO例程的Step1到Step3以及xapp1052例程的DMA写流程。在仿真过程中,通过观察信号变化理解数据传输时序,但指出仿真主机无法接收Device到Host的Memory Write TLP包,期待对此有解决方案的交流讨论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

对于大数据的传输必须搞定DMA的传输方式 ,而对于数据采集的应用,主要方向是从Device->Host的方向,也就不会出现网上所说从Host->Device会出现乱序的情况。利用仿真可以更好的学习IP核信号变化

环境准备

  • Vivado 2019.1
  • PIO例程
  • xapp 1052例程
  • K7芯片的板卡

PIO例程仿真

Step1:

在这里插入图片描述
创建好IP核,后右击IP核,选择打开Example 例程,这个例程默认的就是PIO例程。

step2:

可以看到这是仿真的文件,实际我们只需要修改两个文件,就能顺利仿真了
在这里插入图片描述
修改 pci_exp_usrapp_tx.v 308行

由用户自定义,假设是 testname = “user_test_1”;

step3:

在sample_tests1.vh在else if结构里添加一个

else if(testname=="user_test_1")
begin
    TSK_SIMULATION_TIMEOUT(5050);
    TSK_SYSTEM_INITIALIZATION;
    TSK_BAR_INIT;
    
    //Fixed initialization   
   
    //configration read  
    TSK_TX_TYPE0_CONFIGURATION_READ(DEFAULT_TAG, 12'h0, 4'hF);
    TSK_WAIT_FOR_READ_DATA;
    $display("[%t] :Device/Vendor ID %x successfully received", $realtime, P_READ_DATA);
    
  //BAR write  
    board.RP.tx_usrapp.DATA_STORE[0] = 8'h12;
    board.RP.tx_usrapp.DATA_STORE[1] = 8'h34;
    board.RP.tx_usrapp.DATA_STORE[2] = 8'h56;
    board.RP.tx_usrapp.DATA_STORE[3] = 8'h78;
    TSK_TX_MEMORY_WRITE_32(DEFAULT_TAG,
         DEFAULT_TC, 10'd1, 8'h0, 4'h0, 4'hF, 1'b0);
         
    // board.RP.tx_usrapp.TSK_TX_CLK_EAT(10); same as dealy 

   //BAR read  
   TSK_TX_MEMORY_READ_32(DEFAULT_TAG,
        DEFAULT_TC, 10'd1,
        8'h0, 4'h0
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值