摘? 要: 介紹一種掃頻儀——兼有任意波形發(fā)生器和數(shù)字存儲示波器功能的虛擬儀器??赏瑫r顯示幅頻特性、相頻特性,,還可顯示采集的波形。在設(shè)計技術(shù)上,,采用FPGA,、EDA技術(shù)和VC++6.0 Windows編程技術(shù)。
關(guān)鍵詞: EDA? ISP? FPGA? VHDL? VC++? DLL
?
隨著計算機(jī)技術(shù),、電子設(shè)計自動化(EDA)技術(shù)和在系統(tǒng)可編程技術(shù)(ISP)的廣泛應(yīng)用,,使得虛擬儀器的設(shè)計更為靈活、調(diào)試更為方便,,從而使虛擬世界更為豐富多彩,。
虛擬儀器的設(shè)計包括硬件和軟件部分。本系統(tǒng)的框圖如圖1所示,。
?
?
1 系統(tǒng)硬件
由圖1可看出硬件部分主要包括:EPP口,、DDS(直接數(shù)字頻率合成)、信號調(diào)理" title="信號調(diào)理">信號調(diào)理,、鑒相及數(shù)據(jù)采集等模塊,。
1.1? EPP口
因為EPP(增強(qiáng)型并行端口)比SPP(標(biāo)準(zhǔn)并行接口)傳輸速率高,最高可達(dá)2MBytes/s,,所以本項目選用它以提高系統(tǒng)速率,。實現(xiàn)時,用VHDL編寫簡單的接口譯碼電路,。
1.2? DDS
本系統(tǒng)利用DDS技術(shù)合成精度高,、頻率穩(wěn)定度好和控制方便的優(yōu)點來產(chǎn)生掃頻信號,。其基本原理如圖2所示。
?
?
設(shè)相位累加器" title="相位累加器">相位累加器的位數(shù)為n,,累加器的輸入控制字" title="控制字">控制字為F_word,,系統(tǒng)時鐘頻率為Fclk,則輸出信號S_out的頻率Fout為:
因此,,通過計算機(jī)給DDS的累加器發(fā)不同的頻率控制字就可得到不同的頻率,。該頻率的精度主要由相位累加器的位數(shù)n決定(注:Fout與波形存貯器RAM 的深度沒有關(guān)系,存儲器容量只改變一個周期內(nèi)的數(shù)據(jù)點數(shù),,因而地址寬度m只影響波形的精度),。本系統(tǒng)取n=32,m=15,。所以,,頻率分辨率為Fclk/232,一個周期內(nèi)最多有215個數(shù)據(jù)點,。下面給出相位累加器的VHDL源程序:
ENTITY? dds_adder? IS
PORT(
clr?? :in std_logic;
clk?? : in std_logic,;
f_word :in std_logic_vector(31 downto 0),;
addr_end :in std_logic_vector(31 downto 0);
address? : out std_logic_vector(14 downto 0)
),;
END dds_adder,;
ARCHITECTURE behav OF dds_adder IS
SIGNAL mid_address:std_logic_vector(31 downto 0);
BEGIN
PROCESS (clk,,clr,,f_word,addr_end)
BEGIN
????????????? IF(clr='0') THEN???????
???????????????????? mid_address<=″0000000000000000000000
?????????????????????????????????????????????????????????????? 0000000000″,;?
???????????????????? --INITIALIZE DDS
????????????? ELSE
????????????? IF(clk'event and clk='1')THEN
???????????????????? IF(mid_address=addr_end)
??????????????????????????? --CHECK ONE CIRCLE'S END
???????????????????? THEN
??????????????????????????? mid_address<=″000000000000000000
???????????????????????????????????????????????? 00000000000000″,;
??????????????????????????? ELSE? mid_address<=mid_address + f_word;
?????????????????????????????????? --PHASE ADDER
???????????????????? END IF,;
????????????? END IF,;
?????? ?END IF;
END PROCESS,;
address<=mid_address(31 downto 17),;??
????????????? --OUTPUT 15 HIGH BITS
END behav;
由程序可看出f_word為頻率控制字,,addr_end為一個周期的結(jié)束地址,,這兩個輸入都是32位的,而輸出address為相位累加器的中間信號mid_address的高15 位,。address直接尋址波形存儲器,。
1.3 鑒相部分
鑒相部分原理如圖3所示,。掃頻信號S1和S1經(jīng)過被測網(wǎng)絡(luò)的輸出信號S2,首先分別經(jīng)過比較器形成占空比相同的方波I1和I2,。接著以I1為參考,,兩者通過數(shù)字鑒相器,得到高電平寬度受S1和S2相位差調(diào)制的方波Po,。圖3(b)和圖3(c)分別給出了I2滯后I1和I2超前I1的兩種情況,。
?
?????? 最后通過積分電路得到平均電平Peven,送到A/D" title="A/D">A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換,。這里用R-S觸發(fā)器來進(jìn)行數(shù)字鑒相,,鑒相范圍是-π~π。
1.4 數(shù)據(jù)采集
通過A/D轉(zhuǎn)換電路,,先后把S2經(jīng)過調(diào)理的信號波形和載有相位差信息的直流平均電平采集下來,,存入RAM中,最后計算機(jī)統(tǒng)一讀取,。這部分中,,關(guān)鍵是采集RAM地址發(fā)生器的設(shè)計。采集RAM地址發(fā)生器的VHDL源程序如下:
LIBRARY IEEE,;
USE IEEE.STD_LOGIC_1164.ALL,;
USE IEEE.STD_LOGIC_UNSIGNEC.ALL;
ENTITY? c_15? IS
PORT (
clk : in std_logic,;
en : in std_logic,;?
clr : in std_logic;
co : out std_logic,;
addr : out integer range 0 to 32767
),;
END c_15;
ARCHITECTURE behav OF c_15 IS
SIGNAL mid: integer range 0 to 32767,;
BEGIN
PROCESS(clk)?
BEGIN
????????????? IF(clr='0')THEN
???????????????????? mid<=0,;
???????????????????? co<='0';
????????????? ELSE
????????????? IF(clk'event and clk='1') THEN
???????????????????? IF(en='1') THEN
?????????????????????????????????? mid<=mid+1,;
???????????????????? ELSE null,;
???????????????????? END IF;
???????????????????? IF(mid=32767) THEN
??????????????????????????? co<='1',;
???????????????????? ELSE co<='0',;
???????????????????? END IF;
????????????? END IF,;
?????? END IF,;
END PROCESS;
addr<=mid,;
END behav,;
計算機(jī)讀采集RAM地址發(fā)生器基本和上面一樣,,只不過時鐘clk由EPP口通信信號譯碼得到(采集地址發(fā)生器的時鐘clk用的是A/D轉(zhuǎn)換器的時鐘)。另外,,采集地址發(fā)生器不用co信號(地址寫滿標(biāo)志信號,,由計算機(jī)讀取判斷。若為高電平,,則采集RAM已寫滿,,計算機(jī)可以讀取數(shù)據(jù))。
1.5 信號調(diào)理
信號調(diào)理部分主要是對模擬信號進(jìn)行濾波,、隔離,、推動,調(diào)節(jié)信號的直流偏移及信號的程控衰減和放大,。
系統(tǒng)硬件的數(shù)字部分用一片Altera 公司的FPGA芯片F(xiàn)lex10K10,,運(yùn)用FPGA的現(xiàn)場可重構(gòu)技術(shù),使虛擬儀器的智能化和自動化得以實現(xiàn),。其開發(fā)平臺為Altera公司的Muxplus II,。各模塊的設(shè)計主要用VHDL硬件描述語言來編寫,使得設(shè)計更為靈活,、方便,,尤其在控制邏輯的實現(xiàn)方面更顯示其優(yōu)點。
2 系統(tǒng)軟件
Microsoft公司的VC++ 6.0有MFC(Microsoft? Foundation Classes)支持,,因此可實現(xiàn)強(qiáng)大功能,編程效率高,,運(yùn)行速度快,。本項目利用上述優(yōu)點,運(yùn)用DLL(動態(tài)鏈接庫)技術(shù)進(jìn)行編程,。軟件框圖如圖4所示,。軟件主要分為控制、數(shù)據(jù)處理,、圖形顯示三大模塊,。
?
?
2.1 控制模塊
控制主要是設(shè)置DDS的頻率控制字,波形RAM數(shù)據(jù)的寫入,,采集數(shù)據(jù)的讀取以及控制硬件部分的通路選擇,,設(shè)置信號調(diào)理的衰減和放大量。
2.2 數(shù)據(jù)處理模塊
要得到網(wǎng)絡(luò)的頻率特性" title="頻率特性">頻率特性,,就要處理采集過來的波形數(shù)據(jù)(采集過來的數(shù)據(jù)包括經(jīng)過被測網(wǎng)絡(luò)的波形數(shù)據(jù)和相位差平均電平的相位數(shù)據(jù)),。這里利用軟件的“起泡算法”來得到波形峰值,計算衰減量和放大量,,得到網(wǎng)絡(luò)的幅度頻率特性,。相位頻率特性直接由相位數(shù)據(jù)得到,。
2.3 圖形顯示模塊
調(diào)用MFC 的CPaintDC類的畫圖函數(shù)進(jìn)行畫圖。CPaintDC類中有豐富的畫圖函數(shù),,包括畫線(可選擇線的形式,、顏色)、畫點等基本函數(shù),。本項目中主要由三個圖形顯示模塊:波形顯示,、振幅頻率特性曲線顯示(線性、對數(shù)坐標(biāo)),、相位頻率特性曲線顯示(線性,、對數(shù)坐標(biāo))。
軟件設(shè)計中,,采集數(shù)據(jù)的處理,、外部FPGA的配置和三個顯示模塊分別做成了DLL(動態(tài)鏈接庫)函數(shù),被主執(zhí)行程序動態(tài)調(diào)用,。
通過以上分析可知,,系統(tǒng)中有信號產(chǎn)生通道和數(shù)據(jù)采集通道。對波形存儲器RAM寫入不同的波形,,可產(chǎn)生任意波形,。另外,還可采集外部波形,,加入測頻和觸發(fā)模塊,,具有示波器的完整功能。所以該儀器兼有多種功能,,可作為掃頻儀,、信號源及數(shù)字存儲示波器。其設(shè)計思想新穎,,手段先進(jìn),,性價比較高,充分體現(xiàn)了虛擬世界的無窮魅力,。
?
參考文獻(xiàn)
1 張厥盛.鎖相技術(shù).西安:西安電子科技大學(xué)出版社,,1996.6
2 Robert D.Thompson. MFC開發(fā)人員參考手冊.北京:機(jī)械工業(yè)出版社,1998