王新輝
(湖南人文科技學(xué)院計(jì)算機(jī)科學(xué)技術(shù)系,湖南婁底417001)
近年來(lái),隨著微電子技術(shù)的迅速發(fā)展,模擬信號(hào)發(fā)生器在帶寬,精確度,可控制性等方面體現(xiàn)出嚴(yán)重缺限;而直接數(shù)字頻率合成器(Direct Digital Frequency Synthesis簡(jiǎn)稱DDS或DDFS)在相對(duì)帶寬、頻率轉(zhuǎn)換時(shí)間、高分辨力、相位連續(xù)性、正交輸出以及集成化等一系列性能指標(biāo)方面遠(yuǎn)遠(yuǎn)超過了傳統(tǒng)頻率合成技術(shù)所能達(dá)到的水平,為系統(tǒng)提供了優(yōu)于模擬信號(hào)源的性能,輸出頻率相對(duì)帶寬較寬的信號(hào);輸出波形的靈活性,只要在DDS內(nèi)部加上相應(yīng)控制如調(diào)頻控制FM、調(diào)相控制PM和調(diào)幅控制AM,即可以方便靈活地實(shí)現(xiàn)調(diào)頻、調(diào)相和調(diào)幅功能,產(chǎn)生FSK、PSK、ASK和MSK等信號(hào)。DDS相對(duì)帶寬、頻率轉(zhuǎn)換時(shí)間短、頻率分辨率高、輸出相位連續(xù)、可產(chǎn)生寬帶正交信號(hào)及其他多種調(diào)制信號(hào)、可編程和全數(shù)字化、控制靈活方便、并具有極高的性價(jià)比成為現(xiàn)代信號(hào)發(fā)生技術(shù)中的領(lǐng)跑者[1]。
作者設(shè)計(jì)了一個(gè)基于FPGA的多功能信號(hào)發(fā)生器。該系統(tǒng)以FPGA為核心,構(gòu)成了一個(gè)基于DDS技術(shù)的多功能信號(hào)發(fā)生器。其中可編程邏輯器件以其速度高、規(guī)模大、可編程,以及有強(qiáng)大EDA軟件支持;FPGA則可以根據(jù)需要方便地實(shí)現(xiàn)各種比較復(fù)雜的調(diào)頻、調(diào)相和調(diào)幅功能,使得該系
統(tǒng)具有良好的實(shí)用性。[2]系統(tǒng)架構(gòu)有波形生成、頻率控制、幅度控制、D/A轉(zhuǎn)換和后級(jí)處理。各模塊均通過VHDL語(yǔ)言編程在FPGA上實(shí)現(xiàn)。后級(jí)處理采用低通濾波器和功率放大電路來(lái)提高波形質(zhì)量和負(fù)載能力,最終得到所要求的
多功能。信號(hào)發(fā)生器,在現(xiàn)代通信中具有良好的使用性。經(jīng)軟件仿真和硬件測(cè)試驗(yàn)證達(dá)到了設(shè)計(jì)要求,且誤差小,分辨率高,體積小,具有很高的實(shí)用價(jià)值。
DDS利用采樣定理,通過查表法產(chǎn)生波形,原理如圖1所示。相位累加器由N位加法器與N位累加寄存器級(jí)聯(lián)構(gòu)成。每來(lái)一個(gè)時(shí)鐘脈沖fs,加法器將頻率控制字X與累加寄存器輸出的累加相位數(shù)據(jù)相加,把相加后的結(jié)果送至累加寄存器的數(shù)據(jù)輸入端。累加寄存器將加法器在上一個(gè)時(shí)鐘脈沖作用后所產(chǎn)生的新相位數(shù)據(jù)反饋到加法器的輸入端,以使加法器在下一個(gè)時(shí)鐘脈沖的作用下繼續(xù)與頻率控制字相加[3]。這樣,相位累加器在時(shí)鐘作用下,不斷對(duì)頻率控制字進(jìn)行線性相位累加。由此可以看出,相位累加器在每一個(gè)時(shí)鐘脈沖輸入時(shí),把頻率控制字累加一次,相位累加器輸出的數(shù)據(jù)就是合成信號(hào)的相位,相位累加器的溢出頻率就是DDS輸出的信號(hào)頻率。
圖1 DDS的工作原理
用相位累加器輸出的數(shù)據(jù)作為波形存儲(chǔ)器(ROM)的相位取樣地址,這樣就可把存儲(chǔ)在波形存儲(chǔ)器內(nèi)的波形抽樣值(二進(jìn)制編碼)經(jīng)查找表查出,完成相位到幅值轉(zhuǎn)換。波形存儲(chǔ)器的輸出送到D/A轉(zhuǎn)換器,D/A轉(zhuǎn)換器將數(shù)字量形式的波形幅值轉(zhuǎn)換成所要求合成頻率的模擬量形式信號(hào)。低通濾波器用于濾除不需要的取樣分量,以便輸出純凈的頻譜信號(hào)。由于DDS中幾乎所有部件都屬于數(shù)字電路,易于集成,功耗低、體積小、重量輕、可靠性高,且易于程控,使用相當(dāng)靈活,因此性價(jià)比極高。
每來(lái)一個(gè)時(shí)鐘脈沖Flock,N位加法器將頻率控制數(shù)據(jù)X與累加寄存器輸出的累加相位數(shù)據(jù)相加,把相加后的結(jié)果Y送至累加寄存器的輸入端。累加寄存器一方面將在上一時(shí)鐘周期作用后所產(chǎn)生的新的相位數(shù)據(jù)反饋到加法器的輸入端,以使加法器在下一時(shí)鐘的作用下繼續(xù)與頻率控制數(shù)據(jù)X相加;另一方面將這個(gè)值作為取樣地址值送入幅度/相位轉(zhuǎn)換電路,幅度/相位轉(zhuǎn)換電路根據(jù)這個(gè)地址輸出相應(yīng)的波形數(shù)據(jù)。最后經(jīng)D/A轉(zhuǎn)換器和低通濾波器將波形數(shù)據(jù)轉(zhuǎn)換成所需要的模擬波形[4]。相位累加器在基準(zhǔn)時(shí)鐘的作用下,進(jìn)行線性相位累加,當(dāng)相位累加器加滿時(shí)就會(huì)產(chǎn)生一次溢出,這樣就完成了一個(gè)周期,這個(gè)周期也就是DDS信號(hào)的頻率周期。DDS輸出信號(hào)的頻率由下式給定:Fout=(X/Y)×Flock??梢姡ㄟ^設(shè)定相位累加器位數(shù)、頻率控制字X和基準(zhǔn)時(shí)鐘的值,就可以產(chǎn)生任意頻率的輸出。DDS的頻率分辨率定義為:Fout=Flock/Y,由于基準(zhǔn)時(shí)鐘一般固定,因此相位累加器的位數(shù)就決定了頻率分辨率。
經(jīng)過仔細(xì)研究,充分考慮各種因素,制定整體的設(shè)計(jì)方案;以FPGA為核心,16位撥碼開關(guān)送來(lái)的頻率控制字將存在EAB的波形數(shù)據(jù)相應(yīng)輸出給DAC0832完成數(shù)模轉(zhuǎn)換,繼而經(jīng)過低通濾波器進(jìn)行濾波,通過控制三個(gè)按鍵,從而得到正弦波、三角波、方波、鋸齒波等不同的波形。如圖2所示。
圖2 系統(tǒng)總框圖
這一模塊是由FPGA實(shí)現(xiàn)的,F(xiàn)PGA完成相位累加器的功能,而頻率控制字X是由外部撥碼開關(guān)給出的。相位累加器是DDS的核心,它由一個(gè)N位字長(zhǎng)的二進(jìn)制加法器和一個(gè)固定時(shí)鐘脈沖取樣的N位相位寄存器組成。相位寄存器的輸出與加法器的一個(gè)輸入端在內(nèi)部相連,加法器的另一個(gè)輸入端是外部輸入的頻率控制字X。這樣,在每個(gè)時(shí)鐘到達(dá)時(shí),相位寄存器采樣上個(gè)時(shí)鐘周期內(nèi)相位寄存器的值與頻率控制字X之和,并作為相位累加器在這一時(shí)鐘周期的輸出。頻率控制字X決定了相應(yīng)的相位增量,相位累加器則不斷地對(duì)該相位增量進(jìn)行線性累加,當(dāng)相位累加器積滿兩時(shí)就會(huì)產(chǎn)生一次溢出,從而完成一個(gè)周期性的動(dòng)作,這個(gè)動(dòng)作周期即是DDS合成信號(hào)的一個(gè)頻率周期。于是,輸出信號(hào)波形的頻率表示式為 Fout=(X/Y) × Flock[5,6]。由抽樣定理,高輸出頻率不得大于輸入頻率的1/2;而根據(jù)實(shí)驗(yàn),實(shí)際工作頻率小于輸入頻率的1/3時(shí)較為合適。
圖3 相位累加器
FPGA中的波形發(fā)生器控制電路,它通過外來(lái)控制信號(hào)和高速時(shí)鐘信號(hào),向波形數(shù)據(jù)ROM發(fā)生地址信號(hào),輸出波形的頻率由發(fā)生的地址信號(hào)的速度決定。當(dāng)以固定頻率掃描輸出地址時(shí),模擬輸出波形是固定頻率;當(dāng)以周期性掃描輸出地時(shí),則模擬波形為掃頻信號(hào)。波形數(shù)據(jù)ROM中存有發(fā)生器的波形數(shù)據(jù),如正弦波或三角波數(shù)據(jù)。當(dāng)接受來(lái)自FPGA的地址信號(hào)后,將從數(shù)據(jù)線輸出相應(yīng)的波形數(shù)據(jù)。地址變化得越快,則輸出數(shù)據(jù)的越快,從而使D/A輸出的模擬信號(hào)的變化速度越快。波形數(shù)據(jù)ROM可以由多種方式實(shí)現(xiàn),1)在FPGA外面接普通ROM,由邏輯方式在FPGA中實(shí)現(xiàn);2)由FPGA中的EBA模塊擔(dān)當(dāng);3)利用LPM_ROM實(shí)現(xiàn)。相比之下,第1種方式的容量最大,但速度最慢。第2種方式容量最小,但速度最快,第3種方式兼顧了兩方面的因素。
該設(shè)計(jì)過程中C++語(yǔ)言編寫正弦波,三角波,方波,鋸齒波。如下是C++語(yǔ)言編寫的正弦波的程序:
#include <stdio.h>
#include <math.h>
Main()
{Int I;float s;
For(I=0;i<256;i++)
{s=sin(atan(1)* 8* i/256);
Prinft(%d:%d; ”,I,(int((s+1)*255/2));}}
本次設(shè)計(jì)過程中采用的是常見的D/A轉(zhuǎn)換芯片DAC0832。DAC0832是NSC公司生產(chǎn)的8位DAC芯片,可直接與多種CPU總線連接而不必增加任何附加邏輯。DAC0832由兩級(jí)數(shù)據(jù)緩沖器和D/A轉(zhuǎn)換器組成,第一級(jí)數(shù)據(jù)緩沖器稱為輸入寄存器,第二級(jí)稱為DAC寄存器。
DAC0832為電流輸出型D/A轉(zhuǎn)換器,需要外接運(yùn)算放大器進(jìn)行電流電壓變換才能得到模擬電壓輸出。輸出方式有兩種:單極性輸出和雙極性輸出。單極性電壓輸出方式輸出的電壓極性是單一的,而雙極性輸出方式輸出的電壓極性是可變的,即有正有負(fù),其分辨率較單極性輸出降低一倍,因此本設(shè)計(jì)采用單極性電壓輸出方式。
DAC0832為電流輸出型D/A轉(zhuǎn)換器,需外接運(yùn)算放大器進(jìn)行電流電壓變換才能得到模擬電壓輸出。輸出方式為單極性輸出方式的時(shí)候,輸出端接運(yùn)算放大器作為電壓電流轉(zhuǎn)換器,在運(yùn)算放大器的輸出端就可以得到單極性模擬電壓。使用性能較好的運(yùn)算放大器比較容易達(dá)到較高的精度和比較好的穩(wěn)定性。在這里,使用的運(yùn)算放大器為OP07,OP07的運(yùn)算放大器電源電壓通常取 +15V或 +12V。也可根據(jù)具體情況自定。其中2腳接地,3腳接所需放大的電壓,4腳接負(fù)電源,6腳輸出,7腳接正電源。濾波電路如圖4所示。
圖4 D/A轉(zhuǎn)換輸出濾波電路
MAX+plus II支持功能仿真和時(shí)序仿真兩種仿真形式。功能仿真用于大型設(shè)計(jì)編譯適配之前的仿真,而時(shí)序仿真則是在編譯適配生成時(shí)序信息文件之后進(jìn)行的仿真。
圖5 原理圖
在圖5中,CLK為輸入的時(shí)鐘脈沖信號(hào),STEP為頻率控制字,CHOICE控制波形輸出。當(dāng)CHOICE為“000”時(shí),輸出為正弦波。CHOICE為“001”時(shí),輸出為三角波。CHOICE為“010”時(shí),輸出為方波。CHOICE 為“011”時(shí),輸出為鋸齒波。其它情況下,輸出為低電平。
4.1.1 正弦波
每來(lái)一個(gè)時(shí)鐘脈沖CLK,N位加法器將頻率控制字STEP與累加寄存器輸出的累加相位數(shù)據(jù)相加,累加寄的初始數(shù)據(jù)為0,把相加后的結(jié)果Y送至累加寄存器的輸入端。累加寄存器將數(shù)據(jù)輸送給ROM中,這時(shí)ROM將輸出相應(yīng)的波形數(shù)據(jù)。在此次設(shè)計(jì)中,實(shí)驗(yàn)箱上提供的晶掁頻率為4MHZ,通過分頻,可以得到N為16。當(dāng)CHOICE為“000”時(shí),輸出的波形為正弦波。如果頻率控制數(shù)據(jù)發(fā)生變化時(shí),輸出頻率也會(huì)發(fā)生變化。如下是部分正弦波的源代碼。
case CHOICE is
when“000”=> - -正弦
case ACC(15 downto 9)is
When"0000000"=>DAOUT<="10000000";
When"0000001"=>DAOUT<="10000110";
When"0000010"=>DAOUT<="10001101";
When"0000011"=>DAOUT<="10010011";
When"0000100"=>DAOUT<="10011001";
圖6 正弦波的時(shí)序仿真圖
4.1.2 其他波形仿真研究
4.2.1 FLEX10K 系列概述
FLEX10K是工業(yè)界第一個(gè)嵌入式的可編程邏輯器件,采用可重構(gòu)的CMOS SRAM工藝,把連續(xù)的快速通道互連與獨(dú)特的嵌入式陣列結(jié)構(gòu)相結(jié)合,同時(shí)也結(jié)合了眾多可編程器件的優(yōu)點(diǎn)來(lái)完成普通門陣列的宏功能。由于其具有高密度、低成本、低功率等特點(diǎn),所以脫穎而出成為當(dāng)今Altera PLD中應(yīng)用最好的器件系列。FLEX10K器件的配置通常是在系統(tǒng)上電時(shí),通過存儲(chǔ)于一個(gè)串行PROM中的配置數(shù)據(jù)或者由系統(tǒng)控制器提供的配置數(shù)據(jù)來(lái)完成。Altera提供EPC1、EPC2、EPC16和 EPC1441等配置用的 PROM 器件,配置數(shù)據(jù)也能從系統(tǒng)RAM和BitBlaster串行下載電纜或ByteBlasterMV并行下載電纜獲得。對(duì)于配置過的器件,可以通過重新復(fù)位器件、加載新數(shù)據(jù)的方法實(shí)現(xiàn)在線可配置(ICR,In-Circuit Reconfigurability)。由于重新配置要求少于320ms,因此可在系統(tǒng)工作時(shí)實(shí)時(shí)改變配置。FLEX10K器件由MAX+PLUS II開發(fā)軟件支持。
4.2.2 硬件驗(yàn)證
將實(shí)驗(yàn)箱上脈沖信號(hào)連接到所對(duì)應(yīng)的時(shí)鐘引腳上,將波形數(shù)據(jù)的八個(gè)引腳連接到DAC0832的輸入端。DAC0832的輸出端接至濾波電路的輸入端。示波器的一個(gè)探針接濾波電路的輸出端,另一個(gè)探針接地。CHIOCE的三個(gè)引腳連接到三個(gè)按鍵上。頻率控制字所對(duì)應(yīng)的16個(gè)引腳接到實(shí)驗(yàn)箱上的16個(gè)控制高低電平的按鍵。
當(dāng)對(duì)應(yīng) CHIOCE 的三個(gè)按鍵為“000”、“001”“010”“011”時(shí),分別可在示波器上觀察到正弦波、三角波、方波、鋸齒波等,如圖8所示。當(dāng)頻率控制字的大小發(fā)生變化時(shí),所觀察到的波形頻率也會(huì)發(fā)生變化,頻率由10HZ~150kHZ。由此說(shuō)明,設(shè)計(jì)達(dá)到了預(yù)期的效果。
圖8 硬件實(shí)驗(yàn)波形
該系統(tǒng)可以方便地輸出多種信號(hào)波形,且由于FPGA具有可編程特性,可以方便地改變控制方式或更換波形數(shù)據(jù),簡(jiǎn)單易行,易于系統(tǒng)升級(jí),有很高的性價(jià)比。
[1]譚磊,劉永富.基于DDS技術(shù)的交流信號(hào)發(fā)生器設(shè)計(jì)與實(shí)現(xiàn)[J].重慶科技學(xué)院學(xué)報(bào):自然科學(xué)版,2009(1):98-115.
[2]孫群,宋卿.基于DDS技術(shù)的便攜式波形信號(hào)發(fā)生器[J].儀表技術(shù)與傳感器,2009(4):67-70.
[3]徐正平,翟林培,田雅男,等.基于DDS技術(shù)的高頻正弦波發(fā)生器的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2009(5):67 -68,21.
[4]涂書敏.低頻系統(tǒng)直接數(shù)字頻率合成應(yīng)用的頻率規(guī)劃[J].中國(guó)水運(yùn),2009(3):107-108.
[5]李俊俊,劉珩,吳丹.基于DDS+PLL頻率合成器的設(shè)計(jì)與實(shí)現(xiàn)[J].電子測(cè)量技術(shù),2009(4):26-30.
[6]高銀,林其偉.DDS數(shù)字移相正弦信號(hào)發(fā)生器的設(shè)計(jì)[J].華僑大學(xué)學(xué)報(bào):自然科學(xué)版,2009(1):34-37.
湖南人文科技學(xué)院學(xué)報(bào)2011年2期