徐望明
(武漢科技大學(xué)信息科學(xué)與工程學(xué)院,武漢430081)
在通信技術(shù)、電子技術(shù)、儀器儀表和工業(yè)控制等領(lǐng)域的信號處理系統(tǒng)中,會(huì)經(jīng)常使用到正弦波信號、三角波信號、方波信號等信號源。隨著數(shù)字器件如單片機(jī)、DSP(Digital Signal Processor)技術(shù)的發(fā)展,已有多種數(shù)字化方法可用于產(chǎn)生應(yīng)用所需的信號源[1-2]。其中,數(shù)字正弦波發(fā)生器是《單片機(jī)原理與應(yīng)用》、《DSP 原理與應(yīng)用》等課程實(shí)驗(yàn)教學(xué)中的一個(gè)典型實(shí)驗(yàn)項(xiàng)目,要求學(xué)生在規(guī)定的實(shí)驗(yàn)課時(shí)內(nèi)設(shè)計(jì)一個(gè)數(shù)字信號發(fā)生器,產(chǎn)生指定參數(shù)(如頻率、幅度等)的正弦波信號。
通常所用的方法是查表法和泰勒級數(shù)展開法[3]。前者輸出響應(yīng)快,但精度依賴于存儲空間,一般只適用于對精度要求不高的場合;后者所占存儲單元少,但精度依賴于展開項(xiàng)數(shù),項(xiàng)數(shù)越多則精度越高,但相應(yīng)運(yùn)算量會(huì)越大、效率越低,實(shí)用性不強(qiáng)。
本文以數(shù)字正弦波發(fā)生器設(shè)計(jì)實(shí)驗(yàn)為案例,介紹一種運(yùn)算速度快、精度高而且使用的存儲空間少的方法——差分方程迭代法來產(chǎn)生正弦序列,靈活且實(shí)用。本文結(jié)合數(shù)學(xué)中的三角函數(shù)公式推導(dǎo)了產(chǎn)生正弦序列的差分方程,繼而緊密結(jié)合專業(yè)基礎(chǔ)理論知識,從信號與系統(tǒng)分析的角度推導(dǎo)出了相同差分方程,并進(jìn)一步探討了以產(chǎn)生的正弦波為基礎(chǔ),通過函數(shù)轉(zhuǎn)換的方法來產(chǎn)生三角波、方波等波形的方法,以及可通過一定參數(shù)設(shè)置來實(shí)現(xiàn)輸出波形幅度和頻率可調(diào)的方法。
在信號處理系統(tǒng)中,如果想要產(chǎn)生輸出精度可調(diào)的正弦波,可使用差分方程迭代法[4],其基本原理為建立產(chǎn)生正弦序列的差分方程,這樣就可從給定的初始值推導(dǎo)出后面的正弦序列。差分方程的一種推導(dǎo)方法是利用數(shù)學(xué)中的三角函數(shù)公式:
令α=nω,β=(n-2)ω,則:
記y(n)=sin nω,則:當(dāng)n=0 時(shí),y(0)=0;當(dāng)n=1時(shí),y(1)=sin ω;當(dāng)n ≥2 時(shí),y(n)=2 cos ω y( n-1)-y( n-2),即為差分方程:
其中A=2 cos ω,B=-1。
設(shè)希望輸出頻率為fd的正弦信號sin(2πfdt),用數(shù)字器件(如單片機(jī)、DSP 等)來實(shí)現(xiàn),實(shí)際得到的是一個(gè)正弦序列,可認(rèn)為是sin(2πfdt)經(jīng)大小為fs的采樣頻率采樣后而得到,即sin(2πfdnT),其中n 為自然數(shù)為采樣周期。令則采樣后的正弦序列為sin(nω)。
若fd=0.4kHz,fs=16kHz,則差分方程系數(shù)為:A=2×0.98768834,B=-1,且 初 始 值y(0)=0,y(1)=0.15643447。
根據(jù)差分方程迭代法原理不難編寫出C 語言程序,實(shí)現(xiàn)生成指定參數(shù)的正弦波信號。
上面的原理推到基于純數(shù)學(xué)公式,結(jié)合專業(yè)基礎(chǔ)理論知識,也可從信號與系統(tǒng)分析的角度推導(dǎo)出差分方程,與專業(yè)緊密聯(lián)系,更易于理解。
把輸出正弦序列看做系統(tǒng)的單位沖激響應(yīng)序列,即h(n)=sin(nω)。對該序列作Z 變換得:
其中a=2 cos(ω),b=-1,c=sin(ω)。
對式(1)求逆Z 變換得差分方程[2]:
根據(jù)實(shí)際設(shè)計(jì)指標(biāo),可計(jì)算出系數(shù)a、b、c。當(dāng)fd=0.4kHz,fs=16kHz,則a=1.97537668,b=-1,c=0.15643447。
可見,數(shù)字正弦信號發(fā)生器可表示為一個(gè)二階離散系統(tǒng),h(n)=sin(nω)為其單位序列響應(yīng)。由初始狀態(tài)為零,即h(-1)=0,h(-2)=0,由式(5)易得:h(0)=0,h(1)=c=sin(ω),當(dāng)n≥2 時(shí):
該差分方程實(shí)際上與式(3)所示的差分方程是一樣的。
正弦波的前半個(gè)周期的正弦波值都是大于零(在橫坐標(biāo)軸以上),而正弦波的后半個(gè)周期的正弦波值都是小于零(在橫坐標(biāo)軸以下),利用此特點(diǎn),三角波、方波等波形也都可用函數(shù)變換的方法生成。
(1)將正弦波前半個(gè)周期(即波形值大于零的部分)用線性函數(shù)(N 為一周期的采樣點(diǎn)數(shù))來轉(zhuǎn)換,可實(shí)現(xiàn)了在原前半個(gè)周期正弦波的基礎(chǔ)上成功輸出三角波前半個(gè)周期的波形;將正弦波后半個(gè)周期(即波形值小于零的部分)用線性函數(shù)來轉(zhuǎn)換,可實(shí)現(xiàn)了在原后半個(gè)周期正弦波的基礎(chǔ)上成功輸出三角波后半個(gè)周期的波形,由此實(shí)現(xiàn)了三角波的輸出。
(2)方波在一個(gè)周期內(nèi),其波形值只有兩種取值,例如上半周期取1,下半周期取-1 或0?;诖颂攸c(diǎn),很容易在正弦的基礎(chǔ)上產(chǎn)生所需的方波信號,具體做法是:對正弦信號設(shè)定一個(gè)判決門限,大于此門限取一個(gè)值,小于此門限取另外一個(gè)值。以幅度為1 和0 的方波信號為例,只需將正弦波前半個(gè)周期波形值大于零的部分(判決門限為0)用函數(shù)Y=1 來轉(zhuǎn)換;將正弦波后半個(gè)周期(即波形值小于零的部分)用函數(shù)Y=0 來轉(zhuǎn)換,從而實(shí)現(xiàn)了占空比為50%的方波信號產(chǎn)生。
對于以上各種波形,為了實(shí)現(xiàn)輸出幅度可調(diào),在程序中設(shè)置幅度參數(shù)即可。
為了實(shí)現(xiàn)輸出波形的頻率可調(diào),先來看采樣率和波形頻率之間的關(guān)系為:
其中:fs為采樣率,N 為一周期的采樣點(diǎn)數(shù),m 為步長,fd為波形頻率。
可見,通過適當(dāng)改變步長m、改變一周期的采樣點(diǎn)數(shù)N 或可通過定時(shí)器設(shè)置改變采樣率fs來改變輸出波形的頻率,從而達(dá)到實(shí)現(xiàn)輸出波形的頻率可調(diào)性。
以數(shù)字正弦波發(fā)生器設(shè)計(jì)實(shí)驗(yàn)為案例,本文利用差分方程迭代法給出了一種快速、靈活且實(shí)用的實(shí)現(xiàn)方案,從純數(shù)學(xué)分析的角度和信號與系統(tǒng)分析的角度分別進(jìn)行了差分方程的推導(dǎo),得到了一致的結(jié)果,進(jìn)而以正弦波發(fā)生器為基礎(chǔ),探討了產(chǎn)生三角波、方波等波形的方法,以及如何實(shí)現(xiàn)波形幅度和頻率可調(diào)。