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

        ?

        PCI Express總線接口的DMA傳輸設(shè)計①

        2017-10-20 03:09:18王紅志姚愷豐
        計算機系統(tǒng)應(yīng)用 2017年10期
        關(guān)鍵詞:狀態(tài)機存儲器寄存器

        王紅志 ,王 超 ,欒 勇 ,姚愷豐

        1(中國科學(xué)院大學(xué),北京 100049)2(中國科學(xué)院 沈陽計算技術(shù)研究所 高檔數(shù)控國家工程研究中心,沈陽 110168)3(沈陽高精數(shù)控智能技術(shù)股份有限公司,沈陽 110168)4(國家電網(wǎng)公司東北分部電力調(diào)控分中心,沈陽 110180)

        PCI Express總線接口的DMA傳輸設(shè)計①

        王紅志1,2,王 超2,3,欒 勇2,3,姚愷豐4

        1(中國科學(xué)院大學(xué),北京 100049)2(中國科學(xué)院 沈陽計算技術(shù)研究所 高檔數(shù)控國家工程研究中心,沈陽 110168)3(沈陽高精數(shù)控智能技術(shù)股份有限公司,沈陽 110168)4(國家電網(wǎng)公司東北分部電力調(diào)控分中心,沈陽 110180)

        在認真理解PCI Express協(xié)議及其應(yīng)用技術(shù)的此基礎(chǔ)上,使用FPGA實現(xiàn)PCI Express總線接口的DMA傳輸設(shè)計.本文主要從DMA發(fā)送模塊、DMA接收模塊和DMA狀態(tài)控制模塊三個部分對設(shè)計進行詳細的介紹.最后,在基于Linux系統(tǒng)的PC機中實現(xiàn)PCI-E的驅(qū)動程序,使用BEEcube公司的miniBEE作為測試平臺對設(shè)計進行檢測并給出結(jié)果.

        FPGA; PCI Express; DMA; Linux; 驅(qū)動程序

        1 引言

        系統(tǒng)總線也被叫做計算機總線、內(nèi)部總線,在系統(tǒng)中用來連接的CPU、顯卡、硬盤等功能部件.隨著計算機技術(shù)的快速發(fā)展,CPU的處理速度越來越快,最近二十年占據(jù)著主導(dǎo)地位的PCI及其拓展的PCI-X系列總線已滿足不了實際的應(yīng)用需求,系統(tǒng)總線已經(jīng)成為制約計算機系統(tǒng)性能繼續(xù)提高的瓶頸.

        在這個背景下,PCI Express(以下簡稱 PCI-E)總線規(guī)范一提出,迅速就得到了廣泛的青睞.與原有的總線相比,PCI-E采用點對點串行連接的設(shè)備連接方式,每個設(shè)備都擁有獨立的數(shù)據(jù)鏈路,可以達到遠超出PCI總線的傳輸速率; 以數(shù)據(jù)包的方式進行數(shù)據(jù)傳輸,保證了端對端的可靠性傳輸,同時還支持電源管理和熱插拔以及熱交換等功能; 較好的靈活性,可根據(jù)實際的帶寬需求,給PCI-E的接口物理連接配置不同的鏈路模式,包括 x1、x4、x8、x16 以及 x32 鏈路模式; 具有較好的向后兼容性,PCI-E繼承PCI的配置空間,基于PCI總線的系統(tǒng)軟件幾乎可以不經(jīng)修改,直接在PCIE體系結(jié)構(gòu)中使用.

        基于以上,特別是高傳輸速率的優(yōu)勢,在高速的DMA控制器傳輸方式中,相比于原有總線尤為明顯,因此PCI-E總線協(xié)議具有巨大的應(yīng)用前景.目前PCI-E總線的最新規(guī)范為V3.0版本,本文基于較為成熟的V2.0版本,提出了應(yīng)用于總線接口中的高速DMA傳輸?shù)脑O(shè)計方案.

        2 設(shè)計方案

        本設(shè)計DMA模塊介于DDR模塊和上位機之間,在該模塊的控制下,實現(xiàn)FPGA平臺上數(shù)據(jù)以DMA的方式在DDR模塊和PC上位機之間的傳輸.圖1是基于FPGA的PCI-E接口DMA設(shè)計的模塊圖,其中DMA模塊主要有DMA狀態(tài)控制模塊、發(fā)送引擎模塊、接收引擎模塊、DMA發(fā)送和接收模塊幾個部分.本設(shè)計選擇 Xilinx Virtex-6 提供的 Integrated Block for PCI-E IP 核,該 PCI-E IP 核實現(xiàn)了 PCI-E 物理層、數(shù)據(jù)鏈路層和傳輸層間協(xié)議信號的轉(zhuǎn)變,因此可以在它的基礎(chǔ)上直接進行DMA控制設(shè)計,可以大大的降低設(shè)計的復(fù)雜度.

        圖1 PCI-E DMA 接口 DMA 設(shè)計的模塊

        2.1 數(shù)據(jù)包TLP簡介

        PCI-E的層次結(jié)構(gòu)與網(wǎng)絡(luò)層次結(jié)構(gòu)類似,有設(shè)備核心層、處理層、數(shù)據(jù)鏈路層和物理層.在各層間以數(shù)據(jù)包的形式傳送信息,其中鏈路處理層數(shù)據(jù)包(TLP)是最主要的數(shù)據(jù)類型,其結(jié)構(gòu)如圖2所示.首先在核心層生產(chǎn)數(shù)據(jù)包,再依次通過事務(wù)層、數(shù)據(jù)鏈路層和物理層,最終發(fā)向另外一個PCI-E層次結(jié)構(gòu).數(shù)據(jù)包中的頭和數(shù)據(jù)部分由FPGA的代碼產(chǎn)生,其他部分都是IP核自動生成的.PC上位機將地址等信息放在TLP頭后,然后將該數(shù)據(jù)包發(fā)給FGPA,FPGA解析數(shù)據(jù)包,并將解析所得的結(jié)果保存在自己的空間中.

        圖2 TLP 結(jié)構(gòu)及其頭格式

        2.2 DMA傳輸設(shè)計

        從圖1中可知DMA傳輸模塊主要分成發(fā)送模塊、接收模塊和DMA狀態(tài)控制三個子模塊,以下依次從這三個模塊進行詳細介紹.

        2.2.1 DMA 發(fā)送模塊設(shè)計

        發(fā)送模塊分成發(fā)送引擎和DMA發(fā)送控制兩個子模塊.DMA發(fā)送控制子模塊把要發(fā)送的數(shù)據(jù)轉(zhuǎn)換成TLP的格式,然后將其傳遞給發(fā)送引擎模塊; 發(fā)送引擎子模塊負責(zé)把待發(fā)送的數(shù)據(jù)生成TLP數(shù)據(jù)包,然后將其發(fā)送給PCI-E IP核.發(fā)送引擎子模塊需要在狀態(tài)機的控制下生成存儲器讀寫TLP等請求.圖3是發(fā)送引擎模塊的狀態(tài)機圖.

        圖3 發(fā)送引擎的狀態(tài)機

        引擎狀態(tài)機默認處于TX_IDLE狀態(tài).當(dāng)收到“存儲器寫開始”信號,狀態(tài)機由空閑狀態(tài)進入MWR_QWO狀態(tài),將 32 地址和 64 位數(shù)據(jù)寫入 PCI-E IP 核內(nèi).之后判斷寫操作是否完成,若未完成,進入MWR_QWN繼續(xù)寫入數(shù)據(jù),之后每寫入一次判斷一次直到數(shù)據(jù)寫入完成.寫操作完成之后,便由MWR_QWN狀態(tài)進入MWR_IRQ中斷狀態(tài)進行中斷處理,最后恢復(fù)到TX_IDLE空閑狀態(tài),完成一次存儲器寫事務(wù); 當(dāng)收到“存儲器讀開始”信號,狀態(tài)機由空閑狀態(tài)進入MWR_QWO狀態(tài),然后將 32位的讀地址寫入 PCI-E IP 核內(nèi).存儲器讀屬于非轉(zhuǎn)發(fā)事務(wù),所以DMA模塊通過PCI-E IP向PC上位機發(fā)送讀請求包,每發(fā)送一個讀請求包,PC上位機就向DMA模塊發(fā)送一個讀完成包,接收引擎負責(zé)接收數(shù)據(jù); 當(dāng)收到“請求發(fā)送完成數(shù)據(jù)”信號,狀態(tài)機由空閑狀態(tài)進入CPLD_QWO狀態(tài),在這個狀態(tài)下發(fā)送帶數(shù)據(jù)的32位完成包,數(shù)據(jù)發(fā)送完之后進入CPLD_WIT狀態(tài),然后判斷PCI-E IP是否發(fā)送完畢,若發(fā)送完就恢復(fù)TX_IDLE空閑狀態(tài),否則繼續(xù)等待.

        2.2.2 DMA 接收模塊設(shè)計

        接收模塊分成接收引擎和DMA接收控制兩個子模塊.接收引擎子模塊從 PCI-E IP 接收數(shù)據(jù),然后通過模塊內(nèi)部的狀態(tài)機完成寄存器讀寫和存儲器讀等操作事務(wù); DMA接收控制子模塊負責(zé)把TLP數(shù)據(jù)包轉(zhuǎn)換為DDR的數(shù)據(jù)位寬,以及向發(fā)送引擎模塊發(fā)送存儲器讀請求包.圖4是接收引擎模塊的狀態(tài)機圖.

        圖4 接收引擎狀態(tài)機圖

        接收狀態(tài)機默認處于RX_IDLE狀態(tài).存儲器讀完成事務(wù):發(fā)送引擎向PC上位機發(fā)送存儲器讀請求,隨后PC上位機會向接收引擎發(fā)送存儲器讀完成包,接收引擎分析收到的數(shù)據(jù)包得到事務(wù)的類型等有用信息后,開始進行“存儲器讀”操作.狀態(tài)機由RX_IDLE空閑狀態(tài)轉(zhuǎn)到CPLD_QWO狀態(tài),然后將接收到的TLP拆包得到有效數(shù)據(jù)發(fā)送給后端模塊,若操作還未完成,進入CPLD_QWN狀態(tài)繼續(xù)接收數(shù)據(jù),否則恢復(fù)到RX_IDLE空閑狀態(tài); 寄存器讀事務(wù):接收引擎分析收到的TLP數(shù)據(jù)包,得到事務(wù)的類型等信息后,發(fā)起“寄存器讀”操作.狀態(tài)機由RX_IDLE空閑狀態(tài)轉(zhuǎn)到MRD_QWO狀態(tài),然后將解析TLP得到的讀地址觸發(fā)“請求讀寄存器完成”信號后進入MRD_WIT等待狀態(tài),同時將DMA控制模塊中讀到的寄存器數(shù)值通過發(fā)送引擎?zhèn)鬟f給PC上位機,最后恢復(fù)到RX_IDLE空閑狀態(tài); 寄存器寫事務(wù):接收引擎分析收到的TLP數(shù)據(jù)包,得到事務(wù)的類型等信息后,發(fā)起“寄存器寫”操作.狀態(tài)機由RX_IDLE空閑狀態(tài)轉(zhuǎn)到MWR_QWO狀態(tài),然后在該狀態(tài)下解析TLP中32位的寄存器寫地址和寫數(shù)據(jù),并將這些寫入DMA控制模塊中相應(yīng)的寄存器中,若寫入成功,恢復(fù)到RX_IDLE空閑狀態(tài),否則繼續(xù)等待.

        2.3 DMA狀態(tài)控制模塊

        DMA狀態(tài)控制模塊解析從PC上位機接收到的命令,并通知接收引擎、發(fā)送引擎等相關(guān)模塊完成對應(yīng)的操作.PC上位機中的驅(qū)動讀寫一組寄存器來控制和配置DMA狀態(tài)控制模塊,這些寄存器被映射到PC機的PCI地址空間中,同時通過硬連接和FPGA內(nèi)的其他模塊相連.

        本設(shè)計PCI-E端點設(shè)備使用BAR0空間,設(shè)置其大小為1024Byte,用以存儲與DMA控制相關(guān)的存儲器配置和PCI-E IP配置空間狀態(tài)等信號,包括TLP數(shù)量、TLP大小、DMA地址、DMA讀寫事務(wù)啟動信號等.以DMA的方式通過PCI-E總線接口將DDR中的數(shù)據(jù)傳給PC上位機,執(zhí)行讀寫操作,都必須先完成DMA寄存器的配置,圖5是DMA寄存器配置流程圖.

        3 驅(qū)動編寫與測試

        本設(shè)計在Linux系統(tǒng)中實現(xiàn)PCI-E的驅(qū)動程序.將PCI-E設(shè)備看作字符設(shè)備進行處理,系統(tǒng)首先把字符設(shè)備映射到文件系統(tǒng)的文件和目錄中,調(diào)用讀寫等函數(shù)操作相應(yīng)的設(shè)備.在fs.h頭文件里聲明結(jié)構(gòu)體file_operations,該結(jié)構(gòu)體提供開關(guān)讀寫和ioctl等一系列操縱函數(shù).載入驅(qū)動程序后,系統(tǒng)利用上述聲明的結(jié)構(gòu)體中所定義的函數(shù)操縱相應(yīng)的設(shè)備.操縱過程分成兩步,驅(qū)動程序首先將內(nèi)核與設(shè)備掛接起來,然后按照設(shè)備文件的類型,調(diào)用相應(yīng)的函數(shù)操縱設(shè)備.

        圖5 DMA 寄存器配置圖

        測試平臺使用的是BEEcube公司的miniBEE,以miniBEE中的Virtex6 FPGA邏輯芯片實現(xiàn)數(shù)據(jù)的存儲和控制,除了FPGA處理板,平臺還包括Linux上位機和PCI-E總線.再使用檢測FPGA內(nèi)部信號的ChipScope軟件,結(jié)合在Linux系統(tǒng)中實現(xiàn)的PCI-E設(shè)備驅(qū)動程序,對本文設(shè)計的高速DMA傳輸進行了測試,測試結(jié)果見圖6,PCI-E DMA 模塊 DMA 讀操作事務(wù)總線帶寬可以達到965MBps,DMA寫操作事務(wù)總線帶寬可以達到882MBps,大大提升了數(shù)據(jù)傳輸?shù)乃俣?再將在FPGA里產(chǎn)生線性數(shù)并上傳到PC機,通過matlab查看這些線性數(shù),見圖7可以看出數(shù)據(jù)是線性的,說明數(shù)據(jù)在DMA中傳輸比較可靠.

        圖6 DMA 讀寫速度實驗結(jié)果

        圖7 線性數(shù) matlab 圖

        4 結(jié)語

        本設(shè)計通過FPGA內(nèi)置的PCI-E IP核實現(xiàn)DMA傳輸?shù)脑O(shè)計方案,在實際的應(yīng)用中可以靈活配置.與其它PCI-E的DMA傳輸設(shè)計相比,本設(shè)計主要針對PCI-E在數(shù)控控制系統(tǒng)中的應(yīng)用,并能更好的發(fā)揮PCI-E高傳輸速率的優(yōu)勢.經(jīng)測試,DMA讀寫操作的速度可以很好的滿足數(shù)控實際中的應(yīng)用需求.

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

        2Corbet J,Rubini A,Kroah-hartman G.LINUX 設(shè)備驅(qū)動程序.魏永明,耿岳,鐘書毅,譯.北京:中國電力出版社,2006.

        3李曉寧,姚遠程,秦明偉.基于 PCIe 的高速接口設(shè)計.微型機與應(yīng)用,2016,35(1):27–29,32.

        4信侃.基于 Xilinx FPGA 的 PCIe 總線接口設(shè)計與實現(xiàn).無線電通信技術(shù),2014,40(4):94–96.

        5李碩,劉芳,肖儂.基于 FPGA 的 PCIe SSD 設(shè)計與實現(xiàn).中國科技論文,2014,9(4):403–406.

        6汪精華,胡善清,龍騰.基于 FPGA 實現(xiàn)的 PCIE 協(xié)議的DMA 讀寫模塊.微計算機信息,2010,26(29):7–9.[doi:10.3969/j.issn.2095-6835.2010.29.003]

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

        8李麗斯,崔志華,殷曄,等.基于 FPGA 的 PCIe 總線 DMA控制器的設(shè)計與驗證.計算機測量與控制,2014,22(4):1166–1168.

        9鄒晨,高云.基于FPGA的PCIe總線DMA傳輸?shù)脑O(shè)計與實現(xiàn).電光與控制,2015,22(7):84–88.

        DMA Transmission Design of Bus Interface Based on PCI Express

        WANG Hong-Zhi1,2,WANG Chao2,3,LUAN Yong2,3,YAO Kai-Feng4

        1(University of Chinese Academy of Sciences,Beijing 100049,China)2(National Engineering Research Center for High-End CNC,Shenyang Institute of Computing Technology,Chinese Academy of Sciences,Shenyang 110168,China)3(Shenyang Golding NC Intelligent Tech.Co.Ltd.,Shenyang 110168,China)4(State Grid Corporation of Northeast Branch of the Power Control Sub-Centers,Shenyang 110180,China)

        The DMA transfer design of PCI Express bus interface is realized by FPGA based on the in-depth understanding of PCI Express protocol and its application technology.This paper mainly introduces three parts of the design:DMA sending module,DMA receiving module and DMA state control module in detail.Finally,it realizes PCI-E driver in one PC based on Linux system,then uses miniBEE as a test platform of BEEcube Company to test the design and give the results.

        FPGA; PCI Express; DMA; Linux; driver

        王紅志,王超,欒勇,姚愷豐.PCI Express 總線接口的 DMA 傳輸設(shè)計.計算機系統(tǒng)應(yīng)用,2017,26(10):286–289.http://www.c-sa.org.cn/1003-3254/6007.html

        高檔數(shù)控機床與基礎(chǔ)制造裝備國家科技重大專項(2014ZX04001041)

        2017-01-17; 采用時間:2017-02-20

        猜你喜歡
        狀態(tài)機存儲器寄存器
        靜態(tài)隨機存儲器在軌自檢算法
        Lite寄存器模型的設(shè)計與實現(xiàn)
        基于有限狀態(tài)機的交會對接飛行任務(wù)規(guī)劃方法
        分簇結(jié)構(gòu)向量寄存器分配策略研究*
        存儲器——安格爾(墨西哥)▲
        基于Nand Flash的高速存儲器結(jié)構(gòu)設(shè)計
        高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
        FPGA設(shè)計中狀態(tài)機安全性研究
        基于反熔絲FPGA的有限狀態(tài)機加固設(shè)計
        一種可重構(gòu)線性反饋移位寄存器設(shè)計
        四川丰满少妇被弄到高潮| 在线观看日韩精品视频网站| 女同国产日韩精品在线| 国产亚洲成人精品久久久| 国产aⅴ无码专区亚洲av| 亚洲av高清不卡免费在线| 国产三级a三级三级| 国产在线精品一区二区三区直播| 无码熟妇人妻av在线影片| 中文字幕亚洲精品第1页| 丝袜美腿亚洲综合久久| 美女视频黄是免费| 无码中文字幕日韩专区视频| 亚洲久无码中文字幕热| 亚洲天堂色婷婷一区二区| 久久精品国产亚洲av麻豆瑜伽| 岳丰满多毛的大隂户| 日韩插啊免费视频在线观看| 亚洲一区二区三区av在线免费| 中文字幕一区二区三区综合网| 日韩精品无码一区二区三区四区| 高中生粉嫩无套第一次| 2021久久精品国产99国产| av免费在线播放观看| 精品一区二区三区免费视频| 波多野结衣免费一区视频| 久久国产av在线观看| 亚洲一区二区三区99| 男女猛烈xx00免费视频试看| 91精品一区国产高清在线gif| 国产麻豆剧传媒精品国产av蜜桃| 免费一区二区高清不卡av| 欧美怡红院免费全部视频| 久久久久久一级毛片免费无遮挡| 欧洲无码一级毛片无遮挡| 国产三级国产精品国产专区50| 国产福利精品一区二区| 制服丝袜视频国产一区| 亚洲av综合色区在线观看| 亚洲天堂精品一区入口| 久久国产精品99精品国产|