999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于PCIE總線的DMA控制器設計與實現

2018-05-23 01:17:29何廣亮
網絡安全與數據管理 2018年4期

何廣亮

(中國空空導彈研究院,河南 洛陽 471000)

0 引言

在信號與信息處理領域,數據采集技術發揮著至關重要的作用,而高速數據傳輸技術是數據采集系統中的關鍵部分。隨著信息處理技術的發展,傳統的數據采集設備已經很難滿足高帶寬、大容量和高實時性的數據處理需求,數據的高速傳輸技術也成為制約數據采集系統性能的重要因素。

PCIE在高速數據采集和傳輸系統中具有顯著的優勢,本文設計實現了一種基于PCIE總線的DMA控制器,實現了FPGA板卡與PC之間的通信,滿足了高速實時采集、傳輸數據的要求。

1 PCIE概述

1.1 PCIE簡介

PCIE是PCI Express的簡稱,是計算機PCI總線的擴展接口。它沿用了現有的PCI通信標準及編程概念,是更快的串行通信總線。PCIE作為第三代I/O總線,比第一代總線(ISA/VISA/EISA 等)和第二代總線(PCI/AGP/PCI-X)具有更高的速率和更好的兼容性[1]。目前共有3個版本的PCIE規范,分別為1.0、2.0和3.0。1.0和2.0規范在物理層中使用8 B/10 B編碼,而3.0規范使用128/130 B編碼。1.0、2.0和3.0的單Lane峰值帶寬分別為2.5 GT/s、5 GT/s和8 GT/s,實際的傳輸速率分別為2 GT/s、4 GT/s和8 GT/s。

1.2 PCIE總線的層次結構

PCIE總線采用分層結構,如圖1所示。PCIE總線由物理層、數據鏈路層和事務層組成,各層又都分為發送模塊和接收模塊[2]。

圖1 PCIE總線的層次結構

在發送部分,首先在事務層形成事務層包(TLP),并把TLP儲存在發送緩沖器中,等待向下層發送。這些TLP是根據來自設備核和應用程序的信息生成的;在數據鏈路層中,在TLP上添加一些附加信息,這些信息用來使對方在接收TLP時進行錯誤檢查;在物理層,對TLP進行編碼,然后從差分發送器發送出去[3]。

在設備的接收部分,物理層對接收的TLP進行譯碼,并將譯碼結果發往數據鏈路層;數據鏈路層對物理層發送來的TLP進行錯誤檢查,若沒有錯誤,則將該包發往事務層;事務層將TLP內信息轉換為能由設備核和應用程序處理的表達形式,然后放入接收緩沖器[4]。

1.3 PCIE事務層數據包

TLP的基本格式如圖2所示[5]。

圖2 TLP的基本格式

完整的TLP由一個或多個TLP Prefix、TLP頭部、Data Payload(數據有效載荷)和Digest組成。TLP頭部是TLP最重要的標志,頭部包含了TLP的總線事務類型、路由信息等一系列信息,其通用TLP頭格式如圖3所示。數據有效載荷是TLP攜帶的數據,最小為0,最大為1 024 DW。Digest值是基于頭標、數據載荷字段計算出來的CRC。Digest是可選項,由TLP頭決定是否需要Digest。

圖3 通用TLP包頭格式

Fmt和Type字段決定當前TLP使用的總線事務、TLP頭部的長度、TLP是否包含數據[6]。TC字段表示流量類別;TD字段表示是否存在Digest;EP字段表示中毒數據。Attr字段表示屬性位,位5為1表示靈活的順序,為0表示緊湊的順序;位4為1表示不偵測,為0表示偵測。Length字段表示數據有效負載的大小,以雙字DW為單位,最小為0,最大為1 024 DW;First和Last DW BE字段分別表示數據有效負載的第一個和最后一個雙字對應的字節是否有效。

2 DMA控制器實現方案

PCIE總線高速數據傳輸接口主要包括PCIE IP核和DMA控制模塊。PCIE IP核直接在ISE中調用,用來實現PCIE的物理層和數據鏈路層。DMA模塊主要實現了PCIE的事務層、中斷機制和與上位機的通信。這兩個模塊之間的連接主要通過事務層之間的接口來完成。

2.1 Virtex-6 PCIE IP核

Xilinx公司提供了PCIE IP核(Virtex-6 FPGA Integrated Block for PCI Express)來解決PFGA與PC的通信問題,Virtex-6 FPGA 的PCIE嵌入式塊是嵌入在ISE 中,通過調用ISE 中的CORE Generator 來使用的[7]。PCIE集成塊的結構如圖4所示,通過配置模塊、使用和連接接口,可以通過該IP 核在系統中實現PCIE 通信接口。

圖4 PCIE集成塊結構圖

2.2 DMA控制器結構

DMA控制器結構框圖如圖5所示。

圖5 DMA結構圖

發送模塊用于生成和發送事務層數據包,包括存儲器讀請求包(MRd)、存儲器寫請求包(MWr)和完成包(CplD)。該模塊通過接收由其他模塊傳來的信號發送對應的TLP包。PCIE模塊的事務接口發送相關信號到該模塊上。

接收模塊從IP核接收TLP數據包,可以接收完成(CplD)、存儲器寫(MWr)和存儲器讀(MRd)這3種類型的TLP包。接收模塊接收到相應類型的TLP后,提取其中信息,發送給不同的模塊。

DMA控制/狀態寄存器(DMA Control/Status Register)用于主機系統通過控制FPGA內部的寄存器文件的設置來啟動和停止端點到根復合體的DMA讀寫操作。包括一個控制寄存器以及若干個配置寄存器,配置寄存器有主機的目的地址、源地址信息,本地的目的地址、源地址信息,以及每次DMA的數據包長度等信息。

中斷主要是通過一個32位的DMA中斷寄存器來實現。在此32位中,共包含3個有效位:位1表示DDR3[8]緩存4 MB數據已滿,位2表示DMA寫完成,位3表示DMA讀完成。

3 功能單元設計

3.1 發送模塊

此模塊主要完成TLP包的打包發送工作。PC端上位機首先發起DMA讀寫請求,PCIE 板卡在DMA狀態寄存器讀到這些信號后,主動發起DMA讀寫請求,這個過程需要與接收模塊、中斷模塊和DMA控制狀態寄存器的配合才能完成。發送狀態機模塊設計如圖6所示。

圖6 發送模塊時序圖

發送模塊主要由14個狀態機實現,如圖7所示。下面對每個狀態的含義和跳轉條件進行說明。

圖7 發送模塊狀態機

IDLE:系統復位狀態。

GET_P_HD:當存儲器寫請求頭部生成并進入相應的FIFO時,進入此狀態。無條件進入SETUP_P_DATA狀態。

SETUP_P_DATA:向數據轉換模塊發出請求信號,若此時有數據則進入WAIT_FOR_DATA_RDY狀態;無數據則停留在原狀態。

WAIT_FOR_DATA_RDT:若數據準備好,進入HD1_P_XFER狀態,否則停留在原狀態。

HD1_P_XFER:從相應FIFO中讀取DMA寫請求TLP包頭部前兩個DW進行發送,進入HD2_P_XFER。

HD2_P_XFER:從相應FIFO中讀取DMA寫請求TLP包頭部第三個DW,加上第一個DW數據進行發送,進入DATA_P_XFER狀態。

DATA_P_XFER:將數據填入存儲器寫TLP進行發送。當還剩余一個周期的數據需要發送時,進入LAST_P_XFER狀態。

LAST_P_XFER:若DMA寫請求終止,則進入IDLE狀態;若TLP中填充的字節數等于配置的TLP大小,則進入HD1_P_XFER狀態;若TLP中填入的字節數小于配置的TLP大小,則進入WAIT_FOR_DATA_RDY狀態。

GET_NP_HD:當存儲器讀請求頭部生成并進入相應的FIFO時,進入此狀態。無條件進入HD1_NP_XFER狀態。

HD1_NP_XFER:從相應FIFO中讀取存儲器讀請求TLP包頭部前兩個DW進行發送,進入HD2_NP_XFER狀態。

HD2_NP_XFER:從相應FIFO中讀取存儲器讀請求TLP包頭部第三個DW,并加上32 bit數據進行發送。若發送存儲器讀請求的TLP個數等于DMA分塊后的TLP個數,則進入IDLE狀態;若發送存儲器讀請求的TLP個數小于DMA分塊后的TLP個數,則進入HD1_NP_XFER狀態。

GET_COMP_HD:當完成包頭部生成并進入相應的FIFO時,進入此狀態,無條件進入HD1_COMP_XFER。

HD1_COMP_XFER:從相應FIFO中讀取完成TLP包頭部前兩個DW,進行發送,進入HD2_COMP_XFER狀態。

HD2_COMP_XFER:從相應FIFO中讀取完成TLP包頭部第三個DW,并加上32 bit數據進行發送。然后進入IDLE狀態。

3.2 接收模塊

接收模塊對接收到的TLP包進行解析,提取TLP包中的有效數據。接收時序如圖8所示。

圖8 接收模塊時序圖

接收模塊主要由7個狀態機實現,如圖9所示。下面對各個狀態含義與跳轉條件進行簡要說明。

IDLE:初始狀態。當接收到數據第一個周期時,提取信息,判斷此TLP包是何種類型的包,如果是存儲器寫請求則跳轉到MWr狀態;如果是存儲器讀請求則跳轉到MRd狀態;如果是帶有數據的完成包,則跳轉到CplD狀態。

MWr:分析存儲器寫請求包的第二個周期數據,將其中的32 bit地址和32 bit數據提取出來,之后進入初始狀態。

MRd:分析存儲器讀請求第一個周期數據,將其中的Attr、Request ID和Tag等字段信息發往發送模塊,由發送模塊組裝完成包以回應此請求。之后進入GET_MRd_MSG狀態。

GET_MRd_MSG:分析存儲器讀請求第二個周期數據,將其中32 bit地址提取出來進行緩存,然后進入初始狀態。

CplD:將完成包第二個周期中32 bit數據提取出來,然后進入CplD_DATA狀態。

CplD_DATA:提取完成包中的剩余數據,提取完畢后進入WAIT狀態。

WAIT:由FPGA發起的存儲器讀請求PC端回應完畢,將相關信號置0,進入初始狀態。

3.3 DMA 控制狀態寄存器設計

在PCIE的BAR0空間映射著DMA寄存器,負責與 PC 進行數據傳輸。PCI 總線域的地址存放在BAR0 空間,內存地址到 PCI 總線地址的轉換由根聯合體 RC處理,PC操作BAR空間實際上是通過操作內存中BAR0對應的地址來完成的。在數據傳輸過程中,PC若想控制DMA傳輸的狀態,只能通過讀寫BAR0空間來完成。在PC啟動DMA之前,需要配置DMA 狀態控制寄存器,包括使能DMA中斷、使能DMA讀寫開始信號,填寫DMA源地址、目的地址和DMA傳輸長度。DMA 啟動后,通過讀取dmacst寄存器查看 DMA 傳輸狀態。然后等待中斷,清除中斷,轉移數據,之后本次 DMA 請求結束。

3.4 中斷設計

在FPGA邏輯端,中斷主要是通過一個32位的DMA中斷寄存器來實現的。中斷設計流程圖如圖10所示。

圖10 中斷模塊流程圖

中斷描述:在發送數據時,一次寫DMA完成4 MB數據的傳送,當DDR3緩存4 MB數據時,就向PC端上位機發一個中斷,PC端發起寫DMA操作,FPGA端接收到此命令后,發起DMA寫操作,每次DMA寫操作完成512 KB數據的傳送,并向PC端發送一個DMA寫完成中斷,相當于一次寫DMA操作完成8次DMA寫操作。接收數據時,PC端首先發起讀DMA操作,FPGA端接收到此命令后,發起DMA讀操作請求,PC端發送帶數據的完成包來回應此請求,每次DMA讀操作完成512 KB數據的接收,接收完后向PC端發送一個DMA讀完成中斷。

4 系統驗證與測試

PCIE讀寫速率測試環境主要由存儲服務器主機(PC)、陣列控制器和固態硬盤組成,如圖11所示。

圖11 測試環境組成

4.1 PCIE寫速率測試

寫操作DMA連續循環緩沖區大小為16 MB,每次DMA寫操作傳輸大小為4 MB。測試在DMA寫操作的基礎上加上寫磁盤陣列存儲操作,單次操作數據量為4 MB,經PCIE的DMA寫入存儲服務器內存,再由內存寫入磁盤陣列。操作計時由收到FPGA發起的通道數據FIFO滿中斷開始,直到4 MB數據全部寫入磁盤后結束。操作時間采用計算CPU計數間隔精確計算,精度為微秒級。圖12為測試部分結果,測試結果為由累計200次操作總時間換算得出的平均操作速率。

圖12 DMA寫速率測試

從圖12可以看出,存儲服務器存儲操作的帶寬在950 MB/s左右,約7.42 Gb/s。

4.2 PCIE讀速率測試

此測試在讀磁盤陣列的基礎上加上DMA讀操作,單次操作數據量為0.5 MB,經過磁盤陣列讀入存儲服務器內存,再由內存讀入PCIE的DMA中,即FPGA中。操作計時由上位機發起讀操作開始,直到0.5 MB數據全部進入FPGA內部后結束。部分測試結果如圖13所示。

圖13 DMA讀速率測試

從圖13可以看出,PCIE讀操作的的帶寬在850 MB/s左右,約6.8 Gb/s。

5 結論

本文設計的PCIE總線DMA控制器,與PC通信時收發速率均可達到6 Gb/s以上,滿足了數據采集設備高帶寬、大容量和高實時性的數據處理需求,具有一定的工程實踐意義。

參考文獻

[1] 張彪, 宋紅軍, 劉霖, 等. 基于PCIE接口的高速數據傳輸系統設計 [J]. 電子測量技術, 2015, 38(10): 113-117.

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

[3] CRONE G, VOLPE D D, GORINI B, et al. The ATLAS readout system—performance with first data and perspective for the future[J]. Nuclear Instruments and Methods in Physics Research, 2010,623(1):534-536.

[4] DHAWAN S K. Introduction to PCI express-a new high speed serial data bus[C]. Nuclear Science Symposium Conference Record, IEEE,2005: 687-691.

[5] 張鵬泉,褚孝鵬,曹曉冬,等. 基于FPGA的PCIE總線DMA傳輸的實現[J]. 電子測試, 2016(21):4-6.

[6] 周立國, 梁淮寧, 謝冬冬, 等. 基于PCI Express總線的數據傳輸卡的設計與實現 [J]. 電子測量技術, 2007, 30(11): 28-31,39.

[7] 王薇. 基于FPGA的數據采集與處理系統研究[J].電子設計工程,2015(16):36-38.

[8] 潘一飛,余海. 基于FPGA的DDR3用戶接口設計[J].電子制作,2013(15):9-11.

主站蜘蛛池模板: 国产麻豆福利av在线播放| 中文国产成人精品久久一| 国产一区二区三区在线精品专区| 国产v精品成人免费视频71pao| 亚洲精品国产综合99久久夜夜嗨| 国产黄网站在线观看| 欧美成一级| 1级黄色毛片| 97综合久久| 久久人搡人人玩人妻精品| 亚洲性一区| 一级一毛片a级毛片| 激情综合网址| 中文字幕无码中文字幕有码在线 | 成人免费午间影院在线观看| 亚洲一区二区在线无码| 欧美成人区| 国产成人永久免费视频| 成·人免费午夜无码视频在线观看 | 久草中文网| 无码人妻热线精品视频| 91视频免费观看网站| 22sihu国产精品视频影视资讯| 国产91丝袜在线播放动漫| 欧美国产菊爆免费观看| 天天综合网色中文字幕| 精品国产女同疯狂摩擦2| 国产精品永久久久久| 亚洲欧美人成人让影院| 欧美丝袜高跟鞋一区二区| 亚洲成人77777| 99精品国产电影| 久久情精品国产品免费| 国产欧美性爱网| 国产专区综合另类日韩一区| 爱色欧美亚洲综合图区| 亚洲品质国产精品无码| 亚洲日韩国产精品综合在线观看| 久久久四虎成人永久免费网站| 中文字幕人妻av一区二区| 国产成人无码AV在线播放动漫 | 中文字幕乱妇无码AV在线| 亚洲人成色77777在线观看| 五月六月伊人狠狠丁香网| 欧美日韩免费观看| 国产精品太粉嫩高中在线观看 | 久久久精品国产SM调教网站| 国产精品亚洲片在线va| 日日拍夜夜操| 制服无码网站| 成年午夜精品久久精品| 国产小视频a在线观看| 色综合色国产热无码一| 精品少妇三级亚洲| 亚洲中久无码永久在线观看软件 | 99re66精品视频在线观看| 99在线观看国产| 日韩天堂视频| 亚洲视频在线青青| 五月天天天色| 亚洲AV无码乱码在线观看代蜜桃| 亚洲国产高清精品线久久| 五月丁香伊人啪啪手机免费观看| 国产av色站网站| 国产无码高清视频不卡| 国产成人区在线观看视频| 久草中文网| 国产精品页| 一级黄色网站在线免费看| 亚洲中文精品人人永久免费| 国产熟女一级毛片| 麻豆国产在线不卡一区二区| 二级特黄绝大片免费视频大片| 亚洲首页在线观看| 亚洲国产成人综合精品2020| 毛片基地视频| 欧美天天干| 久久国产精品影院| 男女性色大片免费网站| 激情综合五月网| 麻豆AV网站免费进入| 狠狠色丁香婷婷综合|