- 相關推薦
一種Windows2000下連續輸出數據的PCI卡
摘要:介紹PCF1536的設計原理和硬件結構;詳細討論了大容量FIFO的結構及用CPLD實現FIFO控制器;計算PCF1536工作于Windows2000操作系統下允許的最大中斷延遲jb后將PCF1536應用于多路D/A轉換器,指出Windows2000的中斷延遲遠遠小于41.2毫秒。在視頻輸出、聲吶仿真等實際應用中,經常要求計算機能根據要求穩定輸出連續數據流。然而,當計算機工作于Windows2000操作系統下時,由于該操作系統是一個多任務的非實時操作系統,當它收到外部設備發來的中斷時,需要延遲一定時間間隔后,才開始執行中斷服務程序。這樣,從計算機I/O口直接輸出的數據流只能是間歇的數據流,無法提供連續數據流,不能滿足實際應用的需要。
幸運的是,許多實際應用只需要低速的連續數據流?梢岳肞CI總線的高速數據傳輸特性,在PCI接口后加入一個大容量FIFO存儲器,高速的PCI數據流從FIFO存儲器的輸入端輸入,在FIFO的輸出端就能獲得低速的連續數據流。這樣屏蔽了Windows2000的非實時性,成功滿足實際應用的需要。在圖1所示的具體應用中,計算機與PCI卡之間通過PCI總線形成峰值速率達132MB/s的間歇數據流;PCI卡通過局部總線與大容量存儲器之間同樣是峰值速率達132MB/s的間歇數據流;最后通過多路D/A轉換電路獲得了速率為16MB/s的連續數據流。
圖1和圖2
為了便于應用,將PCI接口模塊與大容量存儲器結合,設計了一塊能在Windows2000下以16MB/s的速率連續輸出數據的PCI卡PCFl536。
1 PCFl536的工作原理
PCI卡PCFl536是一個帶有1536KB FIFO的通用PCI卡;在Windows2000操作系統下,它能以16MB/s的速度連續輸出數據。圖2是PCFl536的結構框圖,整個PCFl536包括PCI接口、大容量FIFO存儲器和驅動器三個模塊。
1.1 PCI接口模塊
PCI接口模塊由PCI9052和配置EEPROM 93LC46組成。PCI9052是PLX技術公司的產品,兼容于PCI協議 (2.1版);它可作為PCI總線的從設備,支持32位數據;突發傳輸。圖3是PCI9052與PCI金手指和存儲器模塊的連接示意圖。
PCI9052與存儲器有三種連接方式:數據地址復用、奴據地址非復用和ISA方式。在PCFl536中,PCI9052架用數據地址非復用方式連接FIFO存儲器。其時序參見文獻[1]。PCI9052與FIFO的連接信號中,ADS表示一次突發傳輸的開始,BLAST表示一次突發傳輸的結束,LAD[0:31]為32位數據,LBE[0:3]為字節有效信號。緩存后的時鐘輸出信號BCLKO經74LS00送回PCI9052,同時也送到FIFO。FIFO半滿時發出的中斷信號通過LINTl1進入PCI9052,再通過INTA發送給CPU。由于FIFO的寫入不需要地址,因此PCI9052與FIFO之間沒有地址連接。
1.2 存儲器模塊
1.2.1 存儲器組織
圖4
存儲器模塊由CPLD器件EPM7128SQCl00和四片FIFO器件AL422B組成。AL422B是AVERLOGIC公司的產品,每片AL422B包含384Kx8位DRAM,主要應用于視頻輸出。在現有的FIFO存儲器中,AL422B具有最低的價格/存儲位比。這是PCFl536選擇使用AIA22B的主要原因。AL422B的結構框圖如圖4所示。它能完成初始化、復位、寫和讀等四種操作。初始化操作發生在上電后0.1ms內,WRST和RRST保持為低電子,然后可以開始正常操作。復位操作中,WRST有效,則輸入數據地址設置為0且清空輸入緩存;RRST有效,則數據輸出地址設置為0且將數據預取到輸出緩存。當WE有效時,完成寫操作,在WCK上升沿將D17~D10寫入寫數據寄存器;WE無效時,禁止寫操作,寫地址計數器保持不變。
四片AL422B通過位擴展成384K×32位的FIFO存儲器,如圖5所示。
1.2.2 存儲器控制器
AIA22B雖然有不同的數據輸入和輸出端口,但與通用FIFO存儲器不同,它并不提供半滿信號、數據有效信號等。因此AL422B不是完全意義上的FIFO存儲器。在PCFl536上,使用一片可編程邏輯設備EPM7128作為FIFO控制器,全面控制AL422B的功能。從圖2和圖5可以看出,EPM7128為FIFO提供RCK、RRST、RE、D1[0:31]、OE、WE、TST、WRST和WCK等讀寫控制信號;當FIFO半滿時提供半滿信號HF;另外EPM7128為外設提供正負數據有效信號、4MHz和8MHz的時鐘佰弓毒世外設靈活使用。圖6是用VHDL語言對EPM7128編程而成的FIFO控制器。該控制器由JTAG模塊、寫模塊、讀模塊和控制模塊組成。計算機通過JTAG接口對EPM7128現場編程。當PCI9052的數據準備好后,寫模塊按LCLK時鐘將數據讀入,接著按WCK時鐘將數據寫入AL422B。在FIFO控制器的控制下,整個384K×32位的FIFO存儲器被分為A、B兩部分。當數據從A部分讀出時,PCI9052將數據寫入B部分;反之, 當數據從B部分讀出時,PCI9052將數據寫入A部分。數據讀出的速率為16MB/s。當A(或B)部分數據讀完后,FIFO控制器接著從B(或A)部分讀數,并通過中斷通知CPU向A(或B)部分寫入數據。如此循環往復。
圖5
1.2.3 最大允許中斷延遲
要保證PCFl536輸出連續數據,就必須保證FIFO不會被讀空。FIFO輸出數據的同時,PC機必須及時補充數據。從上可知,整個FIFO存
【一種Windows下連續輸出數據的PCI卡】相關文章:
Windows 95下智能數據采集系統03-19
基于PCI總線的CAN卡的設計與實現03-18
高速PCI總線接口卡的開發03-18
在 DOS 下使用Windows *.WAV 文件03-03
Windows環境下對象的鏈接與嵌入03-16
如何給PCI卡選用合適的總線控制器03-18
基于PCI圖像卡的圖像實時處理系統開發03-07