DDS設(shè)計(jì)報(bào)告帶程序_第1頁(yè)
DDS設(shè)計(jì)報(bào)告帶程序_第2頁(yè)
DDS設(shè)計(jì)報(bào)告帶程序_第3頁(yè)
DDS設(shè)計(jì)報(bào)告帶程序_第4頁(yè)
DDS設(shè)計(jì)報(bào)告帶程序_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 真的是為了下載券沒(méi)辦法了,很多有用的文件都需要下載券,求幫忙,這份程序是真的靠譜。 電子線路課程設(shè)計(jì)直接數(shù)字頻率合成計(jì) 院系:學(xué)號(hào):912000720姓名: 同組人:指導(dǎo)老師:時(shí)間:2014 年 11 月 摘要本實(shí)驗(yàn)通過(guò)使用 Quartus7.1軟件,并結(jié)合verilog語(yǔ)言的知識(shí)設(shè)計(jì)直接頻率合成器,簡(jiǎn)稱DDS。DDS中的正余弦波形存儲(chǔ)器模塊用類型的芯片實(shí)現(xiàn),基準(zhǔn)頻率為1MHz,利用實(shí)驗(yàn)箱上的D/A轉(zhuǎn)換器件將ROM輸出的數(shù)字信號(hào)轉(zhuǎn)換為模擬信號(hào),能夠通過(guò)示波器觀察到正、余弦兩路波形。除此之外,本實(shí)驗(yàn)還實(shí)現(xiàn)了多種波形任意切換,0-200kHz頻率任意可調(diào),并在數(shù)碼管上顯示生成的波形頻率等附加功能

2、。關(guān)鍵詞QuartusII,直接數(shù)字頻率合成計(jì)(DDS),Verilog HDL,狀態(tài)機(jī)AbstractIn this study, by using Quartus7.1 software, combined with the knowledge of verilog-language, we designed the direct frequency synthesizer, also called DDS. The type of sine and cosine waveform memory module in DDS is . And the reference frequency

3、is 1MHz. Passing through the D/A experimental box, the digital signal conversion device converts the output of the ROM to an analog signal. We can observe two waveform on the screen of oscilloscope. In addition, this experiment also implements an arbitrary waveform switching, a 0-200kHz arbitrary fr

4、equency switching, and the resulting waveform frequency displaying. Key wordsQuartus, Direct frequency synthesizer , Verilog HDL, State machine1目 錄一、設(shè)計(jì)要求.3二、分層設(shè)計(jì)及其分工.33、 直接數(shù)字頻率合成計(jì)頂層設(shè)計(jì).4四、各子模塊設(shè)計(jì)原理及程序.54.1 分頻電路.54.2 相位累加器和數(shù)據(jù)鎖存器器電路.64.3 波形存儲(chǔ)器ROM的生成.64.4 三角波及方波輸出電路.74.5 波形的綜合輸出電路.84.6 狀態(tài)機(jī)控制電路.84.7 狀態(tài)機(jī)專用

5、消顫電路.104.8 LED頻率顯示電路.11五、程序下載、仿真與調(diào)試.135.1 管腳設(shè)定 .135.2 修改 Device&Pins Options 及重新編譯.145.3 程序下載及運(yùn)行結(jié)果.15六、實(shí)驗(yàn)中遇到的問(wèn)題及其應(yīng)對(duì)方案.15七、實(shí)驗(yàn)總結(jié)與感想.15八、參考文獻(xiàn).161、 設(shè)計(jì)要求1.1 設(shè)計(jì)基本部分要求利用QuartusII軟件和SmartSOPC試驗(yàn)箱實(shí)現(xiàn)DDS的設(shè)計(jì);DDS中的波形存儲(chǔ)器模塊用Altera公司的CycloneIII系列FPGA芯片中的ROM實(shí)現(xiàn),ROM結(jié)構(gòu)配置成類型;具體參數(shù)要求:頻率控制字K取4位;基準(zhǔn)頻率,由實(shí)驗(yàn)板上的系統(tǒng)時(shí)鐘分頻得到;系統(tǒng)具有使

6、能功能;利用實(shí)驗(yàn)箱上的D/A轉(zhuǎn)換器件將ROM輸出的數(shù)字信號(hào)轉(zhuǎn)換為模擬信號(hào),能夠通過(guò)示波器觀察到正、余弦兩路波形;通過(guò)開關(guān)輸入DDS的頻率和相位控制字,并能用示波器觀察加以驗(yàn)證;1.2 設(shè)計(jì)提高部分要求通過(guò)按鍵(實(shí)驗(yàn)箱上的Si)輸入DDS的頻率和相位控制字,以擴(kuò)大頻率控制和相位控制的范圍;(注意:按鍵后有消顫電路)在數(shù)碼管上顯示生成的波形頻率;設(shè)計(jì)能輸出多種波形(三角波、鋸齒波、方波等)的多功能波形發(fā)生器;充分考慮ROM結(jié)構(gòu)及正弦函數(shù)的特點(diǎn),進(jìn)行合理的配置,提高計(jì)算精度;基于DDS的AM調(diào)制器的設(shè)計(jì);自己添加其他功能。二、分層設(shè)計(jì)及其分工2.1 分層設(shè)計(jì)為了實(shí)現(xiàn)直接數(shù)字頻率合成計(jì),我們采用了Ve

7、rilog語(yǔ)言描述其功能,如圖2.1所示,為本實(shí)驗(yàn)的層次分析設(shè)計(jì)結(jié)構(gòu)圖。圖2.1 直接數(shù)字頻率合成計(jì)的層次模型原始分頻電路將系統(tǒng)提供的48MHz晶振頻率分為1MHz的基礎(chǔ)頻率,是所有子模塊中clk的基礎(chǔ)。狀態(tài)機(jī)可以實(shí)現(xiàn)復(fù)位、波形切換、0-200kHz頻率任意可調(diào)的功能。LED電路通過(guò)對(duì)頻率與相位控制字的相對(duì)數(shù)量計(jì)算,實(shí)現(xiàn)了顯示頻率的功能2.2 分工情況整個(gè)直接數(shù)字頻率合成器設(shè)計(jì)由鄭蕤荻和我(徐潔)共同完成,既有明確的分工以提高效率,也有互相幫助,互相指出錯(cuò)誤的合作過(guò)程,以下為我們兩個(gè)人明確分工的情況:*:DDS頻率發(fā)生器頂層設(shè)計(jì)、狀態(tài)機(jī)控制電路、LED顯示電路;*:三種波形的生成、狀態(tài)機(jī)專用消

8、顫電路、相位累加器及鎖存器、分頻電路。.三、直接數(shù)字頻率合成計(jì)頂層設(shè)計(jì)DDS為整個(gè)直接數(shù)字頻率合成計(jì)的頂層設(shè)計(jì),它直接或間接的調(diào)用了所有的子程序,實(shí)現(xiàn)了將整個(gè)底層程序貫穿聯(lián)接的功能,規(guī)定了直接數(shù)字頻率合成計(jì)的輸入和輸出。輸入有:EP3C25F324C8的自帶晶振頻率48MHz,鍵入值;輸出有:波形數(shù)據(jù),LED管的位碼和段碼,接地信號(hào)。verilog語(yǔ)言程序如下:module dds(_48MHz,keyin,wavevalue,wavevalue2,Segout,SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8,GND,GND2,clk); input _48MHz; outpu

9、t clk; output GND,GND2; input3:0keyin; output 9:0wavevalue,wavevalue2; output6:0Segout; output SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8; /select LED wire11:0address; wire1:0wavemode; wire23:0length; wire 9:0wavevalue,wavevalue2; wire 3:0 keyOUT; wire _48MHz,clk; supply0 GND,GND2; key S0(clk,keyin,keyOUT); Or

10、iginal_Frequency S1(_48MHz,clk); control S2(clk,keyOUT,wavemode,length); counter S3(clk,length,address); selection S4(clk,address,wavemode,wavevalue); cos_rom S5(address,clk,wavevalue2); shumaguan S6(clk,length,Segout,SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8); endmodule四、各子模塊設(shè)計(jì)原理及程序4.1 分頻電路分頻模塊是為了實(shí)現(xiàn)EP3C25F32

11、4C8的自帶晶振頻率48MHz,往1MHz的分頻,主體思想是使用一個(gè)模48計(jì)數(shù)器直接取其最高位,下面是該電路的verilog程序:/Original_Frequency.vmodule Original_Frequency (_48MHz,_1MHz); input _48MHz; output _1MHz; reg 3:0 CntH,CntL; wire _1MHz; always(posedge _48MHz) begin if (CntH>4)|(CntL>9)|(CntH=4)&&(CntL>=7) CntH,CntL<=8'h00; e

12、lse if (CntH=4)&&(CntL<7) begin CntH<=CntH; CntL<=CntL+1'b1;end else if (CntL=9) begin CntH<=CntH+1'b1; CntL<=4'b0000;end else begin CntH<=CntH; CntL<=CntL+1'b1;end end assign _1MHz=CntH2;endmodule分頻電路的仿真波形圖如下:4.2 相位累加器和數(shù)據(jù)鎖存器器電路相位累加器是DDS系統(tǒng)設(shè)計(jì)的核心,它決定著頻率的范圍和

13、分辨率。本設(shè)計(jì)中采用的是24位的二進(jìn)制累加器和寄存器,其中累加器與寄存器在同一個(gè)模塊中,并取鎖存數(shù)據(jù)的高十位作為查表的地址值。Verilog程序如下:/counter.vmodule counter(clk,fre_word,address); input clk; input 23:0fre_word; output reg 11:0address; reg 23:0 phaseadder;always(posedge clk) begin phaseadder= phaseadder+fre_word; address= phaseadder23:12; endendmodule4.3 波

14、形存儲(chǔ)器ROM的生成在我們的程序中,波形存儲(chǔ)器ROM是由VC+程序生成的,以*.mif文件的格式存放在電腦中,并可以被QuartusII調(diào)用。程序及其原理簡(jiǎn)介如下:#include<stdio.h>#include"math.h"void main () int s; int i; FILE* fp;fp=fopen("4096.mif", "w+"); /新建4096.mif文件,只寫模式fprintf (fp,"- - MAX+ plus - generated Memory Initialization F

15、ilen");fprintf (fp,"- - By Di and Jiennnnn"); /作者fprintf (fp,"WIDTH=10;nn"); /定義字寬fprintf (fp,"DEPTH=4096;nn"); /定義內(nèi)存容量fprintf (fp,"ADDRESS_RADIX=HEX;nn"); /定義地址進(jìn)制fprintf (fp,"DATA_RADIX=HEX;nn"); /定義內(nèi)容進(jìn)制fprintf (fp,"CONTENT BEGINn");

16、/內(nèi)存開始for (i=0;i<4096;i+) s=512+511*sin(i*atan(1.0)*8/4096); /512和511是為了最大的利用sinx小數(shù)點(diǎn)后面的有效內(nèi)容,并將其調(diào)節(jié)為x軸上方的無(wú)符號(hào)數(shù),4*atan(1.0)為,再乘以2i除以4096是將sin的一個(gè)周期分為4096個(gè)值。 fprintf(fp,"% xt:t%x;n",i,s); /Quartus調(diào)用*.mif文件時(shí)所需滿足的格式 fprintf(fp,"END;n"); / 內(nèi)存結(jié)束 fclose (fp);余弦波文件的生成與正弦波文件的生成是一樣的,只是將公式改為s

17、=512+511*sin(i*atan(1.0)*8/4096+2*atan(1.0);當(dāng)然,這樣做只是為了簡(jiǎn)便編程者的操作,我們也可以將address的值加上4096/4之后進(jìn)行尋址,便可以減少內(nèi)存的使用。4.4 三角波及方波輸出電路由于方波只有高、低電平兩種狀態(tài),因此只需要在一個(gè)周期時(shí)間的中間位置翻轉(zhuǎn)電平就可以形成方波。程序及其原理簡(jiǎn)介如下:/fangbo.vmodule fangbo(clk,enable,address,qsquare); input clk; input enable; input 11:0address; output reg 9:0 qsquare;always(

18、posedge clk) if (!enable) qsquare=10'b00_0000_0000; else begin if (address<=12'b0111_1111_1111) qsquare9:0=10'b11_1111_1111; /利用address在中間位置實(shí)現(xiàn)翻轉(zhuǎn) else qsquare 9:0=10'b00_0000_0000; endendmodule 三角波則是先判斷出address的中間狀態(tài),然后將address或address的非賦給相應(yīng)的輸出,即可得到我們所需的三角波。其verilog語(yǔ)言及原理簡(jiǎn)介如下:/sanjia

19、o.vmodule sanjiao (clk,enable,address,qtriangle); input clk,enable; input 11:0address; output 9:0 qtriangle; reg 9:0 qtriangle;always(posedge clk) if (! enable) qtriangle=10'b00_0000_0000; else begin if (address<=12'b0111_1111_1111) qtriangle9:0= address10:1; else qtriangle9:0=address 10:

20、1; /address的非與address一個(gè)遞減一個(gè)遞增,正好形成了三角波的一個(gè)周期。 endendmodule4.5 波形的綜合輸出電路有了三種波形,就要在特定時(shí)刻進(jìn)行選擇,在每一個(gè)時(shí)刻只能有一種波輸出,在示波器上顯示,所以用case語(yǔ)句寫了一個(gè)選擇性輸出,程序如下:/selection.vmodule selection (clk,address,wavemode,wavevalue); input clk; input 1:0wavemode; input 11:0address; output 9:0wavevalue; reg 9:0 wavevalue; wire 9:0wave

21、value1,wavevalue2,wavevalue3; wire 9:0q; supply1 Vdd; fangbo U0(clk,Vdd,address,wavevalue2); sanjiao U1(clk,Vdd,address,wavevalue3); sin_rom U2(address,clk,q); assign wavevalue1=q; always(posedge clk) case (wavemode) 2'b01: wavevalue= wavevalue1; 2'b10: wavevalue= wavevalue2; 2'b11: wave

22、value= wavevalue3; endcaseendmodule4.6 狀態(tài)機(jī)控制電路狀態(tài)機(jī)控制電路主要包括按鍵模塊和工作模塊兩個(gè)部分,由于按鍵的有限性,狀態(tài)機(jī)的利用大大的提高開關(guān)的利用率,使得我們0-200kHz頻率任意切換的功能得以實(shí)現(xiàn)。其verilog程序如下,思路清晰,使用簡(jiǎn)便,將在實(shí)驗(yàn)結(jié)果中具體介紹,也是本實(shí)驗(yàn)的亮點(diǎn)所在。/control.vmodule control(clk,keyin,wavemode,length); input3:0keyin; input clk; output reg 1:0wavemode; output reg23:0length; reg 2

23、3:0 fredata; reg3:0key; integer single_state= 1,single_frc= 1;always(posedge clk)begin key=keyin; case(key) 4'b0001:begin wavemode= 2'b01;length= 24'd17;end /key1-reset 4'b0010:begin case (single_state) /key2-wavemode 1: wavemode= 2'b01; /sin 2: wavemode= 2'b10; /fangbo 3: wa

24、vemode= 2'b11; /sanjiao default:begin wavemode= 2'b01; single_state= 0; end endcase single_state= single_state+1; end 4'b0100:begin case(single_frc) /key3-frequency dangwei 1: length= 24'd17; /1Hz100Hz 2: length= 24'd1678; /100Hz500Hz 3: length= 24'd8389; /500Hz1kHz 4: length

25、= 24'd16777; /1kHz5kHz 5: length= 42'd83886; /5kHz10kHz 6: length= 24'd167772; /10kHz50kHz 7: length= 24'd838861; /50kHz200kHz default: begin length= 24'd671088;single_frc= 0;end endcase single_frc= single_frc+1; end 4'b1000:begin case(single_frc) /key4-frequency bujin 1: len

26、gth= length+24'd16777; /1kHz 2: length= length+24'd17; /1Hz 3: length= length+24'd168; /10Hz 4: length= length+24'd839; /50Hz 5: length= length+24'd1678; /100Hz 6: length= length+24'd8389; /500Hz 7: length= length+24'd16777; /1kHz 8: length= length+24'd83886; /5kHz de

27、fault: length= length+24'd0; /0 endcase end endcaseendendmodule4.7 狀態(tài)機(jī)專用消顫電路消顫電路時(shí)經(jīng)常用到的一種電路,普通消顫電路以D觸發(fā)器鎖存并在時(shí)鐘上升沿賦值為基礎(chǔ),原理簡(jiǎn)便,但并不適用于狀態(tài)機(jī)電路。狀態(tài)機(jī)電路會(huì)在每一個(gè)時(shí)鐘上升沿檢測(cè)開關(guān)的0、1狀態(tài),如果高電平時(shí)間長(zhǎng)(大于1us),將會(huì)導(dǎo)致其測(cè)試出無(wú)數(shù)個(gè)高電平而使得輸出只能是循環(huán)的任意狀態(tài),或累加的最高狀態(tài)。狀態(tài)機(jī)專用消顫電路,既繼承了普通消顫電路忽略開關(guān)的顫的的功能,又使得開關(guān)按下后每0.5s才產(chǎn)生一個(gè)1us的微小脈沖,相當(dāng)于狀態(tài)機(jī)切換一個(gè)狀態(tài),使得狀態(tài)機(jī)的功能得以

28、全部實(shí)現(xiàn)。以下為狀態(tài)機(jī)專用消顫電路的verilog程序及原理簡(jiǎn)介:/key.vmodule key(clk,keyIN,keyOUT); input clk; input3:0keyIN; output3:0keyOUT; reg 3:0 keyOUT; reg19:0 scan; wire 3:0keyIN; always(posedge clk) if(scan=20'h7A120) /每50000個(gè)系統(tǒng)脈沖(合為0.5s)的持續(xù)1可輸出一個(gè)1us的脈沖 begin keyOUT<=keyIN; scan<=scan+1; end else if(scan=20'

29、;h7A121) begin keyOUT<=0; scan<=0; end else begin if(keyIN0=1)|(keyIN1=1)|(keyIN2=1)|(keyIN3=1) scan<=scan+1'b1; else begin keyOUT<=0; scan<=0; end endendmodule由于仿真時(shí)不可能在1MHz的系統(tǒng)時(shí)鐘下輸出一個(gè)0.5s量級(jí)的才出現(xiàn)的脈沖波,所以仿真時(shí),將50000個(gè)脈沖改為100個(gè)(即0.1ms),將柵格設(shè)為0.01ms,仿真波形如下:4.8 LED頻率顯示電路LED電路利用頻率字就分辨率,對(duì)每一個(gè)頻率

30、的個(gè)、十、百、千、萬(wàn)及以上共八位進(jìn)行了計(jì)算,并將計(jì)算結(jié)果通過(guò)譯碼管顯示電路輸出到七段譯碼管上。Verilog程序及原理簡(jiǎn)介如下:module shumaguan(clk,length,Segout,SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8);/changed input clk; output6:0Segout; / 7-segment code output,segout6.0-gfedcba output SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8; /select LED input 24:0 length; reg 24:0 temp= 24&

31、#39;d596046; reg 45:0 AA; reg 23:0 fre; reg 3:0 A1,A2,A3,A4,A5,A6,A7,A8; reg SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8; reg 6:0Segout; reg 2:0Count; /internal 3-bit counter reg 3:0Seg_in; always(posedge clk) begin AA= length*temp; fre= AA/24'd1000000; A1=(fre/28'd10000000); /百萬(wàn) A2=(fre/24'd1000000

32、)%4'd10; /十萬(wàn) A3=(fre/24'd100000)%4'd10; /萬(wàn)位 A4=(fre/24'd10000)%4'd10; /千位 A5=(fre/24'd1000)%4'd10; /百位 A6=(fre/24'd100)%4'd10; /十位 A7=(fre/24'd10)%4'd10; /個(gè)位 A8= fre%4'd10; end always(posedge clk) /clk=1kHz case(Count) 3'b000:begin SG1,SG2,SG3,SG4,

33、SG5,SG6,SG7,SG8=8'b01111111; /LED0 display Seg_in=A13:0; Count=Count+1; /Count=1 end 3'b001:begin SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8=8'b10111111; /LED1 display Seg_in=A23:0; Count=Count+1; /Count=2 end 3'b010:begin SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8=8'b11011111; /LED2 display Seg_in=A3

34、3:0; Count=Count+1; /Count=3 end 3'b011: begin SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8=8'b11101111; /LED3 display Seg_in=A43:0; Count=Count+1; /Count=4 end 3'b100:begin SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8=8'b11110111; /LED4 display Seg_in=A53:0; Count=Count+1; /Count=5 end 3'b101:begin SG1,S

35、G2,SG3,SG4,SG5,SG6,SG7,SG8=8'b11111011; /LED5 display Seg_in=A63:0; Count=Count+1; /Count=6 end 3'b110:begin SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8=8'b11111101; /LED6 display Seg_in=A73:0; Count=Count+1; /Count=7 end 3'b111:begin SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8=8'b11111110; /LED7 display Seg_in=A83:0; Count=Count+1; /Count=0 end endcase/ BCD Code=>7 Segment Code(ag)always(Seg_in) case(Seg_in) /gfedcba4'd0:Segout=7'b1000000;4'd1:Segout=7'b1111001;4'd2:Segout=7'b0100100;4'd3:Segout=7'b0110000;4'd4:Segout=7'b0011001;4'd

溫馨提示

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

評(píng)論

0/150

提交評(píng)論