時(shí)間:2008-09-11 10:19:00來源:ronggang
圖2 一般狀態(tài)轉(zhuǎn)換圖[/align]
PCI總線峰值速率為132M Byte/s,而以上狀態(tài)機(jī)和傳輸狀態(tài)下DMA速率只有68MByte/s說明其中存在不少漏洞。對比該狀態(tài)機(jī)的時(shí)序與PCI9054給出的標(biāo)準(zhǔn)DMA傳輸時(shí)序可知,一般狀態(tài)機(jī)在ADS#信號為低后先進(jìn)入等待狀態(tài)用來配置各種信號線,然后才開始傳輸狀態(tài)。所以每次啟動傳輸都要浪費(fèi)一個(gè)時(shí)鐘周期的時(shí)間,這種浪費(fèi)在高速數(shù)據(jù)傳輸過程中特別是DMA傳輸中是非?捎^的。
而PCI9054標(biāo)準(zhǔn)DMA傳輸在ADS#信號為低后立刻開始數(shù)據(jù)傳輸并不需要等待周期,所以等待周期可以省略,狀態(tài)機(jī)只需要兩個(gè)狀態(tài)用來產(chǎn)生時(shí)序,即空閑狀態(tài)和數(shù)據(jù)傳輸狀態(tài),這樣狀態(tài)機(jī)轉(zhuǎn)換過程可以簡化。但是由于PCI9054不只需要DMA傳輸,還需要一些其他操作,比如讀寫某些控制字和狀態(tài)標(biāo)志位等,所以在CPLD中還要區(qū)分地址。所以本設(shè)計(jì)采用了新的狀態(tài)機(jī),改進(jìn)的狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換圖如圖3所示。
實(shí)際測得在同一臺機(jī)器上,新狀態(tài)機(jī)在用戶模式下,查詢方式DMA傳輸速率可以穩(wěn)定達(dá)到88MByte/s。所以在同種情況下,改進(jìn)的狀態(tài)機(jī)速率可以比原狀態(tài)機(jī)速率高出20MByte/s。由傳輸速率的大幅提高可以看出,這種改進(jìn)方式是非常成功的。
[align=center]
圖3 改進(jìn)的狀態(tài)轉(zhuǎn)換圖[/align]
3.2 DMA傳輸模式選擇
PCI9054支持兩種DMA傳輸方式:連續(xù)模式和集散模式。連續(xù)模式即一般的DMA傳輸方式(塊傳輸),它要求PCI端的物理存儲地址連續(xù),Local端地址連續(xù)或不變(如從FIFO中讀取數(shù)據(jù),地址始終不變)。集散模式DMA傳輸可以申請一個(gè)鏈表式的描述符表用來存儲各個(gè)物理地址不連續(xù)的和傳輸大小不固定的多塊數(shù)據(jù)的描述寄存器值,PCI9054可以自動通過控制寄存器指針從PCI端或LOCAL端讀取寄存器的值并配置寄存器,開始一次次的傳輸。通過集散模式DMA傳輸,可以一次傳遞更多的數(shù)據(jù)。但是集散模式DMA傳輸在傳輸完一塊數(shù)據(jù)之后要重新配置寄存器的值,所以速度比連續(xù)模式稍慢。
本設(shè)計(jì)對兩種DMA傳輸模式進(jìn)行了對比,在其他條件相同的情況下,通過邏輯分析儀測得連續(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健?shí)際測得,在賽揚(yáng)1GHz,256M內(nèi)存機(jī)器上,相同條件下,連續(xù)模式最多可以一次傳輸4MByte數(shù)據(jù),而集散模式最多可以一次傳輸32MByte。集散模式可以傳輸?shù)臄?shù)據(jù)量遠(yuǎn)遠(yuǎn)大于連續(xù)模式。所以在需要一次傳輸?shù)臄?shù)據(jù)量較大而速度要求相對不太嚴(yán)格情況下集散模式是較為理想的選擇。
3.3 終止方式選擇
DMA過程的終止可以通過查詢和中斷兩種方式檢測到。查詢方式DMA傳輸原理為在啟動DMA之后一直讀取寄存器DMACSR0[4]的值,當(dāng)該位為1時(shí)表示DMA傳輸完畢。中斷方式DMA為在啟動DMA時(shí)使能DMA完成中斷,系統(tǒng)接收到中斷之后在中斷處理例程中講清空中斷,并讀取DMA傳來的數(shù)據(jù)。
在相同條件下測得查詢方式下連續(xù)DMA傳輸速率為95MByte/s.中斷方式下連續(xù)DMA傳輸速率為114.2MByte/s。
由兩種終止方式速度比較可知中斷方式在同樣條件下能比查詢方式速度提高將近20MByte/s 。PCI總線極限速度為132MByte/s,而這種傳輸方式速率已經(jīng)達(dá)到114MByte/s,所以這種方式DMA速度已接近PCI總線的峰值速度。
4 驅(qū)動程序設(shè)計(jì)
4.1驅(qū)動程序的引出
從最廣泛的意義講,一個(gè)“驅(qū)動程序”是操作一個(gè)硬件設(shè)備的一組函數(shù)。在任何操作系統(tǒng)上,設(shè)備驅(qū)動程序都必須與基本的系統(tǒng)代碼進(jìn)行和諧的作用。Microsoft為保證系統(tǒng)的安全性、穩(wěn)定性、可移植性,對應(yīng)用程序訪問硬件資源進(jìn)行了限制,不能直接進(jìn)行物理內(nèi)存、I/O端口的訪問以及中斷處理等硬件操作。
4.2 使用WinDriver開發(fā)設(shè)備驅(qū)動程序
1)驅(qū)動程序開發(fā)環(huán)境選擇
開發(fā)設(shè)備驅(qū)動程序的軟件平臺有很多種,如DDK、VTOOSD、WinDriver、DriverStudio等.本設(shè)計(jì)采用WinDriver來開發(fā)設(shè)備驅(qū)動程序.WinDriver對常見的PCI接口芯片(AMCC、PLX系列)提供了很好的支持,有專門的函數(shù)供開發(fā)人員利用,方便了驅(qū)動程序的開發(fā).
2)本設(shè)計(jì)用戶模態(tài)下的驅(qū)動程序介紹
WinDriver驅(qū)動程序可以分為兩種工作模式,即用戶模式和內(nèi)核模式。本設(shè)計(jì)用戶模式下的驅(qū)動程序的功能包括:PCI配置寄存器訪問、映射到局部空間的各種寄存器訪問(包括局部控制寄存器、RunTime寄存器、DMA寄存器、和消息隊(duì)列寄存器),各種PCI設(shè)備選擇,EEPROM訪問,IO操作,LOCAL映射的各個(gè)空間的訪問,DMA操作,中斷處理等。
3)本設(shè)計(jì)中內(nèi)核驅(qū)動程序的設(shè)計(jì)
數(shù)據(jù)采集需要傳送大量的數(shù)據(jù),需要快速的將采集到的數(shù)據(jù)傳遞給主機(jī),數(shù)據(jù)傳送占用時(shí)間越短,應(yīng)用程序能利用的時(shí)間也就越多,從而對于數(shù)據(jù)采集卡和主機(jī)之間的相互通信和數(shù)據(jù)傳輸提出了較高的要求。編寫該設(shè)備驅(qū)動程序的關(guān)鍵性問題在于:快速可靠的DMA傳輸、響應(yīng)及時(shí)的中斷處理等。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é)束呼叫。
傳輸時(shí)間 = 中斷時(shí)間 + DMA傳輸時(shí)間
通過邏輯分析儀查看硬件波形圖可以計(jì)算出內(nèi)核模式下中斷觸發(fā)DMA傳輸速率為105.4MByte/s。所以數(shù)據(jù)持續(xù)傳輸速率可達(dá)105MByte/s?梢钥吹剑袛囗憫(yīng)時(shí)間也影響數(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總線進(jìn)行快速數(shù)據(jù)傳輸是實(shí)現(xiàn)主機(jī)與外設(shè)間通信的主要方式。作者在實(shí)驗(yàn)室利用PCI9054接口芯片設(shè)計(jì)了一個(gè)帶有12通道的高速信號采集器。對影響數(shù)據(jù)傳輸速率的各個(gè)環(huán)節(jié)逐一考慮,提出了一整套數(shù)據(jù)傳輸方案。將數(shù)據(jù)持續(xù)傳輸速率提高到100MByte/s以上。接近PCI總線的極限速率。
本文的創(chuàng)新點(diǎn)是:對局部總線狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換進(jìn)行了研究。局部總線狀態(tài)機(jī)采用改進(jìn)的狀態(tài)轉(zhuǎn)換邏輯,將DMA數(shù)據(jù)傳輸效率提高了約20MByte/s。
參考文獻(xiàn):
[1]裴喜龍,童莉.基于PCI總線的高速數(shù)據(jù)采集卡系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].微機(jī)算計(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è)計(jì).西安:西安電子科技大學(xué)出版社[M].1997。
[6] 喬林,楊志剛著.Visual C++高級編程技術(shù)DirectX篇.北京:中國鐵道出版社[M].1998。
[7] 胡波,原新晶.WinDriver 開發(fā)驅(qū)動程序的KernelPlugIn技術(shù)的研究與應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2003,23(11)。
標(biāo)簽:
傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為傳動網(wǎng)(www.surachana.com)獨(dú)家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。
產(chǎn)品新聞
更多>2025-10-31
勇梅機(jī)械液壓閘門給煤機(jī)的優(yōu)點(diǎn)
2025-10-22
2025-10-17
2025-10-11
「一體機(jī)性價(jià)比王者」NK290M普及型數(shù)控...
2025-10-09
2025-09-23