一種Windows2000下連續輸出數據的PCI卡

發(fā)布時(shí)間:2010-8-30 09:50    發(fā)布者:techshare
關(guān)鍵詞: 2000 , PCI , 連續輸出
在視頻輸出、聲吶仿真等實(shí)際應用中,經(jīng)常要求計算機能根據要求穩定輸出連續數據流。然而,當計算機工作于Windows2000操作系統下時(shí),由于該操作系統是一個(gè)多任務(wù)的非實(shí)時(shí)操作系統,當它收到外部設備發(fā)來(lái)的中斷時(shí),需要延遲一定時(shí)間間隔后,才開(kāi)始執行中斷服務(wù)程序。這樣,從計算機I/O口直接輸出的數據流只能是間歇的數據流,無(wú)法提供連續數據流,不能滿(mǎn)足實(shí)際應用的需要。

幸運的是,許多實(shí)際應用只需要低速的連續數據流?梢岳肞CI總線(xiàn)的高速數據傳輸特性,在PCI接口后加入一個(gè)大容量FIFO存儲器,高速的PCI數據流從FIFO存儲器的輸入端輸入,在FIFO的輸出端就能獲得低速的連續數據流。這樣屏蔽了Windows2000的非實(shí)時(shí)性,成功滿(mǎn)足實(shí)際應用的需要。在圖1所示的具體應用中,計算機與PCI卡之間通過(guò)PCI總線(xiàn)形成峰值速率達132MB/s的間歇數據流;PCI卡通過(guò)局部總線(xiàn)與大容量存儲器之間同樣是峰值速率達132MB/s的間歇數據流;最后通過(guò)多路D/A轉換電路獲得了速率為16MB/s的連續數據流。為了便于應用,將PCI接口模塊與大容量存儲器結合,設計了一塊能在Windows2000下以16MB/s的速率連續輸出數據的PCI卡PCF1536。  

1 PCF1536的工作原理


PCI卡PCF1536是一個(gè)帶有1536KB FIFO的通用PCI卡;在Windows2000操作系統下,它能以16MB/s的速度連續輸出數據。圖2是PCF1536的結構框圖,整個(gè)PCF1536包括PCI接口、大容量FIFO存儲器和驅動(dòng)器三個(gè)模塊。  

1.1 PCI接口模塊


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


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


  


  
1.2 存儲器模塊

1.2.1 存儲器組織


存儲器模塊由CPLD器件EPM7128SQC100和四片FIFO器件AL422B組成。AL422B是AVERLOGIC公司的產(chǎn)品,每片AL422B包含384K×8位DRAM,主要應用于視頻輸出。在現有的FIFO存儲器中,AL422B具有最低的價(jià)格/存儲位比。這是PCF1536選擇使用AL422B的主要原因。AL422B的結構框圖如圖4所示。它能完成初始化、復位、寫(xiě)和讀等四種操作。初始化操作發(fā)生在上電后0.1ms內,和 保持為低電平,然后可以開(kāi)始正常操作。復位操作中,有效,則輸入數據地址設置為0且清空輸入緩存; 有效,則數據輸出地址設置為0且將數據預取到輸出緩存。當有效時(shí),完成寫(xiě)操作,在WCK上升沿將DI7~DI0寫(xiě)入寫(xiě)數據寄存器;無(wú)效時(shí),禁止寫(xiě)操作,寫(xiě)地址計數器保持不變。四片AL422B通過(guò)位擴展成384K×32位的FIFO存儲器,如圖5所示。  


  
1.2.2 存儲器控制器

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


  
1.2.3 最大允許中斷延遲

要保證PCF1536輸出連續數據,就必須保證FIFO不會(huì )被讀空。FIFO輸出數據的同時(shí),PC機必須及時(shí)補充數據。從上可知,整個(gè)FIFO存儲器被分成A、B兩部分,每部分容量均為192K×32位。下面分析當數據從存儲器B部分讀取、向存儲器A部分寫(xiě)入時(shí),讀寫(xiě)FIFO存儲器的時(shí)間關(guān)系,如圖7所示。


  
假定PC機的中斷延遲時(shí)間為T(mén)INT_LAT,PC機寫(xiě)滿(mǎn)存儲器A部分所用時(shí)間為T(mén)PCI,剩余時(shí)間為T(mén)REM;讀完存儲器B部分所用時(shí)間為T(mén)OUT。如PCF1536輸出連續數據流,剩余時(shí)間TREM必須大于等于0。

TREM = TOUT-TINT_LAT-TPCI≥0 (1)

根據公式(1),有: TOUT-TINT_LAT-TPCI≥0 (2) TINT_LAT≤TOUT-TPCI (3)

PC機寫(xiě)滿(mǎn)存儲器A部分所用時(shí)間: TPCI=192KB×4/(132×1024)×1000≈5.68ms (4)

讀完存儲器B部分所用時(shí)間:

通過(guò)以上計算,在Windows2000操作系統的最大中斷延遲不大于41.2ms的情況下,PCF1536能以16MB/s的傳輸率連續輸出數據。

中斷延遲決定了硬件產(chǎn)生的中斷并得到PC機正確響應的最高頻率。實(shí)際上,根據各種資料分析,雖然Windows2000操作系統的中斷延遲會(huì )隨著(zhù)應用條件不同而差異很大;但可以肯定的是,其中斷延遲遠遠小于41.2ms。

1.3 驅動(dòng)器模塊

驅動(dòng)器模塊由七個(gè)74LS245構成。每個(gè)74LS245能為8位數據(信號)提供驅動(dòng),其中四個(gè)74LS245用作32位數據線(xiàn)的驅動(dòng)器,另外三個(gè)用作控制信號的驅動(dòng)。每個(gè)74LS245的輸出分別連接到16腳的插座。16腳插座中的8個(gè)腳接信號線(xiàn),另外8個(gè)腳接地線(xiàn),以提高輸出信號的抗干擾能力。采用這種輸出方式,PCF1536與外設之間可以用4m的排線(xiàn)連接而不會(huì )受明顯干擾。  


2 測試過(guò)程及測試結果

圖8是PCF1536卡的測試系統。計算機重復發(fā)送如下數據:0x20002000、0x32CF32CF、0x3E6F3E6F、0x3E6F3E6F、0x32CF32CF、0x20002000、0x0D300D30、0x01900190、0x019-00190、0x0D300D30。以上10個(gè)數據實(shí)際上是對一個(gè)正弦波的10個(gè)均勻采樣值。用示波器監視D/A轉換器的輸出。
  
在示波器上可以觀(guān)測到:36路的D/A輸出都是穩定的20kHz正弦波。該測試系統經(jīng)過(guò)連續48小時(shí)運行,沒(méi)有出現計算機死機和停止發(fā)送數據的現象。因此,結論顯而易見(jiàn):在Windows 2000操作系統下,PCF1536能以16MB/s的速度連續輸出數據,它滿(mǎn)足某些系統對連續數據流的要求。利用該測試系統,雖然不能準確測出Windows2000的中斷延遲到底有多大,但可以肯定:Windows2000的中斷延遲遠遠小于41.2ms。
本文地址:http://selenalain.com/thread-24363-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页