孟繁明
(哈爾濱市城市建設(shè)投資集團有限公司)
信號發(fā)生器廣泛應(yīng)用于電子信息技術(shù)的各個領(lǐng)域。傳統(tǒng)的函數(shù)發(fā)生器,DDS任意波形發(fā)生器等方案一直應(yīng)用于信號發(fā)生器的設(shè)計。本文將另辟蹊徑,采用基于PWM技術(shù)的方法實現(xiàn)雙路信號發(fā)生器。
采用“單片機+CPLD”方案。單片機用于人機接口與控制,CPLD產(chǎn)生波形。CPLD的時鐘可以達到100M,甚至更高,在CPLD中實現(xiàn)波形控制輸出。
雙信號發(fā)生器以單片機和CPLD(EPM240)為核心。由CPLD、模擬低通濾波器和模擬運算及驅(qū)動電路實現(xiàn)信號發(fā)生。單片機與CPLD采樣SPI通信,計算出頻率,幅度,占空比的數(shù)據(jù),通過模擬SIP時序把數(shù)據(jù)送給EPM 240,并結(jié)合液晶和按鍵界面,實現(xiàn)波形輸出控制。
CPLD中共設(shè)計了2個定時器:TimerA和TimerB,以及2個PWM輸出。TimerA輸出PWM1,并具有反向輸出引腳,用于輸出第一列方波(或矩形波)或正弦波。輸出正弦波時PWM1送到兩個低通濾波器,分別獲取一次諧波(包括直流分量)和直流分量,然后經(jīng)過差分電路,把直流分量減去最后把正弦波信號輸出。TimerB的功能與TimerA一樣,產(chǎn)生PWM2。只不過相對于TimerA有相位控制。
用EPM240做定時計數(shù)器來輸出2路PWM,EPM240的工作頻率為100MHz,其定時器設(shè)為counterA,counterB。其計數(shù)的最大值為TOPA、TOPB。counterA和counterB是兩路信號的輸出,若輸出兩路信號的頻率為f1、f2。即設(shè)TOPA、TOPB的值為:
帶有占空比的PWM方波信號可以用分段函數(shù)表示方式:
其中:T是計數(shù)脈沖的基本周期,即每隔T時間記一次數(shù);N是PWM波一個周期的計數(shù)脈沖個數(shù);n是PWM波一個周期中高電平的計數(shù)脈沖序號;V是PWM波中高低電平的電壓值;k為整個周期序號;t為時間。為了對PWM信號的頻譜進行分析,以下提供了一個設(shè)計濾波器的基本理論基礎(chǔ)。傅里葉變換理論告訴我們,任何一個周期為T的連續(xù)信號,都可以表達為頻率是基頻的整數(shù)倍的正、余弦諧波分量之和。把上式所表示的函數(shù)展開成傅里葉級數(shù),得到下式
從上式可以看出,式中第一個放括弧為直流分量,第二項為1次諧波分量,第3項為大于1次的高次諧波分量。式中直流分量與n成線性關(guān)系,并隨著n從0到N,直流分量在0到VH之間變化,這正是電壓輸出的D/A所需要的。因此,如果能把式中除直流分量的濾波器進行解調(diào)。式中第2項的幅度和相角與n有關(guān),頻率為1/(NT),該頻率就是設(shè)計低頻濾波器的依據(jù)。
由方波傅里葉級數(shù)展開式,輸出正弦信號的頻率為基波的頻率,即正弦信號頻率與方波頻率計算方法相同。
由上述傅立葉級數(shù)展開式可知,改變占空比可以直接進行正弦波幅度控制。但是3.3V邏輯矩形波一次諧波幅度為2×3.3 V/π =2.1 V。為實現(xiàn)最大3.5 V 幅度要求,正弦輸出采用放大電路放大2倍,最大可達4.2 V。
從而獲得PWM2與PWM1時間延遲。即設(shè)定OCR初始的值,計數(shù)器到達OCR初始的值輸出邏輯發(fā)生變化:
OCR初始=(TOPC+1)×度/360
采用VHDL進行電路設(shè)計。PWM核心代碼如下:
正弦波輸出通過分別獲取PWM輸出一次諧波(包括直流分量)和直流分量,然后經(jīng)過差分電路,把直流分量減去最后把正弦波信號輸出。同時差分放大2倍。保證輸出幅度。8階橢圓濾波器電路是設(shè)計成敗的關(guān)鍵
本設(shè)計基于CPLD實現(xiàn)頻率、相位可調(diào)的2路PWM波形,結(jié)合橢圓濾波器實現(xiàn)雙路輸出幅度、相位和頻率可調(diào)的正弦波、方波和矩形波。兩路頻率在一定范圍內(nèi)連續(xù)可調(diào),頻率準確度不低于0.1%。最大幅度在3.5V以內(nèi)連續(xù)可調(diào),分辨率不低于12Bit。兩路信號的相位差可以0°至359.9°內(nèi)連續(xù)可調(diào),分辨率不大于0.1°。本設(shè)計具有電路線路簡單。結(jié)構(gòu)緊湊,價格低廉,性能優(yōu)越等優(yōu)點。
[1] 劉海成.AVR單片機原理及測控工程應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2008.
[2] 潘松.VHDL實用教程[M].成都電子科技大學(xué)出版社,2000.