亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于PCIE總線的DMA控制器設計與實現(xiàn)

        2018-05-23 01:17:29何廣亮

        何廣亮

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

        0 引言

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

        PCIE在高速數(shù)據(jù)采集和傳輸系統(tǒng)中具有顯著的優(yōu)勢,本文設計實現(xiàn)了一種基于PCIE總線的DMA控制器,實現(xiàn)了FPGA板卡與PC之間的通信,滿足了高速實時采集、傳輸數(shù)據(jù)的要求。

        1 PCIE概述

        1.1 PCIE簡介

        PCIE是PCI Express的簡稱,是計算機PCI總線的擴展接口。它沿用了現(xiàn)有的PCI通信標準及編程概念,是更快的串行通信總線。PCIE作為第三代I/O總線,比第一代總線(ISA/VISA/EISA 等)和第二代總線(PCI/AGP/PCI-X)具有更高的速率和更好的兼容性[1]。目前共有3個版本的PCIE規(guī)范,分別為1.0、2.0和3.0。1.0和2.0規(guī)范在物理層中使用8 B/10 B編碼,而3.0規(guī)范使用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總線由物理層、數(shù)據(jù)鏈路層和事務層組成,各層又都分為發(fā)送模塊和接收模塊[2]。

        圖1 PCIE總線的層次結構

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

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

        1.3 PCIE事務層數(shù)據(jù)包

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

        圖2 TLP的基本格式

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

        圖3 通用TLP包頭格式

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

        2 DMA控制器實現(xiàn)方案

        PCIE總線高速數(shù)據(jù)傳輸接口主要包括PCIE IP核和DMA控制模塊。PCIE IP核直接在ISE中調用,用來實現(xiàn)PCIE的物理層和數(shù)據(jù)鏈路層。DMA模塊主要實現(xiàn)了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 核在系統(tǒng)中實現(xiàn)PCIE 通信接口。

        圖4 PCIE集成塊結構圖

        2.2 DMA控制器結構

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

        圖5 DMA結構圖

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

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

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

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

        3 功能單元設計

        3.1 發(fā)送模塊

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

        圖6 發(fā)送模塊時序圖

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

        圖7 發(fā)送模塊狀態(tài)機

        IDLE:系統(tǒng)復位狀態(tài)。

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

        SETUP_P_DATA:向數(shù)據(jù)轉換模塊發(fā)出請求信號,若此時有數(shù)據(jù)則進入WAIT_FOR_DATA_RDY狀態(tài);無數(shù)據(jù)則停留在原狀態(tài)。

        WAIT_FOR_DATA_RDT:若數(shù)據(jù)準備好,進入HD1_P_XFER狀態(tài),否則停留在原狀態(tài)。

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

        HD2_P_XFER:從相應FIFO中讀取DMA寫請求TLP包頭部第三個DW,加上第一個DW數(shù)據(jù)進行發(fā)送,進入DATA_P_XFER狀態(tài)。

        DATA_P_XFER:將數(shù)據(jù)填入存儲器寫TLP進行發(fā)送。當還剩余一個周期的數(shù)據(jù)需要發(fā)送時,進入LAST_P_XFER狀態(tài)。

        LAST_P_XFER:若DMA寫請求終止,則進入IDLE狀態(tài);若TLP中填充的字節(jié)數(shù)等于配置的TLP大小,則進入HD1_P_XFER狀態(tài);若TLP中填入的字節(jié)數(shù)小于配置的TLP大小,則進入WAIT_FOR_DATA_RDY狀態(tài)。

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

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

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

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

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

        HD2_COMP_XFER:從相應FIFO中讀取完成TLP包頭部第三個DW,并加上32 bit數(shù)據(jù)進行發(fā)送。然后進入IDLE狀態(tài)。

        3.2 接收模塊

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

        圖8 接收模塊時序圖

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

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

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

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

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

        CplD:將完成包第二個周期中32 bit數(shù)據(jù)提取出來,然后進入CplD_DATA狀態(tài)。

        CplD_DATA:提取完成包中的剩余數(shù)據(jù),提取完畢后進入WAIT狀態(tài)。

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

        3.3 DMA 控制狀態(tài)寄存器設計

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

        3.4 中斷設計

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

        圖10 中斷模塊流程圖

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

        4 系統(tǒng)驗證與測試

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

        圖11 測試環(huán)境組成

        4.1 PCIE寫速率測試

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

        圖12 DMA寫速率測試

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

        4.2 PCIE讀速率測試

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

        圖13 DMA讀速率測試

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

        5 結論

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

        參考文獻

        [1] 張彪, 宋紅軍, 劉霖, 等. 基于PCIE接口的高速數(shù)據(jù)傳輸系統(tǒng)設計 [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傳輸?shù)膶崿F(xiàn)[J]. 電子測試, 2016(21):4-6.

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

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

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

        中文字幕日本在线乱码| 四虎影院在线观看| 美国黄色片一区二区三区| 伊人久久婷婷综合五月97色| 大香蕉国产av一区二区三区| 大学生高潮无套内谢视频| 狼色精品人妻在线视频| 精品久久综合一区二区| 一级a免费高清免在线| 校园春色综合久久精品中文字幕| 欧美人伦禁忌dvd放荡欲情 | 乱人伦人妻中文字幕无码| 美腿丝袜中文字幕在线观看| 美腿丝袜在线一区二区| 亚洲欧美国产国产综合一区| 无码丰满少妇2在线观看| 人人妻人人澡av| 亚洲一区二区三区av资源| 猫咪av成人永久网站在线观看| 欧美真人性做爰一二区| 国产精品nv在线观看| 华人在线视频精品在线| 免费a级毛片无码av| 俺也去色官网| 中文字幕精品永久在线| 日本免费在线一区二区三区| 国产女人高潮叫床免费视频 | 亚洲色AV天天天天天天| 国产老熟女伦老熟妇露脸 | 日韩女优视频网站一区二区三区 | av在线天堂国产一区| 少妇人妻在线无码天堂视频网| 精品久久久久久久久久久aⅴ| 风流少妇一区二区三区| 校园春色人妻激情高清中文字幕| 俄罗斯老熟妇色xxxx| 国内精品一区二区2021在线| 亚洲一区在线二区三区| 放荡的少妇2欧美版| 久久无码人妻一区二区三区午夜 | 亚洲va中文字幕|