基于PCI總線和DSP技術的虛擬儀器系統設計
2 系統控制邏輯的實現
由于CPLD器件掉電后可保存芯片內部程序,無須煩瑣的重復燒寫,因此本設計采用Altera公司的CPLD器件,作為PCI接口芯片及存儲芯片的邏輯控制。考慮到需要使用局部地址/數據各16根線,控制信號線22根,還要為數據采集電路預留些I/O引腳,最后決定采用144腳TQFP封裝的EPM3128。
在本系統中,EPM3128的主要功能是實現PCI Local端的地址譯碼、DSPLocal端對各個DRAM控制的地址譯碼、對板上功能選擇開關的狀態進行譯碼,從而實現對系統功能的配置以及對各芯片的控制信號進行邏輯譯碼。所有的譯碼工作都通過VHDL編程語言來實現。綜合和編譯工作是在Altera公司的QuartusII集成編譯環境中完成的。
3 數據采集電路的實現
數據采集電路是本系統的關鍵,數據采集電路設計的好壞將直接影響到本系統的性能。為了實現系統功能的可配置和可擴展性,數據采集模塊設計成可配置的模式插接在總線接口母板上,實現對外部信號的數據采集。數據采集模塊由高速16位adc(LTC1608)和高性能DSP芯片(TMS320C6713)構成,LTC1608的并行數字接口可方便地與包括TMS320C6713在內的多種DSP通信,并可連接3V或5V邏輯。
由于對采集精度的高要求,在信號進入ADC之前,需要對模擬信號進行一系列的處理以保證信號的可靠性:模擬信號首先經過電壓跟隨運算放大器增加輸入阻抗,再經過電壓比例放大和一階RC低通濾波,最后輸入到ADC。
圖4 輸入信號處理電路原理圖
圖5 LTC1608 A/D芯片引腳連接電路圖
具體的信號處理電路如圖4和圖5所示。
系統軟件設計
正如圖1所示,硬件設計完成后,要使整個系統工作還需要軟件的支持,這些軟件包括PCI設備驅動程序、數據處理算法程序和系統控制軟件。
1 設備驅動程序設計
設備驅動程序不是單獨存在的,而是相關操作系統內核的一部分,所以需要對操作系統有一定的了解。Windows2000操作系統是32位的多任務非實時操作系統。對整個系統底層的操作和用戶與硬件打交道的權力被屏蔽,必須通過操作系統統一管理設備驅動程序和其他內核訪問來實現應用軟件對硬件的訪問。在設計和使用PCI設備時,經常要在軟件中對系統資源進行訪問,因此只有編制設備驅動程序才能實現對PCI總線設備的完全訪問。
應用程序對設備I/O進行Win32調用,這個調用由I/O系統服務接收。I/O管理器從這個請求構造一個合適的I/O請求包(IRP)。在最簡單的情況下,I/O管理器只是把IRP傳遞給一個設備驅動程序,這個驅動程序與硬件打交道,并完成IRP的處理。I/O管理器把數據和結果返回給Win32和用戶應用程序。而一個IRP由一個分層的設備驅動程序棧處理是很常見的。每個驅動程序把該請求劃分成更簡單的請求。最高層的驅動程序(如文件系統驅動程序)知道文件如何在磁盤上表示,但不知道如何得到數據的細節;中間層次的驅動程序進一步處理請求;最低層的驅動程序與硬件實際打交道。
本設計選擇的硬件驅動程序開發工具是Compuware公司提供的一個驅動程序集成開發包(DriverStudio)。利用其中的DriverWorks工具可以生成一個PCI總線驅動框架,然后在WDM中實現輸入輸出處理,可以用KIoRange類來實現。
在驅動程序框架生成的過程中,我們可以通過向導聲明驅動程序中將要使用的資源;通過調用KIoRange類的Initialize()函數,可以對資源進行初始化(映射PCI局部空間);應用層通過DeviceIoControl函數向驅動程序發命令來調用KIoRange的成員函數實現應用層對I/O空間的處理。開發PCI母板的windows驅動程序,就是使PC能正常識別該板卡并分配所需的系統資源。
評論