基于單片機(jī)的直接數(shù)字頻率合成器的設(shè)計(jì)
1 引 言
本文引用地址:http://butianyuan.cn/article/78297.htm頻率合成技術(shù)迄今已經(jīng)歷了三代:直接頻率合成技術(shù)、鎖相環(huán)頻率合成技術(shù)、直接數(shù)字式頻率合成技術(shù)。直接數(shù)字式頻率合成(Direct Digital Frequency Synthesis,DDFS或DDS)是第三代頻率合成技術(shù)的標(biāo)志,他的主要特點(diǎn)是計(jì)算機(jī)參與頻率合成,既可以用軟件來(lái)實(shí)現(xiàn),也可以用硬件來(lái)實(shí)現(xiàn),或二者結(jié)合。直接數(shù)字式頻率合成器的最大優(yōu)點(diǎn)就是頻率切換的速度極快(可達(dá)幾微秒),并且頻率、相位和幅度都可控,輸出頻率穩(wěn)定度可達(dá)系統(tǒng)時(shí)鐘的穩(wěn)定度量級(jí),易于集成化,更主要的是由于計(jì)算機(jī)參與頻率合成,故可充分發(fā)揮軟件的作用。雖然現(xiàn)有的專用DDFS芯片的功能也比較多,但控制方式卻是固定的,因此不一定是我們所需要的。本文利用80C51單片機(jī)、D/A轉(zhuǎn)換器以及一些外圍寄存器設(shè)計(jì)的直接數(shù)字頻率合成器,電路設(shè)計(jì)簡(jiǎn)單、頻率控制靈活,具有良好的實(shí)用性,信號(hào)精度誤差也在允許范圍之內(nèi)。
2 DDFS的基本原理和總體框圖
DDFS基本上由5部分組成,如圖1所示:頻率碼鎖存器(FR)、相位累加器(PA)、ROM(正弦表)、數(shù)/模變換器(D/A)、低通濾波器(LPF),他們?cè)跁r(shí)鐘的統(tǒng)調(diào)下工作。
首先,把一個(gè)單位幅度的正弦函數(shù)的相位在0~2π弧度內(nèi)分成盡可能小的等間隔點(diǎn),若用A位二進(jìn)制數(shù)表示,分成2A個(gè)間隔點(diǎn),則最小相位間隔應(yīng)是:
算出相應(yīng)相位點(diǎn)的單位正弦函數(shù)值,并用D位二進(jìn)制數(shù)表示,寫(xiě)入有A位地址線、D位數(shù)據(jù)線的 ROM中,構(gòu)成一個(gè)所謂正弦表。合成頻率的過(guò)程是控制改變相位增量(即相位跳過(guò)的最小相位間隔θmin的數(shù)目),由于相位增量不同,在一個(gè)正弦周期內(nèi)的取樣點(diǎn)就不同,而取樣是在系統(tǒng)時(shí)鐘控制下進(jìn)行的,即取樣周期是一定的,這樣,根據(jù)相位增量的累加和所對(duì)應(yīng)的點(diǎn)(代表相位值)從ROM中讀出相應(yīng)的函數(shù)值所形成的量化正弦波的周期也隨相位增量的改變而改變,從而達(dá)到合成所需頻率的目的。
在圖1中,相位累加器根據(jù)頻率碼鎖存器中的頻率碼k每個(gè)時(shí)鐘累加一次,其輸出一方面(N位)回到加法器的另一個(gè)輸入端作為下一次累加的被加數(shù),另一方面(A位)作為ROM的地址碼對(duì)ROM尋址,讀出相應(yīng)的正弦函數(shù)值(二進(jìn)制代碼),經(jīng)過(guò)數(shù)據(jù)緩沖器穩(wěn)定之后送到D/A變換器,得到一個(gè)幅值對(duì)應(yīng)于PA輸出相位點(diǎn)的正弦函數(shù)值。下一個(gè)時(shí)鐘到來(lái),累加器再增加一個(gè)k值,ROM同樣讀出累加器輸出的A位地址碼所對(duì)應(yīng)的正弦值,再送至D/A變換器。如此下去,相位累加器輸出值是一個(gè)階梯式的,相應(yīng)地,D/A的輸出是一個(gè)以正弦為包絡(luò)的階梯波。相位累加器的溢出正好對(duì)應(yīng)著階梯正弦波的一個(gè)周期結(jié)束,再開(kāi)始下一個(gè)周期。經(jīng)低通濾波器的平滑濾波得到頻率為f0的正弦波。由于時(shí)鐘周期Tc=(1/fc)是定值,而且是高穩(wěn)定的,所以輸出頻率亦很穩(wěn)定。
頻率分辨率為:
輸出頻率為:
式中N為相位累加器的位數(shù),愚為頻率碼。如果N=A,設(shè)定的k就是每個(gè)時(shí)鐘 PA所跳過(guò)的最小相位間隔數(shù)。N的增加意味著頻率分辨率的提高,但是A的增加卻意味著ROM容量的增加,使設(shè)備復(fù)雜化,故一般N>A。本設(shè)計(jì)中的參數(shù)設(shè)置:N=12,A=10,D=8。
3 系統(tǒng)主要功能模塊的具體實(shí)現(xiàn)
3.1 頻率碼鎖存器(FR)、相位累加器(PA)
如圖2所示,頻率碼鎖存器由2片8位D型鎖存器74LS373構(gòu)成,第Ⅱ片只使用D0~D3,形成12位的頻率碼。相位累加器由3片4位全加器74LS283構(gòu)成,形成12位的加法器。加法器的輸出經(jīng)過(guò)2片寄存器74LS273后一方面(12位)反饋到全加器的輸入端作為被加數(shù),另一方面(10位,舍棄低2位)作為地址碼對(duì)ROM尋址,而頻率碼鎖存器輸出的頻率碼k作為加數(shù)。此處寄存器74LS273主要起數(shù)據(jù)緩沖的作用,他們都是在時(shí)鐘上升沿工作。
3.2 ROM正弦表
ROM正弦表用單片機(jī)80C51內(nèi)部的程序存儲(chǔ)器來(lái)實(shí)現(xiàn)。由于相位累加器輸出的地址A是10位,而每個(gè)正弦函數(shù)值用8位二進(jìn)制數(shù)來(lái)表示,所以正弦表的容量是1 kB。80C51的片內(nèi)程序存儲(chǔ)器容量為4 kB,完全足夠,因此不用再擴(kuò)充片外程序存儲(chǔ)器了。用80C51的P3.1,P3.0以及P1.7~P1.0作為10位地址的輸人口,用查表程序根據(jù)地址讀出相應(yīng)的函數(shù)值,再由P0口輸出,送至D/A轉(zhuǎn)換。
所謂查表法,就是預(yù)先將滿足一定精度要求的表示變量與函數(shù)值之間關(guān)系的一張表求出,然后把這張表存于單片機(jī)的程序存儲(chǔ)器中。這時(shí)自變量為單元地址,相應(yīng)的函數(shù)值為該地址單元中的內(nèi)容。在微機(jī)應(yīng)用系統(tǒng)中,一般使用的表均為線性表,他是一種最常用的數(shù)據(jù)結(jié)構(gòu),是n個(gè)數(shù)據(jù)元素a1,a2,…,an的集合,各元素之間具有線性的位置關(guān)系。每次查表時(shí),首先將P3.1,P3.0以及P1.7~P1.0,輸入的10位地址存放在20H,21H兩個(gè)單元中(高字節(jié)在20H),他將作為查表時(shí)的地址偏移量(函數(shù)值存放在程序存儲(chǔ)器的實(shí)際地址=表首地址+偏移量)。
3.3 數(shù)/模轉(zhuǎn)換器(D/A)
數(shù)/模轉(zhuǎn)換器DAC0832輸入數(shù)字量是8位,參考電壓Vref的工作范圍是-10~+10 V,通過(guò)他將外加高精度電壓源與內(nèi)部的電阻網(wǎng)絡(luò)相連接。芯片內(nèi)有一個(gè)8位輸入寄存器和一個(gè)8位DAC寄存器,形成兩級(jí)緩沖結(jié)構(gòu)。這樣可使DAC轉(zhuǎn)換輸出前一個(gè)數(shù)據(jù)的同時(shí),將下一個(gè)數(shù)據(jù)傳送到8位輸入寄存器,以提高數(shù)/模轉(zhuǎn)換的速度。DAC0832與80C51的接口電路如圖3所示,80C51的P0口直接與DAC0832的數(shù)字輸入DI7~DI0相接,80C51的WR與DAC0832的WR1相接,P2.7與片選端CS連接,芯片采用的是單緩沖方式。這時(shí)芯片的地址為7FFFH。
3.4 系統(tǒng)時(shí)鐘的產(chǎn)生
系統(tǒng)時(shí)鐘可利用80C51的定時(shí)/計(jì)數(shù)器產(chǎn)生。時(shí)鐘頻率要根據(jù)最高輸出頻率確定,一般fc≥4f0max,而低通濾波器的截止頻率為最高輸出頻率。本設(shè)計(jì)中時(shí)鐘頻率要求為50 kHz,則要用定時(shí)器輸出周期為20μs方波。選用定時(shí)/計(jì)數(shù)器T0,工作于方式0,輸出為P2.0引腳。20μs的方波可由間隔10 μs的高低電平相間而成,因而只要每隔10μs對(duì)P2.0取反一次。由于實(shí)驗(yàn)用80C51的時(shí)鐘頻率為12 MHz,因此計(jì)數(shù)初值:
X=8192-(10μs×12MHz/12)=8192-10=8182
4 軟件設(shè)計(jì)
4.1 ROM查表程序
5 結(jié) 語(yǔ)
經(jīng)過(guò)示波器觀察可以看到清晰的正弦波形,通過(guò)計(jì)算機(jī)改變頻率碼k,可以得到不同頻率的波形,且輸出頻率隨頻率控制字的增大而增大。但輸出頻率超過(guò)13 kHz時(shí),輸出波形明顯失真,這主要由D/A轉(zhuǎn)換、低通濾波等部分產(chǎn)生的雜散所致。由于DDFS采用全數(shù)字結(jié)構(gòu),不可避免地引入了雜散。其來(lái)源主要有3個(gè):相位累加器相位舍位誤差造成的雜散,幅度量化誤差(由存儲(chǔ)器有限字長(zhǎng)引起)造成的雜散和DAC非理想特性造成的雜散。
本文的設(shè)計(jì)是以產(chǎn)生正弦波為例,實(shí)際上只要在DDFS的波形存儲(chǔ)器存放不同的波形數(shù)據(jù),就可以實(shí)現(xiàn)各種波形輸出,如三角波、鋸齒波和矩形波,甚至是任意波形。另外只要在DDFS內(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)。在通信、雷達(dá)、電子對(duì)抗、導(dǎo)航、廣播電視、遙控遙測(cè)、儀器儀表等領(lǐng)域具有廣泛的應(yīng)用前景。
評(píng)論