《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于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亚洲国产精品_日韩亚洲一区二区
久久精品九九| 亚洲视频一区在线观看| 99精品99| 亚洲国产导航| 一色屋精品亚洲香蕉网站| 国产情人节一区| 欧美视频成人| 欧美日韩综合久久| 欧美日韩欧美一区二区| 欧美激情在线播放| 欧美高清成人| 欧美国产精品中文字幕| 欧美成人性生活| 欧美福利电影在线观看| 你懂的成人av| 欧美激情国产日韩| 欧美精品v日韩精品v国产精品| 欧美激情按摩在线| 欧美激情一区二区三区| 欧美精品在线一区| 欧美日韩精品欧美日韩精品| 欧美电影免费观看高清| 欧美黄色一级视频| 欧美日韩国产在线播放网站| 欧美精品久久久久a| 欧美久久影院| 欧美亚洲第一页| 国产精品久久久久久久久久免费看 | 欧美一区二区三区精品| 欧美一级成年大片在线观看| 欧美一区二区国产| 久久国产日韩欧美| 久久视频在线免费观看| 你懂的一区二区| 欧美精品91| 国产精品草草| 国产日韩欧美在线观看| 国产在线不卡视频| 亚洲高清视频在线观看| 亚洲日本成人网| 亚洲一区二区在线视频| 欧美诱惑福利视频| 欧美日韩一区二区在线视频| 欧美国产精品专区| 欧美国产91| 国产精品高潮呻吟| 国产亚洲综合性久久久影院| 伊人久久av导航| 亚洲美女网站| 午夜精品亚洲一区二区三区嫩草| 亚洲第一福利视频| 一本色道久久综合亚洲精品不卡| 亚洲欧美日本国产专区一区| 久久久精彩视频| 欧美激情91| 国产麻豆91精品| 亚洲激情视频在线| 亚洲一区尤物| 91久久精品国产91性色| 亚洲性夜色噜噜噜7777| 久久久www成人免费无遮挡大片| 欧美成人小视频| 国产伦精品一区二区三区视频孕妇| 一色屋精品视频免费看| 在线视频精品一区| 亚洲电影观看| 午夜精品久久久久| 男女视频一区二区| 国产伦理精品不卡| 亚洲精品一区二区三区在线观看| 亚洲在线第一页| 日韩午夜三级在线| 久久九九久精品国产免费直播| 欧美理论片在线观看| 国产日韩精品入口| 亚洲精品一区在线| 欧美一区二区三区在线播放| 一区二区国产日产| 久久中文字幕一区| 国产精品美女在线| 亚洲人成高清| 欧美在线观看视频在线| 亚洲午夜免费视频| 欧美1区视频| 国产女主播一区| 亚洲美女在线一区| 91久久久久| 午夜精品久久久久影视| 欧美激情亚洲激情| 激情丁香综合| 亚洲综合精品四区| 中文日韩欧美| 欧美激情精品久久久久久免费印度 | 欧美一区三区三区高中清蜜桃| 欧美黑人在线播放| 精品91在线| 午夜精品久久久久久久蜜桃app | 鲁大师影院一区二区三区| 国产精品久久激情| 亚洲日韩视频| 亚洲激情视频在线| 久久超碰97人人做人人爱| 欧美日韩中文精品| 亚洲人成网站色ww在线| 亚洲国产成人不卡| 久久久久久日产精品| 国产精品视频免费观看| 日韩午夜在线观看视频| 亚洲精品国久久99热| 久久久高清一区二区三区| 国产精品人人爽人人做我的可爱| 日韩午夜电影| 日韩一区二区精品葵司在线| 美女成人午夜| 黄色成人av网站| 午夜欧美理论片| 欧美一级片在线播放| 国产精品午夜在线| 亚洲一区二区三区精品在线| 亚洲夜晚福利在线观看| 欧美日韩在线亚洲一区蜜芽| 亚洲久久一区| 亚洲一二三级电影| 国产精品v日韩精品v欧美精品网站 | 亚洲黄色一区二区三区| 亚洲日韩中文字幕在线播放| 免费久久99精品国产| 在线观看欧美日韩国产| 亚洲国产精品99久久久久久久久| 久久亚洲精品网站| 在线播放一区| 亚洲精美视频| 欧美顶级少妇做爰| 亚洲经典三级| 一区二区三区国产精华| 欧美日韩性视频在线| 这里只有精品在线播放| 亚洲在线一区二区| 国产日韩欧美成人| 久久精彩视频| 欧美成人午夜免费视在线看片| 亚洲三级影院| 亚洲在线观看视频网站| 国产精品视频九色porn| 欧美一区国产在线| 蜜臀av在线播放一区二区三区| 在线国产日韩| 一区二区日韩| 国产精品区一区二区三区| 午夜一区在线| 免费看亚洲片| aa级大片欧美| 久久福利资源站| 激情视频一区| 99精品欧美一区二区三区| 欧美涩涩视频| 午夜在线精品| 你懂的一区二区| 亚洲最新色图| 久久久精彩视频| 亚洲日本成人| 欧美一区二区三区啪啪| 韩国美女久久| 一本久久a久久免费精品不卡 | 欧美视频中文在线看| 亚洲欧美在线一区| 欧美成人精品在线播放| 夜夜嗨网站十八久久| 校园激情久久| 亚洲丰满在线| 亚洲在线一区二区| 一区二区在线视频| 在线亚洲伦理| 国内精品久久久久久 | 国产性做久久久久久| 亚洲欧洲三级电影| 国产精品超碰97尤物18| 欧美在线一级va免费观看| 欧美日本韩国一区| 午夜精品一区二区三区四区 | 欧美一区二区三区视频在线| 欧美国产日韩一区二区| 亚洲欧美日韩在线综合| 男男成人高潮片免费网站| 亚洲午夜激情免费视频| 久久综合中文字幕| 一个色综合导航| 久久在线免费观看视频| 在线视频中文亚洲| 免费观看日韩av| 午夜视频精品| 欧美日韩综合在线免费观看| 欧美在线视频导航| 欧美日韩亚洲91| 亚洲黄一区二区三区| 国产精品久久久亚洲一区| 亚洲日本电影| 国产一区在线看| 亚洲在线一区二区| 亚洲精品日本|