在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于FPGA的PCIe總線接口的DMA控制器的實現并進行仿真驗證

SwM2_ChinaAET ? 2018-01-11 10:57 ? 次閱讀

隨著通信技術的不斷發展,對數據傳輸系統的速度與數據傳送質量的要求也在不斷提高。由Intel在2001年提出的第三代I/O總線技術——PCI Express總線技術,采用高速差分串行的方式進行數據傳輸,具有高帶寬、高可靠性、高拓展性等優點,很好地彌補了PCI、PCI-X總線的不足。

本文基于PCIe 2.0協議,利用Altera Transceiver PHY IP、Synopsys PCIe Core IP和AXI總線,提出了一種DMA控制器,并搭建了一個在FPGA端和PC之間的高速數據傳輸系統。實現了寄存器讀寫操作(單字讀寫)和DMA讀寫操作,并利用Synopsys VIP環境下進行的系統仿真上位機軟件進行觀察并驗證了數據讀寫的正確性。

1 設計方案

1.1 基礎模塊

1.1.1 Altera Stratix V GX系列FPGA與PCIe PHY IP

本設計使用Stratix V GX系列下的5SGXEA7K2F40C2N FPGA芯片,該芯片內部集成了PCIe PHY IP硬核模塊。PCIe PHY IP硬核包括三個部分,如圖1,PHY IP Core for PCI Express(PIPE)集成了PCIe總線的物理層。Transceiver Reconfiguration Controller IP Core可以動態重新配置模擬參數。Transceiver PHY Reset Controller IP Core作為收發器的復位模塊,確保了PCIe鏈路的初始化。

1.1.2 Synopsys IP與VIP

VIP顧名思義就是驗證IP(Verification IP),它為一些標準的接口提供標準的總線行為模型。Synopsys公司提供了PCIe總線的Controller IP,實現了PCIe總線數據鏈路層和事務層的功能,并內置了DMA,同時也提供了針對PCIe總線的VIP,為PCIe總線提供了標準的總線行為模型,模擬了上位機的功能[8]

1.1.3 AXI總線

AXI(Advanced eXtensible Interface)總線是一種高性能、高帶寬、低延遲的總線協議,有一個顯著的特點,地址/控制和數據通道是分開的,共有5個單向通道,分別為read address channel,write address channel,read data channel,write data channel,write response channel[9],減少了延時,提高了DMA的效率。

1.2 總體方案設計

本設計采用的整體架構如圖2所示,為Altera PHY IP+Synopsys PCIe Core IP+AXI總線+Application。

為了利用Synopsys 的PCIe VIP環境,采用了Synopsys PCIe Core IP。在PCIe事務層和應用側之間采用了AXI總線接口,可以在以后的設計中進行方便的拓展和替換。應用側設計實現了PCIe DMA控制器的功能,并集成了兩塊RAM,一塊大小為128 DW,用來存儲寄存器讀寫的數據;另一塊大小為512 DW,用來存儲DMA讀寫的數據。

2 DMA控制器的設計與實現

2.1 應用端DMA操作流程

應用端發起的DMA操作流程如圖3所示,最終DMA讀操作實現的結果為將主機側的數據以DMA的方式寫入到應用端的內存中。DMA寫操作實現的結果為將應用端的數據以DMA的方式寫入到主機側的內存中。圖3為應用端發起的DMA操作具體的流程。

(1)主機側通過寄存器寫的方式,將DMA讀寫標志、DMA長度、DMA源和目的內存地址寫入到應用端的寄存器中;

(2)應用端中的Slave模塊將這些命令發送給Master模塊;

(3)Master模塊按照Synopsys PCIe Core IP自定義的Dbi總線的方式,再將這些命令傳送給PCIe Core IP內部的寄存器;

(4)PCIe Core IP接收DMA讀寫指令,并持續操作Master接口以實現后續操作;

(5)當為DMA讀時,PCIe Core IP的內置DMA從主機側的“源內存地址”中讀取到目標數據;當為DMA寫時,PCIe Core IP的Master接口通過AXI總線以讀的方式從“源內存地址”讀取到目標數據;

(6)當為DMA讀時,PCIe Core IP的Master獲得DMA讀取到的目標數據,并通過AXI總線,以寫的方式寫入到應用端的“目的內存地址”中;當為DMA寫時,Master獲得目標數據后,內置DMA將數據發送到主機側的“目的內存地址”中;

(7)當DMA操作完成,PCIe Core IP會通知應用端的中斷模塊;

(8)應用端的中斷模塊會向主機側提交中斷。

2.2 應用端DMA控制狀態機

應用端只需將主機側寫入的DMA讀寫標志、DMA長度、DMA源和目的內存地址以及DMA啟動信號寫入到PCIe Core IP中的內部寄存器,并等待DMA操作的完成,給出中斷信號。

下面為應用端詳細的DMA控制狀態機,如圖4所示,狀態機把DMA讀操作和DMA寫操作整合到了一起,減少了代碼量。

(1)IDLEPHASE:空閑狀態。當啟動信號start_flag有效時,跳轉ENGINE_ENABLE狀態;

(2)ENGINE_ENABLE:判斷DMA讀寫類型信號wr_rdn_flg,當wr_rdn_flg為0,即為DMA讀(PC到FPGA)時,使能DMA讀引擎;當wr_rdn_flg為1,即為DMA寫(FPGA到PC)時,使能DMA寫引擎;

(3)DMA_TRANS_SIZE:設置DMA數據傳輸長度,最多一次傳輸512 DW,最少一次傳輸1 DW;

(4)DMA_SAR:設置DMA操作源地址(當為DMA讀時,源地址為主機端地址;當為DMA寫時,源地址為應用端地址);

(5)DMA_DAR:設置DMA操作目的地址(當為DMA讀時,目的地址為應用端地址;當為DMA寫時,目的地址為主機端地址);

(6)DMA_DOORBELL:使能DMA操作門鈴信號dma_strt,啟動DMA操作;

(7)DMA_WAIT_INT:等待DMA操作完成;

(8)DMA_INT_STATUS:讀取DMA操作中斷寄存器狀態,當DMA操作完成信號dma_done有效時,產生完成中斷,并跳轉DMA_CLEAR_INT狀態;

(9)DMA_CLEAR_INT:清除中斷,回到IDLEPHASE狀態,準備下一次DMA傳輸。

3 DMA控制器功能驗證

3.1 仿真驗證

在完成代碼編寫之后,在VIP環境下搭建仿真平臺,使用Synopsys公司的仿真驗證工具VCS進行功能測試,主要測試驗證模塊能否正確對寄存器讀寫和DMA讀寫產生正確的反應。

從圖5、圖6中可以看到,寫地址偏移為0x40,寫數據為32’h87654321;讀地址偏移為0x40,讀數據為32’h87654321,由此可判斷寄存器讀寫正確。

基于FPGA的PCIe總線接口的DMA控制器的實現并進行仿真驗證
基于FPGA的PCIe總線接口的DMA控制器的實現并進行仿真驗證

如圖7所示,由dma_strt和dma_done信號可以看出為2次DMA傳輸,由dma_wr_rdn可看出第一次為DMA讀操作(RC端到APP側),第二次為DMA寫操作(APP側到RC端)由dma_bc_len可看出當前DMA操作長度為2 000 Byte,即500 DW,slv_rdata和slv_wdata信號較為密集的部分分別為2次DMA操作的數據,對比這兩次數據,得知DMA操作正確。

基于FPGA的PCIe總線接口的DMA控制器的實現并進行仿真驗證

為了更加方便地比較結果,采取自動對比文件的方法,即把寄存器或DMA寫的數據存放到一個文件中,再把寄存器或DMA讀回的數據存放到另一個文件中,通過對比兩個文件,判斷寄存器和DMA傳輸是正確的。

3.2 FPGA測試驗證

在仿真驗證完成之后,進行FPGA測試驗證,將硬件部分燒錄到板卡的FPGA芯片后,通過板卡的PCIe金手指插入到PC機的主板上,PC機重啟后檢測到PCIe硬件的插入,即可安裝對應的PCIe驅動軟件,利用上位機進行測試。

上位機軟件界面如圖8所示,包括寄存器讀寫(Target操作)和DMA讀寫(Master操作)測試模塊。

基于FPGA的PCIe總線接口的DMA控制器的實現并進行仿真驗證

選擇“Target”操作的“dual”模式,寄存器長度設置為118,因為前10個寄存器與DMA操作相關,可能會觸發DMA操作,所以在軟件中選擇跳過。點擊“啟動測試”,數據將會被先從主機側寫到FPGA,再從FPGA讀回到主機側,比較兩次寄存器操作的數據,即可判斷寄存器操作的正確性。

如圖9所示,選擇“Master”操作的“dual”模式,點擊“memory”,即在PC側開辟一塊內存存放數據,然后點擊“啟動測試”,數據先從PC寫到FPGA的RAM中,接著再從FPGA回到PC,比較存放到PC內存的數據和從FPGA寫回到PC的數據,即可判斷DMA讀寫操作的正確性。

基于FPGA的PCIe總線接口的DMA控制器的實現并進行仿真驗證

根據DMA傳輸固定大小的數據的時間,可以計算出DMA讀寫速率,經過多次測試,DMA讀寫速率分別為1 547 MB/s和1 607 MB/s。本設計采用的是PCIe Gen2、×4通道,理論最大傳輸速率為2 000 MB/s。分析代碼得出可能由于應用端向PCIe Core IP寫入和讀取數據過程占用了一定的時間,另外驅動程序向DMA寄存器寫入或讀取參數也占用了一些時間,都會影響速率。

4 結語

本文實現的基于FPGA的PCIe總線接口的DMA控制器是在Altera PHY IP和Synopsys Core IP的基礎上實現的,利用Synopsys VIP驗證環境進行了功能仿真驗證,并通過FPGA進行了系統實測,達到了較高的傳輸速率,在Gen2、×4模式下,DMA讀寫操作的帶寬分別為 1 547 MB/s和1 607 MB/s,達到了預期的設計目標。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1640

    文章

    21887

    瀏覽量

    610885
  • 控制器
    +關注

    關注

    113

    文章

    16789

    瀏覽量

    181898
  • PCIe
    +關注

    關注

    16

    文章

    1295

    瀏覽量

    84272
  • dma
    dma
    +關注

    關注

    3

    文章

    569

    瀏覽量

    101901

原文標題:【學術論文】基于FPGA的PCIe總線接口的DMA控制器的設計

文章出處:【微信號:ChinaAET,微信公眾號:電子技術應用ChinaAET】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    FPGAPCIE接口應用需要注意哪些問題

    ,選擇高性能的PCIe IP核并進行精細的設計優化是至關重要的。 軟件和驅動程序 : 即便硬件設計得當,軟件和驅動程序的效率也會影響到系統的最終性能。需要確保軟件和驅動程序與FPGAPCI
    發表于 05-27 16:17

    FPGA干貨分享三】基于FPGA的LBS控制器設計

    設計按照上述4個狀態進行Verilog設計,經過仿真和上板調試,效果很好,下面是狀態機設計程序,仿真時序圖如圖3,圖4所示。3、結語本文設計的LBS控制器應用在PEX8311和
    發表于 01-29 14:09

    基于FPGA的PCI Express總線接口應用

    描述符表。根據實際使用的PCIE總線通道數和DMA長度的不同,實際測試得到的總線速度也不同,表3給出了參考數據。5 結語使用FPGA來設計
    發表于 05-21 05:00

    采用FPGA實現PCIe接口設計

    系列FPGA實現PCIe接口所涉及的硬件板卡參數、應用層系統方案、DMA仲裁、PCIe硬核配置與
    發表于 05-21 09:12

    如何通過PCIe進行FPGA到PC的通信?

    嗨,我正在使用超大規模的FPGA板。我可以通過DMA子系統IP和DDR控制器IP將數據從PC傳輸到DDR。我打算在FPGA進行一些處理,然
    發表于 05-08 09:40

    如何利用PCIe DMA總線實現一個基于FPGAPCIe 8位數據采集卡?

    PCIe總線通信過程是怎樣的?是什么原理?如何利用PCIe DMA總線實現一個基于
    發表于 09-17 07:16

    CPU數字通信接口FPGA進行數據通信設計實現

    進行FPGA設計時候,除了一些算法\\驗證等應用,其他情況下都需要FPGA控制器進行數據交互
    發表于 08-19 16:32

    全愛科技Atlas200I A2 AI加速模塊-FPGA PCIE接口驗證平臺

    Xilinx的官方PCIE 2.0 IP核或0 IP核,用來實現PCIE 硬核IP的例化; 使用DMA控制器
    發表于 09-05 14:39

    基于FPGA的PCI接口控制器的設計與實現

    基于FPGA的PCI接口控制器的設計與實現 pci總線是高速同步總線,采用高度綜合優化的
    發表于 12-14 14:29 ?1964次閱讀
    基于<b class='flag-5'>FPGA</b>的PCI<b class='flag-5'>接口</b><b class='flag-5'>控制器</b>的設計與<b class='flag-5'>實現</b>

    FPGA實現CAN總線控制器源碼

    Xilinx FPGA工程例子源碼:FPGA實現CAN總線控制器源碼
    發表于 06-07 14:13 ?95次下載

    基于FPGA 的SPI Flash 控制器設計及驗證

    [1] 。它比起傳統的并行總線接口Flash 來說節省了很多的I/ O 口資源,從而為系統功能的擴展提供了更多的可能。為此提出了一種基于FPGA 的SPI Flash 控制器的設計方法
    發表于 11-22 08:47 ?1.4w次閱讀
    基于<b class='flag-5'>FPGA</b> 的SPI Flash <b class='flag-5'>控制器</b>設計及<b class='flag-5'>驗證</b>

    Crossbar的多通道DMA控制器設計

    為了具體介紹本多通道 DMA 控制器的設計方案,下面首先對基于 Crossbar 的多通道 DMA 控制器的工作原理進行詳細分析,接著具體說
    發表于 12-07 09:37 ?5194次閱讀
    Crossbar的多通道<b class='flag-5'>DMA</b><b class='flag-5'>控制器</b>設計

    如何使用FPGAPCIe總線進行DMA平臺設計

    , PCI_ X等總線,因其性能無法達到系統的傳輸要求,正逐步淘汰,PCIe總 線作為新一代的總線標準,它具有數據傳輸速率高,可更好地支持未來高端顯卡等優點,在LTE系統的物理層中,設計基于P
    發表于 11-13 16:40 ?30次下載
    如何使用<b class='flag-5'>FPGA</b>的<b class='flag-5'>PCIe</b><b class='flag-5'>總線</b><b class='flag-5'>進行</b><b class='flag-5'>DMA</b>平臺設計

    dma控制器的組成

    一個DMA控制器,實際上是采用DMA方式的外圍設備與系統總線之間的接口電路,這個接口電路是在中斷
    的頭像 發表于 04-01 16:08 ?1.1w次閱讀

    PCIe控制器FPGA或ASIC),PCIe-AXI-Controller

    Transaction Layer的所有功能特性,不僅內置DMA控制器,而且具備AXI4用戶接口,提供一個高性能,易于使用,可定制化的PCIe-AXI互連解決方案,同時適用于ASIC和
    的頭像 發表于 02-21 15:15 ?1204次閱讀
    <b class='flag-5'>PCIe</b><b class='flag-5'>控制器</b>(<b class='flag-5'>FPGA</b>或ASIC),<b class='flag-5'>PCIe</b>-AXI-Controller
    主站蜘蛛池模板: 久久草在线视频播放 | 色多多网站在线观看 | 久久怡红院国产精品 | 黄色网址视频在线观看 | 五月婷婷社区 | 黄色a网| 狠狠燥 | 免费久久精品国产片香蕉 | 欧美视频不卡一区二区三区 | 美女视频黄.免费网址 | 日韩a毛片免费全部播放完整 | 日韩毛片免费线上观看 | 1024手机看片欧美日韩 | 国产精品久久女同磨豆腐 | 四虎影院永久 | 亚洲五月六月丁香激情 | 奇米影视777欧美在线观看 | 免费 在线观看 视频 | aaa亚洲 | 五月欧美激激激综合网色播 | 欧美电影一区二区 | 久久精品国产99国产精品澳门 | 日本韩国做暖暖小视频 | 特黄aaaaa日本大片免费看 | 在线亚洲精品中文字幕美乳 | 狠狠色噜噜综合社区 | 奇米福利视频 | 激情文学综合丁香 | 欧美拍拍 | 色综合网天天综合色中文男男 | 免费看黄色网页 | 农村苗族一级特黄a大片 | 日本三级hd高清电影 | 色色色色色色网 | 婷婷六月综合网 | 天天在线免费视频 | 日本视频一区在线观看免费 | 国产精品久久精品牛牛影视 | 久久国产乱子伦精品免费一 | 99国产精品久久久久久久成人热 | 国产精品三级视频 |