一種基于PCI總線和DSP技術(shù)的虛擬儀器設(shè)計(jì)
系統(tǒng)軟件設(shè)計(jì)
本文引用地址:http://www.ex-cimer.com/article/93522.htm正如圖1所示,硬件設(shè)計(jì)完成后,要使整個(gè)系統(tǒng)工作還需要軟件的支持,這些軟件包括PCI設(shè)備驅(qū)動(dòng)程序、數(shù)據(jù)處理算法程序和系統(tǒng)控制軟件。
1 設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)
設(shè)備驅(qū)動(dòng)程序不是單獨(dú)存在的,而是相關(guān)操作系統(tǒng)內(nèi)核的一部分,所以需要對(duì)操作系統(tǒng)有一定的了解。 Windows 2000操作系統(tǒng)是32位的多任務(wù)非實(shí)時(shí)操作系統(tǒng)。對(duì)整個(gè)系統(tǒng)底層的操作和用戶與硬件打交道的權(quán)力被屏蔽,必須通過操作系統(tǒng)統(tǒng)一管理設(shè)備驅(qū)動(dòng)程序和其他內(nèi)核訪問來實(shí)現(xiàn)應(yīng)用軟件對(duì)硬件的訪問。在設(shè)計(jì)和使用PCI設(shè)備時(shí),經(jīng)常要在軟件中對(duì)系統(tǒng)資源進(jìn)行訪問,因此只有編制設(shè)備驅(qū)動(dòng)程序才能實(shí)現(xiàn)對(duì)PCI總線設(shè)備的完全訪問。
應(yīng)用程序?qū)υO(shè)備I/O進(jìn)行Win32調(diào)用,這個(gè)調(diào)用由I/O系統(tǒng)服務(wù)接收。I/O管理器從這個(gè)請(qǐng)求構(gòu)造一個(gè)合適的I/O請(qǐng)求包(IRP)。在最簡(jiǎn)單的情況下,I/O管理器只是把IRP傳遞給一個(gè)設(shè)備驅(qū)動(dòng)程序,這個(gè)驅(qū)動(dòng)程序與硬件打交道,并完成IRP的處理。I/O管理器把數(shù)據(jù)和結(jié)果返回給 Win32和用戶應(yīng)用程序。而一個(gè)IRP由一個(gè)分層的設(shè)備驅(qū)動(dòng)程序棧處理是很常見的。每個(gè)驅(qū)動(dòng)程序把該請(qǐng)求劃分成更簡(jiǎn)單的請(qǐng)求。最高層的驅(qū)動(dòng)程序(如文件系統(tǒng)驅(qū)動(dòng)程序)知道文件如何在磁盤上表示,但不知道如何得到數(shù)據(jù)的細(xì)節(jié);中間層次的驅(qū)動(dòng)程序進(jìn)一步處理請(qǐng)求;最低層的驅(qū)動(dòng)程序與硬件實(shí)際打交道。
本設(shè)計(jì)選擇的硬件驅(qū)動(dòng)程序開發(fā)工具是Compuware公司提供的一個(gè)驅(qū)動(dòng)程序集成開發(fā)包(DriverStudio)。利用其中的DriverWorks工具可以生成一個(gè)PCI總線驅(qū)動(dòng)框架,然后在WDM中實(shí)現(xiàn)輸入輸出處理,可以用KIoRange類來實(shí)現(xiàn)。
在驅(qū)動(dòng)程序框架生成的過程中,我們可以通過向?qū)暶黩?qū)動(dòng)程序中將要使用的資源;通過調(diào)用KIoRange類的Initialize()函數(shù),可以對(duì)資源進(jìn)行初始化(映射PCI局部空間);應(yīng)用層通過DeviceIoControl函數(shù)向驅(qū)動(dòng)程序發(fā)命令來調(diào)用KIoRange的成員函數(shù)實(shí)現(xiàn)應(yīng)用層對(duì)I/O空間的處理。開發(fā)PCI母板的windows驅(qū)動(dòng)程序,就是使PC能正常識(shí)別該板卡并分配所需的系統(tǒng)資源。
2 FFT算法的實(shí)現(xiàn)
系統(tǒng)需要針對(duì)DSP數(shù)據(jù)采集模塊,開發(fā)并實(shí)現(xiàn)對(duì)模擬信號(hào)的采集以及對(duì)數(shù)據(jù)進(jìn)行FFT(快速傅立葉變換)算法處理的程序。
作為一般的情況,設(shè):x(n)和 X(k)都是復(fù)數(shù),因?yàn)閺膶?shí)際計(jì)算過程看,實(shí)數(shù)和復(fù)數(shù)沒有區(qū)別,唯一不同的是:實(shí)數(shù)的虛部為零,表達(dá)式簡(jiǎn)單些。而運(yùn)算過程所有的計(jì)算都是對(duì)實(shí)數(shù)進(jìn)行的,如果信號(hào)或頻譜是復(fù)數(shù),就把最后計(jì)算的結(jié)果再組合成為復(fù)數(shù)分量。FFT運(yùn)算的基本單元是“蝶形單元”,其蝶形運(yùn)算的基本形式如下式所示:
所有蝶形單元的運(yùn)算可統(tǒng)一表示為
(1)
評(píng)論