DDS頻率發(fā)生器設(shè)計(jì)_第1頁
DDS頻率發(fā)生器設(shè)計(jì)_第2頁
DDS頻率發(fā)生器設(shè)計(jì)_第3頁
DDS頻率發(fā)生器設(shè)計(jì)_第4頁
DDS頻率發(fā)生器設(shè)計(jì)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、西南科技大學(xué)FPGA課程設(shè)計(jì)報(bào)告課程題目: 波形發(fā)生器 . 指導(dǎo)老師: 劉桂華 . 學(xué) 生: 任健銘 .二0一二年五月三日【摘要】本文主要討論了Verilog語言的基于DDS的波形發(fā)生器的設(shè)計(jì)。從設(shè)計(jì)要求入手,本文給出了DDS的詳細(xì)設(shè)計(jì)過程,包括各個(gè)模塊的設(shè)計(jì)思想,電路圖,Verilog語言程序代碼。其大致思想為通過頻率控制字和相位控制字去控制正弦函數(shù)的ROM存儲表的地址并對應(yīng)著得到其幅度值,最終達(dá)到輸出需要波形的目的。本設(shè)計(jì)除了完成指定的任務(wù)。在此基礎(chǔ)上,為了驗(yàn)證實(shí)驗(yàn)結(jié)果我們通過QuartusII的仿真工具對設(shè)計(jì)的DDS進(jìn)行了仿真,并且還進(jìn)行了理論分析,發(fā)現(xiàn)理論和實(shí)踐結(jié)合的非常好?!娟P(guān)鍵詞】

2、FPGA DDS Verilog 波形發(fā)生器 Quartus II1.設(shè)計(jì)要求(1)設(shè)計(jì)并實(shí)現(xiàn)一個(gè)可產(chǎn)生正弦波、三角波波形發(fā)生器;(2)其工作頻率為50MHz,可產(chǎn)生1MHz、2MHz、3MHz、4MHz、5MHz的正弦波、三角波。所產(chǎn)生波形的幅度、相位均可調(diào)整,輸出數(shù)據(jù)的字長為12 bit。若波形的頻率為n MHz,則相位的最小調(diào)幅為2*n/60;(3)要求進(jìn)行4級幅度調(diào)整,即ROM中存儲的數(shù)據(jù)字長為10 bit,ROM輸出的數(shù)據(jù)分別乘以001、010、011、和100。2.設(shè)計(jì)原理及分析本波形發(fā)生器的設(shè)計(jì)總共包含有頻率選擇、波形選擇、相位選擇和幅度選擇四個(gè)大塊。其具體結(jié)構(gòu)見圖2-1.圖2-

3、1 整體設(shè)計(jì)方案2.1DDS基本原理DDS的基本原理是利用采樣定量,通過查表法產(chǎn)生波形。DDS的結(jié)構(gòu)有很多種,其基本的電路原理可用圖2-2來表示。圖2-2 DDS基本電路原理圖其中,相位累加器由N位加法器與N位累加寄存器級聯(lián)構(gòu)成如圖2-3:圖2-3 相頻累加器每來一個(gè)時(shí)鐘脈沖c f ,加法器將控制字k 與累加寄存器輸出的累加相位數(shù)據(jù)相加,把相加后的結(jié)果送到累加寄存器的數(shù)據(jù)輸入端,以使加法器在下一個(gè)時(shí)鐘脈沖的作用下繼續(xù)與頻率控制字相加。這樣,相位累加器在時(shí)鐘作用下,不斷對頻率控制字進(jìn)行線性相位加累加。由此可以看出,相位累加器在每一個(gè)時(shí)鐘輸入時(shí),把頻率控制字累加一次,相位累加器輸出的數(shù)據(jù)就是合成信

4、號的相位,相位累加器的輸出頻率就是DDS 輸出的信號頻率。 接著,把相位累加器輸出的數(shù)據(jù)作為波形存儲器(ROM)的相位取樣地址。這樣就可把存儲在波形存儲器內(nèi)的波形抽樣值(二進(jìn)制編碼)經(jīng)查找表查出(可以看成是一種映射),完成相位到相應(yīng)幅值轉(zhuǎn)換。2.2頻率選擇基于DDS的波形發(fā)生器,其輸出波形的頻率由兩方面決定。一方面是由頻率控制字,即波形輸出的步長決定;另一方面是由波形點(diǎn)輸出的固有頻率決定。DDS 輸出信號的頻率與基準(zhǔn)時(shí)鐘頻率的關(guān)系由下式給定:其中, c f 為基準(zhǔn)時(shí)鐘頻率,2N 為波形存儲器的字?jǐn)?shù),N 為相位累加器的位數(shù), k 為頻率控制字。一般的, k 小于N。假設(shè)基準(zhǔn)時(shí)鐘頻率為131kHz

5、,累加器為8 位,k=4,則f out= 2048 Hz。2.3波形選擇本設(shè)計(jì)要實(shí)現(xiàn)三角波和正弦波這兩種波形的輸出。所以,在整個(gè)模塊設(shè)定了一個(gè)輸入控制端。通過查詢這個(gè)輸入控制端的電平的高低來確定輸出正弦波還是輸出三角波。其實(shí)質(zhì)還是利用了rom表完成了對相同相位的不同幅度的輸出。2.4初相位選擇本設(shè)計(jì)中,對于產(chǎn)生的波形的初相的控制我們同樣設(shè)定了一個(gè)輸入控制端。通過控制端的不同狀態(tài)給波形添加不同的初相。其原理是對相頻累加器的初次輸出加上一個(gè)特定的值。在本設(shè)計(jì)中無法實(shí)現(xiàn)初相的任意值設(shè)定。本設(shè)計(jì)只是設(shè)定了幾個(gè)特定的初相供選擇已驗(yàn)證理論的正確性。2.5幅度選擇按照設(shè)計(jì)要求,波形的最終輸出幅度值是可調(diào)節(jié)的

6、。設(shè)計(jì)要求中規(guī)定幅度值是能夠按照1到4倍的大小調(diào)節(jié)的。故在本設(shè)計(jì)中,在最后輸出前,我們增加了一個(gè)幅度按調(diào)節(jié)的部分。將相位幅度轉(zhuǎn)換成功后的值再乘上一個(gè)要求的調(diào)幅系數(shù)為最終的波形輸出。3.各模塊代碼及電路原理圖3.1.頻率控制字module f_ctr(sel,f_out,en,reset);input2:0sel;inputen,reset;output8:0f_out;reg8:0f_out;always (sel)beginif(!reset)f_out <= 9'b000000000;else if(en)begincase(sel)3'b001:f_out <

7、=9'b001010010;3'b010:f_out <=9'b010100100;3'b011:f_out <=9'b011110110;3'b100:f_out <=9'b101001000;3'b101:f_out <=9'b110011010;default:f_out <= 9'b000000000;endcaseendendendmodule3.2相頻累加器/相位控制字(溢出沒看懂)modulen_full_adder(a,b,clk,sel,y); /n wei quan

8、 jia qiparameterm = 9;parametern = 12;inputm-1:0 a; /6 wei pin lv kong zhi ziinputn-1:0b;outputn-1:0y;input1:0sel;inputclk;regn-1:0y;regn-1:0c;regn-1:0d;always (posedge clk)begincase(sel)2'b00:c <= 12'b000000000000;2'b01:c <= 12'b001111111111;2'b10:c <= 12'b011111111

9、111;2'b11:c <= 12'b101111111111;endcaseendalways (posedge clk)begind = b;if(d=12'b0)d = d+c; elsey = a+d;endendmodule33相/幅轉(zhuǎn)換(rom查詢)和波形選擇width=12;depth=4096;index=linspace(0,2*pi,depth);y=sawtooth(index,0.5);y1=fix(y*1023)+1024;plot(y1);adrs=0:depth-1;str_width=strcat('WIDTH=',

10、num2str(width);str_depth=strcat('DEPTH=',num2str(depth);fid=fopen('D:My DocumentsDesktopboxingtriangular.mif','w');fprintf(fid,str_width);fprintf(fid,'rnrn');fprintf(fid,str_depth);fprintf(fid,'rnnrn');fprintf(fid,'ADDRESS_RADIX=HEX;rnrn');fprintf(fid,

11、'DATA_RADIX=HEX;rnrnrn');fprintf(fid,'CONTENT BEGINrn');fprintf(fid,'t%x:%x;rn',adrs;y1);fprintf(fid,'END;rn');fclose(fid);width=12;depth=4096;index=linspace(0,2*pi,depth);y=sin(index);y1=fix(y*1023)+1024;plot(y1);adrs=0:depth-1;str_width=strcat('WIDTH=',num2s

12、tr(width);str_depth=strcat('DEPTH=',num2str(depth);fid=fopen('D:My DocumentsDesktopboxingsin.mif','w');fprintf(fid,str_width);fprintf(fid,'rnrn');fprintf(fid,str_depth);fprintf(fid,'rnnrn');fprintf(fid,'ADDRESS_RADIX=HEX;rnrn');fprintf(fid,'DATA_RA

13、DIX=HEX;rnrnrn');fprintf(fid,'CONTENT BEGINrn');fprintf(fid,'t%x:%x;rn',adrs;y1);fprintf(fid,'END;rn');fclose(fid);3.3.2原理圖模塊正弦波rom生成代碼 三角波rom生成代碼波形選擇電路原理圖3.4相位幅度轉(zhuǎn)換/rom cha xun ding ceng wen jianmodulerom_search(clk,addr_in,dds_out,boxing_ctr);parameterwidth = 12; inputwi

14、dth-1:0addr_in; /shu ru 12 wei di zhiinputclk;inputboxing_ctr;outputwidth-2:0dds_out; /shu chu 11 wei fu du zhireg10:0dds_out;wire10:0Q1,Q2;sin u0(.address(addr_in),.clock(clk),.q(Q1);triangular U1(.address(addr_in),.clock(clk),.q(Q2);always (boxing_ctr)begincase(boxing_ctr)1'b1:dds_out <= Q1

15、;1'b0:dds_out <= Q2;endcaseendendmodule 3.5幅度調(diào)制module fd_choose(v_in,sel,v_out);input10:0v_in;input2:0sel;output12:0v_out;reg12:0v_out;always (v_in or sel)beginif(sel = 3'b100)v_out <= v_in * 4;else if(sel = 3'b011)v_out <= v_in * 3;else if(sel = 3'b010)v_out <= v_in * 2;

16、else if(sel = 3'b001)v_out <= v_in ;endendmodule3.6頂層例化電路原理圖引腳功能說明:1) 輸入引腳Ø clk:時(shí)序同步時(shí)鐘。該時(shí)鐘主要用于相位累加器和rom表查詢的同時(shí)序。它決定了相位累加的速度,也決定了幅度點(diǎn)輸出的速度。Ø f_ctr:頻率選擇控制字。該輸入端有三位,即是:000111八個(gè)數(shù)值編碼。編碼值從001到101分別對應(yīng)了1到5Mhz的輸出波形頻率。其他編碼值未定義,默認(rèn)為0。Ø en:電路工作使能端,高電平有效。Ø rest:電路工作復(fù)位端,低電平有效。Ø xiangw

17、ei_ctr:初相位選擇控制端。該輸入有兩位,即是:0011四個(gè)數(shù)值編碼。編碼值從00到11分別對應(yīng)了0,/2, ,3/2四個(gè)初相位。Ø boxing_ctr:波形選擇控制位。為高電平時(shí)輸出正弦波,為低電平時(shí)輸出三角波。Ø fdu_ctr:幅度選擇調(diào)制位。該端為三位輸入,即是:000111八個(gè)數(shù)值編碼。編碼值從001到100分別對應(yīng)了1到4倍幅度調(diào)制。其他為未定義,默認(rèn)為0。2) 輸出引腳Ø boxing_out:波形輸出端。該端口為13位輸出端口。幅度值從-4096到+4095.4各模塊仿真4.1頻率控制字4.2相頻累加器/相位控制字4.3相位幅度轉(zhuǎn)換4.3幅度

18、調(diào)制4.4最終仿真圖圖4-1 三角波產(chǎn)生波形圖4-2 正弦波產(chǎn)生波形圖4-3 正弦波調(diào)頻調(diào)幅波形圖4-4 三角波調(diào)頻調(diào)幅波形圖4-5 波形切換波形5結(jié)論與傳統(tǒng)的頻率合成方法相比,DDS合成信號具有頻率切換時(shí)間短、頻率分辨率高、相位變化連續(xù)等諸多優(yōu)點(diǎn)。使用單片機(jī)靈活的控制能力與FPGA器件的高性能、高集成度相結(jié)合,可以克服傳統(tǒng)DDS設(shè)計(jì)中的不足,從而設(shè)計(jì)開發(fā)出性能優(yōu)良的DDS系統(tǒng)。通過本次實(shí)驗(yàn),我們驗(yàn)證了DDS設(shè)計(jì)理論的正確性。在課余時(shí)間,結(jié)合了所學(xué)的FPGA課程的知識,自主完成了基于DDS的調(diào)頻、調(diào)幅、調(diào)相的波形發(fā)生器的設(shè)計(jì),拓寬了知識面,也增進(jìn)了對FPGA 及Verilog進(jìn)行電路開發(fā)的理解??偟膩碚f這次實(shí)驗(yàn)時(shí)非常成功的,這讓我從中受益匪淺。5實(shí)驗(yàn)感想通過本次實(shí)驗(yàn),我進(jìn)一步認(rèn)識了通過FPGA進(jìn)行硬件設(shè)計(jì)的基本思路,體會了如何把理論變?yōu)閷?shí)物。同時(shí)發(fā)現(xiàn),有時(shí)一個(gè)好的想法要變成現(xiàn)實(shí)并不是一件容易的事情。但是團(tuán)隊(duì)的力量卻是可以把它解決的。比方說,在寫rom表查詢的時(shí)候,在自學(xué)了相關(guān)知識以后我很快地把它編完并將其局部頂層例化。但是,在頂層仿真的時(shí)候,怎么辦輸出都是零。就在后來小組討論的時(shí)候,其中一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論