基于Wishbone和端點IP的PCIE接口設計
在每個頭中含有類型及格式兩個字段,它們定義頭剩余部分的格式,用來指定事務的類型、頭的大小、數據有效載荷是否存在等。事務(在PCI Express請求者和完成者之間進行的操作)包括存儲器事務、I/O事務、配置事務和消息事務。事務分為三個類別:posted(不需要響應,不需要返回完成包,存儲器寫和消息屬于此類事務),非posted(需要響應)和完成包。本文引用地址:http://www.czjhyjcfj.com/article/190176.htm
本文設計的基于Wishbone的PCI Express接口的讀寫操作針對存儲器空間,其中存儲器讀寫操作TLP頭的格式如圖6所示。類型字段(Fmt)為00000b時表示存儲器讀或者寫;格式字段(Type)為00/01b時表示3DW/4DW的存儲器讀操作,為10/11b時表示3DW/4DW的存儲器寫操作。
2 基于Wishboen的PCI Express接口實現
2.1 實現原理
本文基于Xilinx FPGA的PCI Express集成硬核端點模塊和Wishhone片上總線,實現了主機和外接存儲器問通過PCI Express的接口通信。PCI Express接口基于協議包傳輸機制,因此,集成端點模塊的數據傳輸均以TLP包的形式進行。實現數據傳輸可通過以下步驟進行(以PCI Express讀傳輸為例):
(1)待傳輸數據存儲在應用模塊中的數據緩存器中,數據緩存器可以使用片外存儲器也可以使用片內RAM資源。本設計使用的是片內RAM資源;
(2)數據通過集成在存儲器端的Wishbone總線輸入到數據緩存區(Tx_ram)中,在數據緩存區(Tx_ram)中根據規定格式形成TLP包;
(3)根據PCI Express協議,將在數據緩存區(Tx_ram)中的TLP包通過集成端點模塊發送出去。
PCI Express寫傳輸是上述的逆過程。
其原理框圖如圖7所示。
2.2 設計買現
Xilinx的V5/V6系列FPGA提供了一個PCI Express硬核端點模塊,此端點模塊提供了一個PCI Express接口通信的底層配置,但沒有包含對TLP包的編碼及解碼邏輯。因此,需要在設計中實現TLP包的編碼及解碼邏輯功能。編碼是將來自Wishbone片上總線的數據打包成TLP格式存入Tx_ram;解碼即是在Rx_ram中提取TLP包的有效載荷。在解碼邏輯中,最重要的就是要根據包頭的類型字段和格式字段來正確確定事務的類型、頭的大小、有效載荷是否存在。
在應用模塊的存儲器端和FPGA端點IP核之間實現Wishbone的點對點連接,存儲器端接口為主端口,與硬核接口端為從端口。實現了32 b/16 b/8 b的單個存儲器的讀和寫以及主機到應用模塊間的DMA傳輸。需要注意的是,在Wishbone讀/寫操作的時候,一個時鐘周期只能進行一個雙字的傳送,對多個雙字進行讀寫時需要多個時鐘周期。
主機到應用模塊間的DMA傳輸包括DMA寫操作和DMA讀操作,其狀態流程如圖8所示。
評論