一種基于PCI總線和DSP技術的虛擬儀器設計
系統軟件設計
本文引用地址:http://www.104case.com/article/93522.htm正如圖1所示,硬件設計完成后,要使整個系統工作還需要軟件的支持,這些軟件包括PCI設備驅動程序、數據處理算法程序和系統控制軟件。
1 設備驅動程序設計
設備驅動程序不是單獨存在的,而是相關操作系統內核的一部分,所以需要對操作系統有一定的了解。 Windows 2000操作系統是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能正常識別該板卡并分配所需的系統資源。
2 FFT算法的實現
系統需要針對DSP數據采集模塊,開發并實現對模擬信號的采集以及對數據進行FFT(快速傅立葉變換)算法處理的程序。
作為一般的情況,設:x(n)和 X(k)都是復數,因為從實際計算過程看,實數和復數沒有區別,唯一不同的是:實數的虛部為零,表達式簡單些。而運算過程所有的計算都是對實數進行的,如果信號或頻譜是復數,就把最后計算的結果再組合成為復數分量。FFT運算的基本單元是“蝶形單元”,其蝶形運算的基本形式如下式所示:

所有蝶形單元的運算可統一表示為
(1)

評論