摘 要: 介紹了一種以FPGA和單片機(jī)為控制核心,基于調(diào)制原理配合使用DDS專用芯片AD9851,實(shí)現(xiàn)了一種多功能正弦信號(hào)發(fā)生器。實(shí)現(xiàn)了在30 Hz~12 MHz頻率范圍內(nèi)正弦信號(hào)的無(wú)失真輸出,且在輸出端接50 Ω功率電阻的條件下,輸出電壓峰峰值在5.8 V~6 V范圍內(nèi)。系統(tǒng)還具有AM、FM、ASK、FSK、PSK調(diào)制的功能,整體工作穩(wěn)定,界面友好,操作簡(jiǎn)單。
關(guān)鍵詞: FPGA;單片機(jī);DDS;調(diào)制
在通信、廣播、電視系統(tǒng)中,都需要射頻發(fā)射,即載波,把音頻、視頻信號(hào)或脈沖信號(hào)運(yùn)載出去,這就需要能產(chǎn)生高頻信號(hào)的振蕩器。正弦波振蕩電路在各個(gè)科學(xué)技術(shù)部門(mén)的應(yīng)用是十分廣泛的。在工業(yè)、農(nóng)業(yè)、生物醫(yī)學(xué)等領(lǐng)域(如高頻感應(yīng)加熱、熔煉、淬火,超聲波焊接、超聲診斷、核磁共振成像等)都需要功率或大或小、頻率或高或低的振蕩器。
本系統(tǒng)以直接數(shù)字合成(DDS)芯片為信號(hào)發(fā)生核心,以單片機(jī)為控制和人機(jī)界面核心,使用FPGA作為控制核心,組成一個(gè)具有多種信號(hào)輸出能力的信號(hào)發(fā)生電路??奢敵鲱l率可調(diào)的正弦信號(hào)、調(diào)頻信號(hào)、調(diào)幅信號(hào)和數(shù)字調(diào)制輸出信號(hào)等,具有廣泛的應(yīng)用前景[1-2]。
1 系統(tǒng)總體設(shè)計(jì)方案和工作原理
系統(tǒng)整體框圖如圖1。單片機(jī)接收用戶的模式選擇和參數(shù)設(shè)置值并經(jīng)過(guò)程序處理后送入FPGA。在FPGA中預(yù)先構(gòu)建了實(shí)現(xiàn)各種功能的功能模塊。DDS控制模塊用于控制DDS芯片AD9851產(chǎn)生相應(yīng)頻率的無(wú)調(diào)制正弦波及調(diào)頻正弦波;DAC7611控制模塊用于控制DAC7611數(shù)模轉(zhuǎn)換器并為DAC904數(shù)模轉(zhuǎn)換器提供基準(zhǔn)電壓;二進(jìn)制基帶碼控制模塊用于將用戶輸入的二進(jìn)制基帶碼轉(zhuǎn)換為串行數(shù)據(jù),便于后續(xù)處理;數(shù)字調(diào)制控制模塊用于判斷用戶選擇的數(shù)字調(diào)制方式,并結(jié)合二進(jìn)制基帶碼模塊輸出的數(shù)據(jù),輸出不同的相位值給ROM中的正弦波表,實(shí)現(xiàn)輸出數(shù)字調(diào)制信號(hào);DAC904用于D/A轉(zhuǎn)換輸出數(shù)字調(diào)制信號(hào)。
2 FPGA內(nèi)部控制模塊及其實(shí)現(xiàn)
2.1 DDS控制模塊
AD9851是ADI公司的專用DDS芯片,采用CMOS生產(chǎn)的具有高集成度的直接數(shù)字合成器,內(nèi)置32 bit頻率累加器、10 bit高速DAC、高速比較器和可軟件選通的時(shí)鐘6倍頻電路。外接參考頻率源時(shí),AD9851可以產(chǎn)生頻譜純凈、頻率和相位都可控且穩(wěn)定度非常高的正弦波。
相位累加器的位數(shù)為N,相位控制字的值為FN,頻率控制字的位數(shù)為M,頻率控制字的值為FM,F(xiàn)c為AD9851內(nèi)部時(shí)鐘頻率。此時(shí),最終合成信號(hào)的頻率和相位可由式(1)和式(2)來(lái)決定:
FPGA中DDS控制模塊的功能主要是對(duì)AD9851寫(xiě)控制字,使其輸出正弦、AM、FSK、FM波。功能的切換通過(guò)寫(xiě)入不同的控制字得以實(shí)現(xiàn),頻率數(shù)據(jù)由P0、nWR、CS、Addr等微機(jī)標(biāo)準(zhǔn)接口寫(xiě)入。對(duì)AD9851的操作由FQD、WCK、Dout、RST輸出口與芯片數(shù)字接口實(shí)現(xiàn)。實(shí)現(xiàn)FM時(shí),需要在中心頻率周圍產(chǎn)生5 kHz/10 kHz的頻偏,這要求模塊輸出的頻率控制字要隨調(diào)制信號(hào)幅度變化而變化,在模塊的輸入端給出了當(dāng)前的頻率控制字增量,模塊讀入這個(gè)增量與中心頻率控制字相加,即可得到當(dāng)前頻率控制字,也即實(shí)現(xiàn)了FM。
2.2 幅度調(diào)制模塊
實(shí)際控制調(diào)幅度AM時(shí),保持載波信號(hào)幅度不變,控制調(diào)制信號(hào)的幅度,就可以實(shí)現(xiàn)AM在10%~100%之間調(diào)節(jié)。通過(guò)控制DAC7611輸出信號(hào)幅度,即控制DAC904的參考電壓,達(dá)到控制調(diào)制度的效果??梢酝ㄟ^(guò)一個(gè)模擬乘法器AD835電路實(shí)現(xiàn)調(diào)幅信號(hào),且載波信號(hào)頻率可以做得很高,也比較容易實(shí)現(xiàn)。
2.3 頻率調(diào)制模塊
在軟件實(shí)現(xiàn)時(shí),根據(jù)調(diào)頻信號(hào)變化的規(guī)律采用數(shù)字方式控制DDS正弦波發(fā)生器的頻率控制字,存在一個(gè)單獨(dú)的ROM模塊中,直接作用于輸出波形的頻率值,即實(shí)現(xiàn)了對(duì)信號(hào)源頻率的調(diào)制。
由單片機(jī)輸入中心頻率和最大頻偏后,啟動(dòng)數(shù)字FM,F(xiàn)PGA內(nèi)部時(shí)鐘單元將產(chǎn)生一個(gè)128 kHz的時(shí)鐘,用于累加8 128 bit正弦波表地址,得出相應(yīng)正弦幅度量化值。該幅度值一方面作為輸出信號(hào)輸出至外部D/A的數(shù)據(jù)端口,用于恢復(fù)正弦信號(hào);另一方面作為頻率控制字的計(jì)算依據(jù),根據(jù)相應(yīng)公式計(jì)算出頻率控制字。寫(xiě)時(shí)序控制器在時(shí)鐘的作用下將生成的頻率控制字寫(xiě)到DDS芯片AD9851內(nèi),從而產(chǎn)生一個(gè)頻率與正弦信號(hào)幅度成比例的調(diào)頻信號(hào)。
2.4 數(shù)字調(diào)制模塊
在具體的編程實(shí)現(xiàn)過(guò)程中,在FPGA內(nèi)設(shè)置二進(jìn)制基帶碼模塊和數(shù)字調(diào)制控制模塊。通過(guò)二進(jìn)制基帶碼模塊,將鍵盤(pán)輸入的0、1值轉(zhuǎn)換為串行數(shù)據(jù),便于后續(xù)處理。通過(guò)數(shù)字調(diào)制控制模塊判斷用戶選擇的方式為ASK、PSK還是FSK,結(jié)合二進(jìn)制基帶碼模塊輸出的數(shù)據(jù),輸出不同的相位值給ROM中的正弦波表,實(shí)現(xiàn)輸出數(shù)字調(diào)制信號(hào)。
對(duì)于ASK,將載波信號(hào)與二進(jìn)制基帶信號(hào)相乘;對(duì)于PSK,用二進(jìn)制基帶信號(hào)控制載波的相位,當(dāng)二進(jìn)制基帶信號(hào)的上升沿(下降沿)到來(lái)時(shí),載波反相,其他時(shí)間相位不變,得到的輸出經(jīng)D/A轉(zhuǎn)換后就是PSK信號(hào),對(duì)于FSK,0、1各代表不同的頻率值,二進(jìn)制基帶信號(hào)控制頻率控制字。
假設(shè)載波固定頻率為100 kHz,基帶序列碼速率為10 kb/s,當(dāng)實(shí)現(xiàn)2ASK時(shí),如果基帶序列為1碼,應(yīng)輸出5個(gè)正弦載波,為0則應(yīng)輸出零電平??蓪⒒鶐蛄械乃俾士刂妻D(zhuǎn)為控制當(dāng)序列符號(hào)為1時(shí)能輸出正弦波的數(shù)量,而載波的頻率是通過(guò)向自制DDS信號(hào)源寫(xiě)入載波頻率控制字實(shí)現(xiàn)的。因此,當(dāng)確定載波頻率時(shí),從單片機(jī)輸入一個(gè)數(shù)字x表示當(dāng)序列符號(hào)為1時(shí)能輸出正弦波的數(shù)量,則可確定基帶序列碼的速率。如圖2所示,數(shù)字x通過(guò)din[7..0]輸入并存儲(chǔ)到了模塊內(nèi)部一個(gè)寄存器中,內(nèi)部一個(gè)計(jì)數(shù)器從0開(kāi)始計(jì)數(shù),每當(dāng)計(jì)滿x-1,計(jì)數(shù)器清零,并且使內(nèi)部一個(gè)標(biāo)志位flag取反。當(dāng)flag為1時(shí),輸出端口adr-out[9..0]輸出一定規(guī)律的連續(xù)地址查表RAM-1 024 B存儲(chǔ)器(里面存的是正弦波表),控制輸出正弦載波;當(dāng)已輸出x個(gè)時(shí),flag取反為0,則控制輸出一個(gè)固定地址到RAM-1 024 B,這個(gè)固定地址里存為0值,則此時(shí)輸出0電平。循環(huán)下去即可實(shí)現(xiàn)2ASK調(diào)制。同理,當(dāng)選擇輸出2PSK時(shí),每當(dāng)flag取反一次則將輸出的正弦載波反相一次,則就實(shí)現(xiàn)了2PSK調(diào)制。當(dāng)選擇輸出2FSK時(shí),每當(dāng)flag取反一次,則分別將兩個(gè)頻率控制字送入自制DDS信號(hào)源,從而控制輸出了兩個(gè)頻率相互變化的2FSK輸出。
3 電路調(diào)試及仿真
電路調(diào)試采用計(jì)算機(jī)仿真和硬件調(diào)試相結(jié)合的方式,以QuartusII 5.0為設(shè)計(jì)環(huán)境,用Verilog HDL硬件描述語(yǔ)言編程,完成各個(gè)功能模塊的設(shè)計(jì),并對(duì)設(shè)計(jì)好的各個(gè)模塊進(jìn)行仿真測(cè)試,再將各個(gè)模塊相互連接。分配好FPGA的各個(gè)引腳后,對(duì)文件編譯并將生成文件下載到FPGA中,完成設(shè)計(jì)。
3.1 軟件仿真
在FPGA內(nèi)編譯后,仿真時(shí)序如圖3所示。
?、?ASK波形記錄如圖7所示。
?、?FSK波形記錄如圖8所示。
4 系統(tǒng)軟件設(shè)計(jì)
本機(jī)用戶界面設(shè)計(jì)采用多鍵切換方式,即每個(gè)工作模式都由一個(gè)對(duì)應(yīng)的按鍵去觸發(fā),觸發(fā)后再設(shè)置輸出頻率、調(diào)制度等參數(shù),單片機(jī)根據(jù)用戶輸入的參數(shù)對(duì)硬件進(jìn)行相應(yīng)設(shè)置,主要包括寫(xiě)頻率控制字、寫(xiě)幅度控制字等。軟件流程如圖9所示。
本文介紹的多功能正弦信號(hào)發(fā)生器可以輸出頻率可調(diào)的正弦波以及調(diào)制度可調(diào)的AM、FM、FSK、PSK、ASK波。實(shí)驗(yàn)證明,使用這種方法產(chǎn)生的波形具有穩(wěn)定及高精度的特點(diǎn),有一定的開(kāi)發(fā)和生產(chǎn)價(jià)值。
參考文獻(xiàn)
[1] 夏新凡,陳曉君.正弦信號(hào)發(fā)生器的設(shè)計(jì)[J].電子設(shè)計(jì)工程,2009(5):13-15.
[2] 郝小江,羅彪.基于FPGA的函數(shù)信號(hào)發(fā)生器[J].電測(cè)與儀表,2008(5):49-51.
[3] 黃根春,陳小橋,張望先.電子設(shè)計(jì)教程[M].北京:電子工業(yè)出版社,2007.