開發板:Xilinx K7 KC705
軟件:ISE14.7
1.由於應用需求,我們要將開發板作為主機端,通過PCIe接口轉接板外接一個NVMe PCIe SSD。並由FPGA控制SSD的數據讀寫。
因此我們例化生成了一個作為主機端的 PCIe IP核。
類型選擇為Root Complex
這里我們將可設置的幾項配置成抓取到的PCIe NVMe SSD的內部相應參數。
生成pcie核之后,在其目錄下將example文件夾中的例程導入ISE中。
閱讀其ucf文件,發現其中並沒有約束sys_clk_p和sys_clk_n這一組差分時鍾信號。取而代之的是如下的代碼:
# SYS clock 100 MHz (input) signal. The sys_clk_p and sys_clk_n
# signals are the PCI Express reference clock. Virtex-7 GT
# Transceiver architecture requires the use of a dedicated clock
# resources (FPGA input pins) associated with each GT Transceiver.
# To use these pins an IBUFDS primitive (refclk_ibuf) is
# instantiated in user's design.
# Please refer to the Virtex-7 GT Transceiver User Guide
# (UG) for guidelines regarding clock resource selection.
#
INST "refclk_ibuf" LOC = IBUFDS_GTE2_X0Y3;
這樣的配置就可以了嗎?還需要添加或修改什么代碼嗎?
參考網上的一些類似問題:如http://www.newsmth.net/nForum/#!article/FPGATech/45472?au=biscuit123。
我們推斷,這里約束了buffer "refclk_ibuf"的位置,即同時將sys_clk_p和sys_clk_n的LOC確定了。因為在頂層文件xilinx_pcie_2_1_rport_7x中例化了
IBUFDS_GTE2 refclk_ibuf (.O(sys_clk), .ODIV2(), .I(sys_clk_p), .CEB(1'b0), .IB(sys_clk_n));
ucf中的上述約束即為將refclk_ibuf確定為IBUFDS_GTE2_X0Y3,而這個buffer的位置是固定的,因而輸入端的sys_clk_p和sys_clk_n也就確定了,不需要再進行約束。
上述分析純屬個人推斷,如有誤,還請留言指出。
同時在綜合之后,打開PlanAhead以查看管腳映射:
發現sys_clk_p的管腳位置確實已經配置。並且修改IBUFDS_GTE2_X0Y3的值,綜合后得到的管腳映射位置不一樣,如下:
FPGA管腳號 Bank 時鍾來源位置
IBUFDS_GTE2_X0Y0:sys_clk_p R8 未連接
IBUFDS_GTE2_X0Y1:sys_clk_p V8 115 PCIE_8LANE_EDGE
IBUFDS_GTE2_X0Y2:sys_clk_p L8 116 SI5324C-C-GM
IBUFDS_GTE2_X0Y3:sys_clk_p N8 116 FMC接口
IBUFDS_GTE2_X0Y4:sys_clk_p G8 117
IBUFDS_GTE2_X0Y5:sys_clk_p J8 117 FPGA管腳J16
IBUFDS_GTE2_X0Y6:sys_clk_p C8 117 HPC接口
IBUFDS_GTE2_X0Y7:sys_clk_p E8
具體連接位置可參照開發板的原理圖。
在這里我們應該寫成INST "refclk_ibuf" LOC = IBUFDS_GTE2_X0Y1;
這樣兩個輸入時鍾信號將接到金手指上,其輸入來源是PCIe插槽轉接板上的100MHz時鍾。
具體PCIe接口信息可參見博文:http://blog.csdn.net/michaelcao1980/article/details/42778405
2.PCIe和NVMe的初始化完成,CSTS.RDY信號拉高,按照協議要求,我們想發送第一個指令:Identify。按照要求,我們修改了Admin SQ Doorbell寄存器。想要等待SSD給主機返回 讀TLP包,但是在PCIe核的數據返回接口並沒有抓到數據,過了一段時間之后,收到一個MXI中斷包。
這是什么問題?
轉載:https://blog.csdn.net/ssbls/article/details/55272114