基于LabVIEW中DSP目標(biāo)文件加載的實現(xiàn)
數(shù)據(jù)采集卡(DAQ)的存儲空間是系統(tǒng)設(shè)計的一個重要的硬件資源,對采樣速率、實時處理性與系統(tǒng)功能都有很大的影響。在虛擬頻譜儀設(shè)計中,信號采樣數(shù)據(jù)的存儲、DSP分析、處理信號程序,都需要有足夠內(nèi)存空間。由于該儀器信號采集數(shù)據(jù)量大,DSP所實現(xiàn)的功能多,導(dǎo)致出現(xiàn)存儲空間不足。針對上述問題,本文談?wù)勗鯓踊贚abVIEW通過CLFN調(diào)用DLL加載DSP 目標(biāo)文件(*.out),從而在一定的程序存儲空間情況下來完成基于DSP數(shù)據(jù)采集卡的虛擬儀器的研制。
LabVIEW中的CLFN
LabVIEW程序由三部分組成:前面板、框圖程序和圖標(biāo)/連接器。程序前面板用于設(shè)置輸入量和觀測量,模擬真實儀器的前面板;每一個程序前面板都有相應(yīng)的框圖程序與之對應(yīng),框圖程序用圖形編程語言編寫。圖標(biāo)/連接端口可以讓用戶把VI程序定義為一個子程序,從而實現(xiàn)模塊化編程。
調(diào)用庫函數(shù)節(jié)點(Call Library Function Node,CLFN)是一個圖形化節(jié)點,是LabVIEW調(diào)用C語言編寫的可執(zhí)行程序代碼的一個通用的方法,常用于調(diào)用動態(tài)連接庫(DLL),這種方式特別適合于用戶創(chuàng)建實現(xiàn)自己特定功能的DLL。但是對C語言的編譯必須通過外部的開發(fā)平臺環(huán)境,在Win9x/NT下可以使用Microsoft Visual C++軟件平臺。
用CLFN調(diào)用DLL來實現(xiàn)DSP 目標(biāo)文件加載,簡要步驟如下:
(1)在LabVIEW程序框圖中放置一CLFN節(jié)點。對CLFN設(shè)置,建立函數(shù)原型:unsigned char dspload(CStr coffname)。其中coffname 是被加載的DSP 目標(biāo)文件名(*.out),unsigned char 是函數(shù)dspload返回值error的類型,返回值為0,表明DSP目標(biāo)文件加載成功,其它值表明加載失敗。
(2)在Microsoft Visual C++環(huán)境下建立DLL工程,從而生成dspload.dll文件。
在源程序中必須包含頭文件:extcode.h和evm6xdll.h。前者是LabVIEW調(diào)用外部代碼管理函數(shù)集的頭文件,后者是DSP數(shù)據(jù)采集卡的DLL的頭文件。
(3)設(shè)置前面板參數(shù)并完成框圖程序,將DSP目標(biāo)文件加載的前面板與相應(yīng)的框圖程序,保存為dspload.vi。執(zhí)行程序dspload.vi前,輸入目標(biāo)文件名(*.out)。
DSP數(shù)據(jù)采集卡
所用的數(shù)據(jù)采集卡是美國TI公司的TMS320C6701 DSP數(shù)據(jù)采集卡,方框圖如圖1所示。
DSP數(shù)據(jù)采集卡的特點有:
PCI總線接口,支持即插即用;通過HPI(Host Port Interface)訪問DSP內(nèi)存;16-bit音頻編解碼器,支持5.5kHz~48kHz采樣率;三種DSP boot 模式:無自舉模式,HPI 自舉模式,ROM 自舉 模式;256kB同步突發(fā)靜態(tài)RAM (SBSRAM);8MB同步動態(tài)RAM (SDRAM)。
TMS320C6701是浮點型DSP,片內(nèi)有8個并行的處理單元,分為相同的兩組。8個獨立的功能單元采用加載/存儲(load/store)體系結(jié)構(gòu),數(shù)據(jù)在多處理單元之間的傳輸依靠32個32bit通用寄存器。
DSP的體系結(jié)構(gòu)采用甚長指令字(VLIW)結(jié)構(gòu),8個指令組成一個指令包,總字長為256 bit。芯片內(nèi)部設(shè)置了專門的指令分配模塊,可以將每個256bit的指令包同時分配到8個處理單元,并由8個單元同時運行。芯片最大處理能力可以達到2400MIPs。
C6701的存儲器尋址空間為32bit,片內(nèi)RAM被分為內(nèi)部程序/Cache存儲器和內(nèi)部數(shù)據(jù)/Cache存儲器。當(dāng)片內(nèi)的RAM容量不滿足系統(tǒng)的程序/數(shù)據(jù)空間要求時,可利用外存儲器接口(External Memory Interface,EMIF)在片外進行存儲器擴展。EMIF整個外部空間最大容量為64MB,分為4個空間CE0~CE3。
HPI(Host-Port Interface)是一個16bit 的并行接口,外部主機可以通過HPI直接訪問CPU的存儲空間。外部的主機是該接口的主控者。
HPI存取的接口由一套寄存器來實現(xiàn)。HPI控制寄存器HPIC(HPI Control Register)完成對接口的設(shè)置,主機和CPU都可以訪問HPIC;外部主機進一步通過主機地址寄存器HPIA(Host Address Register)和主機數(shù)據(jù)寄存器HPID(Host Data Register)來完成對CPU存儲空間的訪問。主機對這些寄存器的訪問是通過外部的控制信號實現(xiàn)的。
HPI到CPU的存儲空間的連接由DMA控制器完成。在C6701中有專門的DMA輔助通道完成數(shù)據(jù)傳輸任務(wù)。
軟件設(shè)計
在DSP數(shù)據(jù)采集卡與LabVIEW 的接口應(yīng)用中主要利用CLFN來實現(xiàn)此功能:PC機通過HPI接口把文件名為*.out可執(zhí)行文件裝載到DSP程序存儲空間,之后DSP執(zhí)行該文件。
DSP boot模式設(shè)置為HPI 自舉。HPI自舉工作原理如下:在自舉時,核心CPU停留在復(fù)位狀態(tài),硬件其余部分均保持正常狀態(tài)。在這期間,外部主機通過HPI初始化CPU的存儲空間。主機完成所有的初始化工作后,將HPI控制存儲器中的DSPINT設(shè)置為1,結(jié)束自舉過程。此時CPU退出復(fù)位狀態(tài),開始執(zhí)行地址0處的指令。HPI自舉過程中,主機可以對DSPs所有的存儲空間進行讀和寫。
在軟件設(shè)計中,打開數(shù)據(jù)采集卡,以獲取采集卡的句柄;復(fù)位DAQ卡之后,設(shè)置HPI自舉模式,使DSP處于復(fù)位狀態(tài);這時如果DSP與HPI建立了連接,并且DMA輔助通道的優(yōu)先級比DSP高,通過調(diào)用函數(shù)evm6x_coff_load把coffname所指定的目標(biāo)文件加載到DSP內(nèi)存中。一旦DSP不處于復(fù)位狀態(tài)時,DSP就開始執(zhí)行被加載的文件。
結(jié)語
通過CLFN調(diào)用DLL加載DSP目標(biāo)文件從而節(jié)省數(shù)據(jù)采集卡的內(nèi)存空間的方法已經(jīng)應(yīng)用到吉林大學(xué)-TI DSPs實驗室的虛擬頻譜分析儀中。由于DSP加載程序是C語言程序,因此可移植性好。另外,可看出通過調(diào)用庫函數(shù)節(jié)點CLFN,將C語言同LabVIEW中編程直觀方便的圖形化G語言結(jié)合起來,以加快程序運行速度,提高軟件性能,并方便程序模塊共享,節(jié)省編程時間。■
參考文獻:
1. TMS320C6201/6701 Evaluation Module Technical Reference, Texas Instruments, 1998.
2. 任麗香,馬淑芬,李方慧,TMS320C6000系列DSPs的原理與應(yīng)用,北京:電子工業(yè)出版社,2000.
3. 張雄偉,曹鐵勇,DSP芯片的原理與開發(fā)應(yīng)用(第2版),北京:電子工業(yè)出版社,2001.
4. Using External Code in LabVIEW, National Instruments, 2000.
5. 袁淵,古軍,虛擬儀器基礎(chǔ)教程,電子科技大學(xué)出版社,2000.
圖1 TMS320C6701 DSP數(shù)據(jù)采集卡方框圖
評論