基于Virtex-6 FPGA的雙緩沖模式PCIe總線(xiàn)設計方案和
3.2 PCIE核配置
Virtex6 PCIE Endpoint Block[4]集成了傳輸層(TL)、數據鏈路層(DLL)和物理層(PL)協(xié)議,它完全符合PCIE基本規范,可配置性增加了設計的靈活性,降低了成本。其功能框圖與接口如圖5所示。其中收發(fā)器通過(guò)PCIE總線(xiàn)與Root Complex實(shí)現數據包的傳遞,PCIE總線(xiàn)由系統接口和PCIE接口組成;系統接口由復位和時(shí)鐘信號組成,PCIE接口由8條差分傳輸和接收對組成(8lane)。TX/RX Block RAM用來(lái)存儲來(lái)自DMA引擎和系統內存的數據,其大小可以通過(guò)Xilinx Core Generator配置。傳輸接口為用戶(hù)提供了產(chǎn)生和接收TLP的機制;物理層接口使用戶(hù)能夠觀(guān)測和控制鏈路的狀態(tài);配置接口使用戶(hù)能夠觀(guān)察和配置PCIE終端的配置空間,即DMA寄存器;中斷接口實(shí)現DMA與PCIE核之間的中斷傳輸。用戶(hù)通過(guò)這些接口設計符合其需要的DMA引擎。

圖5 PCIE功能框圖與接口
本文使用Xilinx CORE Generator生成PCIE核,其主要配置參數如表1所列。

表1 PCIE核主要配置參數
3.3 總線(xiàn)主控DMA傳輸
參考Xilinx應用實(shí)例XAPP1052[5],本文設計的DMA結構框圖如圖6所示,各部分功能介紹如下:
①發(fā)射引擎。發(fā)射引擎產(chǎn)生傳輸層數據包(TLP)并通過(guò)傳輸接口發(fā)送至PCIE核,數據包的數據來(lái)自TX_FIFO,頭信息來(lái)自DMA控制/狀態(tài)寄存器,也負責驅動(dòng)對DMA寄存器的讀取。
②接收引擎。接收引擎將來(lái)自上位機的數據包解碼并轉存至RX_FIFO中,也接收來(lái)自驅動(dòng)的配置信息并將寄存器值寫(xiě)入DMA控制/狀態(tài)寄存器中。
③DMA控制/狀態(tài)寄存器。該模塊是DMA的主控制器,控制著(zhù)DMA復位、讀寫(xiě)等操作;內存緩沖區的地址信息和TLP包長(cháng)度等信息也存儲在該寄存器中。
④MSI中斷控制器。該模塊產(chǎn)生讀寫(xiě)中斷,然后通過(guò)中斷接口通知PCIE核,進(jìn)而通知驅動(dòng)程序。
⑤TX/RX_FIFO.通過(guò)Xilinx Core Generator將FIFO配置為獨立時(shí)鐘異步模式,實(shí)現不同時(shí)鐘域的數據緩沖和位寬轉換。本文PCIE時(shí)鐘為250 MHz、位寬64位,而DSP核時(shí)鐘為200 MHz、位寬32位。
⑥PCIE核。該模塊為例化的PCIE集成塊,框圖和參數詳見(jiàn)圖5和表1.
⑦DSP核。該模塊為用戶(hù)設計的算法或者功能模塊,例如通過(guò)Simulink調用Xilinx庫實(shí)現某種功能。

圖6 DMA結構框圖
評論