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