<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于Virtex-5的PCI-Express總線(xiàn)接口設計和實(shí)現

基于Virtex-5的PCI-Express總線(xiàn)接口設計和實(shí)現

作者: 時(shí)間:2011-04-06 來(lái)源:網(wǎng)絡(luò ) 收藏


3
本文的硬件主要就是單片XC5VLX50T,并在該FPGA內具體應用,完成的測試和使用。本文的應用有如下幾個(gè)特性:
(1)主機通過(guò)控制FPGA內部的寄存器文件來(lái)啟動(dòng)和停止DMA操作,支持endpoint到root的全雙工DMA讀寫(xiě)。
(2)使用LogiCORE產(chǎn)生的Endpoint Block Plus進(jìn)行PCI-Express總線(xiàn)接口。該硬核集成了PCIE協(xié)議中的物理層、數據鏈接層的解析,提供傳輸層接口(TRN)供設計者對相應的事務(wù)層數據包的處理。
(3)PCI-Express總線(xiàn)接口支持x4通道的,主機操作系統為嵌入式Linux 2.6.10系統。在Windows XP下也進(jìn)行PCI-Express接口測試。
FPGA是整個(gè)設計的最關(guān)鍵部分,主要實(shí)現:PCI-Express硬核;在硬核的用戶(hù)接口和傳輸接口實(shí)現PCI-Express傳輸本地總線(xiàn)的時(shí)序邏輯;并且在其內部完成DMA控制時(shí)序邏輯。FPGA是PCI-Express總線(xiàn)接口和應用模塊數據傳輸的通道。在Host端使用嵌入式的MPC8548作為主機系統應用CPU,設計相應的驅動(dòng)和應用程序配合FPGA內部代碼的調試。圖4為該系統的拓撲框圖。

本文引用地址:http://dyxdggzs.com/article/150893.htm


使用LogiCORE產(chǎn)生的Endpoint Block Plus中,定義了兩個(gè)基地址memory空間,一個(gè)用于DMA寄存器的操作,一個(gè)用于用戶(hù)邏輯空間。本文主要介紹的就是用戶(hù)應用層接口的實(shí)現,該接口將通過(guò)TRN進(jìn)行相應的事務(wù)層數據包的處理。
用戶(hù)應用層接口主要包括如下幾個(gè)模塊:a.TX Engine模塊;b.RX Engine模塊;c.Egress Data Presenter模塊;d.Read Request Wrapper模塊;e.DMA Control/Status Registers模塊。這幾個(gè)模塊之間的拓撲關(guān)系如圖5所示。


TX Engine:該模塊主要用于產(chǎn)生和發(fā)送事務(wù)層數據包:Posted事務(wù)包(存儲器、I/O、配置讀寫(xiě)事務(wù))、non_Posted事務(wù)包(該總線(xiàn)事務(wù)包分兩步進(jìn)行,首先是發(fā)送端向接收端提交總線(xiàn)讀寫(xiě)請求,之后接收端再向發(fā)送端發(fā)送完成包)和completion(完成)包。該模塊通過(guò)發(fā)送posted memory寫(xiě),non_Posted memory讀,和接收completion包來(lái)完成DMA的讀寫(xiě)請求。該模塊的啟動(dòng)由DMA Control/Status Registers模塊控制。該模塊又包括若干子模塊:posted packet generator模塊、non posted packet generator模塊、completion packet generator模塊和transmit TRN state machine模塊,上述三個(gè)generator模塊均由transmit TRN狀態(tài)機模塊控制,該狀態(tài)機的控制信號來(lái)自Endpoint Block Plus核以及DMA Control/StatusRegisters模塊。
RX Engine:該模塊主要用于接收Endpoint BlockPlus模塊從RX TRN接口送出的事務(wù)層數據包,對不同的事務(wù)包進(jìn)行解析,根據相應的包做相應的處理,該模塊能處理如下三種事務(wù)包:完成包、memory讀包和memory寫(xiě)包。該模塊又包括如下子模塊:接收TRN狀態(tài)機模塊、接收TRN監控模塊、接收數據狀態(tài)機模塊以及兩個(gè)fifo用于存放完成包的接收數據和完成包中目的和源的地址以及數據包的長(cháng)度,用于設置DMA Control/Status Registers模塊中的各個(gè)狀態(tài)。接收TRN狀態(tài)機模塊只負責TRN接口處的數據包的狀態(tài)和接收收據,送給后面的模塊;接收TRN監控模塊負責根據不同的TLP包來(lái)分配數據和狀態(tài),是直接將帶數據的完成包的數據寫(xiě)到用戶(hù)應用接口fifo,還是讀請求或寫(xiě)請求TLP包通知TX engine,組成相應的包發(fā)送出去或者通知DMA控制器進(jìn)行相應的DMA傳送控制;接收數據狀態(tài)機模塊對接收到的數據進(jìn)行相應的處理。
Egress Data Presenter:該模塊是專(zhuān)門(mén)為T(mén)X Engine模塊提供發(fā)送數據的模塊,要發(fā)送到主機的數據都在該模塊中進(jìn)行處理,它和TX Engine模塊間的數據位寬定義為64bit。
Read Request Wrapper:該模塊主要用于TX Engine模塊和RX Engine模塊之間的通信控制接口,本文中設計DMA的讀寫(xiě)操作每包可能的數據長(cháng)度為:1KDW、2KDW、3KDW、4KDW、8 KDW、16 KDW之間可選。該選擇是由主機通過(guò)寫(xiě)寄存器文件來(lái)進(jìn)行長(cháng)度策略選擇的。
DMA Control/Status Register:該模塊主要用于主機系統通過(guò)控制FPGA內部的寄存器文件的設置來(lái)啟動(dòng)和停止endpoint到root的DMA讀寫(xiě)操作。包括一個(gè)控制寄存器以及若干個(gè)配置寄存器,配置寄存器有主機的目的地址、源地址信息,本地的目的地址、源地址信息,以及每次DMA的數據包長(cháng)度等信息。由控制寄存器中的bit位的狀態(tài)來(lái)啟動(dòng)所有的狀態(tài)機的控制,所以控制寄存器是整個(gè)操作的關(guān)鍵信號。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>