《電子技術應用》
您所在的位置:首頁 > 測試測量 > 設計應用 > UM-BUS總線測試系統中PCIe的設計與實現
UM-BUS總線測試系統中PCIe的設計與實現
2019年電子技術應用第5期
孫豐霞1,張偉功1,2,3,周繼芹3,王 瑩1
1.首都師范大學 信息工程學院,北京100048; 2.首都師范大學 北京成像技術高精尖創新中心,北京100048; 3.首都師范大學 高可靠嵌入式系統技術北京市工程技術研究中心,北京100048
摘要: UM-BUS總線單通道理論帶寬可達200 Mb/s,采用16通道并發傳輸時,理論帶寬可達400 MB/s,其測試系統需要在數據采集終端與PC之間建立不低于此帶寬的通信通道。PCIe1.1采用4通道傳輸時理論帶寬可達1 GB/s,滿足了UM-BUS總線測試系統的傳輸帶寬需求,由此設計實現了UM-BUS總線測試系統的PCIe1.1 x4鏈路通道的應用方案,給出了基于FPGA的PCIe總線的BMD傳輸方案。測試結果表明,該方案實際傳輸速度可達550 MB/s,滿足UM-BUS總線測試系統的帶寬需求。
中圖分類號: TN919;TP391
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.190034
中文引用格式: 孫豐霞,張偉功,周繼芹,等. UM-BUS總線測試系統中PCIe的設計與實現[J].電子技術應用,2019,45(5):61-65.
英文引用格式: Sun Fengxia,Zhang Weigong,Zhou Jiqin,et al. Design and implementation of PCIe on UM-BUS test system[J]. Application of Electronic Technique,2019,45(5):61-65.
Design and implementation of PCIe on UM-BUS test system
Sun Fengxia1,Zhang Weigong1,2,3,Zhou Jiqin3,Wang Ying1
1.School of Information Engineering,Capital Normal University,Beijing 100048,China; 2.Beijing Advanced Innovation Center for Image Technology,Capital Normal University,Beijing 100048,China; 3.Beijing Engineering Research Center of High Reliable Embedded System,Capital Normal University,Beijing 100048,China
Abstract: The single channel theoretical bandwidth of the UM-BUS can be up to 200 Mb/s. When 16 channels are used for concurrent transmission, the theoretical bandwidth can be up to 400 MB/s. So the test system needs to establish a communication channel of no less than this bandwidth between the data acquisition terminal and PC. In PCIe1.1, the theoretical bandwidth of the four channel transmission is up to 1 GB/s, which meets the transmission requirements of the UM-BUS test system. Thus, this paper realizes the application scheme of PCIe1.1 x4 link channel of UM-BUS bus test system, and gives the BMD transmission scheme of PCIe bus based on FPGA. The test result shows that the actual transmission speed of the scheme can reach 550 MB/s, which satisfies the bandwidth requirements of the UM-BUS bus test system.
Key words : UM-BUS;bus test system;PCIe bus;BMD;data communication

0 引言

    UM-BUS[1-2]總線是一種具有動態重構能力的高速串行總線。為了驗證UM-BUS總線在傳輸速率及帶寬靈活性方面的優勢,本文設計了一個UM-BUS測試系統[3],其功能是將采集的總線數據緩存到SDRAM存儲器中,并實現FPGA端SDRAM存儲器與PC的通信,將數據傳輸至PC進行分析和處理。

    鑒于PCIe1.1(PCI Express)采用點對點串行連接、全雙工的傳輸方式,并可根據實際需求靈活配置成x1、x4、x8和x16通道,單通道單向傳輸帶寬可達250 MB/s,本文采用PCIe1.1[4]x4通道,基于DMA[5-6](Direct Memory Access)傳輸機制共同實現了SDRAM存儲器與PC之間的通信傳輸設計。

1 研究背景

1.1 UM-BUS總線介紹

    UM-BUS總線采用多線路并發冗余的總線型拓撲結構,采用節點互連方式,最多可以連接30個總線節點設備,采用32條通道進行數據的并發傳輸,單通道速率可達200 Mb/s。其拓撲結果如圖1所示,其中n表示總線上的節點數,m表示物理通道數。

jsj1-t1.gif

1.2 UM-BUS總線測試系統介紹

    本文UM-BUS總線測試系統是針對采用16通道并發傳輸的UM-BUS總線而設計的,理論速率可達400 MB/s,滿足當前大多數測試和應用帶寬需求。為了將采集的高速總線數據傳輸到PC進行分析處理,完成測試功能需求,本文在UM-BUS總線測試系統中設計并實現了PCIe1.1技術。

    如圖2所示,在UM-BUS測試系統中,系統要求PC能夠對由數據采集模塊采集處理后的數據通過外部SDRAM存儲器進行緩沖,然后通過PCIe接口將數據傳輸至PC進行保存。目前UM-BUS總線數據采集模塊和高速緩存模塊設計已完成,本文重點是PCIe通信接口的設計與實現。

jsj1-t2.gif

2 PCIe通信接口設計

    為了更好地發揮PCIe總線的高帶寬優勢,本文采用Xilinx公司Virtex-5系列XC5VLX85T的FPGA來設計PCIe通信接口,通過其內部嵌入的PCIe IP硬核Endpoint Block Plus for PCI Express1.1[7]來實現。為了提高CPU的運行效率,引入DMA設計,本文采用總線主控DMA(BUS Master DMA,BMD)的方式控制PCIe IP硬核從而控制高速數據的傳輸。

3 硬件邏輯設計

    針對Xilinx公司XC5VLX85T PFGA,在Windows系統平臺下,以Xilinx的參考案例XAPP1052[8]為基礎,實現了PCIe總線的BMD功能邏輯設計。

    如圖3所示,BMD主要由以下五部分構成:

jsj1-t3.gif

    (1)PCIe IP硬核:對外與其他PCIe設備通信,對內與發送引擎和接收引擎進行數據傳輸。

    (2)設備控制模塊:接收通過接收引擎解析的數據,并將數據存儲在SDRAM中;將SDRAM中的數據讀出,供發送引擎組織TLP[9]包使用。為了匹配PCIe IP核和SDRAM兩側不同時鐘域、不同速率的數據緩沖和位寬轉換,設計了FIFO緩沖模塊。

    (3)寄存器控制模塊:解析來自PC的命令和配置,并通知發送引擎、接收引擎和設備控制模塊作出相應的執行操作。 

    (4)接收引擎模塊:接收并解析TLP包,根據TLP的包頭信息,將對應的數據寫入寄存器控制模塊的寄存器中,或者對接收到的存儲器讀TLP進行拆包。

    (5)發送引擎模塊:負責把待發送數據組織成TLP包,并傳送給PCIE IP核。

3.1 DMA傳輸的邏輯設計與實現

    DMA傳輸包括兩個過程,即DMA讀(PC端到FPGA端)和DMA寫(FPGA端到PC端)。

3.1.1 DMA讀設計與實現

    DMA讀操作包含兩個過程,發送引擎組裝DMA讀請求TLP并發送,接收引擎接收PC返回的CPLD TLP。

    本文在接收引擎中設置了4個TAG存儲器,每個TAG存儲器對應一個等待完成包的讀請求,TAG存儲器用來保存讀請求的設備訪問地址及長度,對每個讀請求,PC可能會用多個CPLD TLP來應答,當PC送來CPLD TLP時,接收引擎根據CPLD TLP中的TAG標識,查找對應的TAG存儲器,獲得設備側SDRAM的寫入地址。因此,當發送引擎發送讀請求TLP時,必須等待可用的TAG存儲器,并以可用的TAG存儲器編號作為讀請求的TAG標識。當對可用TAG進行優先級排除時,優先級設置為0、2、1、3,以下的程序片段為接收引擎中TAG空閑信號TAG_empty_o及TAG標號TAG_empty_Index優先級設置方法,其中TAG_Valid為接收引擎收到的TAG對應的TAG標識。

     jsj1-3.1.1-x1.gif

    為此設計的DMA讀操作如下所示:

    (1)發送DMA讀請求TLP

    ①共需要發送rmrd_count個DMA讀請求TLP, rmrd_count由軟件在寄存器控制模塊中設置。當接收引擎有空閑TAG時,發送DMA讀請求TLP的第一個64 bit,使用該空閑的TAG 編號TAG_empty_Index_i來作為TAG標識,即trn_rd[41:40]={TAG_empty_Index_i}。

    ②根據32 bit地址信息組裝DMA讀請求TLP的第二個64 bit并發送。

    (2)接收PC返回的CPLD TLP

    流程如圖4所示。

jsj1-t4.gif

    ①接收CPLD TLP的第一個64 bit,解析得到TLP包數據長度。

    ②當接收緩沖FIFO為空且收到的TAG標識有效時,將解析得到的數據寫入FIFO中進行緩存。

    ③接收CPLD TLP后續數據并將其寫入FIFO進行緩存。

    ④若是CPLD TLP傳輸完成,判斷接收到的數據長度。如若實際接收的數據長度與TLP包應傳輸長度一致,則當前CPLD TLP正確接收完成,清除TAG有效標識,此時TAG存儲器處于空閑狀態,可用于新的DMA讀請求。

3.1.2 DMA寫設計與實現

    DMA寫操作實現的主要方法是將TLP包頭中的各個字段正確填充,并將數據按照64 bit并行放在TLP包頭,傳輸給PCIe IP硬核,然后硬核以PCIe協議串行傳輸給PC。DMA寫操作在發送引擎中實現,操作流程如圖5所示。

jsj1-t5.gif

    (1)發送FIFO讀取SDRAM存儲器數據。當需要傳輸的數據量大于等于4 096 B時,傳輸數據量為4 096 B,否則傳輸數據量為SDRAM中剩余數據量。

    (2)若發送FIFO讀取數據完成,則發送DMA寫TLPs。

    ①設置TLP包計數值cur_wr_count,初始值為零:cur_wr_count<=cur_wr_count+1′b1,將DMA寫請求各字段填入TLP包頭的第一個64 bit中發送。

    ②將32 bit地址和第一個32 bit數據填入TLP包頭的第二個64 bit字發送。

    ③將每個TLP所需傳輸的數據填入TLP后續的64 bit字進行發送。

    (3)重復步驟(2),直至cur_wr_count達到所需傳輸TLP包個數設定值,DMA寫操作完成。

3.2 SDRAM控制模塊設計

    本文采用了片外擴展SDRAM存儲芯片,片內編寫SDRAM控制器的方式實現數據的緩存。采用兩片32 M×16 bit SDRAM,SDRAM存儲器只進行單端口數據操作,SDRAM控制器被設計成有左端口和右端口的雙口控制器,在邏輯上將控制器實現左端口輸入數據、右端口輸出數據的功能。雙口設計實現了數據傳輸方向的靈活控制。

    圖6是SDRAM控制邏輯的狀態機,其中S0和S2是等待命令狀態。S1表示經DMA讀方式緩存在接收緩沖FIFO的數據有寫入SDRAM的請求時,SDRAM控制器成為左口模式,數據存入SDRAM。S3表示有DMA寫請求,發送緩沖FIFO有讀取SDRAM數據請求時,SDRAM控制器成為右口模式,數據從SDRAM存儲器讀出后被傳輸到發送緩沖FIFO。

jsj1-t6.gif

4 軟件設計

    軟件設計包括驅動程序設計和應用軟件程序設計。

    本文PCIe驅動程序是在Windows 7操作系統下開發設計的,選用Jungo公司軟件WinDriver生成,極大地簡化了硬件驅動程序開發的工作量,具有極強的平臺移植性。WinDriver支持Xilinx的BMD模式,能夠根據硬件設備的描述自動產生設備驅動程序源代碼程序框架,用戶在Visual Studio2015下根據要實現的功能添加代碼,完成驅動程序的開發。

    應用軟件程序的開發則使用了Visual Studio2015,主要功能是測試直接訪問讀寫和DMA讀寫的正確性。在實現PCIe數據傳輸過程中,數據傳輸流程為:數據從PC內存通過PCIe接口以DMA讀的方式向下傳輸到FPGA內部發送緩存FIFO中,FPGA內部SDRAM控制邏輯再將數據傳輸到SDRAM存儲器中進行存儲,向下傳輸成功后,FPGA內部邏輯從SDRAM存儲器中將存儲的數據讀出,然后通過PCIe接口以DMA寫的方式將數據傳回PC內存,與原始數據進行比對校驗。

5 FPGA測試驗證

    為了對設計實現的PCIe接口進行測試驗證,需將硬件部分燒錄到板卡的FPGA芯片后,通過板卡的PCIe金手指插到PC的主板上,重啟PC,檢測到新的硬件插入后便可安裝相應的PCIe驅動文件,成功安裝后進行功能測試。

    上位機軟件界面如圖7所示,從圖中可以看到,測試包括DMA讀操作、DMA寫操作及寄存器讀寫操作,步驟如下:

jsj1-t7.gif

    (1)進行DMA讀操作,將所要傳輸的數據文件讀入PC機內存,然后寫入FPGA端;

    (2)進行DMA寫操作,FPGA通過DMA寫將數據寫回PC,并以文件的形式保存在PC上,PC對寫回的數據和初始數據進行校驗;

    (3)直接訪問操作,對指定地址的寄存器進行讀寫操作。

    在進行DMA讀寫操作過程中,同時通過ChipScope Analyzer工具捕獲各模塊的端口數據來驗證DMA讀寫操作過程中數據傳輸的正確性。以DMA讀為例,如圖8所示,接收引擎模塊從PCIe IP硬核接收信號trn_rd,解析得到有效數據,接收緩沖FIFO讀取其有效數據并輸出dout信號,SDRAM存儲器讀取信號SDR_Din并進行存儲。對比PC發送的原始數據和SDR_Din信號數據,得知DMA讀操作正確。從圖7軟件界面可知,DMA讀寫數據長度107 640 B,PC原始數據與經DMA讀寫兩個操作返回的數據全部一致,故而DMA讀寫正確。

jsj1-t8.gif

    經過多次測試,每次通信數據總量不少于100 GB,并未在DMA讀寫兩個通道中發現不一致的數據,沒有丟幀和誤碼現象。由此推算,PCIe通信數據誤碼率低于10-8

    DMA讀寫速度如表1所示。

jsj1-b1.gif

    在x4模式下,DMA的加入,寫速率提升了近9倍,讀速率提升了約10倍,并且PCIe總線的平均DMA讀寫速度穩定在500 MB/s以上,均超過16通道的總線測試系統的400 MB/s高速數據傳輸要求。

6 結論

    本文設計實現了UM-BUS總線測試系統中PCIe1.1 x4鏈路通道的應用方案,采用基于FPGA的PCIe總線的DMA數據傳輸方式解決了總線測試系統中PCIe通信接口模塊與PC間的高速數據傳輸問題,并完成了測試系統中的SDRAM高速緩存處理,最后結合WinDriver軟件對PCIe功能進行了測試。測試結果表明,PCIe總線的DMA讀寫速度穩定在500 MB/s以上,均超過UM-BUS總線16通道并發傳輸的總線測試系統的400 MB/s帶寬需求。

參考文獻

[1] 張偉功,周繼芹,李杰,等.UM-BUS總線及接入式體系結構[J].電子學報,2015,43(9):1776-1785.

[2] 鄧哲,張偉功,朱曉燕,等.動態可重構總線數據傳輸管理方法設計與實現[J].計算機工程,2013,39(1):264-269.

[3] 王春亮.基于UM-BUS系統的總線測試方案研究[D].北京:首都師范大學,2014.

[4] 王嘉良,趙曙光.用FPGA實現PCI-E接口和DMA控制器設計[J].計算機技術與發展,2011,21(6):181-184.

[5] 王之光,高清運.基于FPGA的PCIe總線接口的DMA控制器的設計[J].電子技術應用,2018,44(1):9-12.

[6] 李超,邱柯妮,張偉功,等.基于PCIE總線主模式DMA高速數據傳輸系統設計[J].電子技術應用,2015,41(9):142-145.

[7] Xilinx DS551.LogiCORE IP endpoint block plus v1.15 for PCI express[Z].2011.

[8] LAWLEY J.Bus master performance demonstration reference design for the Xilinx endpoint PCI express solutions[Z].USA:Xilinx,2015.

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



作者信息:

孫豐霞1,張偉功1,2,3,周繼芹3,王  瑩1

(1.首都師范大學 信息工程學院,北京100048;

2.首都師范大學 北京成像技術高精尖創新中心,北京100048;

3.首都師范大學 高可靠嵌入式系統技術北京市工程技術研究中心,北京100048)

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 免费黄色小视频在线观看 | 国产午夜精品视频 | 五月激情啪啪 | 中文字幕无线码欧美成人 | 午夜私人影院在线观看 视频 | 欧美在线一区二区三区 | 欧美乱一级在线观看 | 欧美人人做人人爽人人喊 | 午夜在线播放 | 瑟瑟网站免费网站入口 | 色香蕉在线 | 日韩在线aⅴ免费视频 | 一级毛片无遮挡免费全部 | 黄色一级免费片 | 午夜视频色 | 亚洲精品人成网在线播放影院 | h肉动漫无遮挡在线观看免费 | 日韩视 | 日韩一级欧美一级在线观看 | 久久成年视频 | 成年免费在线观看 | 亚洲欧美四级在线播放 | 小明www永久免费播放平台 | 免费日韩 | 日韩欧美国产高清在线观看 | 日韩激情影院莉莉 | 日韩免费一区二区三区在线 | 亚洲国产精品久久久天堂 | 黄色免费看看 | 精品国产欧美一区二区三区成人 | 国产精品久久久久久久久久直 | 在线日韩国产 | 色网站免费视频 | 国产成人不卡亚洲精品91 | 五月开心六月伊人色婷婷 | 日韩欧美在线中文字幕 | 天天靠天天擦天天摸 | 亚洲欧美日韩一区二区在线观看 | 欧美爆操| 黄网站在线观看永久免费 | 午夜在线亚洲 |