• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于PCIe的高速接口設(shè)計(jì)*

      2016-04-13 09:52:31李曉寧姚遠(yuǎn)程秦明偉
      關(guān)鍵詞:PC機(jī)存儲(chǔ)器寄存器

      李曉寧,姚遠(yuǎn)程,秦明偉

      (西南科技大學(xué) 信息工程學(xué)院 特殊環(huán)境機(jī)器人技術(shù)四川省重點(diǎn)實(shí)驗(yàn)室, 四川 綿陽 621010)

      基于PCIe的高速接口設(shè)計(jì)*

      李曉寧,姚遠(yuǎn)程,秦明偉

      (西南科技大學(xué) 信息工程學(xué)院 特殊環(huán)境機(jī)器人技術(shù)四川省重點(diǎn)實(shí)驗(yàn)室, 四川 綿陽 621010)

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

      PCI-Express總線;FPGA;DMA

      0 引言

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

      1 PCIe總線的簡(jiǎn)介

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

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

      圖1 系統(tǒng)總體結(jié)構(gòu)

      2 PCIe接口及應(yīng)用層設(shè)計(jì)

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

      圖2 PCIe IP核頂層模塊和接口

      圖4 存儲(chǔ)器讀寫請(qǐng)求報(bào)文頭格式

      用戶邏輯接口:該接口為用戶設(shè)計(jì)提供一個(gè)產(chǎn)生和消耗TLPs的機(jī)制;

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

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

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

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

      3 DMA控制器的設(shè)計(jì)與實(shí)現(xiàn)

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

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

      3.1 TLP數(shù)據(jù)包結(jié)構(gòu)

      PCIe總線以數(shù)據(jù)包形式傳送信息,本設(shè)計(jì)主要關(guān)注事務(wù)層數(shù)據(jù)包TLP。一個(gè)完整的TLP如圖3所示,其中只有TLP頭和數(shù)據(jù)有效負(fù)載需要由用戶使用FPGA程序?qū)崿F(xiàn),其他都由PCIe核自動(dòng)生成并加到幀結(jié)構(gòu)中[6]。

      圖3 TLP數(shù)據(jù)包格式

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

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

      3.2 DMA操作寄存器的定義

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

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

      (2)偏移地址0x04是中斷服務(wù)寄存器。當(dāng)DMA數(shù)據(jù)包傳輸完畢時(shí),寫0x01到該寄存器,產(chǎn)生一個(gè)中斷,上位機(jī)會(huì)進(jìn)入中斷服務(wù)進(jìn)程。

      (3)偏移地址0x08是DMA傳輸?shù)哪康牡刂?。該目的地址是PC機(jī)端的內(nèi)存首地址。DMA傳輸開始之前,將該地址寫到該偏移地址。當(dāng)DMA操作時(shí),將FPGA板卡上的數(shù)據(jù)傳到PC機(jī)端該地址處。

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

      3.3 DMA控制器

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

      Tx Engine和Rx Engine是使用狀態(tài)機(jī)來設(shè)計(jì)的,Rx Engine狀態(tài)轉(zhuǎn)移圖如圖5所示。

      圖5 Rx Engine狀態(tài)轉(zhuǎn)換圖

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

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

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

      圖6 Tx Engine 狀態(tài)轉(zhuǎn)換圖

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

      其中DCR1和DCR2是設(shè)備控制寄存器,控制選擇FPGA型號(hào)、接口數(shù)據(jù)帶寬、讀/寫DMA開始/結(jié)束以及中斷服務(wù)的開啟。WDMATLPA是寫DMA的TLP低32位地址

      表1 寫DMA操作步驟

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

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

      4 仿真及測(cè)試結(jié)果

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

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

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

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

      圖7 DMA寫過程仿真圖

      圖8 DMA讀過程仿真圖

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

      實(shí)驗(yàn)結(jié)果可得,DMA寫數(shù)據(jù)的速率可達(dá)1.5 GB/s,讀數(shù)據(jù)的速率可達(dá)1.47 GB/s,數(shù)據(jù)速率有大幅的提高。

      5 結(jié)論

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

      [1] 王齊.PCI Express 體系結(jié)構(gòu)導(dǎo)讀[M].北京:機(jī)械工業(yè)出版社,2010.

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

      [3] 魏蕓.基于FPGA的PCIe總線DMA平臺(tái)設(shè)計(jì)[D].武漢:武漢理工大學(xué),2013.

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

      [5] LogiCORETMIP Virtex-6 FPGA Integrated Block Data Sheet[R].Xilinx,2009.

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

      Design of high-speed interface based on PCIe

      Li Xiaoning,Yao Yuancheng, Qin Mingwei

      (Robot Technology Used for Special Environment Key Laboratory of Sichuan Province,College of Information Engineering, Southwest University of Science and Technology, Mianyang 621010, China)

      PCIe bus is the representative of the third-generation I/O bus, which provides high-performance, high-speed, point to point serial connection, supports single duplex transmission, interconnects devices using differential.This bus was designed using Xilinx’s Virtex-6 FPGA platform and PC.In order to achieve high-speed communication between the FPGA and the CPU, we developed DMA data transmission platform of PCIe bus based on IP core.Software simulation and hardware tests show that the interface design costs low , transmission rate can reach 1.5 Gb/s, this design platform can meet the requirements of the rate.

      PCI-Express ;FPGA;DMA

      西南科技大學(xué)研究生創(chuàng)新基金資助項(xiàng)目(14ycxjj0112)

      TP303

      A

      1674-7720(2016)01-0027-03

      李曉寧,姚遠(yuǎn)程,秦明偉.基于PCIe的高速接口設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2016,35(1):27-29,32.

      2015-10-15)

      李曉寧(1989-),女,碩士,主要研究方向:通信技術(shù)相關(guān)領(lǐng)域研究。

      姚遠(yuǎn)程(1962-),男,教授,主要研究方向:數(shù)傳及抗干擾技術(shù)研究。

      秦明偉(1979-),男,博士,副教授,主要研究方向:通信技術(shù)相關(guān)領(lǐng)域研究。

      猜你喜歡
      PC機(jī)存儲(chǔ)器寄存器
      靜態(tài)隨機(jī)存儲(chǔ)器在軌自檢算法
      Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
      基于PC機(jī)與單片機(jī)的多機(jī)通信技術(shù)及抗干擾方法
      基于三菱FXPLC的感應(yīng)淬火機(jī)床與PC機(jī)的串行通信實(shí)現(xiàn)
      分簇結(jié)構(gòu)向量寄存器分配策略研究*
      VC.NET下實(shí)現(xiàn)dsPIC單片機(jī)與PC機(jī)的通信
      電子制作(2017年23期)2017-02-02 07:16:47
      存儲(chǔ)器——安格爾(墨西哥)▲
      基于Nand Flash的高速存儲(chǔ)器結(jié)構(gòu)設(shè)計(jì)
      高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
      一種可重構(gòu)線性反饋移位寄存器設(shè)計(jì)
      克拉玛依市| 洛宁县| 海原县| 洪湖市| 稻城县| 兴文县| 定兴县| 高邑县| 广昌县| 济阳县| 洛川县| 张家口市| 怀宁县| 江津市| 连南| 如皋市| 长垣县| 巨野县| 玉环县| 高阳县| 瓮安县| 屯门区| 嘉义县| 霍州市| 苏尼特右旗| 新蔡县| 友谊县| 六安市| 三明市| 勃利县| 闽清县| 重庆市| 陆河县| 睢宁县| 故城县| 武功县| 榆林市| 海南省| 金寨县| 石楼县| 定西市|