前言
对于大数据的传输必须搞定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