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.

主站蜘蛛池模板: 草草线在成年免费视频2| 毛片在线播放网址| 国产精品流白浆在线观看| 国外欧美一区另类中文字幕| 制服丝袜一区| a国产精品| 日韩高清在线观看不卡一区二区| 香蕉视频在线观看www| 伊人狠狠丁香婷婷综合色| 99视频在线免费| 欧美国产成人在线| 国产精品深爱在线| 99ri国产在线| 国产爽爽视频| a级毛片免费看| 99热最新网址| 国产女人综合久久精品视| 99在线观看精品视频| 精品视频第一页| 久久国产免费观看| 国产成人免费手机在线观看视频| 在线人成精品免费视频| 日本在线国产| 亚洲第一成年人网站| 精品国产自在现线看久久| 亚洲高清国产拍精品26u| 国产精品久久久久久影院| 97国产精品视频人人做人人爱| 亚洲综合经典在线一区二区| 欧美激情,国产精品| 黄色网站在线观看无码| 国产精品美人久久久久久AV| 国产成人高清精品免费软件| 亚洲日本中文字幕乱码中文| 中文字幕人妻无码系列第三区| 国产精品手机在线播放| 国产情侣一区二区三区| 色天堂无毒不卡| 青草午夜精品视频在线观看| 精品欧美日韩国产日漫一区不卡| 在线看片中文字幕| 日本道中文字幕久久一区| 久久青草精品一区二区三区| 国产又爽又黄无遮挡免费观看 | 国产精品一区二区不卡的视频| 亚洲AV人人澡人人双人| 视频国产精品丝袜第一页| 91精品免费高清在线| 欧美专区日韩专区| 欧美精品影院| 在线免费a视频| 国产激情在线视频| 黄色三级网站免费| 一级毛片不卡片免费观看| 亚洲精品无码在线播放网站| 九九久久精品免费观看| 亚洲欧美精品一中文字幕| 亚洲成人免费在线| 久爱午夜精品免费视频| 亚洲人成人无码www| 黄色免费在线网址| 成人精品亚洲| jizz国产视频| 亚洲Aⅴ无码专区在线观看q| 久久综合激情网| 99久久精品免费看国产免费软件| 国内精品视频| 88国产经典欧美一区二区三区| 国产亚洲欧美另类一区二区| 欧美a在线看| 国产麻豆另类AV| 中文字幕波多野不卡一区| 亚洲色图欧美视频| 午夜福利视频一区| 99精品视频九九精品| 亚洲国产成人在线| 久久久成年黄色视频| 国产高清在线丝袜精品一区| 国产丝袜精品| 色天堂无毒不卡| 黄色在线不卡| 欧美日韩精品一区二区在线线|