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

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

評論