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

FPGA在PCI Express總線接口中的應用

2010-04-12 00:00:00輝,張
現代電子技術 2010年14期

摘 要:隨著高速數據采集設備傳輸帶寬的日益提高,開發者需要采用新的計算機總線進行數據傳輸。這里敘述了使用EP2SGX90系列FPGA完成PCI-Express協議轉換,多種DMA工作方式及相關寄存器的作用。以鏈式DMA傳輸方式為例,詳細介紹該傳輸方式下的寄存器設置及在驅動程序中的實現范例。實驗表明,用FPGA實現協議轉換,總線持續傳輸速率最高可以達到1.2 Gb/s,滿足大多數高速數據采集設備的要求。在此摒棄了采用專用總線接口芯片的傳統方法,將開發者的邏輯設計和總線協議轉換放到同一個FPGA芯片中,不但節省了硬件成本,利用其可編程特性,大大提高了設計可擴展性,同樣的硬件很容易完成由PCIE 1.0到PCIE 2.0的升級。

關鍵詞:PCIE總線; 可編程器件; DMA傳輸; 高速數據采集設備

中圖分類號:TN40; TP336 文獻標識碼:A

文章編號:1004-373X(2010)14-0109-03

Application of FPGA in PCI Express Bus Interface

SHEN Hui, ZHANG Ping

(Nanjing Institute of Electronic Technology, Nanjing 210000, China)

Abstract: Along with increase of transmission bandwidth of the high-speed data acquisition systems, the designers have to use the new computer bus to complete the data transmission. The implementation of PCI-Express protocol transform with aplication of FPGA of EP2SGX90 series, the functions of multiple DMA operation modes and the relative register are described. Taking the chained transmissin mode as an example, the register setup in the chained DMA transmission mode and the implementation in the driver are introduced in detail. By this means, the continuous transmission rate of the bus is up to 1.2 GB. The experiment indicates that it can be applied to mass of data acquisition designs. One FPGA chip is adopted to accomplish the logic control and protocol transform of PCI-Express instead of the special bus interface chip. It lowers the design cost and improves the expandability of design. It is is for the same hardware to upgrade the PCIE1.0 to PCIE2.0.

Keywords: PCIE bus; FPGA; DMA transfer; high-speed data acquisition equipment

0 引 言

PCIE(PCI express)是用來互聯諸如計算機和通信平臺應用中外圍設備的第三代高性能I/O總線。PCIE體系結構繼承了第二代總線體系結構最有用的特點,采用與PCI相同的使用模型和讀/寫通信模型,支持各種常見的事務。其存儲器、I/O和配置地址空間與PCI的地址空間相同。由于地址空間模型沒有變化,所以現有的OS和驅動軟件無需進行修改就可以在PCIE系統上運行[1]。

PCIE是串行協議,與原有的PCI并行總線相比,它沒有大量的數據和控制線,對于硬件電路設計者來說,省去了很多硬件設計工作[2]。PCIE的傳輸速度遠遠大于PCI總線,PCIE 1.1版本單個鏈路的單向吞吐量能達到250 MB/s。對于需要與主機進行大容量傳輸的系統來說,該總線標準的優勢是非常明顯的[3-4]。

由于PCIE總線硬件設計簡單,吞吐量大,軟件向下兼容,只要找到合適的總線接口芯片,很容易將現有的PCI總線設備升級為PCI Express設備。Altera公司最新推出的EP2SGX90系列的芯片,給用戶提供了PCIE接口IP核。本文將結合實際的應用,詳細介紹該IP核的使用情況,包括寄存器設置,DMA操作等。

1 功能描述及參數設置

按照PCIE協議的要求,該FPGA的IP核也采用三層體系結構,即傳輸層、數據鏈路層和物理層。這三層功能模塊完成了PCIE的協議轉換,在傳輸層上給開發人員提供了非常豐富的接口。開發人員的所有開發,包括DMA傳輸等都是在傳輸層以上進行的[5]。

傳輸層(transaction layer):完成TLP(數據傳輸包)的收發,含有虛擬信道(VC)緩沖區,具有端口仲裁、VC仲裁、流控制、數據重新排序和數據校驗等功能。

數據鏈路層(data link layer):數據鏈路層的主要功能是保證在各鏈路上發送和接收數據包時數據的完整性。在接收端,對數據進行嚴格的CRC校驗,如果有錯誤,會給發送方返回1個NAK信號。發送端具有重傳緩沖區,如果收到NAK信號,則把數據重新發送1次。

物理層(physical layer):對于發送端,接收數據鏈路層的數據包,把這些數據進行8 b/10 b編碼,送到串行發送器上;對于接收端則剛好相反,收到串行碼后,先解碼,然后送給數據鏈路層。

在生成PCIE的IP核時,至少選擇2個存儲區,一個是BAR[1:0],用作用戶開發板的擴展存儲區用;還有一個是BAR2,下面所有的寄存器操作都是基于該地址的。新生成的IP核不帶有DMA功能,但是在工程文件夾下面有一個xxx examples(xxx代表工程名稱)的文件夾,文件夾里有簡單DMA和鏈式DMA的例子代碼,開發者只需要對這些代碼進行修改,就能開發出適合自己的DMA功能模塊。

2 簡單DMA

該DMA傳輸模式相對比較簡單,只需要對相應的寄存器進行設置即可完成,DMA傳輸步驟如下所示,每進行1次DMA傳輸,都需要按照下面的步驟進行1次設置。下面所述的偏移量都是相對于BAR2地址[5]。

(1) 設置偏移量為0x00和0x04的寄存器,寫入DMA傳輸的主機端地址;

(2) 設置偏移量為0x14的寄存器,寫入DMA傳輸的PCIE端點地址;

(3) 在偏移量為0x08的寄存器中寫入本次DMA傳輸的長度,以字節為單位;

(4) 設置偏移量為0x0C的寄存器,設置DMA傳輸的屬性,對該寄存器的寫操作將啟動本次DMA傳輸;

(5) 讀取0x0C的寄存器DMA傳輸狀態位,察看本次DMA是否完成。

3 鏈式DMA

鏈式DMA是一種效率遠遠高于簡單DMA的傳輸方式,它只需要1次啟動操作,就可以完成多次DMA傳輸。這里將結合實際使用情況,詳細介紹鏈式DMA的傳輸過程。

3.1 描述符表

實現鏈式DMA傳輸時,需要開發人員在主機內存中開辟一塊空間,用來存儲描述符表,它由一個表頭和多個描述符組成,其中每一個描述符對應一次DMA操作。用戶根據自己的需求填寫該描述符表,關于該描述符表的詳細說明如表1和表2所示[6-7]。

控制區域中含有一些控制信息,其中第16位用來控制傳輸方向,為0是DMA寫,為1是DMA讀,這里的讀/寫是以主機端為參考的,如果以PCIE核為參考,方向剛好相反。第18位用來使能DMA傳輸計數,如果該位使能為1,那么在DMA傳輸過程中,PCIE核每完成1次DMA操作,都會進行1次計數操作,然后把這個計數結果傳送給主機,主機把這個結果填寫到描述符表的RCLAST字段中。

表大小是指本次鏈式DMA操作對應的描述符個數,每個描述符對應一次DMA操作。

RCLAST是一個計數單元,它有兩個作用,在鏈式DMA傳輸前,表示還有多少個DMA操作等待傳輸,由于它是從0開始計數的,所以這個值等于表大小減1。還有一個重要作用是在鏈式DMA傳輸過程中,用來表示鏈式DMA傳輸的狀態。如上所述,如果控制區域的第18位設置為1,那么每完成1次DMA操作,主機都會更新這個計數器。當計數器的數值(也是從0開始計數的)等于前面設置的期望傳輸的DMA次數,就表示鏈式DMA傳輸操作結束。開發人員可以用這個狀態單元來察看本次傳輸是否結束,從而開始一個新的傳輸周期。

表1 描述符表表頭

31 16 15 0

控制區域表大小

描述符表高32位基地址

描述符表低32位基地址

保留RCLAST

表2 描述符

31222116150

保留控制區域DMA長度

PCIE端點地址

主機端高32位地址

主機端低32位地址

DMA長度用來設置本描述符對應的DMA傳輸的長度,是以32位為單位的。主機端地址用來指示數據存放存放的位置。

3.2 實現范例

根據上面介紹的描述符表,下面給出一個鏈式DMA讀的驅動程序例子。首先生成一個描述符表,然后把描述符表表頭的4個字段的內容分別寫入BAR2地址偏移量為0x0,0x4,0x8和0xC寄存器中。寫完后即開始此次鏈式DMA讀傳輸,while循環用于等待鏈式DMA結束。從下面的代碼可以看出,2個描述符對應2次DMA操作[8-9]。

#define DMA BLOCK 16

/*描述符表頭*/

DmaTableVirtualAddress[0]=0x50002;

DmaTableVirtualAddress[1]=DmaTablePhysicalAddress.HighPart;

DmaTableVirtualAddress[2]=DmaTablePhysicalAddress.LowPart;

DmaTableVirtualAddress[3]=0x1;

/*2個描述符*/

DmaTableVirtualAddress[4]=DMA BLOCK;

DmaTableVirtualAddress[5]=0;

DmaTableVirtualAddress[6]= DmaBufferPhysicalAddress.HighPart;

DmaTableVirtualAddress[7]=DmaBufferPhysicalAddress.LowPart;

DmaTableVirtualAddress[8]=DMA BLOCK;

DmaTableVirtualAddress[9]=0;

DmaTableVirtualAddress[10]=DmaBufferPhysicalAddress.HighPart;;

DmaTableVirtualAddress[11]=DmaBufferPhysicalAddress.LowPart+DMA BLOCK*4;

/*填寫寄存器,啟動DMA傳輸*/

WRITE REGISTER ULONG((PULONG)(RegBase+0x0),DmaTableVirtualAddress[0]);

WRITE REGISTER ULONG((PULONG)(RegBase+0x4),DmaTableVirtualAddress[1]);

WRITE REGISTER ULONG((PULONG)(RegBase+0x8),DmaTableVirtualAddress[2]);

WRITE REGISTER ULONG((PULONG)(RegBase+0xc),DmaTableVirtualAddress[3]);

while(dx->DmaTableVirtualAddress[3]!=0x44040001)

{

}

圖1是用SignalTap工具獲取的鏈式DMA讀時序圖。PCIE核接收tx req0請求信號,然后給出一個tx ack0,同時將tx dv0置為有效,該信號套住的TX Data就是需要讀取的有效數據[10]。在每次DMA結束之后,PCIE核都會用同樣的控制邏輯給主機傳送1個已完成DMA次數的狀態字,如圖1中的44040000h。

圖1 鏈式DMA傳輸時序圖

4 性能測試

在做總線性能測試時,采用鏈式DMA傳輸方式,共4個描述符表。根據實際使用的PCIE總線通道數和DMA長度的不同,實際測試得到的總線速度也不同,表3給出了參考數據。

表3 實測數據

PCIE通道數

48

DMA長度 /B8 19216 38432 7688 19216 38432 768

總線傳輸速率 /(MB/s)5005806509801 0501 200

5 結 語

使用FPGA來設計PCIE總線擴展卡,可以省去專用的PCIE接口芯片,降低了硬件設計成本,提高了硬件的集成度。利用FPGA的可編程特性,大大提高了設計靈活性、適應性和可擴展性。PCIE總線提供了高速、獨享的數據交換通道,確保在大數據量的數據交換時不會出現瓶頸,而且作為新一代總線,它使系統在獲得更高性能的同時,具有了良好的升級性。

參考文獻

[1]田玉敏,王崧,張波.PCI Express系統體系結構標準教材[M].北京:電子工業出版社,2005.

[2]PCI Special Interest Group. PCI Express Base Specification Revision 1.0a[EB/OL]. [ 2009-10-16] . http://netyi.net/Book.

[3]PCI Special Interest Group.PCI Local Bus Specification 2.2[EB/OL]. [ 1998-12-02] . http://ftp.sandpile.org/docs/intel/PCI.htm.

[4]李貴山,戚得虎.PCI局部總線開發者指南[M].西安:西安電子科技大學出版社,1997.

[5]Altera Corporation.PCI Express Compiler User Guide 9.1[EB/OL]. [ 2010-04-03] . http://altera.com.cn.

[6]Chris Cant.Windows WDM設備驅動程序開發指南[M].北京:機械工業出版社,2001.

[7]ONEY Waher. Programming the Microsoft Windows Driver Model[M]. USA: Micorsoft, 2003.

[8]張惠娟,周利華,翟鴻嗚.Windows環境下的設備驅動程序設計[M].西安:西安電子科技大學出版社,2002.

[9]Microsoft. DDK Document[ M] . USA: Microsoft Press, 2000.

[10]姜立冬.VHDL語言程序設計及應用[M].北京:北京郵電大學出版社,2001.

主站蜘蛛池模板: 亚洲高清国产拍精品26u| 丝袜无码一区二区三区| 欧美精品一区二区三区中文字幕| 深爱婷婷激情网| 国产在线高清一级毛片| 欧美福利在线观看| 91网站国产| 四虎成人精品| 欧美亚洲国产精品久久蜜芽| 最新日本中文字幕| 国产精品免费电影| 亚洲伊人天堂| 日韩第八页| 国产成人一区| 国产男人天堂| 免费一看一级毛片| www.99在线观看| 国产成人综合欧美精品久久 | av尤物免费在线观看| 国产精品免费露脸视频| 亚洲第一黄片大全| 国产亚洲欧美日韩在线观看一区二区| 精品欧美一区二区三区久久久| 国产一级在线播放| 91精品国产综合久久香蕉922| 久久久受www免费人成| 第一页亚洲| 人妻中文久热无码丝袜| 欧美啪啪精品| 欧美日韩国产综合视频在线观看 | 91在线精品麻豆欧美在线| 少妇人妻无码首页| 国产在线麻豆波多野结衣| 国产爽爽视频| 伊人网址在线| 自慰高潮喷白浆在线观看| 毛片a级毛片免费观看免下载| 综合网天天| 国产一区成人| 国禁国产you女视频网站| 亚洲综合专区| 强乱中文字幕在线播放不卡| 国产精品浪潮Av| 国产色网站| 亚洲无线视频| 91麻豆国产视频| 日韩一二三区视频精品| 97精品伊人久久大香线蕉| 2019年国产精品自拍不卡| 亚洲一区二区三区香蕉| 在线色国产| 国产精品尹人在线观看| 中文字幕亚洲综久久2021| 亚洲精品无码专区在线观看| 亚洲制服丝袜第一页| 国产免费福利网站| 亚洲第一区在线| 91无码人妻精品一区二区蜜桃 | 国产精品综合色区在线观看| 少妇高潮惨叫久久久久久| 国产人人干| AV网站中文| 手机精品福利在线观看| 欧美国产三级| 亚洲午夜天堂| 欧美日韩高清| 国产欧美日韩精品综合在线| 国产午夜福利在线小视频| 国产一区亚洲一区| 日韩久草视频| 91久久精品国产| 国产激情无码一区二区APP| 在线播放精品一区二区啪视频 | 国产白浆在线| 久久久黄色片| 青青热久麻豆精品视频在线观看| 成人自拍视频在线观看| 亚洲另类国产欧美一区二区| 国产亚洲欧美日韩在线一区二区三区| 亚洲小视频网站| 免费国产无遮挡又黄又爽| 成人午夜久久|