直接數(shù)字合成器設(shè)計(jì)_第1頁(yè)
直接數(shù)字合成器設(shè)計(jì)_第2頁(yè)
直接數(shù)字合成器設(shè)計(jì)_第3頁(yè)
直接數(shù)字合成器設(shè)計(jì)_第4頁(yè)
直接數(shù)字合成器設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩6頁(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、IC課程設(shè)計(jì)報(bào)告 題目:直接數(shù)字合成器設(shè)計(jì)專業(yè): XXXXXXXXXXXXX 班級(jí): XXXXXXXXXXXX 組長(zhǎng): XXXXXXXXX 成員: XXXX XXXX 指導(dǎo)老師: 目錄課程設(shè)計(jì)的要求21.1 課程設(shè)計(jì)的目的21.2 課程設(shè)計(jì)的條件21.3 課程設(shè)計(jì)的要求2課程設(shè)計(jì)的內(nèi)容32.1、DDS基本原理32.2、設(shè)計(jì)思路42.3、DDS基本結(jié)構(gòu)圖42.4、程序代碼闡述52.4.1、C語(yǔ)言部分52.4.2、Verilog HDL部分52.5、ModelSim驗(yàn)證72.6、硬件調(diào)試9課程設(shè)計(jì)的心得10參考文獻(xiàn)10 課程設(shè)計(jì)的要求 1.1 課程設(shè)計(jì)的目的1、通過(guò)運(yùn)用Verilog語(yǔ)言編寫程序,

2、體會(huì)程序的邏輯性,掌握基本的程序開(kāi)發(fā)的注意事。在實(shí)踐中,學(xué)習(xí)掌握簡(jiǎn)單、周全的編程方法;2、掌握工程的基本開(kāi)發(fā)技能;3、培養(yǎng)綜合運(yùn)用Modelsim,Quartus II工具進(jìn)行硬件開(kāi)發(fā)的能力;4、培養(yǎng)數(shù)字系統(tǒng)設(shè)計(jì)的基本能力;5、理解DDS的定義與功能,掌握DDS的HDL編寫方法。1.2 課程設(shè)計(jì)的條件1、Modelism仿真工具;2、Quartus II仿真工具;3、示波器;4、GW48-SOPC/DSP和其他適配板。1.3 課程設(shè)計(jì)的要求1、 輸入不少于8位頻率控制字,不少于8位相位控制字;2、 10位2進(jìn)制數(shù)據(jù)輸出,直接接GW-ADDA板上的D/A;3、 時(shí)鐘信號(hào)使用GW48PK2上提供的

3、信號(hào),在所提供的開(kāi)發(fā)板上仿真。 課程設(shè)計(jì)的內(nèi)容 2.1、DDS基本原理 直接數(shù)字式頻率合成器(Digital Direct Synthesizer,簡(jiǎn)稱為DDS)是以數(shù)字信號(hào)處理理論為基礎(chǔ),從信號(hào)的幅度相位關(guān)系出發(fā)進(jìn)行頻率合成的。 與傳統(tǒng)的頻率合成器相比,DDS具有極高的分辨率、快速的頻率轉(zhuǎn)換時(shí)間、很寬的相對(duì)帶寬、任意波形的輸出能力和數(shù)字調(diào)制等優(yōu)點(diǎn)。在數(shù)字化的調(diào)制解調(diào)模塊中, 頻率合成技術(shù)用于電子系統(tǒng)和設(shè)備的頻率源設(shè)計(jì)。相位累加原理和移相原理:相位累加本設(shè)計(jì)采用初始相位控制字K的方式控制DDS的波形輸出頻率,原理是不斷把K累加,產(chǎn)生所需要的信號(hào),原理公式為accum=accum+k;另外,所謂

4、移相是指兩路同頻的信號(hào),以其中的一路為參考,另一路相對(duì)于該參考作超前或滯后的移動(dòng),即稱為相位的移動(dòng)。兩路信號(hào)的相位不同,便存在相位差,簡(jiǎn)稱相差。若我們將一個(gè)信號(hào)周期看作是360,則相差的范圍就在0360之間。例如在圖2.5中,以A信號(hào)為參考,B信號(hào)相對(duì)于A信號(hào)作滯后移相,則稱A超前B,或稱B滯后A。 圖1 移相示意圖因?yàn)楸驹O(shè)計(jì)是采用FPGA實(shí)現(xiàn)DDS的功能,所以使用FPGA作為數(shù)據(jù)轉(zhuǎn)換的橋梁,將波形數(shù)據(jù)存儲(chǔ)到其內(nèi)部的RAM中,并由DDS系統(tǒng)產(chǎn)生波形輸出。需存儲(chǔ)在RAM中的波形數(shù)據(jù)是由單片機(jī)采集外部數(shù)據(jù),對(duì)ROM中存儲(chǔ)的標(biāo)準(zhǔn)波形進(jìn)行各種相應(yīng)的運(yùn)算而得到。波形表存儲(chǔ)器ROM通過(guò)引用LMP函數(shù)來(lái)實(shí)現(xiàn)

5、。采用N(8)位的尋址ROM相當(dāng)于把02的正弦信號(hào)離散成具有2N個(gè)樣值的序列,波形ROM有D(10)位數(shù)據(jù)位,所以設(shè)置2N個(gè)樣值的sin值以D位二進(jìn)制數(shù)值固化在ROM中,這里設(shè)置D=10,所以ROM中的數(shù)據(jù)范圍應(yīng)該從0到512,但是正弦值只從-1到1,所以要對(duì)其進(jìn)行量化,公式如下:存儲(chǔ)數(shù)據(jù)= =(sin(n*/128)+1)*256其中,n為存儲(chǔ)地址,范圍是從0到512。2.2、設(shè)計(jì)思路根據(jù)取樣定理,從連續(xù)信號(hào)的相位出發(fā),對(duì)一個(gè)正弦信號(hào)取樣、量化、編碼,形成一個(gè)正弦函數(shù)表,儲(chǔ)存在只讀存儲(chǔ)器中,合成時(shí)通過(guò)改變相位累加器的頻率控制字,改變相位增量,相位增量的不同導(dǎo)致一周期內(nèi)的取樣點(diǎn)不同,從而使得輸

6、出波形頻率不同。根據(jù)DDS基本原理,具體的可以對(duì)照2.3的DDS基本結(jié)構(gòu)圖,所以我們將DDS設(shè)計(jì)成三個(gè)模塊,分別為相位累加器(accumout=accumout+k)、加法器(sumout=sumin+p)、波形存儲(chǔ)器,通過(guò)改變行為累加器的頻率控制字K來(lái)使累加器增量改變,從而改變頻率的大小。加法器接收相位控制字P和累加器的輸出,用于產(chǎn)生波形存儲(chǔ)器的地址信號(hào),控制波形存儲(chǔ)器的輸出,經(jīng)過(guò)D/A轉(zhuǎn)換器在示波器上顯示。2.3、DDS基本結(jié)構(gòu)圖時(shí)鐘信號(hào)clock 相位控制字P 波形存儲(chǔ)器加法器相位累加器頻率控制字K示波器D/A轉(zhuǎn)換器2.4、 程序代碼闡述2.4.1、C語(yǔ)言部分C語(yǔ)言部分主要是用來(lái)產(chǎn)生RO

7、M模塊的波形文件的數(shù)據(jù),這里設(shè)定256代表Sin函數(shù)的零點(diǎn)坐標(biāo),0和512分別代表-1和1;數(shù)據(jù)存儲(chǔ)在sinrom.mif文件里,調(diào)用lmp函數(shù)時(shí)寫入ROM。ROM寬度為N=8,輸出數(shù)據(jù)的寬度為M=10。#include string.h#include stdlib.h#include stdio.h#include math.hmain() double PI=3.; double i; int x,y; char a,b; char *c; char d10; FILE *fp; fp=fopen(c:sin.mif,wt+); c=WIDTH=10;nDEPTH=512 ; fprin

8、tf(fp,c); for(i=0;i=511;i=i+1) fprintf(fp,t); x=i; itoa(x,d,10); fprintf(fp,d); fprintf(fp,t:t); y=(sin(PI*x/128)+1)*256; itoa(y,d,10); fprintf(fp,d); fprintf(fp,;); fprintf(fp,n); fprintf(fp,END;n); fclose(fp); printf(nttcreate sin.mif successfully!nnttpress any key to exit!); getch(); exit(0);2.4.

9、2、 Verilog HDL部分Verilog HDL部分主要分為四個(gè)模塊一:累加器模塊主要用于接收頻率控制字K,在時(shí)鐘信號(hào)的控制下累加,產(chǎn)生的累加和送給加法器,重點(diǎn)考慮電路的是否可以綜合。module accum(k,accumout,reset,clock); input 7:0k;input reset,clock; output 7:0accumout; reg 7:0accumout; always(posedge clock) begin if(!reset) accumout=0; elseaccumout=k+accumout; endendmodule二:加法器模塊主要用于接

10、收相位控制字P,和累加器產(chǎn)生的結(jié)果accumout相加得到rom模塊的地址,輸給rom模塊。module sum(clock,reset,p,sumin,sumout); input clock; input reset; output 7:0sumout; input 7:0p; input 7:0sumin; reg 7:0sumout; always(posedge clock) begin if(!reset) sumout=8h00; else sumout=p+sumin; end endmodule三:rom模塊本課程設(shè)計(jì)的rom模塊是使用Quartus II里的lmp函數(shù)生產(chǎn)的

11、,過(guò)程可以參加Quartus II使用教程。用加法器的輸出作為波形存儲(chǔ)器的取樣地址,進(jìn)行波形的相位幅值轉(zhuǎn)換,即可在給定的時(shí)間上確定輸出的波形的抽樣幅值。以正弦波形存儲(chǔ)器sinrom為例,N(8)位的尋址ROM相當(dāng)于把02的正弦信號(hào)離散成具有2N個(gè)樣值的序列,波形ROM有D(10)位數(shù)據(jù)位,所以設(shè)置2N個(gè)樣值的sin值以D位二進(jìn)制數(shù)值固化在ROM中,這里設(shè)置D=10,所以ROM中的數(shù)據(jù)范圍應(yīng)該從0到512,但是正弦值只從-1到1,所以要對(duì)其進(jìn)行量化,公式如下:存儲(chǔ)數(shù)據(jù)= =(sin(n*/128)+1)*256 其中,n為存儲(chǔ)地址,范圍是從0到512。四:頂層模塊將accum、sum和rom連接

12、。代碼:module ddstop(t_clock,t_reset,t_k,t_p,t_q); input t_clock,t_reset; input 7:0t_k; input 7:0t_p; output 9:0t_q; wire 7:0t_accumsuminout; wire 7:0t_sumout; wire 9:0t_q;accum u_accum(.k(t_k),.accumout(t_accumsuminout),.reset(t_reset),.clock(t_clock);sum u_sum(.clock(t_clock),.reset(t_reset),.p(t_p),

13、.sumin(t_accumsuminout),.sumout(t_sumout);sinrom u_sinrom(.address(t_sumout),.clock(t_clock),.q(t_q) ;endmodule2.5、ModelSim驗(yàn)證分模塊驗(yàn)證和截圖一:Accum模塊includeaccum.v;module test_accum; reg 7:0kt; wire 7:0accumoutt; reg clockt; reg resett; initial fork kt=0; #20 kt=1; #40 kt=0; #60 kt=1; clockt=0; resett=1; #

14、80 resett=0; #90 resett=1; join always #5 clockt=clockt; accum accum_1(.k(kt),.accumout(accumoutt),.reset(resett),.clock(clockt);endmodule二:Sum模塊includesum.v;module test_sum; reg 7:0sumint; reg 7:0pt; wire 7:0sumoutt; reg clockt; reg resett; initial fork pt=1; #40 pt=80; sumint=3; clockt=0; resett=1

15、; #70 resett=0; #70 sumint=16; #80 resett=1;Join always #5 clockt=clockt; sum sum_1(.clock(clockt),.reset(resett),.p(pt),.sumin(sumint),.sumout(sumoutt);endmodule三:頂層模塊module test_ddstop; reg 7:0t_kt; reg 7:0t_pt; wire 9:0t_qt; reg t_clockt; reg t_resett; initial fork t_kt=1;t_pt=0; t_clockt=0;t_res

16、ett=1;#70 t_kt=2; #70 t_pt=80; #70 t_clockt=0; #70 t_resett=0;#90 t_resett=1; Join always #5 t_clockt=t_clockt;ddstop ddstop_1(.t_clock(t_clockt),.t_reset(t_resett),.t_k(t_kt),.t_p(t_pt),.t_q(t_qt);endmodule;2.6、硬件調(diào)試在Quartus II中新建工程,導(dǎo)入頂層文件,并選擇與試驗(yàn)箱相同的芯片,添加.v文件,并進(jìn)行綜合。當(dāng)綜合成功后則分配管腳,在此選擇模式1。鍵7 為復(fù)位鍵,鍵1、鍵2為

17、頻率控制字K的輸入鍵,鍵3、鍵4為相位控制字P的輸入鍵,使用內(nèi)部時(shí)鐘信號(hào)。之后選定串口,添加文件,選定芯片開(kāi)始燒寫。 課程設(shè)計(jì)的心得 通過(guò)IC課程設(shè)計(jì)使我收獲良多,并且有幾點(diǎn)心得與教訓(xùn)。一、要有良好的編程習(xí)慣和邏輯思維。在課程設(shè)計(jì)良好的編程習(xí)慣和邏輯思維是很重要的,好的編程習(xí)慣可以是編程更容易學(xué)習(xí)和理解,同樣好的邏輯思維可以是編程簡(jiǎn)單,每個(gè)語(yǔ)句都要有一定的目的。特別是在測(cè)試文件中,好的編程不僅會(huì)使語(yǔ)句簡(jiǎn)單,還會(huì)使我們寫出更易懂、優(yōu)良的程序。二、注意編程中可能出現(xiàn)的問(wèn)題。Verilog語(yǔ)言不僅僅是一門編程語(yǔ)言,更是我們構(gòu)建硬件電路的工具,雖然與C語(yǔ)言有很多相似的方面,但在邏輯性與時(shí)序性上與C語(yǔ)言有本質(zhì)上的區(qū)別,硬件電路時(shí)完全并行執(zhí)行的,不僅要考慮邏輯上的正確,更要考慮是否能夠綜合產(chǎn)生我們所需要的電路。如不能在不同always塊中對(duì)同一變量進(jìn)行賦值,又如賦值符號(hào)“=”“=”是不同的。三、由于實(shí)驗(yàn)板我們平常接觸的不是很多,所以在做課程設(shè)計(jì)的過(guò)程中,遇到接引腳,確定開(kāi)發(fā)板芯片類型的過(guò)程中,有很多需要學(xué)習(xí)的地方,并向老師請(qǐng)教,使是我們對(duì)開(kāi)發(fā)板的使用更加熟悉。在以后的學(xué)習(xí)和工作中要多看程序,多理解,多體會(huì),并積極和老師和同學(xué)探討,不斷地提高自己的學(xué)習(xí)和編程水平。四、Modelsi

溫馨提示

  • 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)論