摘要:本文在根據(jù)直接數(shù)字頻率合成(DDS)的基本原理,采用EDA技術(shù)自頂向下的設(shè)計(jì)方法,提出了一個(gè)基于FPGA的直接數(shù)字頻率合成(DDS)電路的設(shè)計(jì)方案,采用VHDL硬件描述語(yǔ)言設(shè)計(jì)了DDS電路系統(tǒng)的各個(gè)模塊,在實(shí)驗(yàn)室的GX-SOC/SOPC-Dev-Lab Platform開(kāi)發(fā)實(shí)驗(yàn)平臺(tái)上進(jìn)行硬件調(diào)試。采用FPGA設(shè)計(jì)的DDS電路系統(tǒng)具有可靠性高、維護(hù)升級(jí)便捷、擴(kuò)展性強(qiáng)等特點(diǎn),具有很好的應(yīng)用價(jià)值。
關(guān)鍵詞:直接數(shù)字頻率合成 現(xiàn)場(chǎng)可編程門(mén)陣列 VHDL
ABSTRACT:This paper depends on the basic principles of Direct Digital Synthesis(DDS), based on EDA technology with top-down design method, the scheme of FPGA-based DDS circuit is proposed, all modules of the DDS circuit system are designed by using VHDL hardware description language, and the system is committed to hardware debugging on GX-SOC/Dev SOPC-Lab Platform which is placed in the laboratory of my academy. DDS circuit system based on FPGA has high reliability, better maintainability, ease of update and strong expandability. The system has a certain application value.
Key words:DDS; FPGA; VHDL
頻率合成背景
頻率綜合或者頻率合成指由一個(gè)或者多個(gè)頻率穩(wěn)定度、精確度很高的參考信號(hào)通過(guò)頻率域的線性運(yùn)算,產(chǎn)生有同樣穩(wěn)定度和精確度的大量離散頻率的過(guò)程。實(shí)現(xiàn)頻率合成的電路稱為頻率合成器。
直接數(shù)字頻率合成(DDS,Digital Direct Frequency Synthesis)是一種比較新穎的頻率合成方法。隨著科學(xué)技術(shù)的日益發(fā)展這種頻率合成方法也越來(lái)越體現(xiàn)出它的優(yōu)越性來(lái)。DDS是在一組存儲(chǔ)器單元中按照信號(hào)波形數(shù)據(jù)點(diǎn)的輸出次序存儲(chǔ)了將要輸出波形的數(shù)據(jù),在控制電路的協(xié)調(diào)控制下,以一定的速率,周而復(fù)始地將波形數(shù)據(jù)依次發(fā)送給D/A轉(zhuǎn)換器轉(zhuǎn)換成相應(yīng)的模擬信號(hào)。由于用硬件電路取代了計(jì)算機(jī)的控制,信號(hào)輸出穩(wěn)定度高。如需更新輸出信號(hào),不必改動(dòng)任何線路和元器件,只需改寫(xiě)存儲(chǔ)器中的波形數(shù)據(jù)即可。更主要的是,可以將微處理器從信號(hào)輸出的負(fù)擔(dān)中解脫出來(lái)。
DDS的基本結(jié)構(gòu)主要由相位累加器、波形ROM、D/A轉(zhuǎn)換器和低通濾波器四個(gè)部分構(gòu)成.
整個(gè)DDS系統(tǒng)在統(tǒng)一的參考時(shí)鐘下工作,每個(gè)時(shí)鐘周期相位累加器作加法運(yùn)算一次。加法運(yùn)算的步進(jìn)越大,相應(yīng)合成的相位值變化越快,輸出信號(hào)的頻率也就越高。對(duì)于幅值歸一化的正弦波信號(hào)的瞬時(shí)幅值完全由瞬時(shí)相位來(lái)決定,因?yàn)棣?dΦ(t)/dt,所以相位變化越快,信號(hào)的頻率越高。ROM表完成將累加器相位信息轉(zhuǎn)換為幅值信息的功能。再由D/A完成數(shù)字抽樣信號(hào)到連續(xù)時(shí)域信號(hào)的轉(zhuǎn)換,D/A輸出的臺(tái)階信號(hào)再經(jīng)低通濾波器來(lái)平滑,以得到精確的連續(xù)正弦信號(hào)波形。
系統(tǒng)設(shè)計(jì)方案
設(shè)計(jì)的直接數(shù)字頻率合成(DDS)電路可實(shí)現(xiàn)正弦波、三角波、方波和低電平的輸出。通過(guò)按鍵控制波形的輸出選擇,通過(guò)開(kāi)關(guān)控制波形的頻率選擇,LED顯示波形頻率和波形輸出,最后通過(guò)D/A芯片實(shí)現(xiàn)波形的輸出。其頻率范圍為0~12.5MHz。
系統(tǒng)總體設(shè)計(jì)方框圖如圖4-1所示。FPGA內(nèi)部包括四個(gè)模塊電路,分別是頻率控制模塊、波形產(chǎn)生模塊、輸出選擇模塊和D\\A轉(zhuǎn)換模塊。頻率控制模塊接收外部四個(gè)開(kāi)關(guān)(SWA1、SWA2、SWA3和SWA4)的輸入,產(chǎn)生相應(yīng)的分頻數(shù),并根據(jù)分頻數(shù),得到并輸出分頻之后的時(shí)鐘信號(hào)。波形產(chǎn)生模塊根據(jù)分頻之后的時(shí)鐘信號(hào),生成相應(yīng)的波形復(fù)制幅值數(shù)據(jù)。輸出選擇模塊通過(guò)接收外部?jī)蓚€(gè)按鍵(F1、F2)的輸入鍵值及波形產(chǎn)生模塊輸入的所有波形的幅值數(shù)據(jù),輸出與鍵值相對(duì)應(yīng)的波形的幅值數(shù)據(jù)。D/A轉(zhuǎn)換模塊接收來(lái)自輸出選擇模塊所輸出的波形幅值數(shù)據(jù),因?yàn)檫@些數(shù)據(jù)是二進(jìn)制的,D/A轉(zhuǎn)換模塊將波形數(shù)據(jù)從八位二進(jìn)制這樣的數(shù)字量轉(zhuǎn)換成一位輸出的連續(xù)的模擬量,從而得到實(shí)際波形,以滿足實(shí)際情況下對(duì)信號(hào)波形的要求。
頻率控制模塊的設(shè)計(jì)
頻率控制模塊電路符號(hào)如圖4-2所示。四個(gè)開(kāi)關(guān)的輸入對(duì)應(yīng)16個(gè)不同的分頻數(shù),即系統(tǒng)時(shí)鐘的16種分頻值,分別是時(shí)鐘的4分頻、8分頻、16分頻、32分頻、64分頻、128分頻、256分頻、512分頻、1024分頻、2048分頻、4096分頻、8192分頻、16384分頻、32768分頻、65536分頻和1Hz信號(hào)。
ctrl[3..0]是四個(gè)開(kāi)關(guān)控制的輸入變量,clk是系統(tǒng)時(shí)鐘輸入,fout是系統(tǒng)時(shí)鐘分頻后的時(shí)鐘信號(hào)輸出。ctrl[3..0]越大,對(duì)應(yīng)的分頻數(shù)越大,隨之而來(lái),分頻后的fout頻率越小。
波形產(chǎn)生模塊的設(shè)計(jì)
波形產(chǎn)生模塊由正弦波產(chǎn)生模塊、方波產(chǎn)生模塊、三角波產(chǎn)生模塊和低電平產(chǎn)生模塊四部分組成。由于實(shí)驗(yàn)平臺(tái)上的D/A是八位的,所有模塊的輸出經(jīng)過(guò)下一模塊的選擇之后,就會(huì)輸入到D/A芯片,所以這里四個(gè)波形模塊輸出都是八位的。四個(gè)模塊在分頻后的時(shí)鐘信號(hào)的作用下,同時(shí)進(jìn)行波形輸出。所有模塊輸出的信號(hào)的頻率受分頻后時(shí)鐘信號(hào)的控制,即各個(gè)模塊的輸入的時(shí)鐘信號(hào)頻率決定輸出波形的頻率。下面將介紹四個(gè)波形模塊。
正弦波產(chǎn)生模塊運(yùn)用查表法產(chǎn)生正弦波形。先將一個(gè)周期的正弦波進(jìn)行256次采樣,得到的256個(gè)數(shù)據(jù)。通過(guò)計(jì)算產(chǎn)生相位地址,取出對(duì)應(yīng)的數(shù)值,采樣出來(lái)的數(shù)據(jù)存放在sin.mif文件中。正弦波產(chǎn)生模塊:由LPM_ROM例化而來(lái),寬度8bits,共256個(gè)數(shù)據(jù)。輸入地址:8bits。輸出數(shù)據(jù)8bits。
三角波產(chǎn)生模塊通過(guò)加減計(jì)算的方式得出波形數(shù)據(jù)。
方波產(chǎn)生模塊實(shí)際等同于一個(gè)實(shí)現(xiàn)二分頻的分頻器模塊,只是根據(jù)需要,輸出的波形信號(hào)需要八位邏輯向量來(lái)表示。clk是時(shí)鐘輸入信號(hào),dout[7..0]是方波輸出信號(hào)。
低電平模塊的實(shí)現(xiàn)是十分容易的。clk是輸入時(shí)鐘信號(hào),dout是波形輸出信號(hào)。根據(jù)需要,低電平模塊的信號(hào)輸出也是八位的,不過(guò)是始終全為0的八位輸出。
輸出選擇模塊
輸出選擇模塊的輸入有時(shí)鐘信號(hào)clk、波形選擇信號(hào)s、正弦波波形數(shù)據(jù)sin、三角波波形數(shù)據(jù)sanjiao、方波波形數(shù)據(jù)fangbo和低電平波形數(shù)據(jù)didianping,輸出有被選擇輸出的波形數(shù)據(jù)dout、D/A芯片的片選信號(hào)DAC_CS、D/A芯片的寫(xiě)
號(hào)nWR和D/A芯片模擬信號(hào)輸出端選擇信號(hào)DAC_OUT。
D/A轉(zhuǎn)化模塊
D/A轉(zhuǎn)換模塊負(fù)責(zé)將將輸出轉(zhuǎn)換模塊傳送過(guò)來(lái)的8位二進(jìn)制的數(shù)字量數(shù)據(jù),轉(zhuǎn)換成一路模擬量信號(hào)輸出。
基于AD7801這款D/A轉(zhuǎn)換芯片,GX-SOC/SOPC-Dev-Lab Platform開(kāi)發(fā)實(shí)驗(yàn)平臺(tái)為我們提供了已經(jīng)設(shè)計(jì)好的D/A轉(zhuǎn)換模塊,如圖4-15所示。由于AD7801是8位的D/A芯片,故模擬輸出的電壓信號(hào)最小精度為0.02V。