《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于PCIe的高速接口設計
基于PCIe的高速接口設計
2016年微型機與應用第1期
李曉寧,姚遠程,秦明偉
(西南科技大學 信息工程學院 特殊環(huán)境機器人技術四川省重點實驗室, 四川 綿陽 621010)
摘要: PCIe總線是第三代I/O總線的代表,提供高性能、高速、點到點的串行連接,支持單雙工傳輸,通過差分鏈路來互連設備。該設計由Xilinx公司的Virtex6 FPGA平臺和PC機組成,為了實現(xiàn)PFGA與CPU之間的高速通信,開發(fā)了基于FPGA IPcore 的PCIe總線 DMA數(shù)據(jù)傳輸平臺。通過硬件測試表明,該接口設計方案成本低,傳輸速率可以達到 15 Gb/s。
關鍵詞: PCI-Express總線 FPGA DMA
Abstract:
Key words :

  摘要:PCIe總線是第三代I/O總線的代表,提供高性能、高速、點到點的串行連接,支持單雙工傳輸,通過差分鏈路來互連設備。該設計由Xilinx公司的Virtex6 FPGA平臺和PC機組成,為了實現(xiàn)PFGA與CPU之間的高速通信,開發(fā)了基于FPGA IPcore 的PCIe總線 DMA數(shù)據(jù)傳輸平臺。通過硬件測試表明,該接口設計方案成本低,傳輸速率可以達到 15 Gb/s。

  關鍵詞PCI-Express總線;FPGA;DMA

0引言

  隨著電子行業(yè)的飛速發(fā)展,人們對數(shù)據(jù)處理能力和存儲速率的要求越來越高,并行數(shù)據(jù)傳輸?shù)腜CI總線技術逐漸成為系統(tǒng)整體性能提升的瓶頸[1]。尤其在接收機的設計中,總線架構關系到系統(tǒng)的整體性能。串行點對點的PCIe總線克服了PCI總線在系統(tǒng)帶寬、傳輸速度等方面固有的缺陷,有效地提高了系統(tǒng)的整體性能。目前實現(xiàn)PCIe總線功能有兩種方法:采用FPGA實現(xiàn)PCIe的功能[2];使用PCIe橋接芯片。由于通過FPGA實現(xiàn)PCIe接口要比使用PCIe橋接芯片更加靈活,成本更低,可靠性更好,所以采用前者完成FPGA與PC機之間的信息的交互。

1PCIe總線的簡介

  PCI Express 體系結構采用分層結構,共分為四層:物理層(Physical Layer)、數(shù)據(jù)鏈路層(Link Layer)、處理層(Transaction Layer)和軟件層(Software Layer),這樣利于跨平臺的應用。軟件層發(fā)出的讀、寫請求,使用基于數(shù)據(jù)包、分段傳輸?shù)膮f(xié)議,通過處理層,傳輸至鏈路層。在鏈路層,數(shù)據(jù)包可以添加序列號和循環(huán)冗余校驗(CRC),從而創(chuàng)建一個更高度可靠的數(shù)據(jù)傳輸機制。基本的物理鏈路層包括兩個單一通道,即兩個低電壓的AC耦合差分信號對(一個傳輸對和一個接收對)。通過增加信號對形成多信道,可以組成x1,x2,x4,x8,x16以及x32的鏈路模式,串行數(shù)據(jù)傳輸采用工業(yè)標準的8b/10b編碼實現(xiàn)數(shù)據(jù)恢復[3]。

  本文基于非協(xié)作接收機的驗證平臺進行研究,系統(tǒng)整體框圖如圖1所示。

001.jpg

2PCIe接口及應用層設計

  本設計采用Xilinx公司Virtex-6系列的FPGA,芯片為xc6vlx240t,集成了PCIe的IP核,該PCIe遵循V2.0的規(guī)范。首先使用Core Generation 生成PCIe的硬核模塊,生成的PCIe子模塊的鏈路寬度支持x1,x2,x4,x8四種模式。生成核的過程中主要需要配置的參數(shù)有:參考時鐘、鏈路寬度、設備ID、基址寄存器、TLP的大小、對應的Xilinx的開發(fā)板等[4]。該核完全符合PCI Express的分層結構[5],提供了系統(tǒng)接口(SYS)、外部傳輸接口(PCI EXP)、配置接口(CFG)、事務接口(TRN)和物理接口(PL)。PCI Express的頂端功能模塊與接口如圖2。

002.jpg

  用戶邏輯接口:該接口為用戶設計提供一個產生和消耗TLPs的機制;

  物理層接口:該接口允許用戶設計去查看鏈路狀態(tài)和對方鏈路的控制及狀態(tài);

  配置接口:主機通過該接口對IP核進行配置或讀取狀態(tài);

  系統(tǒng)接口:這里只包括時鐘和復位;

  PCIe接口邏輯:由若干對差分信號線組成,分為接收和發(fā)送信號線。

3DMA控制器的設計與實現(xiàn)

  設計中為提高CPU的運行效率,在系統(tǒng)中引入了DMA控制器,該控制器是在PCIe IP核的基礎上實現(xiàn)的,數(shù)據(jù)的傳輸不占用CPU的時間,提高了系統(tǒng)的運行效率。

  本節(jié)主要介紹DMA中的TLP數(shù)據(jù)包結構、DMA相關寄存器的設計和PCIe接口的DMA讀寫操作核心狀態(tài)機的設計。

  3.1TLP數(shù)據(jù)包結構

  PCIe總線以數(shù)據(jù)包形式傳送信息,本設計主要關注事務層數(shù)據(jù)包TLP。一個完整的TLP如圖3所示,其中只有TLP頭和數(shù)據(jù)有效負載需要由用戶使用FPGA程序實現(xiàn),其他都由PCIe核自動生成并加到幀結構中[6]。

004.jpg

  TLP頭是TLP中最重要的部分,主要包含當前TLP的總線事務類型、路由信息等。一個TLP中的數(shù)據(jù)有效負載的長度是可變的,本設計中選用的最大負載長度為512 B。PCIe 核支持32 bit和64 bit地址空間的操作,其中32 bit地址空間讀寫操作的TLP頭格式如圖4。請求者根據(jù)自己的需要填寫TLP頭中的信息,并將數(shù)據(jù)放在TLP頭的后面發(fā)送給接收者,接收者解析出正確的數(shù)據(jù)放入到自己的地址空間中。

  DMA寫操作使用的TLP格式與存儲器寫操作TLP格式相同,DMA讀操作需要使用存儲器讀請求與存儲器讀完成兩種TLP格式。當接收到存儲器讀請求時,設備需要發(fā)送CPLD(帶數(shù)據(jù)的完成報文)。帶數(shù)據(jù)的完成報文與讀寫請求報文不同。

       32DMA操作寄存器的定義

003.jpg

  PCIe IP核提供6個32 bit基地址寄存器BAR0~BAR5,也可以作為3個64 bit基地址寄存器,可以根據(jù)實際需要進行配置。設計中使用BAR0存儲各種寄存器地址,使用BAR1作為內存操作基地址空間。在BAR0中各寄存器地址定義如下:

  (1)偏移地址0x00(DCR2)是控制DMA開始的寄存器,當寫入0x01時,DMA操作開始,上位機開始接收數(shù)據(jù)。

  (2)偏移地址0x04是中斷服務寄存器。當DMA數(shù)據(jù)包傳輸完畢時,寫0x01到該寄存器,產生一個中斷,上位機會進入中斷服務進程。

  (3)偏移地址0x08是DMA傳輸?shù)哪康牡刂贰T撃康牡刂肥荘C機端的內存首地址。DMA傳輸開始之前,將該地址寫到該偏移地址。當DMA操作時,將FPGA板卡上的數(shù)據(jù)傳到PC機端該地址處。

  (4)偏移地址0x0C是DMA傳輸?shù)臄?shù)據(jù)長度。設計中定義了每個包的數(shù)據(jù)長度是512 B,由該值可得到需要傳輸?shù)臄?shù)據(jù)包個數(shù),用于控制DMA操作的結束時刻。

  33DMA控制器

  在整個設計中,DMA控制狀態(tài)機是核心部分,主要包括Tx Engine和Rx Engine。Tx Engine負責接收上位機存儲器讀寫操作、單字發(fā)送及DMA發(fā)送。Rx Engine主要負責存儲器讀寫操作、單字接收及DMA接收。實現(xiàn)PCIe的DMA讀寫操作的主要方法是正確填寫TLP包頭中的各個字段,并將數(shù)據(jù)按照64 bit并行放在TLP包頭中。對于DMA寫,將數(shù)據(jù)傳輸給PCIe硬核,由硬核將數(shù)據(jù)發(fā)送到物理端口,最后傳輸?shù)絇C機的物理地址中;對于DMA讀,主機將數(shù)據(jù)包發(fā)送到硬核,最后Rx Engine解包,將數(shù)據(jù)輸出。

  Tx Engine和Rx Engine是使用狀態(tài)機來設計的,Rx Engine狀態(tài)轉移圖如圖5所示。 

005.jpg

  Rx Engine開始時處于Rx_RST狀態(tài),當Rx Engine收到數(shù)據(jù)包時,首先解析數(shù)據(jù)包,根據(jù)TLP包頭分辨數(shù)據(jù)包類型,進入不同的狀態(tài)。當接收到的是存儲器讀時,進入Rx_MEM_RD_QW1狀態(tài),發(fā)送信號通知Tx Engine,由Tx Engine發(fā)送CPLD數(shù)據(jù)包;當接收到的是存儲器寫時,進入Rx_MEM_WR_QW1,處理收到的TLP數(shù)據(jù)并更新配制寄存器;當收到的是CPLD時,進入Rx_CPLD_QW1狀態(tài),解析數(shù)據(jù)包,將數(shù)據(jù)存儲到相應的存儲器中;若信號trn_reof_n(傳輸結束信號,低電平有效)低電平沒有到來,則Rx Engine從Rx_CPLD_QW1進入到Rx_CPLD_QWN狀態(tài),根據(jù)寄存器中存有的DMA數(shù)據(jù)長度來判斷數(shù)據(jù)是否已經接收完成,若沒有完成則不斷在該狀態(tài)循環(huán),直到數(shù)據(jù)接收完畢,狀態(tài)機回到復位狀態(tài)。

  Tx Engine狀態(tài)轉換圖如圖6所示。

  Tx Engine狀態(tài)機同Rx Engine基本一樣,這里不再贅述。 

006.jpg

007.jpg

  DMA傳輸開始之前需要對DMA的相關寄存器進行配置,表1是寫DMA的操作步驟,寫DMA控制和狀態(tài)寄存器中定義了TLPs的地址、大小、個數(shù)、負載內容。

  其中DCR1和DCR2是設備控制寄存器,控制選擇FPGA型號、接口數(shù)據(jù)帶寬、讀/寫DMA開始/結束以及中斷服務的開啟。WDMATLPA是寫DMA的TLP低32位地址表1寫DMA操作步驟步驟操作寄存器操作值1發(fā)起初始化復位寫DCR10x000000012取消初始化復位寫DCR10x000000003寫DMA的PC端口地址寫WDMATLPAPC端地址4寫DMA TLP大小寫WDMATLPS事務包大小5寫DMA TLP個數(shù)寫WDMATLPC事務包個數(shù)6TLP數(shù)據(jù)包中payload值寫WDMATLPP數(shù)據(jù)值7寫DMA開始寫DCR20x000000018等待中斷TLP9寫DMA執(zhí)行結果讀WDMAPERF

  寄存器,WDMATLPS是寫DMA事務包的大小、事務包TC字段。WDMATLPC是寫數(shù)據(jù)包個數(shù)寄存器。WDMATLPP是寫數(shù)據(jù)包類型及32位有效負載寄存器。WDMAPERF是寫DMA執(zhí)行寄存器,表示完成DMA傳輸所用到的接口時鐘周期數(shù)。

  讀DMA與上述過程一致,只是在DMA中的傳輸方向的寄存器值不同。

4仿真及測試結果

  完成FPGA的程序編程后,用Modlesim對程序進行仿真。硬件測試時,使用ChipScope抓取數(shù)據(jù),主要分析DMA控制器產生的PCIe總線傳輸信號時序是否滿足要求。同時,通過軟件測試了DMA傳輸速率。

008.jpg

  圖7是DMA寫過程的仿真圖,功能是由FPGA板卡將數(shù)據(jù)上傳至PC機,圖8是讀過程的仿真圖,功能是由PC機到FPGA板卡的數(shù)據(jù)傳輸。由測試數(shù)據(jù)可以估算出PCIe Gen1x8寫操作速度可以達到15 GB/s。

  由圖7可以看到數(shù)據(jù)包傳輸開始于trn_tsof_n低電平之后,結束于trn_teof_n。數(shù)據(jù)傳輸期間trn_tsrc_rdy_n和trn_rdst_rdy_n必須有效。

  由圖8可以看到數(shù)據(jù)包傳輸開始于trn_rsof_n低電平之后,結束于trn_reof_n。數(shù)據(jù)傳輸期間trn_rsrc_rdy_n和trn_tdst_rdy_n必須有效。從圖中可以看到,若DMA傳輸沒有結束,在該數(shù)據(jù)包結束之后,會有新的數(shù)據(jù)包出現(xiàn)在鏈路上。

  由仿真圖可知該設計能完成DMA讀寫功能并保證數(shù)據(jù)的正確傳輸。

  實驗結果可得,DMA寫數(shù)據(jù)的速率可達15 GB/s,讀數(shù)據(jù)的速率可達147 GB/s,數(shù)據(jù)速率有大幅的提高。

5結論

  本文在PCIe硬核基礎上,設計了DMA控制器,使傳輸速度大幅度提高。經實際測試,該方案的數(shù)據(jù)傳輸速度在15 GB/s左右,可以滿足工作需要。PCIe是目前總線中傳輸速度最快的一種,此方案為高速的數(shù)據(jù)傳輸提供了一個參考,具有很好的參考和應用價值。參考文獻

  [1] 王齊.PCI Express 體系結構導讀[M].北京:機械工業(yè)出版社,2010.

  [2] 雷雨,任國強,孫健,等.基于PCIE 的高速光纖圖像實時采集系統(tǒng)設計[J].電子技術應用,2013,39(10):136-142.

  [3] 魏蕓.基于FPGA的PCIe總線DMA平臺設計[D].武漢:武漢理工大學,2013.

  [4] 陳剛,張京,唐建.一種基于FPGA的PCIe總線及其DMA的設計方法[J].兵工自動化,2014,33(5):75-77.

  [5] LogiCORETM IP Virtex6 FPGA Integrated Block Data Sheet[R].Xilinx,2009.

  [6] 李木國,黃影,劉于之.基于FPGA的PCIe總線接口的DMA傳輸設計[J].計算機測量與控制,2013,21(1):233-235.


此內容為AET網站原創(chuàng),未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
久久精品一区中文字幕| 亚洲图片欧美日产| 亚洲片在线资源| 国产日韩欧美自拍| 国产精品v欧美精品v日韩精品| 欧美大香线蕉线伊人久久国产精品| 久久精品综合网| 亚洲欧美在线免费观看| 一区二区三区四区国产| 亚洲精品久久久久久久久久久 | 91久久精品日日躁夜夜躁欧美 | 亚洲精品在线观看视频| 亚洲国产精品久久久久| 在线观看av不卡| 曰韩精品一区二区| 影音国产精品| 一区二区三区中文在线观看 | 亚洲在线国产日韩欧美| 一区二区欧美日韩| 一区二区三区精品视频在线观看| 亚洲精品国产精品久久清纯直播| 久久精品免视看| 久久精品国产综合精品| 久久精品国产综合精品| 欧美诱惑福利视频| 亚洲第一精品电影| 亚洲电影免费在线观看| 亚洲激情综合| 亚洲精品在线观看视频| 日韩视频免费观看高清完整版| 亚洲精品国产精品国自产在线 | 亚洲手机成人高清视频| 亚洲色图自拍| 亚洲一区二区在线免费观看视频| 亚洲自拍偷拍一区| 欧美一级一区| 久久理论片午夜琪琪电影网| 久久免费午夜影院| 欧美国产日韩a欧美在线观看| 欧美另类变人与禽xxxxx| 欧美日产一区二区三区在线观看| 欧美日韩在线播放三区| 国产精品久久久久久福利一牛影视| 国产精品视频一| 国产一区二区三区丝袜 | 欧美一区二区三区婷婷月色| 欧美一区二区精品在线| 欧美在线一级视频| 亚洲精品男同| 亚洲午夜女主播在线直播| 亚洲欧美国产精品桃花| 久久精品人人做人人爽| 暖暖成人免费视频| 欧美肉体xxxx裸体137大胆| 国产精品少妇自拍| 狠狠色狠狠色综合日日小说| 亚洲欧洲一二三| 亚洲午夜精品久久久久久浪潮| 性欧美videos另类喷潮| 亚洲欧洲日韩综合二区| 亚洲一区在线播放| 久久亚洲欧洲| 欧美涩涩视频| 国产亚洲欧美日韩在线一区 | 18成人免费观看视频| 一区二区三区av| 久久国产视频网| 夜夜嗨av色综合久久久综合网| 午夜在线精品偷拍| 女人天堂亚洲aⅴ在线观看| 欧美视频导航| 狠狠综合久久| 一本色道久久综合亚洲精品不| 欧美一级网站| 亚洲最新在线| 久久精品视频网| 欧美日韩ab片| 国产精品久久久久9999高清 | 亚洲国产专区校园欧美| 亚洲天堂偷拍| 亚洲国产日韩欧美在线图片| 亚洲视频www| 亚洲色图综合久久| 久久国产精品久久久久久久久久 | 亚洲欧美日本视频在线观看| 亚洲国产精彩中文乱码av在线播放| 亚洲激情视频| 亚洲欧美中文在线视频| 欧美成人免费网| 国产精品一二一区| 亚洲激情av在线| 午夜精品一区二区在线观看| 日韩午夜免费| 久久久另类综合| 国产精品青草久久久久福利99| 亚洲国产99精品国自产| 香蕉成人久久| 亚洲自拍啪啪| 久久国产精彩视频| 日韩亚洲不卡在线| 久久婷婷色综合| 国产毛片精品国产一区二区三区| 亚洲激情综合| 久久精品亚洲一区二区三区浴池| 午夜视频一区在线观看| 蜜桃精品一区二区三区| 国产亚洲欧美一区二区| 亚洲视频导航| 在线亚洲一区观看| 欧美福利电影网| 一区二区亚洲精品国产| 性欧美xxxx大乳国产app| 午夜精品三级视频福利| 欧美午夜不卡视频| 亚洲日本乱码在线观看| 91久久久久久久久| 久久久av水蜜桃| 国产精品一卡| 亚洲天天影视| 亚洲免费影院| 国产精品久久毛片a| 99精品热视频| 亚洲午夜视频在线| 欧美日韩亚洲视频一区| 99re热精品| 在线视频亚洲| 欧美日韩一级视频| 91久久精品一区| 99视频日韩| 欧美成人免费小视频| 亚洲国产欧美日韩精品| 亚洲精品视频在线看| 欧美激情第一页xxx| 国产日韩亚洲欧美综合| 欧美一级视频免费在线观看| 久久精品二区亚洲w码| 国语自产在线不卡| 亚洲第一综合天堂另类专| 久久野战av| 亚洲国产精品www| 一本不卡影院| 欧美视频一区二区三区在线观看| 日韩视频三区| 亚洲一区二区在线看| 国产精品国产自产拍高清av王其| 亚洲一区二区三区精品在线| 午夜激情综合网| 欧美三区不卡| 亚洲香蕉伊综合在人在线视看| 性久久久久久久久久久久| 国产欧美一区二区三区在线老狼 | 国产精品久久久久久久久搜平片| 国产精品99久久久久久白浆小说| 先锋影音国产精品| 国产欧美日韩中文字幕在线| 欧美资源在线观看| 免费在线看成人av| 亚洲精品国产拍免费91在线| 亚洲午夜精品网| 国产伦精品一区二区三| 久久国产精品99久久久久久老狼| 女女同性精品视频| 日韩亚洲不卡在线| 欧美在线观看你懂的| 好看的日韩av电影| 99热免费精品| 国产精品稀缺呦系列在线| 久久超碰97人人做人人爱| 欧美成人四级电影| 一区二区三区精品视频| 久久精品视频免费播放| 亚洲激情婷婷| 欧美一区二区啪啪| 亚洲第一页中文字幕| 亚洲一区免费看| 国自产拍偷拍福利精品免费一| 日韩视频三区| 国产日本欧美视频| 日韩亚洲精品在线| 国产精品一区二区三区四区五区 | 亚洲福利在线观看| 亚洲综合色丁香婷婷六月图片| 国产欧美日韩视频一区二区三区| 亚洲国产老妈| 国产精品久久精品日日| 久久精品视频在线| 欧美色精品天天在线观看视频 | 欧美视频在线观看一区| 欧美亚洲自偷自偷| 欧美国产日韩一区二区在线观看| 一区二区三区视频在线观看| 久久麻豆一区二区| 亚洲人成在线影院| 欧美在线在线| 最新亚洲视频| 亚洲影院免费观看| 激情懂色av一区av二区av| 亚洲性xxxx| 在线观看国产日韩| 欧美一区二区三区四区在线|