![基于FPGA的DDS信號發(fā)生器的設計_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/4/be629084-ca2f-4426-a7d0-23f024e2564c/be629084-ca2f-4426-a7d0-23f024e2564c1.gif)
![基于FPGA的DDS信號發(fā)生器的設計_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/4/be629084-ca2f-4426-a7d0-23f024e2564c/be629084-ca2f-4426-a7d0-23f024e2564c2.gif)
![基于FPGA的DDS信號發(fā)生器的設計_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/4/be629084-ca2f-4426-a7d0-23f024e2564c/be629084-ca2f-4426-a7d0-23f024e2564c3.gif)
![基于FPGA的DDS信號發(fā)生器的設計_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/4/be629084-ca2f-4426-a7d0-23f024e2564c/be629084-ca2f-4426-a7d0-23f024e2564c4.gif)
![基于FPGA的DDS信號發(fā)生器的設計_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/4/be629084-ca2f-4426-a7d0-23f024e2564c/be629084-ca2f-4426-a7d0-23f024e2564c5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、湖北師范學院電工電子實驗教學示范中心eda技術基礎實驗電工電子實驗報告課程名稱eda技術基礎實驗名稱綜合實驗總結選題性質基于fpga的dds信號發(fā)生器的設計第2頁,共3頁基于fpga的dds信號發(fā)生器的設計1 dds的基本原理dds技術是一種把一系列數(shù)字量形式的信號通過dac轉換成模擬量形式的信號的合成技術,它是將輸出波形的一個完整的周期、幅度值都順序地存放在波形存儲器中,通過控制相位增量產生頻率、相位可控制的波形。dds電路一般包括基準時鐘、相位增量寄存器、相位累加器、波形存儲器、d/a轉換器和低通濾波器(lpf)等模塊,如圖1.1所示。相位增量寄存器寄存頻率控制數(shù)據(jù),相位累加器完成相位累加
2、的功能,波形存儲器存儲波形數(shù)據(jù)的單周期幅值數(shù)據(jù),d/a轉換器將數(shù)字量形式的波形幅值數(shù)據(jù)轉化為所要求合成頻率的模擬量形式信號,低通濾波器濾除諧波分量。整個系統(tǒng)在統(tǒng)一的時鐘下工作,從而保證所合成信號的精確。每來一個時鐘脈沖,相位增量寄存器頻率控制數(shù)據(jù)與累加寄存器的累加相位數(shù)據(jù)相加,把相加后的結果送至累加寄存器的數(shù)據(jù)輸出端。這樣,相位累加器在參考時鐘的作用下,進行線性相位累加,當相位累加器累加滿量時就會產生一次溢出,完成一個周期性的動作,這個周期就是dds合成信號的一個頻率周期,累加器的溢出頻率就是dds輸出的信號頻率。相位累加器輸出的數(shù)據(jù)的高位地址作為波形存儲器的地址,從而進行相位到幅值的轉換,即
3、可在給定的時間上確定輸出的波形幅值。圖1-1:dds原理圖 波形存儲器產生的所需波形的幅值的數(shù)字數(shù)據(jù)通過d/a轉換器轉換成模擬信號,經(jīng)過低通濾波器濾除不需要的分量以便輸出頻譜純凈的所需信號。信號發(fā)生器的輸出頻率fo可表示為: ( 1.1) 式中為系統(tǒng)時鐘,為系統(tǒng)分辨率,n為相位累加器位數(shù),m為相位累加器的增量。參數(shù)確定及誤差分析.2 參數(shù)確定首先確定系統(tǒng)的分辨率,最高頻率,及最高頻率下的最少采樣點數(shù)根據(jù)需要產生的最高頻率以及該頻率下的最少采樣點數(shù),由公式 (1.2)確定系統(tǒng)時鐘的下限值。同時又要滿足分辨率計算公式 (1.3)綜合考慮決定的值。選定了的值后,則由公式(1.3)可得,據(jù)此可確定相位
4、累加器位數(shù)n。然后由最高輸出頻率 (1.4)推出m,得出相位增量寄存器為s位。確定波形存儲器的地址位數(shù)w,本系統(tǒng)中決定寄存?zhèn)€數(shù)據(jù)值,因此ram地址為z位。一般選用fpga/cpld器件作為dds的實現(xiàn)器件,對于d/a轉換器的選擇,首先要考慮到d/a轉換器的轉換速率。要實現(xiàn)所需的頻率,d/a的轉換速度要大于,然后根據(jù)d/a轉換器字長所帶來的誤差,決定d/a的位數(shù)。由此選擇d/a轉換器的型號。3 dds的fpga實現(xiàn)設計本設計要求dds實現(xiàn)的性能指標為:當系統(tǒng)時鐘頻率為24mhz時,分辨率為1.43hz,當相位增量寄存器為19位時,最高輸出頻率是749731hz。(理論上完全可以達到,甚至更高,但
5、是由于受到da器件及運算放大器的影響,實際中的頻率不可能達到)。根據(jù)上面所列公式可以得出:累加器位數(shù)n= 24;相位增量寄存器為19位。如圖3.1所示,dds系統(tǒng)包括相位增量寄存器、相位累加器、地址寄存器、波形存儲器、時鐘倍頻器及地址發(fā)生部分等幾個模塊。內部所有模塊均用verilog語言編寫或調用maxplus2中的已有的lpm庫文件,其頂層設計用原理圖的方式進行模塊間的連接。圖3.1 dds系統(tǒng)框圖下面就上面向個模塊的結構進行論述:3.1 相位累加器 相位累加器在參考時鐘的作用下,進行線性相位累加,當相位累加器累加滿量時就會產生一次溢出,完成一個周期性的動作,這個周期就是dds合成信號的一個
6、頻率周期,累加器的溢出頻率就是dds輸出的信號頻率。相位增量分段寄存器的端口如圖3.1.1所示。根據(jù)前面的計算可知,相位增量寄存器需要24位。圖3.1.1 相位增量寄存器圖3.1.2是相位增量分段寄存器仿真圖,從圖中可以看出,在時鐘的激勵下,累加器的仿真結果是正確的.圖 3.1.2累加器的仿真結果3.2 波形存儲器波形存儲器實際上就是一個rom,波形存儲器存儲的是所生成波形一周期采樣256點的數(shù)據(jù)值,通過地址的改變,所輸出的值就會變化,因為,地址不一定是連續(xù)變化的,所以所輸出的值也不是連續(xù)的,在同樣的時鐘周期下,地址間隔的變化也就造成了生成波形的頻率的變化。地址值每溢出一次,便完成了一個周期的
7、輸出。當改變波形存儲器中波形數(shù)據(jù)時,也就改變了輸出波形。圖3.2.1 rom模塊rom的設計直接調用lpm中的庫生成,端口分別為:時鐘輸入端clock,輸出數(shù)據(jù)總線daout(7:0),輸入數(shù)據(jù)總線result23:16.地址總線address(7:0)是相位累加器輸出高8位的數(shù)據(jù).輸出數(shù)據(jù)總線douta(7:0)連接輸出緩沖通過fpga的i/o口輸出,作為d/a轉換器的輸入。3.3相位增量寄存器及顯示模塊.這個模塊的功能是接收從單片中傳來的數(shù)據(jù).從單片機中傳遞過來的數(shù)據(jù)為分兩部分,第一是頻率控制字,即給相位增量寄存器的控制字.第二是將當前的輸出頻率顯示在數(shù)碼管上.這個模塊的底層文件是基于ve
8、rilog語言描述的,在頂層上生成相就的功能模塊.其生成的原理圖如圖3.3.1所示:圖3.3.1相位增量寄存器及顯示模塊上面的頂層模塊簡要描述如下:clock是系統(tǒng)輸入時鐘,led_seg7.0是8段數(shù)碼管的段選,led_wei2.0是8個數(shù)碼管的位選。(這里聯(lián)接是38譯碼器的輸入端)。其源程序如下:module led_print( clock, /輸入時鐘 led_seg, /數(shù)碼管段選 led_wei, /數(shù)碼管位選 code, data_clk, write_data, );input data_clk;input clock ; /時鐘輸入 input 7:0 code;output
9、 23:0 write_data;output 2:0 led_wei; /132,133,135output 7:0 led_seg; /131,130,128,122,121,120,119,118 /*/wire clock,rst;reg2:0 led_wei;reg7:0 led_seg;reg23:0 count; /計數(shù)器單元reg3:0 ledbuff; reg23:0 times; /時分秒要分配的單元 reg3:0 seg_count;reg3:0 seg_flag;reg write_flag;reg23:0 write_data;always ( posedge dat
10、a_clk )/送給fpga的數(shù)據(jù)改變時.begin seg_count = code 3:0; /數(shù)據(jù)位 seg_flag = code 7:4;/標志位 case(seg_flag)/在數(shù)碼管中顯示的數(shù)字 4b0000: times3:0 = seg_count; 4b0001: times7:4 = seg_count; 4b0010: times11:8 = seg_count; 4b0011: times15:12 = seg_count; 4b0100: times19:16 = seg_count; 4b0101: times23:20 = seg_count;/給控制寄存器中的
11、數(shù)據(jù) 4b0110: write_data3:0 = seg_count; 4b0111: write_data7:4 = seg_count; 4b1000: write_data11:8 = seg_count; 4b1001: write_data15:12 = seg_count; 4b1010: write_data19:16 = seg_count; 4b1011: write_data23:20 = seg_count; default: begin times = times; write_data = write_data; end endcase endalways(pos
12、edge clock ) begin if (count = 24d1200000)/ begin count = 0; end else begin count = count +1; / write_data = 24d699; end end/*數(shù)碼管掃描程序*/always (count12:10) begin case(count12:10) 3h0: led_wei = 3b000; 3h1: led_wei = 3b001; 3h2: led_wei = 3b010; 3h3: led_wei = 3b011; 3h4: led_wei = 3b100; 3h5: led_wei
13、 = 3b101; 3h6: led_wei = 3b110; 3h7: led_wei = 3b111; default :led_wei = 3bzzz; endcase case(count12:10) 3h0: ledbuff = 4ha; 3h1: ledbuff = 4hb; 3h2: ledbuff = times3:0; 3h3: ledbuff = times7:4; 3h4: ledbuff = times11:8; 3h5: ledbuff = times15:12; 3h6: ledbuff = times19:16; 3h7: ledbuff = times23:20
14、; default :ledbuff = 3bzzz; endcase end always ( ledbuff) begin case( ledbuff ) 4h0: led_seg = 8h3f;/0 4h1: led_seg = 8h06;/1 4h2: led_seg = 8h5b;/2 4h3: led_seg = 8h4f;/3 4h4: led_seg = 8h66;/4 4h5: led_seg = 8h6d;/5 4h6: led_seg = 8h7d;/6 4h7: led_seg = 8h07;/7 4h8: led_seg = 8h7f;/8 4h9: led_seg
15、= 8h6f;/9 4hb: led_seg = 8h76;/h 4ha: led_seg = 8h5b;/z 4hc: led_seg = 8b00; default :led_seg = 8hzz; endcase end endmodule 3.4 fpga與單片機通信接口設計單片機在讀得矩陣鍵盤的控制字后,必須把相應的數(shù)據(jù)傳遞給fpga。本實驗中單片機所傳遞的數(shù)據(jù)有兩大部分。第一是傳遞給相位增量寄存器的相位增量字。第二是數(shù)碼管要顯示當前在頻率控制字下面的頻率輸出值。因為fpga只負責掃描8個數(shù)碼管,故其顯示的頻率值必須是單片機計算好后再將其值傳遞給fpga顯示。如圖3.4.1所示:圖
16、3.4.1 fpga與單片機通信接口設計 單片機與fpga接口總共用了9根線,一根時鐘線外加8根數(shù)據(jù)線。如圖3.4.1所示。每一個時鐘下降沿時,單片機傳送一個8位的數(shù)據(jù)到fpga中。其中8位寬度的數(shù)據(jù)線中高四位的值表示的是fpga內各寄存器內約定好的地址,低四位表示的數(shù)要傳遞過來的數(shù)據(jù)。在fpga內部有下面一段代碼:always ( posedge data_clk )/送給fpga的數(shù)據(jù)改變時.begin seg_count = code 3:0; /數(shù)據(jù)位 seg_flag = code 7:4;/標志位 case(seg_flag)/在數(shù)碼管中顯示的數(shù)字 4b0000: times3:0
17、 = seg_count; 4b0001: times7:4 = seg_count; 4b0010: times11:8 = seg_count; 4b0011: times15:12 = seg_count; 4b0100: times19:16 = seg_count; 4b0101: times23:20 = seg_count;/給控制寄存器中的數(shù)據(jù) 4b0110: write_data3:0 = seg_count; 4b0111: write_data7:4 = seg_count; 4b1000: write_data11:8 = seg_count; 4b1001: writ
18、e_data15:12 = seg_count; 4b1010: write_data19:16 = seg_count; 4b1011: write_data23:20 = seg_count; default: begin times = times; write_data = write_data; end endcase end在單片機每產生一個有下降的時鐘信號時,會執(zhí)行上面一塊代碼程序。 每次傳送8位數(shù)據(jù)后,進行分離如下: seg_count = code 3:0; /數(shù)據(jù)位 seg_flag = code 7:4;/標志位再根據(jù)各個標志位的不同,傳遞給fpga各個寄存器中不同的數(shù)據(jù)。高四位作為標志位,最多可表示16種不同的情況,而本實驗最多只用到其中的12種,因此是滿足要求的。34 頂層框圖圖 3.4.1生成的頂層框圖4 實驗總結通過本次基于fpga的設計實驗,不僅使我
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度數(shù)據(jù)中心安全防護與應急響應合同模板
- 一米菜園認養(yǎng)合同范本
- 中標監(jiān)控合同范本
- 2025年度高效環(huán)保型聚合氯化鋁采購合同
- 2025年度盡職調查保密協(xié)議期限及保密期限延長規(guī)定
- 入團申請書入團的要求
- 2022-2027年中國鹽酸苯奎胺行業(yè)發(fā)展概況及行業(yè)投資潛力預測報告
- 農村低保申請書格式
- 中國冷庫工作服市場運行態(tài)勢及行業(yè)發(fā)展前景預測報告
- 特困生補助申請書
- 全名校北師大版數(shù)學五年級下冊第三單元達標測試卷(含答案)
- 新員工入職通識考試(中軟國際)
- 四星級酒店工程樣板房裝修施工匯報
- 圓翳內障病(老年性白內障)中醫(yī)診療方案
- 中考物理復習備考策略
- 博士后進站申請書博士后進站申請書八篇
- 小報:人工智能科技科學小報手抄報電子小報word小報
- GB/T 41509-2022綠色制造干式切削工藝性能評價規(guī)范
- 公安系防暴安全03安檢
- 孫權勸學教案全國一等獎教學設計
- 企業(yè)生產現(xiàn)場6S管理知識培訓課件
評論
0/150
提交評論