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

PCI Express總線接口的DMA傳輸設計①

2017-10-20 03:09:18王紅志姚愷豐
計算機系統應用 2017年10期
關鍵詞:引擎設計

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

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

PCI Express總線接口的DMA傳輸設計①

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

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

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

FPGA; PCI Express; DMA; Linux; 驅動程序

1 引言

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

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

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

2 設計方案

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

圖1 PCI-E DMA 接口 DMA 設計的模塊

2.1 數據包TLP簡介

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

圖2 TLP 結構及其頭格式

2.2 DMA傳輸設計

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

2.2.1 DMA 發送模塊設計

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

圖3 發送引擎的狀態機

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

2.2.2 DMA 接收模塊設計

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

圖4 接收引擎狀態機圖

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

2.3 DMA狀態控制模塊

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

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

3 驅動編寫與測試

本設計在Linux系統中實現PCI-E的驅動程序.將PCI-E設備看作字符設備進行處理,系統首先把字符設備映射到文件系統的文件和目錄中,調用讀寫等函數操作相應的設備.在fs.h頭文件里聲明結構體file_operations,該結構體提供開關讀寫和ioctl等一系列操縱函數.載入驅動程序后,系統利用上述聲明的結構體中所定義的函數操縱相應的設備.操縱過程分成兩步,驅動程序首先將內核與設備掛接起來,然后按照設備文件的類型,調用相應的函數操縱設備.

圖5 DMA 寄存器配置圖

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

圖6 DMA 讀寫速度實驗結果

圖7 線性數 matlab 圖

4 結語

本設計通過FPGA內置的PCI-E IP核實現DMA傳輸的設計方案,在實際的應用中可以靈活配置.與其它PCI-E的DMA傳輸設計相比,本設計主要針對PCI-E在數控控制系統中的應用,并能更好的發揮PCI-E高傳輸速率的優勢.經測試,DMA讀寫操作的速度可以很好的滿足數控實際中的應用需求.

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

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

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

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

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

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

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

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

9鄒晨,高云.基于FPGA的PCIe總線DMA傳輸的設計與實現.電光與控制,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 傳輸設計.計算機系統應用,2017,26(10):286–289.http://www.c-sa.org.cn/1003-3254/6007.html

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

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

猜你喜歡
引擎設計
以學促干 挺膺擔當 激活砥礪前行的紅色引擎
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
三生 三大引擎齊發力
藍谷: “涉藍”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
無形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
基于Cocos2d引擎的PuzzleGame開發
主站蜘蛛池模板: 婷婷色婷婷| 久久婷婷五月综合97色| h视频在线播放| 国产内射一区亚洲| 欧美日韩精品综合在线一区| 国产精品手机视频一区二区| 久久午夜夜伦鲁鲁片无码免费| 激情五月婷婷综合网| 内射人妻无套中出无码| 亚洲人成成无码网WWW| 欧美一区二区精品久久久| 亚洲一级毛片在线播放| 91精品人妻一区二区| 网友自拍视频精品区| 制服丝袜 91视频| 亚洲一区毛片| 大陆精大陆国产国语精品1024| 日韩精品成人在线| 99免费在线观看视频| 国产精品亚洲精品爽爽| 日韩成人在线网站| 国产国语一级毛片在线视频| 国产麻豆永久视频| 中文无码毛片又爽又刺激| 国产综合无码一区二区色蜜蜜| 亚洲最猛黑人xxxx黑人猛交| 国产久草视频| 亚洲h视频在线| 国产亚洲视频免费播放| a亚洲视频| 亚洲av日韩综合一区尤物| 久热精品免费| 国产成人无码AV在线播放动漫| 国产永久在线视频| 亚洲天堂免费观看| 欧美特黄一级大黄录像| 亚洲精品视频免费看| 国产主播在线一区| 日韩AV无码免费一二三区| 欧美成人精品高清在线下载| 国产亚洲视频在线观看| 好紧太爽了视频免费无码| 免费视频在线2021入口| 天天操精品| 久久综合成人| 无码精品福利一区二区三区| 国产视频资源在线观看| 久久无码av三级| av一区二区无码在线| 国产无码精品在线播放| 福利在线不卡| 2020亚洲精品无码| 日韩中文无码av超清| 亚洲无码高清免费视频亚洲| 99re这里只有国产中文精品国产精品 | 国产人碰人摸人爱免费视频 | 亚洲天堂在线视频| 亚洲永久色| 国产精鲁鲁网在线视频| 日韩天堂在线观看| 人人爱天天做夜夜爽| 久久精品人人做人人爽97| 久热中文字幕在线| 国产精品网拍在线| 四虎影院国产| 亚洲国产精品日韩av专区| 色综合a怡红院怡红院首页| 九九九久久国产精品| 不卡的在线视频免费观看| 白丝美女办公室高潮喷水视频| 欧美精品在线免费| 国产内射一区亚洲| 欧美精品v欧洲精品| 亚洲国产天堂久久九九九| 欧美国产在线看| 国产麻豆91网在线看| 久久精品视频亚洲| 美女被躁出白浆视频播放| 精品一区二区三区视频免费观看| 欧美日韩国产系列在线观看| 丰满人妻中出白浆| 国产亚洲精品在天天在线麻豆|