文檔版本 | 開發(fā)工具 | 測試平臺 | 工程名字 | 日期 | 作者 | 備注 |
---|---|---|---|---|---|---|
V1.0 | ise14.7 | DBF板 | PCIETest2 | 2016.03.28 | lutianfei | none |
- 參考資料:
- Spartan 6 PCIE_V2.4 真教程(一)
- 菜鳥5小時速成FPGA_PCIE設(shè)計高手教程.pdf
- ug671_V6_IntBlock_PCIe.pdf
[TOC]
一雕欺、Virtex6-250T的PCIe IP核設(shè)置
-
首先選擇
2.5版
IP核
-
第1頁:參數(shù)設(shè)置
- 注意 Lane Width 選擇 X4
- 注意 Link Speed 選擇 2.5GT/s
- 注意 Frenquency(Mhz) 125Mhz偏灿,此時鐘為給用戶使用的
trn_clk
用戶事務(wù)時鐘一疯。
-
第2頁:BAR空間設(shè)置
- 第3頁: ID號設(shè)置
-
注:DeviceID可修改谐檀,但需上位機配合
-
-
第4頁:默認(rèn)不變
-
第5頁:默認(rèn)不變
-
第6頁:默認(rèn)不變
-
第7頁:默認(rèn)不變
-
第8頁:默認(rèn)不變
-
第9頁:默認(rèn)不變
-
第10頁:默認(rèn)不變
- 第11頁:選擇GTX參考時鐘
-
Reference Clock Frequency: 選擇250Mhz(根據(jù)AD9516設(shè)置)
-
Frequency可選項如下:
-
二、 簡單仿真測試
(一)一些小問題的解決
報錯一:找不到XILINX路徑
- 解決方案:配置系統(tǒng)
環(huán)境變量
報錯二:找不到tests.v文件路徑(也可能不報錯)
-
解決方案:修改
pcie_exp_usrapp_tx.v
文件中tests.v
的路徑如下:
-
成功后如下圖:
(二)波形分析
包格式說明
-
包頭格式說明
-
Fmt與Type格式說明
-
Posted 與 Non_Posted包
-
Non_Posted
:設(shè)備發(fā)起端發(fā)出一個 Non-Posted 請求疟羹,在一定時間后缅刽,接收端需要回復(fù)一個完成包
給發(fā)起端藤滥,如果不回復(fù)可能會遇到特別的情況底燎,例如藍(lán)屏刃榨。 -
Posted
:不需要回復(fù)完成包
給發(fā)起端弹砚。
-
PIO方式 接收 時序圖
- 信號說明:
-
m_axis_rx_tlast
: 包結(jié)束標(biāo)志,與m_axis_rx_tvalid
一起生效喇澡。 -
m_axis_rx_tdata
: 接收數(shù)據(jù)迅栅,當(dāng)m_axis_rx_tvalid
為高時殊校,數(shù)據(jù)有效晴玖。 -
m_axis_rx_tkeep[7:0]
:決定64bit數(shù)據(jù)中哪些bit為有效。某位為高時为流,表示對應(yīng)的8位數(shù)據(jù)有效呕屎。 -
m_axis_rx_tvalid
:表示PCIe核提供了有效數(shù)據(jù)在m_axis_rx_tdata
。 -
m_axis_rx_tready
:表示用戶準(zhǔn)備好接收來自m_axis_rx_tdata
的數(shù)據(jù)敬察,此信號必須與m_axis_rx_tvalid
同時作用才有效秀睛。 -
trn_rerr_fwd
:為高正常,為低表示傳輸出錯莲祸。
-
第一包數(shù)據(jù):
- 由上圖可知:當(dāng)
m_axis_rx_tvalid
拉高的同時數(shù)據(jù)到來蹂安。- 數(shù)據(jù)包為
MWr
(存儲器寫請求),Posted
包 - 包頭3DW锐帜,
- 數(shù)據(jù)長度為1(4字節(jié))田盈,
- 寫地址為0x00000004(Byte)
- 寫入數(shù)據(jù)為0x04030201
- 寫入空間為:BAR0
-
trn_rerr_fwd
始終為高,沒有出錯缴阎。
- 數(shù)據(jù)包為
- 第一包數(shù)據(jù)的結(jié)尾:
- 觀察可知當(dāng)
m_axis_rx_tready
再次拉高后的下一個時鐘m_axis_rx_tvalid
允瞧、m_axis_rx_tlast
同時拉低。
- 觀察可知當(dāng)
第二包數(shù)據(jù)
- 由上圖可知:當(dāng)
m_axis_rx_tvalid
拉高的同時數(shù)據(jù)到來蛮拔。- 數(shù)據(jù)包為
MRd
(存儲器讀請求)述暂,Non-Posted
包需要返回一個完成包
。 - 包頭3DW建炫,
- 讀取長度為1(4字節(jié))畦韭,
- 讀地址為0x00000004(Byte)
- 讀取空間為:BAR0
-
trn_rerr_fwd
始終為高,沒有出錯肛跌。
- 數(shù)據(jù)包為
PIO方式 發(fā)送 時序圖
- 由上圖可知:當(dāng)
m_axis_tx_tvalid
拉高的同時數(shù)據(jù)到來艺配。- 數(shù)據(jù)包為
Cpld
(完成包)。 - 包頭3DW惋砂,
- 讀回長度為1(4字節(jié))妒挎,
- 讀地址為0x00000004(Byte)
- 讀取空間為:BAR0
- 讀出的數(shù)據(jù):0x04030201,即我們把剛才寫入0x00000010地址的數(shù)據(jù)讀出西饵,發(fā)現(xiàn)確實是剛才寫入的0x04030201酝掩,所以腳本判斷程序才會出現(xiàn)test_passed的結(jié)論。
- 數(shù)據(jù)包為