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