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