《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > 一種Windows 2000下連續(xù)輸出數(shù)據(jù)的PCI卡

一種Windows 2000下連續(xù)輸出數(shù)據(jù)的PCI卡

2008-08-29
作者:李向陽1 李 耀2

??? 摘 要:介紹PCF1536的設(shè)計原理和硬件結(jié)構(gòu);詳細(xì)討論了大容量" title="大容量">大容量FIFO的結(jié)構(gòu)及用CPLD實(shí)現(xiàn)FIFO控制器;計算PCF1536工作于Windows2000操作系統(tǒng)下允許的最大中斷延遲;最后將PCF1536應(yīng)用于多路D/A" title="D/A">D/A轉(zhuǎn)換器,指出Windows2000的中斷延遲遠(yuǎn)遠(yuǎn)小于41.2毫秒。
??? 關(guān)鍵詞:PCF1536? 連續(xù)數(shù)據(jù)流? FIFO控制器? 中斷延遲

?

??? 在視頻輸出、聲吶仿真等實(shí)際應(yīng)用" title="實(shí)際應(yīng)用">實(shí)際應(yīng)用中,經(jīng)常要求計算機(jī)能根據(jù)要求穩(wěn)定輸出連續(xù)數(shù)據(jù)流,。然而,當(dāng)計算機(jī)工作于Windows2000操作系統(tǒng)下時,由于該操作系統(tǒng)是一個多任務(wù)的非實(shí)時操作系統(tǒng),當(dāng)它收到外部設(shè)備發(fā)來的中斷時,需要延遲一定時間間隔后,才開始執(zhí)行中斷服務(wù)程序,。這樣,從計算機(jī)I/O口直接輸出的數(shù)據(jù)流只能是間歇的數(shù)據(jù)流,無法提供連續(xù)數(shù)據(jù)流,不能滿足實(shí)際應(yīng)用的需要。
??? 幸運(yùn)的是,許多實(shí)際應(yīng)用只需要低速的連續(xù)數(shù)據(jù)流,。可以利用PCI總線的高速數(shù)據(jù)傳輸特性,在PCI接口后加入一個大容量FIFO存儲器,高速的PCI數(shù)據(jù)流從FIFO存儲器的輸入端輸入,在FIFO的輸出端就能獲得低速的連續(xù)數(shù)據(jù)流。這樣屏蔽了Windows2000的非實(shí)時性,成功滿足實(shí)際應(yīng)用的需要,。在圖1所示的具體應(yīng)用中,計算機(jī)與PCI卡之間通過PCI總線形成峰值速率達(dá)132MB/s的間歇數(shù)據(jù)流;PCI卡通過局部總線與大容量存儲器之間同樣是峰值速率達(dá)132MB/s的間歇數(shù)據(jù)流;最后通過多路D/A轉(zhuǎn)換電路獲得了速率為16MB/s的連續(xù)數(shù)據(jù)流。

?


??? 為了便于應(yīng)用,將PCI接口模塊與大容量存儲器結(jié)合,設(shè)計了一塊能在Windows2000下以16MB/s的速率連續(xù)輸出" title="連續(xù)輸出">連續(xù)輸出數(shù)據(jù)的PCI卡PCF1536,。
1 PCF1536的工作原理
??? PCI卡PCF1536是一個帶有1536KB FIFO的通用PCI卡;在Windows2000操作系統(tǒng)下,它能以16MB/s的速度連續(xù)輸出數(shù)據(jù),。圖2是PCF1536的結(jié)構(gòu)框圖,整個PCF1536包括PCI接口、大容量FIFO存儲器和驅(qū)動器三個模塊,。

?


1.1 PCI接口模塊
??? PCI接口模塊由PCI9052和配置EEPROM 93LC46組成,。PCI9052是PLX技術(shù)公司的產(chǎn)品,兼容于PCI協(xié)議(2.1版);它可作為PCI總線的從設(shè)備,支持32位數(shù)據(jù)突發(fā)傳輸。圖3是PCI9052與PCI金手指和存儲器模塊的連接示意圖,。

?


??? PCI9052與存儲器有三種連接方式:數(shù)據(jù)地址復(fù)用,、數(shù)據(jù)地址非復(fù)用和ISA方式[1]。在PCF1536中,PCI9052采用數(shù)據(jù)地址非復(fù)用方式連接FIFO存儲器,。其時序參見文獻(xiàn)[1],。PCI9052與FIFO的連接信號中,表示一次突發(fā)傳輸?shù)拈_始,表示一次突發(fā)傳輸?shù)慕Y(jié)束,LAD[0:31]為32位數(shù)據(jù),LBE[0:3]為字節(jié)有效信號。緩存后的時鐘輸出信號BCLKO經(jīng)74LS00送回PCI9052,同時也送到FIFO,。FIFO半滿時發(fā)出的中斷信號通過LINTI1進(jìn)入PCI9052,再通過INTA發(fā)送給CPU,。由于FIFO的寫入不需要地址,因此PCI9052與FIFO之間沒有地址連接。
1.2 存儲器模塊
1.2.1 存儲器組織

??? 存儲器模塊由CPLD器件EPM7128SQC100和四片F(xiàn)IFO器件AL422B組成,。AL422B是AVERLOGIC公司的產(chǎn)品,每片AL422B包含384K×8位DRAM,主要應(yīng)用于視頻輸出,。在現(xiàn)有的FIFO存儲器中,AL422B具有最低的價格/存儲位比。這是PCF1536選擇使用AL422B的主要原因,。AL422B的結(jié)構(gòu)框圖如圖4所示,。它能完成初始化、復(fù)位、寫和讀等四種操作[2],。初始化操作發(fā)生在上電后0.1ms內(nèi),然后可以開始正常操作,。復(fù)位操作中,則輸入數(shù)據(jù)地址設(shè)置為0且清空輸入緩存;則數(shù)據(jù)輸出地址設(shè)置為0且將數(shù)據(jù)預(yù)取到輸出緩存。完成寫操作,在WCK上升沿將DI7~DI0寫入寫數(shù)據(jù)寄存器;

?


??? 四片AL422B通過位擴(kuò)展成384K×32位的FIFO存儲器,如圖5所示,。

?


1.2.2 存儲器控制器
??? AL422B雖然有不同的數(shù)據(jù)輸入和輸出端口,但與通用FIFO存儲器不同,它并不提供半滿信號,、數(shù)據(jù)有效信號等。因此AL422B不是完全意義上的FIFO存儲器[2],。在PCF1536上,使用一片可編程邏輯設(shè)備EPM7128作為FIFO控制器,全面控制AL422B的功能,。從圖2和圖5可以看出,EPM7128為FIFO提供RCK、DI[0:31],、當(dāng)FIFO半滿時提供半滿信號HF;另外EPM7128為外設(shè)提供正負(fù)數(shù)據(jù)有效信號,、4MHz和8MHz的時鐘信號等,供外設(shè)靈活使用。圖6是用VHDL語言對EPM7128編程而成的FIFO控制器,。該控制器由JTAG模塊,、寫模塊、讀模塊和控制模塊組成,。計算機(jī)通過JTAG接口對EPM7128現(xiàn)場編程,。當(dāng)PCI9052的數(shù)據(jù)準(zhǔn)備好后,寫模塊按LCLK時鐘將數(shù)據(jù)讀入,接著按WCK時鐘將數(shù)據(jù)寫入AL422B。在FIFO控制器的控制下,整個384K×32位的FIFO存儲器被分為A,、B兩部分,。當(dāng)數(shù)據(jù)從A部分讀出時,PCI9052將數(shù)據(jù)寫入B部分;反之,當(dāng)數(shù)據(jù)從B部分讀出時,PCI9052將數(shù)據(jù)寫入A部分。數(shù)據(jù)讀出的速率為16MB/s,。當(dāng)A?穴或B?雪部分?jǐn)?shù)據(jù)讀完后,FIFO控制器接著從B(或A)部分讀數(shù),并通過中斷通知CPU向A(或B)部分寫入數(shù)據(jù),。如此循環(huán)往復(fù)。

?


1.2.3 最大允許中斷延遲
??? 要保證PCF1536輸出連續(xù)數(shù)據(jù),就必須保證FIFO不會被讀空,。FIFO輸出數(shù)據(jù)的同時,PC機(jī)必須及時補(bǔ)充數(shù)據(jù),。從上可知,整個FIFO存儲器被分成A、B兩部分,每部分容量均為192K×32位,。下面分析當(dāng)數(shù)據(jù)從存儲器B部分讀取,、向存儲器A部分寫入時,讀寫FIFO存儲器的時間關(guān)系,如圖7所示。

?


??? 假定PC機(jī)的中斷延遲時間為TINT_LAT,PC機(jī)寫滿存儲器A部分所用時間為TPCI,剩余時間為TREM;讀完存儲器B部分所用時間為TOUT,。如PCF1536輸出連續(xù)數(shù)據(jù)流,剩余時間TREM必須大于等于0,。
???

??? 讀完存儲器B部分所用時間:
???

??? 通過以上計算,在Windows2000操作系統(tǒng)的最大中斷延遲不大于41.2ms的情況下,PCF1536能以16MB/s的傳輸率連續(xù)輸出數(shù)據(jù)。
??? 中斷延遲決定了硬件產(chǎn)生的中斷并得到PC機(jī)正確響應(yīng)的最高頻率,。實(shí)際上,根據(jù)各種資料分析[3],雖然Windows2000操作系統(tǒng)的中斷延遲會隨著應(yīng)用條件不同而差異很大;但可以肯定的是,其中斷延遲遠(yuǎn)遠(yuǎn)小于41.2ms,。
1.3 驅(qū)動器模塊
??? 驅(qū)動器模塊由七個74LS245構(gòu)成。每個74LS245能為8位數(shù)據(jù)(信號)提供驅(qū)動,其中四個74LS245用作32位數(shù)據(jù)線的驅(qū)動器,另外三個用作控制信號的驅(qū)動,。
??? 每個74LS245的輸出分別連接到16腳的插座,。16腳插座中的8個腳接信號線,另外8個腳接地線,以提高輸出信號的抗干擾能力。采用這種輸出方式,PCF1536與外設(shè)之間可以用4m的排線連接而不會受明顯干擾,。
2 測試過程及測試結(jié)果
??? 圖8是PCF1536卡的測試系統(tǒng)" title="測試系統(tǒng)">測試系統(tǒng),。計算機(jī)重復(fù)發(fā)送如下數(shù)據(jù):0x20002000、0x32CF32CF,、0x3E6F3E6F,、0x3E6F3E6F、0x32CF32CF,、0x20002000,、0x0D300D30、0x01900190,、0x019-00190,、0x0D300D30。以上10個數(shù)據(jù)實(shí)際上是對一個正弦波的10個均勻采樣值,。用示波器監(jiān)視D/A轉(zhuǎn)換器的輸出,。

?


??? 在示波器上可以觀測到:36路的D/A輸出都是穩(wěn)定的20kHz正弦波。該測試系統(tǒng)經(jīng)過連續(xù)48小時運(yùn)行,沒有出現(xiàn)計算機(jī)死機(jī)和停止發(fā)送數(shù)據(jù)的現(xiàn)象,。因此,結(jié)論顯而易見:在Windows 2000操作系統(tǒng)下,PCF1536能以16MB/s的速度連續(xù)輸出數(shù)據(jù),它滿足某些系統(tǒng)對連續(xù)數(shù)據(jù)流的要求,。利用該測試系統(tǒng),雖然不能準(zhǔn)確測出Windows2000的中斷延遲到底有多大,但可以肯定:Windows2000的中斷延遲遠(yuǎn)遠(yuǎn)小于41.2ms。
參考文獻(xiàn)
1 PLX Technology,Inc. PCI9052 Data Book.V2.0,September?2001.www.plxtech.com.
2 AverLogic Technologies,Inc. AL422 Data Sheets. Jan 2001.www.averlogic.com.
3 李圣怡,戴一帆.Windows環(huán)境下軟硬件接口技術(shù).長沙:國防科技大學(xué)出版社,2001

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。