1 DDS" title="DDS">DDS結(jié)構(gòu)原理
DDS是一種從相位概念出發(fā)直接合成所需波形的數(shù)字頻率合成技術(shù),主要通過(guò)查找波形表實(shí)現(xiàn)。由奈奎斯特抽樣定理可知,當(dāng)抽樣頻率大于被抽樣頻率的2倍時(shí),通過(guò)抽樣得到的數(shù)字信號(hào)可通過(guò)一個(gè)低通濾波器還原成原來(lái)的信號(hào)。
DDS的工作原理為:在參考時(shí)鐘的驅(qū)動(dòng)下,相位累加器對(duì)頻率控制字進(jìn)行線性累加,得到的相位碼對(duì)波形存儲(chǔ)器尋址,使之輸出相應(yīng)的幅度碼,經(jīng)過(guò)模/數(shù)轉(zhuǎn)換器得到相應(yīng)的階梯波,最后再使用低通濾波器對(duì)其進(jìn)行平滑,得到所需頻率的平滑連續(xù)的波形,其結(jié)構(gòu)如圖1所示。
相位累加器由N位加法器和N位累加寄存器級(jí)聯(lián)構(gòu)成。每經(jīng)過(guò)一個(gè)時(shí)鐘脈沖fclk,加法器就將頻率控制字與累加寄存器輸出的累加相位數(shù)據(jù)相加,把相加后的結(jié)果送至累加寄存器的數(shù)據(jù)輸入端。相位累加器輸出的數(shù)據(jù)就是合成信號(hào)的相位,相位累加器的溢出頻率就是DDS的輸出信號(hào)頻率。用相位累加器輸出數(shù)據(jù)作為波形存儲(chǔ)器(ROM)的相位取樣地址,這樣就可以把存儲(chǔ)在波形存儲(chǔ)器內(nèi)的波形抽樣值(二進(jìn)制編碼)經(jīng)查找表查出,完成相位到幅度的轉(zhuǎn)換。
DDS模塊的輸出頻率是系統(tǒng)工作頻率、相位累加器比特?cái)?shù)N以及頻率控制字三者的一個(gè)函數(shù),其數(shù)學(xué)關(guān)系由式(1)給出。
它的頻率分辨率,即頻率的變化間隔為K/2N。
2 系統(tǒng)功能單元實(shí)現(xiàn)
該系統(tǒng)設(shè)計(jì)是針對(duì)DDS的基本結(jié)構(gòu),以FPGA" title="FPGA">FPGA為核心,加上外圍電路而實(shí)現(xiàn)的。
2.1 相位累加器
相位累加器由8位加法器與8位寄存器級(jí)聯(lián)構(gòu)成。累加器將加法器在上一個(gè)時(shí)鐘作用后所產(chǎn)生的相位數(shù)據(jù)反饋到加法器的輸入端:使加法器在下一個(gè)時(shí)鐘作用下繼續(xù)與頻率控制字data相加,實(shí)現(xiàn)相位累加,當(dāng)相位累加器累加結(jié)果等于或大于256(當(dāng)N=8時(shí)),則產(chǎn)生1次溢出,完成1個(gè)周期波形輸出。該相位累加器采用Verilog語(yǔ)言設(shè)計(jì)實(shí)現(xiàn)。
2.2 波形存儲(chǔ)器
以相位累加器輸出數(shù)據(jù)作為波形存儲(chǔ)器的取樣地址,進(jìn)行波形的相位—幅碼轉(zhuǎn)換,即可在給定的時(shí)間上確定輸出的波形的抽樣幅碼。N位的尋址ROM相當(dāng)于把0~2π的正弦信號(hào)離散成具有2N個(gè)樣值的序列。若波形存儲(chǔ)器有D位數(shù)據(jù)位,則各樣值的幅碼以D位二進(jìn)制數(shù)值保存在該模擬ROM中,按照不同地址輸出相應(yīng)相位的正弦信號(hào)的幅碼數(shù)值。為了更加有效的表示波形,當(dāng)然期望波形存儲(chǔ)器輸出的二進(jìn)制值位數(shù)越多越好。但是查找表的設(shè)計(jì)和D/A轉(zhuǎn)換器的選擇是相關(guān)的,因此需要選擇位數(shù)高的D/A轉(zhuǎn)換器。本文設(shè)計(jì)的正弦表,具有16b輸出,采樣點(diǎn)為256。
2.3 D/A轉(zhuǎn)換電路的實(shí)現(xiàn)
D/A轉(zhuǎn)換單元是繼波形數(shù)據(jù)產(chǎn)生單元之后,將數(shù)字量形式的波形幅值轉(zhuǎn)換成所要求的合成頻率的模擬量形式信號(hào)。DAC輸出信號(hào)實(shí)際上是階梯模擬信號(hào),需在D/A轉(zhuǎn)換后利用低通濾波器對(duì)波形進(jìn)行平滑處理。在此,用Maxim公司生產(chǎn)的A/D換器MAX5885芯片。該芯片需要將輸入時(shí)鐘信號(hào)轉(zhuǎn)換為差分輸入,且由外部芯片MAX6161提供1.2 V的參考電壓,D/A轉(zhuǎn)換后的差分輸出經(jīng)變壓器轉(zhuǎn)換后即可得到所需的信號(hào):
3 系統(tǒng)軟件設(shè)計(jì)
3.1 累加控制模塊的設(shè)計(jì)
相位累加器主要完成相位累加,實(shí)現(xiàn)輸出波形頻率可調(diào)的功能。該模塊采用Verilog HDL語(yǔ)言來(lái)實(shí)現(xiàn),若要求DDS系統(tǒng)精度高,相位累加器的位數(shù)N需較大。這里取N=8,它的Verilog HDL關(guān)鍵代碼如下:
其中,data信號(hào)為8位的頻率控制字,通過(guò)改變data的值可以實(shí)現(xiàn)不同頻率波形的輸出。
3.2 波形存儲(chǔ)器的設(shè)計(jì)
針對(duì)不同的可編程器件,ROM查找表的設(shè)計(jì)采用的方法也不相同。主要是基于IP核Single Port BlockMemory和Verilog選擇語(yǔ)句這兩種方法。使用SinglePort Block Memory的波形存儲(chǔ)表只需要產(chǎn)生數(shù)據(jù)文件*.mif或*.coe,然后直接在定制Single Port BlockMemory時(shí),添加數(shù)據(jù)文件即可。不過(guò)這種方法在FPGA支持內(nèi)部嵌入式陣列塊(EAB)時(shí)才可以使用;使用Verilog選擇語(yǔ)句比較直觀,但當(dāng)輸入數(shù)據(jù)量大的
這種方法是比較繁瑣的。此次設(shè)計(jì)采用第一種方法。
coe文件是在編譯和仿真過(guò)程中作為存儲(chǔ)器(ROM或RAM)初始化輸入的文件,即memory initializationfile。創(chuàng)建coe文件的方式有很多種,在這次設(shè)計(jì)中,在Matlab中采用C語(yǔ)言來(lái)生成coe文件。coe文件編寫(xiě)格式如下:
將生成的cos.txt文件的后綴該為.coe,打開(kāi)文件并將最后一行的逗號(hào)改為分號(hào),并在文件的最開(kāi)始添加下面兩行:
最后保存文件退出,并加載到Single Port BlockMemory所生成的ROM中。加載時(shí)要特別注意數(shù)據(jù)基數(shù)和數(shù)據(jù)長(zhǎng)度的參數(shù)設(shè)置。
4 系統(tǒng)的功能仿真和驗(yàn)證分析
累加控制器、ROM查找表組成一個(gè)整體,實(shí)現(xiàn)了一個(gè)基本的DDS系統(tǒng)。該設(shè)計(jì)以原子鐘(33 MHz)為基準(zhǔn)頻率輸入,取累加器為32位,實(shí)現(xiàn)輸出頻率為700 kHz的信號(hào)。
5 結(jié)語(yǔ)
直接數(shù)字頻率合成(DDS)技術(shù)屬第三代頻率合成技術(shù),與第二代基于鎖相環(huán)頻率合成技術(shù)相比,利用DDS技術(shù)合成的輸出波形具有良好的性能指標(biāo)本。設(shè)計(jì)采用Xilinx公司Spartan-3系列的XC3S200芯片和高速16位D/A轉(zhuǎn)換器MAX5885。在DDS的工作原理的基礎(chǔ)上,介紹基于FPGA實(shí)現(xiàn)DDS的設(shè)計(jì)方法。 通過(guò)設(shè)置參數(shù)可以靈活控制輸出頻率和分辨率。設(shè)計(jì)出具有精度高,選擇參數(shù)控制輸出信號(hào),產(chǎn)生一個(gè)理想的波形。從測(cè)試結(jié)果可看出,該系統(tǒng)工作穩(wěn)定、可靠,并具有較好的參考與實(shí)用價(jià)值。