??? 摘? 要: 研制了一種采用單片機(jī)與復(fù)雜可編程邏輯器件(CPLD)相結(jié)合的方法設(shè)計(jì)的任意波形發(fā)生器(AWG),并詳細(xì)介紹了利用MATLAB獲取波形數(shù)據(jù)的兩種方法。實(shí)驗(yàn)證明,該系統(tǒng)能輸出頻率和幅度可調(diào)的多種標(biāo)準(zhǔn)函數(shù)波以及任意波形。在滿足所需頻帶寬度的同時,提高了頻率的分辨率和準(zhǔn)確度。?
??? 關(guān)鍵詞: AWG; 超聲波信號源; DDS; 單片機(jī); CPLD?
?
??? 在研究聲化學(xué)的頻率效應(yīng)及超聲流體濃度檢測的過程中筆者發(fā)現(xiàn),傳統(tǒng)的模擬超聲信號源只能直接產(chǎn)生適當(dāng)頻率的電信號,用以驅(qū)動特定的超聲波換能器,且產(chǎn)生的波形種類十分有限,系統(tǒng)的智能化控制也不完善。這不僅使得超聲設(shè)備不能被合理利用,同時也在實(shí)驗(yàn)過程中加大了操作人員的工作量。所以設(shè)計(jì)一個適用范圍廣、高質(zhì)量、智能化的超聲信號源有著非常重要的意義。?
??? 本文所介紹的任意波形發(fā)生器應(yīng)用于頻率100kHz以下的低頻超聲段。從系統(tǒng)性能、實(shí)現(xiàn)成本和復(fù)雜程度等方面綜合考慮,采用了單片機(jī)與CPLD相結(jié)合的方法實(shí)現(xiàn)。其后級可運(yùn)用B類功放以獲得所需的功率輸出。?
1 系統(tǒng)原理及特點(diǎn)?
??? AWG的波形合成采用了基于Nyquist采樣定律的DDS技術(shù)。模擬信號經(jīng)過采樣、量化后存入數(shù)據(jù)查找表,控制器通過對查找表的尋址獲得波形數(shù)據(jù),再經(jīng)D/A轉(zhuǎn)換、濾波即可恢復(fù)原波形。其實(shí)現(xiàn)過程如圖1所示。?
?
?
??? 在系統(tǒng)時鐘的作用下,將頻率控制字(也即累加器步長)送至相位累加器,并與原有的數(shù)據(jù)相加,這樣,累加器的輸出是一個關(guān)于時間的線性相位函數(shù)。相位函數(shù)的斜率決定了信號的頻率,而相位函數(shù)的斜率取決于每個時鐘周期相位的增量??刂泼總€周期相位的增量即可控制合成信號的頻率。改變累加步長,即可改變輸出每個周期的相位增量,從而改變輸出信號的頻率[1]。?
??? 設(shè)定AWG的性能參數(shù)如下:?
??? (1) 8種波形存儲能力,每種最大存儲字長為4KB。?
??? (2) 可輸出包括正弦波、方波、三角波的標(biāo)準(zhǔn)函數(shù)波形;可輸出任意波形,并設(shè)定其復(fù)現(xiàn)頻率。?
??? (3) 頻率帶寬100kHz,最小分辨率為2Hz。?
??? (4) 輸出電壓峰峰值分為2.5V、5V、7.5V和10V四檔,每檔可再進(jìn)行256級量化。?
??? (5) 波形數(shù)據(jù)通過數(shù)字存儲示波器(DSO)采集或通過MATLAB合成。?
??? (6) 具備當(dāng)前波形數(shù)據(jù)掉電存儲功能。?
??? (7) 具備時控和PC控制功能。?
??? (8) 背光液晶顯示,良好的操作界面。?
??? 本系統(tǒng)與傳統(tǒng)的模擬信號發(fā)生器相比具有頻帶寬、穩(wěn)定性好、分辨率高、易于程控等特點(diǎn);而相比于采用AD9851等DDS芯片設(shè)計(jì)的信號源又具有生成波形靈活多樣的優(yōu)勢。因此它適合作為小信號源,被應(yīng)用于功率超聲和檢測超聲中。?
2 系統(tǒng)的硬件實(shí)現(xiàn)?
??? AWG的硬件電路可以分為波形發(fā)生、整機(jī)控制和電源三個模塊,其原理框圖如圖2所示。電源的設(shè)計(jì)采用經(jīng)典的線性伺服穩(wěn)壓電路,這種電路的紋波系數(shù)很小,其速率、內(nèi)阻以及穩(wěn)定性都優(yōu)于蓄電池,非常適合像信號源這樣對噪聲敏感的應(yīng)用場合。?
?
?
2.1 波形發(fā)生電路的設(shè)計(jì)?
??? 波形發(fā)生模塊是本系統(tǒng)的核心。CPLD(EPM7128S)接收單片機(jī)發(fā)來的信息對波形的各項(xiàng)參數(shù)如波形種類、幅度、頻率、濾波通道進(jìn)行控制,通過查找表的方式實(shí)現(xiàn)波形生成。?
??? 本系統(tǒng)采用了基于E2PROM的查找表。器件選用8位并行E2PROM芯片AT28C256,存儲容量為32KB。其讀寫時序十分簡單,改變尋址地址,即輸出對應(yīng)數(shù)值,占用更少的CPLD內(nèi)部宏單元。?
??? 對于幅度的控制和波形生成,則采用雙DAC的方法,如圖3所示。由于幅度控制對電流建立時間要求不高,可采用價(jià)格比較便宜的DAC0832。將其輸出電壓作為波形生成DAC的參考電壓,通過改變DAC0832的輸入來改變輸出信號的幅度。而DAC0832的參考電壓則由帶隙電壓基準(zhǔn)源AD584提供,該芯片可提供四種參考電壓。?
?
?
??? 在DDS系統(tǒng)中,波形生成DAC的電流建立時間決定了系統(tǒng)合成信號的最高頻率。在本系統(tǒng)的設(shè)計(jì)中,合成信號的最高頻率為100kHz,為了保證輸出波形的質(zhì)量,要求在輸出最高頻率時的周期點(diǎn)數(shù)不少于64點(diǎn),則電流建立時間為:?
?????
??? 為了留有一定的裕度,選用電流建立時間為100ns的AD7524。設(shè)AD584輸出5V基準(zhǔn)電壓,DAC0832的數(shù)字輸入為N1,則AD7524的參考電壓為:?
?????
??? 設(shè)AD7524的數(shù)字輸入為N2,則經(jīng)電流—電壓轉(zhuǎn)換后的輸出UOUT2為:?
?????
??? 為了減輕雜散干擾,需要在DDS輸出端加一個濾波器。考慮到對帶內(nèi)幅值平坦性、多通道控制及電路設(shè)計(jì)復(fù)雜性上的要求[2],本設(shè)計(jì)采用了巴特沃思二階低通濾波器如圖4所示。其中模擬開關(guān)CD4052將有源二階低通濾波電路組成多頻段濾波電路,濾波截止頻率分為100Hz、1kHz、10kHz和100kHz四檔,根據(jù)輸出波形頻率的不同而選擇一組電阻值進(jìn)行分段濾波。通道選擇和濾波使能由單片機(jī)直接控制。濾波器中的運(yùn)放OP37構(gòu)成同相比例放大器。?
?
?
2.2 整機(jī)控制電路的設(shè)計(jì)?
??? 整機(jī)控制模塊以AT89S52單片機(jī)為核心,并由RS-232驅(qū)動器(MAX232)、串行E2PROM(AT24C02)、液晶顯示模塊(LCM1602)、矩陣鍵盤、ADC(ADC0831)及精密電壓參考源(AD586)等部分組成,其電路如圖5所示。該模塊在系統(tǒng)中起到以下兩點(diǎn)作用:一是將用戶設(shè)定輸出波形的參數(shù)按照特定的格式發(fā)送給CPLD產(chǎn)生相應(yīng)波形;二是監(jiān)測當(dāng)前的工作狀態(tài)。?
?
?
??? 鍵盤為14鍵的矩陣鍵盤,采用線翻轉(zhuǎn)法對鍵碼進(jìn)行識別[3]。LCM1602型液晶模塊是本機(jī)的顯示輸出設(shè)備,它具有功耗低、顯示質(zhì)量高、體積小、重量輕等特點(diǎn)。
??? 掉電存儲功能由256B的I2C總線串行E2PROM(AT24C02)實(shí)現(xiàn)。?
??? 本系統(tǒng)內(nèi)置了8位逐次逼近式A/D轉(zhuǎn)換器(ADC0831),用以采樣換能器兩端的輸出電流,進(jìn)而估測功率源的輸出功率。因此通過軟件掃頻的方式就可以找到換能器的諧振頻率,實(shí)現(xiàn)頻率跟蹤。?
3 系統(tǒng)的軟件實(shí)現(xiàn)?
3.1 CPLD的邏輯設(shè)計(jì)?
??? 雖然CPLD的內(nèi)部邏輯功能屬于硬件范疇,但是由于采用了軟件的方法設(shè)計(jì)硬件,也將其歸為系統(tǒng)的軟件實(shí)現(xiàn)。?
??? 從功能上劃分,CPLD的內(nèi)部邏輯具有四個底層實(shí)體:控制字接收、相位累加、幅度DAC控制和波形DAC控制。它們分別采用MegaFunction單元庫構(gòu)建并采用Verilog HDL行為描述的方法實(shí)現(xiàn)。圖6的虛線框描述了底層各實(shí)體間的關(guān)系。?
?
?
??? 底層各實(shí)體的設(shè)計(jì)參數(shù)由系統(tǒng)的性能指標(biāo)決定。系統(tǒng)采用8MHz有源晶振,則每周期具有64個采樣點(diǎn)的波形最高復(fù)現(xiàn)頻率為:?
?????
??? 因系統(tǒng)要求的最小分辨率不大于2Hz,故相位累加器的位數(shù)至少為22位,此時最小頻率約為:?
?????
??? 因此頻率控制字(FSW)的位數(shù)為以上二者位數(shù)之差,即16位。?
??? 波形數(shù)據(jù)查找表28C256的地址總線為15位,其高3位由波形種類控制字(WSW)直接賦值,8種波形與地址的對應(yīng)關(guān)系如表1所示。?
?
?
??? 低12位地址取相位累加器輸出累加和的高12位,相位累加器的行為描述如下:?
??? module PHASE_REG (EN,CLK,PIR,ADD_L12); ?
??? input [15:0] PIR; ?
??? input EN; ?
??? input CLK; ?
??? output [11:0] ADD_L12; ?
??? reg [21:0] sum; ?
??? reg [11:0] ADD_L12; ?
??? always@(posedge CLK) ?
? ? if(EN)?
??? ??? begin ?
??? ?????? sum = sum + PIR; ?
????? ADD_L12 = sum[21:10]; ?
??????? end ?
??? endmodule?
??? 幅度DAC控制器將8位幅度控制字(ASW)賦給DAC0832并控制其輸出使能。同樣,波形DAC控制器將28C256的8位輸出賦給AD7524并分別控制二者的讀使能和輸出使能。?
??? 在本系統(tǒng)中,CPLD單向接收單片機(jī)發(fā)送的4個字節(jié)(27位有效)的控制字,數(shù)據(jù)量少且對傳輸速度沒有過高要求,因此接口設(shè)計(jì)采用SPI0的工作模式,只需占用三根口線。SPI0的工作時序十分簡單,只需將片選(SS_n)拉低,然后在每個時鐘(SCK)的上升沿送出數(shù)據(jù)(MOSI)即可[4]。串行移位用串入并出的移位寄存器實(shí)現(xiàn),并行數(shù)據(jù)鎖存則用D觸發(fā)器,二者分別可由Quartus II MegaWizard向?qū)е械腖PM_SHIFTREG和LPM_FF構(gòu)建,如圖7所示。
?
?
3.2 單片機(jī)的軟件設(shè)計(jì)?
??? 單片機(jī)的程序利用C語言編寫,可分為驅(qū)動程序(包括液晶驅(qū)動、鍵盤驅(qū)動、SPI總線驅(qū)動、I2C總線驅(qū)動、串口驅(qū)動等)和菜單程序兩部分。圖8為本系統(tǒng)的操作流程圖。?
?
?
??? 在輸出模式中,直接進(jìn)入“Last waveform”菜單后就能方便地讀取前一次保存的波形參數(shù);而在“New waveform”菜單下則可以重新設(shè)置參數(shù)。?
??? 本系統(tǒng)還有兩種特別的控制方式:一是在“RS232 Mode”中,可由PC機(jī)通過串口發(fā)送控制字并監(jiān)控其工作狀態(tài),在上位機(jī)軟件的支持下可以使本機(jī)協(xié)同其他智能儀器高效地完成實(shí)驗(yàn)過程;二是在“Anolog Mode”中,波形參數(shù)或運(yùn)行狀態(tài)可由輸入電壓量來控制,例如當(dāng)換能器或功放工作時間過長導(dǎo)致發(fā)熱量過大時,可關(guān)閉輸出。?
??? 在“DSP.Waveform”菜單中,完成所有控制字的轉(zhuǎn)換、存儲、發(fā)送和顯示。單片機(jī)向CPLD發(fā)控制字的接口程序如下:?
??? /**向CPLD的SPI端口寫一個字節(jié)的控制字**/?
??? void write_SPI(uchar SETWORD)?
??? {?
??? uchar i;?
??? for(i=0;i<8;i++)?
??? {?
??? ?? SCK=0;?
??? ?? DATA=(SETWORD<
??? ?? SCK=1;?
??? }?
??? }?
??? /**向CPLD的SPI端口寫四個字節(jié)的控制字**/?
??? void write_SETWORD()?
??? {?
??? SS=0;??????????? ??????? //SPI傳送開始?
??? write_SPI(WSW);? ??? //寫波形種類控制字?
??? write_SPI(FSW_H); ?? //寫波形頻率控制字高字節(jié)?
??? write_SPI(FSW_L); ?? //寫波形頻率控制字低字節(jié)?
?????? write_SPI(ASW);? ? //寫波形幅度控制字?
???? ? SS=1;?????????? ??????? //SPI傳送結(jié)束,波形發(fā)生模塊開始工作?
?? EN_4052=0;???????? //濾波器開始工作?
??? }?
3.3 波形數(shù)據(jù)的獲取?
??? 采用兩種方法獲取所需的波形數(shù)據(jù),即公式法和采樣法。?
??? 在利用超聲波進(jìn)行變壓器油中微水濃度檢測的實(shí)驗(yàn)中[5],為了避免接收信號相互重疊,需要用單脈沖觸發(fā)的正弦波激勵發(fā)射端換能器,使聲波通過充滿油水混合物的管道,并于接收端觀測、分析波形,以便設(shè)計(jì)合適的放大和整形電路。下面分別用以上兩種方法說明發(fā)射端和接收端波形數(shù)據(jù)的獲取。?
??? (1) 用公式法獲取發(fā)射端波形?
??? 常用的波形通常都可以用公式進(jìn)行描述,MATLAB的內(nèi)部就提供了大量的波形產(chǎn)生函數(shù)[6],具體調(diào)用方法見軟件說明文檔。?
??? 本系統(tǒng)中,每種波形的存儲深度為4 096點(diǎn),其數(shù)據(jù)表可看作是1*4 096的一維數(shù)組,且元素的取值范圍為0~255,直流偏置量為128。獲取占空比為1/16的單脈沖觸發(fā)正弦波數(shù)據(jù)可分三步完成:?
??? 首先產(chǎn)生256點(diǎn)的正弦數(shù)據(jù)表,程序如下: ?
??? x=0:2*pi/255:2*pi;?? % 采樣一個周期,采樣點(diǎn)數(shù)為256?
??? y0=(sin(x)+1)*128;? %直流偏置為128,幅值范圍0~255?
??? y1=uint8(y);??????? ??? ??%幅值取8位無符號整形?
??? 其次在y1后添加長度為3 840的幅值為128的數(shù)據(jù)點(diǎn)。可以利用y2=repmat(128,1,4 096)語句建立一個1*4 096的全128數(shù)組,將y1的值粘貼至y2的前256點(diǎn)即可。?
??? 最后,在Quartus II軟件[7]中新建字長為8bit,長度為4 096的HEX文件,從MATLAB的Array Editor中將y2的數(shù)據(jù)復(fù)制到該文件,并在E2PROM燒錄軟件中按指定起始地址將其導(dǎo)入即可。?
??? (2) 用采樣法獲取接收端波形?
??? 有些波形較為復(fù)雜,不易用公式描述,則可用數(shù)字存儲示波器采集并處理后將其復(fù)現(xiàn)。圖9即為TDS1012型示波器采集的發(fā)射端和接收端的波形。該示波器除了能將屏幕所示信息存為bmp位圖外,還可將CH1和CH2的波形數(shù)據(jù)以2 500點(diǎn)的存儲深度保存為CSV(逗號分隔值)文件。?
?
?
??? 以接收端的波形為例,在MATLAB中將CSV文件中的波形數(shù)據(jù)以一維數(shù)組的形式導(dǎo)入,并利用Array Editor中的二維繪圖功能查看并截取一個周期的波形數(shù)據(jù)。由于此時數(shù)據(jù)點(diǎn)數(shù)并不是4 096,而是小于2 500的值,因此需要進(jìn)行插值處理,程序如下:?
??? x0=1:1739;???????????????? %截取后的波形點(diǎn)數(shù)為1739點(diǎn)?
??? x1=1:1 739/4 098:1 739; %插值后的波形點(diǎn)數(shù)為4096點(diǎn)?
??? y1=spline(x0,y0,x1);???? %三次樣條插值,y0為插值前數(shù)據(jù)?
??? y2=uint8(y1);??? ???????????%幅值取8位無符號整形?
??? 插值后的周期波形如圖10所示。?
?
?
4 試驗(yàn)結(jié)果及分析?
??? 使用TDS1012型示波器測試本系統(tǒng)的性能。表2記錄的是一組正弦波的頻率測量結(jié)果,結(jié)果表明合成波形的頻率誤差在2Hz以內(nèi),與理論值相符,達(dá)到了設(shè)計(jì)指標(biāo)。
?
?
??? 圖11所示為輸出頻率為10kHz的正弦波,它是降指數(shù)波、DSB調(diào)幅波和基波與3次諧波疊加的任意波形,濾波方式為Auto,即系統(tǒng)根據(jù)設(shè)定頻率自動選擇相應(yīng)的濾波通道。?
?
?
??? 但是,對于像方波這樣含有許多高頻成分的波形,在選用Auto方式濾波時,大于復(fù)現(xiàn)頻率的成分會被大幅衰減,導(dǎo)致波形失真,圖12左上圖為10kHz方波通過10kHz低通濾波器前后的波形,右上圖為濾波后頻譜。通過手動設(shè)置濾波通道,增大通帶寬度,就可以減小波形失真,左下圖和右下圖分別為通過100kHz低通濾波器后的波形和頻譜。?
?
?
??? 本文針對低頻超聲波的應(yīng)用,介紹了一種采用單片機(jī)和CPLD研制的任意波形發(fā)生器,它可以為實(shí)驗(yàn)室提供一種高性價(jià)比的超聲信號源解決方案。隨著新一代大規(guī)模低成本CPLD的推出與應(yīng)用(如MAX II系列),本系統(tǒng)還可擴(kuò)展波形數(shù)據(jù)聯(lián)機(jī)下載或?qū)崟r采集等功能。若采用更高速率的DAC和查找表存儲器還可進(jìn)一步提高輸出帶寬,使之覆蓋整個超聲頻段。?
參考文獻(xiàn)?
[1] 吳秋蘭.現(xiàn)代數(shù)字系統(tǒng)設(shè)計(jì)方法研究及其在AWG中的應(yīng)用[D].濟(jì)南:山東大學(xué),2001.?
[2] 毛敏,鄭珍,周渭.基于DDS的低通濾波器的設(shè)計(jì)與實(shí)現(xiàn)[J].電子科技,2006(3):17-20.?
[3] 求是科技.單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航[M]. 北京:人民郵電出版社,2004.?
[4]?黃任.AVR單片機(jī)與CPLD/FPGA綜合應(yīng)用入門[M].北京:北京航空航天大學(xué)出版社,2006.?
[5] 朱昌平,單鳴雷,齊本勝,等.變壓器油中微水及混合氣體超聲在線檢測方法及裝置[P].中國:200710021320.5,2007. ?
[6] 郭仕劍,王寶順,賀志國,等.MATLAB7.X數(shù)字信號處理[M].北京:人民郵電出版社,2006. ?
[7] Altera Corporation.Quartus II 7.1 Handbook,2007.?
[8] 王文華.基于DDS技術(shù)的任意波形發(fā)生器研究[D].杭州:浙江大學(xué),2002.?
[9] 馮若.超聲手冊[M].南京:南京大學(xué)出版社,2006.?
[10] 任緒科,趙俊渭,周明.基于CPLD和單片機(jī)的任意波形發(fā)生器設(shè)計(jì)[J].電子產(chǎn)品世界.2005(1):118-119.?