技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > PCI總線高速數(shù)據(jù)傳輸系統(tǒng)設(shè)計

PCI總線高速數(shù)據(jù)傳輸系統(tǒng)設(shè)計

時間:2008-09-11 10:19:00來源:ronggang

導(dǎo)語:?本文通過一套數(shù)據(jù)采集卡的設(shè)計介紹了PCI總線數(shù)據(jù)傳輸?shù)幕具^程,給出了系統(tǒng)整體設(shè)計方案和PCI接口通信方式及驅(qū)動程序?qū)崿F(xiàn),并著重討論了PCI數(shù)據(jù)傳輸中影響傳輸速率的各個方面
摘 要:本文通過一套數(shù)據(jù)采集卡的設(shè)計介紹了PCI總線數(shù)據(jù)傳輸?shù)幕具^程,給出了系統(tǒng)整體設(shè)計方案和PCI接口通信方式及驅(qū)動程序?qū)崿F(xiàn),并著重討論了PCI數(shù)據(jù)傳輸中影響傳輸速率的各個方面。 關(guān)鍵詞:PCI總線,WinDriver,直接存儲器存取 1 引言   計算機總線擴展技術(shù)使得基于計算機的數(shù)據(jù)采集技術(shù)迅速得到應(yīng)用,基于PC機的數(shù)據(jù)采集系統(tǒng)是目前應(yīng)用最為廣泛的數(shù)據(jù)采集系統(tǒng)之一,不但廣泛應(yīng)用于電力設(shè)備監(jiān)控、遙測遙感等測控領(lǐng)域,在聲納、雷達、通訊、地質(zhì)、醫(yī)療器械等領(lǐng)域中也有著重要的應(yīng)用。高速數(shù)據(jù)傳輸始終是計算機相關(guān)領(lǐng)域研究的重點,它是計算機感知外部世界并對其進行控制的基礎(chǔ)。PCI總線協(xié)議是Intel公司1992年提出,為滿足高速數(shù)據(jù)輸入/輸出要求而設(shè)計的一種低成本,高性能的局部總線協(xié)議。32位PCI總線的峰值傳輸速率為132MB/s(33MHz×4Byte)。在PC機的數(shù)據(jù)傳輸中,PCI總線以其卓越的性能得到了廣泛的應(yīng)用。高速的數(shù)據(jù)傳輸要求提高PCI總線的帶寬利用率,使其盡量接近PCI總線的極限速率。本文詳細介紹了PCI總線高速數(shù)據(jù)傳輸系統(tǒng)設(shè)計的關(guān)鍵技術(shù),并實現(xiàn)了一套高速數(shù)據(jù)采集系統(tǒng)。 2 硬件電路設(shè)計   該系統(tǒng)硬件電路板的結(jié)構(gòu)框圖如圖1所示。其中PCI9054總線控制器負責(zé)局部總線與PCI總線間的接口通信。由于PCI9054 Local總線部分信號時序也比較復(fù)雜,用門電路不但難以實現(xiàn)而且所需要芯片數(shù)量較多,影響電路板的擴充能力及通用性,故采用CPLD實現(xiàn)PCI9054 Local端的控制。從框圖中可以看到, PCI9054局部數(shù)據(jù)總線高五位數(shù)據(jù)線接到CPLD引腳上,這五根數(shù)據(jù)線可以接受和發(fā)送數(shù)據(jù),根據(jù)接收到的數(shù)據(jù)對其譯碼產(chǎn)生控制信息,還可以發(fā)出數(shù)據(jù)使PCI9054產(chǎn)生門鈴中斷和MailBox中斷。   PCI接口數(shù)據(jù)傳輸效率非常高而A/D采集數(shù)據(jù)效率較低,所以本設(shè)計采用FIFO來緩存數(shù)據(jù),也可以同時采集多路數(shù)據(jù)。PCI9054局部總線支持50MHz時鐘,為配合A/D工作,本設(shè)計選用40M時鐘。PCI9054的所有地址線和控制信號都只與CPLD連接,產(chǎn)生CPLD的工作狀態(tài)和各種控制信息。FIFO采用TI公司生產(chǎn)的SN74V3690芯片,該芯片非常適合于網(wǎng)絡(luò),視頻,信號處理,電話,數(shù)據(jù)通信和其他需要大量數(shù)據(jù)和非對等總線匹配的應(yīng)用。 [align=center] 圖1 硬件電路框圖[/align] 3 DMA傳輸方式設(shè)計   3.1改進的狀態(tài)機設(shè)計   一般情況下狀態(tài)機的轉(zhuǎn)換圖如圖2所示。該狀態(tài)機有三種傳輸狀態(tài),空閑狀態(tài)、等待狀態(tài)和傳輸狀態(tài)。該狀態(tài)機能成功完成與PCI9054的配合數(shù)據(jù)傳輸,傳輸性能穩(wěn)定,效果較好。是現(xiàn)在PCI9054局部總線狀態(tài)機設(shè)計的一般方法。通過實際測試,在用戶模式下,采用該狀態(tài)機查詢方式DM,A傳輸速率可以穩(wěn)定達到68M Byte/s. [align=center] 圖2 一般狀態(tài)轉(zhuǎn)換圖[/align]   PCI總線峰值速率為132M Byte/s,而以上狀態(tài)機和傳輸狀態(tài)下DMA速率只有68MByte/s說明其中存在不少漏洞。對比該狀態(tài)機的時序與PCI9054給出的標準DMA傳輸時序可知,一般狀態(tài)機在ADS#信號為低后先進入等待狀態(tài)用來配置各種信號線,然后才開始傳輸狀態(tài)。所以每次啟動傳輸都要浪費一個時鐘周期的時間,這種浪費在高速數(shù)據(jù)傳輸過程中特別是DMA傳輸中是非??捎^的。   而PCI9054標準DMA傳輸在ADS#信號為低后立刻開始數(shù)據(jù)傳輸并不需要等待周期,所以等待周期可以省略,狀態(tài)機只需要兩個狀態(tài)用來產(chǎn)生時序,即空閑狀態(tài)和數(shù)據(jù)傳輸狀態(tài),這樣狀態(tài)機轉(zhuǎn)換過程可以簡化。但是由于PCI9054不只需要DMA傳輸,還需要一些其他操作,比如讀寫某些控制字和狀態(tài)標志位等,所以在CPLD中還要區(qū)分地址。所以本設(shè)計采用了新的狀態(tài)機,改進的狀態(tài)機狀態(tài)轉(zhuǎn)換圖如圖3所示。   實際測得在同一臺機器上,新狀態(tài)機在用戶模式下,查詢方式DMA傳輸速率可以穩(wěn)定達到88MByte/s。所以在同種情況下,改進的狀態(tài)機速率可以比原狀態(tài)機速率高出20MByte/s。由傳輸速率的大幅提高可以看出,這種改進方式是非常成功的。 [align=center] 圖3 改進的狀態(tài)轉(zhuǎn)換圖[/align]   3.2 DMA傳輸模式選擇   PCI9054支持兩種DMA傳輸方式:連續(xù)模式和集散模式。連續(xù)模式即一般的DMA傳輸方式(塊傳輸),它要求PCI端的物理存儲地址連續(xù),Local端地址連續(xù)或不變(如從FIFO中讀取數(shù)據(jù),地址始終不變)。集散模式DMA傳輸可以申請一個鏈表式的描述符表用來存儲各個物理地址不連續(xù)的和傳輸大小不固定的多塊數(shù)據(jù)的描述寄存器值,PCI9054可以自動通過控制寄存器指針從PCI端或LOCAL端讀取寄存器的值并配置寄存器,開始一次次的傳輸。通過集散模式DMA傳輸,可以一次傳遞更多的數(shù)據(jù)。但是集散模式DMA傳輸在傳輸完一塊數(shù)據(jù)之后要重新配置寄存器的值,所以速度比連續(xù)模式稍慢。   本設(shè)計對兩種DMA傳輸模式進行了對比,在其他條件相同的情況下,通過邏輯分析儀測得連續(xù)模式下DMA傳輸速率為95.3M Byte/s,集散模式下DMA傳輸速率為91.2M Byte/s。 可以看出,連續(xù)模式在同種情況下速度要比集散模式高出4M Byte/s。但是連續(xù)模式由于只能單次啟動DMA,所以傳輸數(shù)據(jù)量大小有限,這在大量的數(shù)據(jù)傳輸是非常不利。而集散模式由于可以在傳輸過程中通過描述符表重新配置寄存器,所以可以一次傳輸較大的數(shù)據(jù)量,且重新配置寄存器的工作不需要驅(qū)動程序干預(yù),PCI9054會自動完成該過程,所以可以在傳輸速度降低不多的情況下得到更大的數(shù)據(jù)量。集散模式傳輸是PCI9054支持的DMA傳輸?shù)奶厣J?。實際測得,在賽揚1GHz,256M內(nèi)存機器上,相同條件下,連續(xù)模式最多可以一次傳輸4MByte數(shù)據(jù),而集散模式最多可以一次傳輸32MByte。集散模式可以傳輸?shù)臄?shù)據(jù)量遠遠大于連續(xù)模式。所以在需要一次傳輸?shù)臄?shù)據(jù)量較大而速度要求相對不太嚴格情況下集散模式是較為理想的選擇。   3.3 終止方式選擇   DMA過程的終止可以通過查詢和中斷兩種方式檢測到。查詢方式DMA傳輸原理為在啟動DMA之后一直讀取寄存器DMACSR0[4]的值,當(dāng)該位為1時表示DMA傳輸完畢。中斷方式DMA為在啟動DMA時使能DMA完成中斷,系統(tǒng)接收到中斷之后在中斷處理例程中講清空中斷,并讀取DMA傳來的數(shù)據(jù)。   在相同條件下測得查詢方式下連續(xù)DMA傳輸速率為95MByte/s.中斷方式下連續(xù)DMA傳輸速率為114.2MByte/s。   由兩種終止方式速度比較可知中斷方式在同樣條件下能比查詢方式速度提高將近20MByte/s 。PCI總線極限速度為132MByte/s,而這種傳輸方式速率已經(jīng)達到114MByte/s,所以這種方式DMA速度已接近PCI總線的峰值速度。 4 驅(qū)動程序設(shè)計   4.1驅(qū)動程序的引出   從最廣泛的意義講,一個“驅(qū)動程序”是操作一個硬件設(shè)備的一組函數(shù)。在任何操作系統(tǒng)上,設(shè)備驅(qū)動程序都必須與基本的系統(tǒng)代碼進行和諧的作用。Microsoft為保證系統(tǒng)的安全性、穩(wěn)定性、可移植性,對應(yīng)用程序訪問硬件資源進行了限制,不能直接進行物理內(nèi)存、I/O端口的訪問以及中斷處理等硬件操作。   4.2 使用WinDriver開發(fā)設(shè)備驅(qū)動程序   1)驅(qū)動程序開發(fā)環(huán)境選擇   開發(fā)設(shè)備驅(qū)動程序的軟件平臺有很多種,如DDK、VTOOSD、WinDriver、DriverStudio等.本設(shè)計采用WinDriver來開發(fā)設(shè)備驅(qū)動程序.WinDriver對常見的PCI接口芯片(AMCC、PLX系列)提供了很好的支持,有專門的函數(shù)供開發(fā)人員利用,方便了驅(qū)動程序的開發(fā).   2)本設(shè)計用戶模態(tài)下的驅(qū)動程序介紹   WinDriver驅(qū)動程序可以分為兩種工作模式,即用戶模式和內(nèi)核模式。本設(shè)計用戶模式下的驅(qū)動程序的功能包括:PCI配置寄存器訪問、映射到局部空間的各種寄存器訪問(包括局部控制寄存器、RunTime寄存器、DMA寄存器、和消息隊列寄存器),各種PCI設(shè)備選擇,EEPROM訪問,IO操作,LOCAL映射的各個空間的訪問,DMA操作,中斷處理等。   3)本設(shè)計中內(nèi)核驅(qū)動程序的設(shè)計   數(shù)據(jù)采集需要傳送大量的數(shù)據(jù),需要快速的將采集到的數(shù)據(jù)傳遞給主機,數(shù)據(jù)傳送占用時間越短,應(yīng)用程序能利用的時間也就越多,從而對于數(shù)據(jù)采集卡和主機之間的相互通信和數(shù)據(jù)傳輸提出了較高的要求。編寫該設(shè)備驅(qū)動程序的關(guān)鍵性問題在于:快速可靠的DMA傳輸、響應(yīng)及時的中斷處理等。WinDriver提供了Kernel PlugIn技術(shù),能夠?qū)崿F(xiàn)理想的中斷響應(yīng)速度,解決對于高性能的需求。為了提高系統(tǒng)的整體性能,在用戶模式下驅(qū)動程序的基礎(chǔ)上采用了Kernel PlugIn技術(shù)。將中斷,DMA處理轉(zhuǎn)移到內(nèi)核模式下執(zhí)行。從而大大提高了系統(tǒng)的處理速度。   4)DMA速率探討   系統(tǒng)數(shù)據(jù)傳輸不僅需要傳遞數(shù)據(jù),還要通過中斷來引發(fā)數(shù)據(jù)傳輸和傳輸結(jié)束呼叫。   傳輸時間 = 中斷時間 + DMA傳輸時間   通過邏輯分析儀查看硬件波形圖可以計算出內(nèi)核模式下中斷觸發(fā)DMA傳輸速率為105.4MByte/s。所以數(shù)據(jù)持續(xù)傳輸速率可達105MByte/s。可以看到,中斷響應(yīng)時間也影響數(shù)據(jù)傳輸?shù)淖罱K速度。   由第四章DMA部分討論可知,用戶模式下測得的DMA傳輸期間最快速度為95MB/s。內(nèi)核模式下DMA速度最快為114MB/s。而最初的DMA傳輸速度為68MB/s。從最初到現(xiàn)在,DMA傳輸期間傳輸速度提高了46MB/s。 結(jié)束語   在現(xiàn)代信號處理技術(shù)中,通過PCI總線進行快速數(shù)據(jù)傳輸是實現(xiàn)主機與外設(shè)間通信的主要方式。作者在實驗室利用PCI9054接口芯片設(shè)計了一個帶有12通道的高速信號采集器。對影響數(shù)據(jù)傳輸速率的各個環(huán)節(jié)逐一考慮,提出了一整套數(shù)據(jù)傳輸方案。將數(shù)據(jù)持續(xù)傳輸速率提高到100MByte/s以上。接近PCI總線的極限速率。   本文的創(chuàng)新點是:對局部總線狀態(tài)機狀態(tài)轉(zhuǎn)換進行了研究。局部總線狀態(tài)機采用改進的狀態(tài)轉(zhuǎn)換邏輯,將DMA數(shù)據(jù)傳輸效率提高了約20MByte/s。 參考文獻:   [1]裴喜龍,童莉.基于PCI總線的高速數(shù)據(jù)采集卡系統(tǒng)設(shè)計與實現(xiàn)[J].微機算計信息,2006,7-1:129-131。   [2]WinDriver v6.23 User’s Guide[DB/OL].http://www.jungo.com.2004。   [3]PCI9054 Data Book[DB/OL].http://www.plxtech.com.2000-01。   [4] 李貴山,陳金鵬主編.PCI局部總線及其應(yīng)用.西安:西安電子科技大學(xué)出版社[M].2003。   [5] 侯伯亨,顧新著.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計.西安:西安電子科技大學(xué)出版社[M].1997。   [6] 喬林,楊志剛著.Visual C++高級編程技術(shù)DirectX篇.北京:中國鐵道出版社[M].1998。   [7] 胡波,原新晶.WinDriver 開發(fā)驅(qū)動程序的KernelPlugIn技術(shù)的研究與應(yīng)用[J].計算機應(yīng)用,2003,23(11)。

標簽:

點贊

分享到:

上一篇:具有PCI和并行接口的數(shù)據(jù)采集...

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(www.treenowplaneincome.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負版權(quán)法律責(zé)任。

網(wǎng)站簡介|會員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網(wǎng)安備 44030402000946號