LXI總線數(shù)字化儀模塊設(shè)計(jì)
為滿足模塊能夠完成對(duì)兩種中頻信號(hào)采集,ADC電路部分設(shè)計(jì)了可變采樣時(shí)鐘電路,模塊會(huì)根據(jù)用戶的測(cè)試需要自動(dòng)選擇不同的采樣時(shí)鐘,并且采樣時(shí)鐘始終鎖定在模塊內(nèi)部或外部參考上。采樣時(shí)鐘發(fā)生電路由參考電路、集成鎖相環(huán)路(內(nèi)部自帶VCO)及DDS電路三部分組成,如圖3所示?;?a class="contentlabel" href="http://2s4d.com/news/listbylabel/label/FPGA">FPGA的控制電路控制集成鎖相環(huán)路內(nèi)部自帶的VCO鎖定在一個(gè)固定輸出頻率上,采樣時(shí)鐘信號(hào)則由DDS對(duì)VCO輸出的信號(hào)分頻得到。
本文引用地址:http://2s4d.com/article/119034.htm基于FPGA和DSP的數(shù)字中頻信號(hào)處理電路設(shè)計(jì)
FPGA主要完成數(shù)字中頻信號(hào)處理和硬件電路的控制。其中信號(hào)處理部分包括數(shù)字下變頻、數(shù)字濾波等,總體結(jié)構(gòu)上由DDS、下混頻器、MAC濾波器、系數(shù)存儲(chǔ)器等組成,DDS完成數(shù)控本振(NCO)的功能,用來(lái)產(chǎn)生下變頻所需的本振信號(hào);硬件電路控制部分包括中頻信號(hào)處理通路控制、采樣時(shí)鐘控制、數(shù)據(jù)存儲(chǔ)控制及觸發(fā)控制等。
FPGA處理后數(shù)據(jù)的最終處理與運(yùn)算工作由DSP完成,包括中頻檢波、對(duì)數(shù)處理、視頻濾波、視頻檢波以及對(duì)運(yùn)算結(jié)果進(jìn)行誤差修正等任務(wù),處理完成的數(shù)據(jù)通過(guò)LXI總線接口送到虛擬儀器軟面板進(jìn)行結(jié)果顯示。由于要進(jìn)行兩種中頻信號(hào)測(cè)量,數(shù)據(jù)處理復(fù)雜程度高,而DSP和FPGA的存儲(chǔ)空間有限,因此采用動(dòng)態(tài)更新DSP程序和FPGA程序的方法。根據(jù)用戶選擇的功能,重新配置DSP和FPGA代碼到芯片,此方法提高了軟件的靈活性和可擴(kuò)展性,同樣縮小了硬件體積,減少了硬件成本。
LXI觸發(fā)電路設(shè)計(jì)
LXI規(guī)范提供了3種觸發(fā)方式:基于LAN的觸發(fā);基于IEEE1588精密時(shí)鐘協(xié)議提供的時(shí)間基準(zhǔn)進(jìn)行定時(shí)觸發(fā);通過(guò)專用LXI觸發(fā)總線的觸發(fā)。
本數(shù)字化儀模塊采用基于IEEE1588精密時(shí)鐘協(xié)議提供的時(shí)間基準(zhǔn)進(jìn)行定時(shí)觸發(fā),該觸發(fā)需要通過(guò)網(wǎng)線來(lái)實(shí)現(xiàn)IEEE1588協(xié)議,使各設(shè)備的實(shí)時(shí)時(shí)鐘保持同步,各設(shè)備根據(jù)同步的時(shí)間實(shí)現(xiàn)事件的同步。由帶有以太網(wǎng)外設(shè)的CPU處理器和FPGA組成。 FPGA仍然實(shí)現(xiàn)IEEE 1588 時(shí)間戳和硬件觸發(fā)的功能,這樣可以大大提高同步精度,同時(shí)有利于LXI測(cè)試模塊的升級(jí)和維護(hù)。
模塊軟件設(shè)計(jì)
驅(qū)動(dòng)軟件設(shè)計(jì)
在以NT為核心的WIN2K、WINXP操作系統(tǒng)中,由于安全性、穩(wěn)定性的考慮,操作系統(tǒng)不允許應(yīng)用程序直接訪問(wèn)硬件資源,要實(shí)現(xiàn)對(duì)LXI總線中頻數(shù)字化儀硬件電路的控制就必須開(kāi)發(fā)硬件設(shè)備驅(qū)動(dòng)程序,作為下層硬件和上層應(yīng)用程序的紐帶,實(shí)現(xiàn)應(yīng)用程序?qū)Φ讓佑布脑L問(wèn)。
在中頻數(shù)字化儀軟件開(kāi)發(fā)中,我們利用工具軟件DriverStudio,按照Windows驅(qū)動(dòng)程序模型(WDM)設(shè)計(jì)了本數(shù)字化儀模塊驅(qū)動(dòng)程序,在驅(qū)動(dòng)程序中實(shí)現(xiàn)端口的讀寫(xiě)、中斷的響應(yīng)及DMA傳輸?shù)取?/p>
在中頻數(shù)字化儀模塊中,主機(jī)與模塊交互的數(shù)據(jù)量很大,通過(guò)CPU控制讀寫(xiě)很耗費(fèi)CPU資源,經(jīng)常導(dǎo)致計(jì)算機(jī)響應(yīng)遲緩,為此我們采用了DMA數(shù)據(jù)傳輸方式。DMA是利用PCI9054的DMA控制器,在本地設(shè)備與計(jì)算機(jī)內(nèi)存之間進(jìn)行數(shù)據(jù)傳輸。由于DMA控制器與CPU是并行操作,所以在數(shù)據(jù)傳輸?shù)倪^(guò)程中,CPU可以空閑下來(lái)做數(shù)據(jù)處理等工作,這種傳輸方式特別適合大數(shù)據(jù)量、多線程的處理。在DriverStudio中,類(lèi)KdmaAdapter封裝了DMA適配器。
模塊測(cè)控軟件設(shè)計(jì)
考慮到調(diào)用設(shè)備驅(qū)動(dòng)程序操作比較復(fù)雜,并且需要一定的硬件知識(shí),不利于用戶二次開(kāi)發(fā)使用,在模塊中我們對(duì)設(shè)備驅(qū)動(dòng)程序進(jìn)行了封裝,將設(shè)備的功能模塊封裝為一個(gè)個(gè)直觀易用的高層函數(shù),屏蔽了模塊的具體的控制方式,減少用戶在開(kāi)發(fā)應(yīng)用程序時(shí)對(duì)模塊的了解。
為了實(shí)現(xiàn)模塊驅(qū)動(dòng)程序的兼容性和規(guī)范性,統(tǒng)一采用虛擬儀器接口,對(duì)虛擬儀器的接口函數(shù)進(jìn)行了統(tǒng)一的命名約定,統(tǒng)一的函數(shù)輸出格式,能夠滿足在Microsoft Visual C++、C++ Builder、Lab Windows/CVI、Lab View等多種語(yǔ)言環(huán)境的二次開(kāi)發(fā)的需要,以動(dòng)態(tài)庫(kù)的形式提供用戶。
由于LXI總線數(shù)字化儀模塊本身不具有顯示控制界面,因此開(kāi)發(fā)了一個(gè)可視化的虛擬儀器軟面板控制界面,方便用戶對(duì)模塊的控制與使用,虛擬儀器軟面板控制軟件將隨模塊一并提供給用戶。
模塊自動(dòng)識(shí)別
LXI測(cè)試模塊在連接到總線上時(shí)應(yīng)能自動(dòng)被發(fā)現(xiàn)并識(shí)別。該機(jī)制主要通過(guò)實(shí)現(xiàn)LXI測(cè)試模塊內(nèi)部的RPC服務(wù)器和VXI-11協(xié)議來(lái)實(shí)現(xiàn)。具體的工作原理是:客戶端(主控計(jì)算機(jī))首先向服務(wù)器發(fā)出RPC請(qǐng)求服務(wù),當(dāng)服務(wù)器接收到該請(qǐng)求后,必須將VXI11內(nèi)核的網(wǎng)絡(luò)端口號(hào)發(fā)送給客戶端,客戶端接收到該端口號(hào)后,與服務(wù)器建立TCP/IP通訊鏈路,并向LXI測(cè)試模塊發(fā)送“*IDN?”查詢信息,LXI數(shù)字化儀模塊隨后將儀器的信息,包括廠商、型號(hào)、版本號(hào)等信息回發(fā)給客戶端,同時(shí),客戶端和服務(wù)器也通過(guò)該鏈路來(lái)實(shí)現(xiàn)SCPI命令的傳輸。
評(píng)論