




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、一、 設(shè)計選題及技術(shù)要求設(shè)計選題 FM信號調(diào)制器的設(shè)計與實現(xiàn)基礎(chǔ)指標(biāo):實現(xiàn)FM信號產(chǎn)生,可配置載波和調(diào)制信號頻率、調(diào)頻頻偏。(1)載波頻率范圍:100kHz-20MHz,精度優(yōu)于5%。(2)音頻(調(diào)制信號)頻率范圍:10Hz-10kHz,精度優(yōu)于5%。(3) 調(diào)頻頻偏:10kHz-100kHz,步進(jìn)1kHz,精度優(yōu)于5%。(4) 將FM調(diào)制器封裝成IP核,測試其功能。增加指標(biāo):(1) 實現(xiàn)多種波形的調(diào)制信號(2) 可設(shè)置輸入外部載波信號二、 方案設(shè)計及原理分析(一)原理分析由題目要求可知,需要輸入的基本控制字有載波頻率控制字和調(diào)制信號頻率控制字、調(diào)頻頻偏控制字。時域表達(dá)式:SFM(t)=cos
2、ct+KFM0lxd =coscnTa+mTs+KFM0nTa+mTsxd =cos22NKnl+m+KFMp=0nl+m-1xpTsTs =cosp=0nl+m-122N(K+2N2KFMTsx(pTs) 則SFMt=cosp=0nl+m-122N(K+K0x(pTs),其中:K是頻率控制字,K0=2NKFMTs/2, KFM是調(diào)制指數(shù)。從波形產(chǎn)生的角度,可以把公式分成兩部分來設(shè)計,第一部分是調(diào)制信號產(chǎn)生部分,第二部分是FM信號產(chǎn)生部分。而信號的產(chǎn)生可以運(yùn)用DDS原理實現(xiàn),直接數(shù)字式頻率合成DDS技術(shù)的基本原理是將波形數(shù)據(jù)先存儲起來,然后在頻率控制字的作用下,通過相位累加器從存儲器中讀出波形
3、數(shù)據(jù),最后經(jīng)過數(shù)模轉(zhuǎn)換和低通濾波后輸出頻率合成。調(diào)制信號頻率控制字控制調(diào)制信號的頻率,由DDS產(chǎn)生的調(diào)制信號和調(diào)頻頻偏控制字相乘后再與載波頻率控制字相加,得到的就是FM頻率控制字,這個控制字通過DDS控制FM信號的產(chǎn)生。(二)總體方案設(shè)計硬件部分:圖1 硬件原理框圖1、外部控制部分:通過實驗硬件平臺具有的外部控制(按鍵、開關(guān)等)實現(xiàn)對FM模塊的控制字輸入2、基于FPGA的FM信號發(fā)生部分:通過FPGA實現(xiàn)FM信號輸出,同時輸出調(diào)制信號作為參考3、數(shù)模轉(zhuǎn)換器:將已經(jīng)合成的波形數(shù)字量轉(zhuǎn)化成模擬量。4、低通濾波器:濾除高頻成分,恢復(fù)所要合成的波形。由于實驗平臺缺少數(shù)模轉(zhuǎn)換器和低通濾波器,故本報告沒有
4、介紹這兩個部分。軟件部分:圖2 軟件原理框圖方案論證:系統(tǒng)設(shè)計方案:方案一:各模塊代碼自己編寫,優(yōu)點是代碼靈活,可根據(jù)需要增加功能。缺點是設(shè)計中無法充分考慮時序因素。方案二:各模塊通過調(diào)用IP核實現(xiàn),優(yōu)點是實現(xiàn)方便,IP核已通驗證,性能優(yōu)越。缺點是靈活性低,不能隨意修改內(nèi)部代碼。時鐘方案:方案一:所有模塊共用同一時鐘源,設(shè)計方便,不必考慮時鐘選擇問題。硬件調(diào)試時,時鐘域單一,可以減少時鐘域選擇造成的錯誤。但時鐘頻率低,可能導(dǎo)致DDS輸出波形失真。方案二:DDS高頻部分時鐘源為系統(tǒng)時鐘倍頻得到,其他部分共用系統(tǒng)時鐘。優(yōu)點是所有模塊理論上可達(dá)到題目指標(biāo)要求。缺點是倍頻過高可能導(dǎo)致系統(tǒng)最終不滿足時序
5、約束。方案分析:需要輸入的基本控制字有載波頻率控制字和調(diào)制信號頻率控制字、調(diào)頻頻偏控制字。在此基礎(chǔ)上,該設(shè)計又增加了調(diào)制信號波形控制部分,總體軟件原理框圖如圖2所示,模塊較多,但各部分功能較簡單,故不必考慮代碼靈活與否,而需要考慮整體性能,則系統(tǒng)設(shè)計選擇方案二,而部分無IP核可實現(xiàn)的模塊通過代碼編寫。調(diào)制信號頻率控制字控制DDS IP核,在100MHz時鐘源的條件下,DDS核通過查找余弦ROM表生成調(diào)制信號,由于增加了三角波、方波和外部信號等波形,故將DDS IP核產(chǎn)生的相位信號作為外部ROM表的輸入,ROM表的輸出則通過一個波形選擇器來控制,波形選擇器通過波形控制字決定哪種信號輸出,將輸出的
6、調(diào)制信號與調(diào)頻頻偏控制字相乘,得到的數(shù)據(jù)再與載波頻率控制字相加,結(jié)果可作為另一個DDS IP和的輸入,DDS IP核的輸出即為生成的FM信號。需要注意的是,系統(tǒng)時鐘100MHz,而載波最高為20MHz,則當(dāng)載波為最高時,DDS IP核輸出的波形有一定程度的失真,所以產(chǎn)生FM信號的DDS IP核所用的時鐘源應(yīng)該經(jīng)過系統(tǒng)時鐘倍頻,時鐘方案選擇方案二,考慮到系統(tǒng)稍復(fù)雜,如果倍頻太高,可能導(dǎo)致所設(shè)計硬件不能滿足時序約束,綜合以上情況考慮,將系統(tǒng)時鐘倍頻到200MHz,作為產(chǎn)生FM信號的DDS核的時鐘源。三、 程序分析及設(shè)計圖3 總體流程圖(一) 倍頻模塊圖4 Clocking Wizard配置結(jié)果將1
7、00MHz時鐘倍頻到200MHz,通過調(diào)用Clocking Wizard IP核實現(xiàn)(見圖4)。wire clk_200M;/定義輸出已倍頻時鐘信號 clk_wiz_0 instance_name(.clk_in1(clk), / 系統(tǒng)時鐘接入.clk_out1(clk_200M), / 輸出已倍頻時鐘.reset(cpu_resetn), / 復(fù)位信號取反后與其連接.locked() / locked輸出不接信號); (二) 內(nèi)部調(diào)制信號模塊通過DDS Compiler IP核實現(xiàn),設(shè)置相位可編程,Phase Width設(shè)置28位,100MHz228=0.3725Hz,滿足10Hz時5%的精
8、度,輸出數(shù)據(jù)設(shè)置16位(見圖5)。 圖5 DDS Compiler配置結(jié)果wire 31:0mod_data_reg;wire 31:0mod_ph_data;dds_mod dds_mod_inst ( .aclk(clk), / 接入時鐘信號 .s_axis_config_tvalid(1'b1), / 接高電平有效 .s_axis_config_tdata(4'b0,mod_wave), .m_axis_data_tvalid(), / 輸出數(shù)據(jù)有效信號不接 .m_axis_data_tdata(mod_data_reg), / 輸出32位數(shù)據(jù),為調(diào)制信號,取低16位為實
9、際數(shù)據(jù)位 .m_axis_phase_tvalid(), / 輸出相位有效信號不接 .m_axis_phase_tdata(mod_ph_data) / 輸出相位,用來后續(xù)連接其他ROM,控制波形);(三) 其他波形三角波部分:通過 Block Memory Generator IP核實現(xiàn),地址設(shè)置8位,輸出設(shè)置16位,與DDS IP核的輸出位數(shù)相對應(yīng)(見圖6)。圖6 三角波Block Memory Generator 配置界面wire 15:0dout_tri;/定義rom輸出信號blk_mem_gen_0 rom_tria ( .clka(clk), / 接時鐘信號 .addra(mod_
10、ph_data27:20), / 接8位地址信號 .douta(dout_tri) /ROM輸出三角波原碼);wire15:0dout_tri_result=dout_tri151'b1,dout_tri14:0;/進(jìn)行碼型變換,轉(zhuǎn)換為有符號型三角波方波部分:通過 Block Memory Generator IP核實現(xiàn),地址設(shè)置8位,輸出設(shè)置16位,與DDS IP核的輸出位數(shù)相對應(yīng)(見圖7)。圖7 方波Block Memory Generator 配置界面wire 15:0dout_squ;/定義rom輸出信號brom_squ rom_squa ( .clka(clk), / 接時鐘
11、信號 .addra(mod_ph_data27:20), / 接8位地址信號 .douta(dout_squ) /ROM輸出方波);(四) 波形選擇器組合邏輯實現(xiàn),通過波形選擇控制字控制調(diào)制信號波形。reg 15:0mod_data1;/定義寄存器型調(diào)制信號always(*)case(mod_wave_con)/當(dāng)波形控制字為正弦波時輸出正弦波sin_wave:mod_data1=mod_data_reg15:0; /當(dāng)波形控制字為三角波時輸出三角波tri_wave:mod_data1=dout_tri_result; /當(dāng)波形控制字為方波時輸出方波square_wave:mod_data1=
12、dout_squ_result; /當(dāng)波形控制字為外部信號時輸出外部信號external_wave:mod_data1=external_mod; /波形控制字不為以上情況時輸出正弦信號default:mod_data1=mod_data_reg15:0; endcasewire 15:0mod_data= mod_data1;/定義最終調(diào)制信號assign modwave_out=mod_data;/作為輸出端將調(diào)制信號輸出(五) 乘法器通過Multiplier IP核實現(xiàn),A端輸入16位無符號頻偏控制字,B端輸入16位有符號調(diào)制信號,輸出設(shè)置32位輸出(見圖8,圖9)。圖8 乘法器輸入配置
13、 圖9 乘法器輸出配置wire 31:0f_offset_data;/定義乘法器輸出信號mult_gen_0 mult_a ( .CLK(clk), / 接入時鐘信號 .A(f_offset), / 輸入16位無符號頻偏控制字 .B(mod_data), /輸入16位有符號調(diào)制信號 .P(f_offset_data) /輸出32位有符號頻偏結(jié)果);(六) 加法器通過 Adder/Subtracter IP 核實現(xiàn),將24位的無符號載波信號控制字與乘法器輸出的32位信號的前16位相加,輸出為輸出24位FM信號控制字(見圖10)。圖10 Adder/Subtracter配置界面c_addsub_0
14、 add_a ( .A(car_wave), /輸如24位無符號載波頻率控制字 .B(f_offset_data31:17), / 輸入15位有符號頻偏結(jié)果 .CLK(clk), / 接入時鐘信號 .CE(1'b1), /使能信號始終接高電平 .S(FM_w_result) / 輸出24位FM信號控制字);(七) DDS的FM信號生成模塊通過DDS Compiler IP核實現(xiàn),設(shè)置相位可編程,Phase Width設(shè)置24位,200MHz224=11.92Hz,滿足100kHz時5%的精度,輸出數(shù)據(jù)設(shè)置16位,輸出信號為FM信號(見圖11)。圖11 DDS Compiler配置結(jié)果
15、dds_car dds_car_inst ( .aclk(clk_200M), / 接入200M時鐘 .s_axis_config_tvalid(1'b1), / 輸入有效信號接高電平 .s_axis_config_tdata(FM_w_result), /接入24位FM信號控制字 .m_axis_data_tvalid(), / 輸出數(shù)據(jù)有效信號不接 .m_axis_data_tdata(FM_wave_reg), / 輸出32位有符號FM信號 .m_axis_phase_tvalid(), / 輸出相位有效信號不接 .m_axis_phase_tdata() /輸出相位信號不接);
16、(八) 頂層模塊程序設(shè)計由于本實驗設(shè)計是通過調(diào)用若干IP核來實現(xiàn),所以以上子模塊順序連接生成FM_0 IP核(見圖12)。圖12 IP核打包管腳界面(九) 測試程序設(shè)計module FM_tb();parameter car_width = 5'd23,/載波控制字位寬mod_width = 5'd27,/調(diào)制信號控制字位寬f_offset_width =5'd15,/2頻偏控制字位寬FM_width = 5'd15;/FM輸出信號位寬/-reg clk;/時鐘信號reg cpu_resetn;/復(fù)位信號reg car_width:0car_wave;/載波控制
17、字reg mod_width:0mod_wave;/調(diào)制信號控制字reg f_offset_width:0f_offset; /頻偏控制字reg 2:0mod_wave_con;/調(diào)制信號波形控制字reg 15:0external_mod;/外部信號wire 15:0modwave_out;/調(diào)制信號輸出wire FM_width:0FM_wave;/FM信號輸出/實例化FM模塊FM FM_tb(clk,cpu_resetn,car_wave,mod_wave,f_offset,mod_wave_con,external_mod,modwave_out,FM_wave );initial be
18、gin#0 clk=0;#0 cpu_resetn=0;#0 car_wave=83886;/公式fo=fc*M/2N,fo=200MHz*car_wave/224, 83886*200MHz/224=1MHz#0 mod_wave=2684;/公式fo=fc*M/2N,得fo=100MHz*mod_wave/228,2684*100MHz/228=1kHz#0 f_offset=100000/3;/50000/3;/12Hz-16'h0004;設(shè)計頻偏分辨率/為200MHz/224=12Hz,當(dāng)控制字為16h0004時最小,所以當(dāng)頻偏100kHz 時,對應(yīng)f_offset=10000
19、0/3#0 external_mod=16'h0000;/外部信號起始為0#0 mod_wave_con=3'b000;/調(diào)制信號波形控制起始為正弦#100 cpu_resetn=1'b1;/復(fù)位信號拉高#1100000 mod_wave_con=3'b100;/調(diào)制信號波形控制變?yōu)闉橥獠啃盘?1100000 mod_wave_con=3'b001;/end /波形存儲寄存器reg 15:0mem_tri0:255;reg 15:0mem_sin0:255;reg 15:0mem_squ0:255;reg 15:0external_mod_reg;reg
20、 8:0i;initialbegin $readmemh("F:/workplace/FPGA/Vivado/FM/FM/project_1/project_1.srcs/sim_1/new/tri_test.dat",mem_tri);/調(diào)用系統(tǒng)函數(shù)產(chǎn)生外部三角波信號$readmemh("F:/workplace/FPGA/Vivado/FM/FM/project_1/project_1.srcs/sim_1/new/sin_test.dat",mem_sin); /調(diào)用系統(tǒng)函數(shù)產(chǎn)生外部正弦波信號$readmemh("F:/workplace
21、/FPGA/Vivado/FM/FM/project_1/project_1.srcs/sim_1/new/squ_test.dat",mem_squ); /調(diào)用系統(tǒng)函數(shù)產(chǎn)生外部方波信號endinitialbegin#4000000mod_wave_con=3'b100;/波形控制字為外部信號/-將外部信號文件的數(shù)據(jù)導(dǎo)入for(i=1'b0;i<=8'd255;i=i+1'b1)begin#(1000000000/10000/255) external_mod_reg=mem_trii;/三角波數(shù)據(jù)external_mod=external_mo
22、d_reg151'b1,external_mod_reg14:0;endfor(i=1'b0;i<=8'd255;i=i+1'b1)begin#(1000000000/10000/255) external_mod_reg=mem_sini;/正弦波數(shù)據(jù)external_mod=external_mod_reg151'b1,external_mod_reg14:0;endfor(i=1'b0;i<=8'd255;i=i+1'b1)begin#(1000000000/10000/255) external_mod_reg
23、=mem_squi;/方波數(shù)據(jù)external_mod=external_mod_reg;endend/-always #5 clk=clk;/仿真每5ns翻轉(zhuǎn)一次時鐘,相當(dāng)于100MHzendmodule(十) RTL級:圖 13 生成RTL級視圖四、系統(tǒng)測試及分析(一) 測試方案及數(shù)據(jù)測試方案:為方便測試,選取載波為1MHz,頻偏為100KHz,調(diào)制信號為1kHz作為測試點,首先通過行為級仿真測試,觀察設(shè)計的邏輯是否滿足要求,測試文件為上面編寫的testbench。行為級仿真正確后,再進(jìn)行硬件測試,外部控制輸入為三個撥碼開關(guān),可以控制調(diào)制信號的波形,還可以選擇外部調(diào)制信號輸入,為了方便測試,程序中直接將外部信號接地,所以當(dāng)撥碼開關(guān)撥到外部模式時,輸出的信號為載波信號,可以通過測量該信號的頻率來確定載波是否滿足要求。然后通過撥碼開關(guān)設(shè)置調(diào)制信號為內(nèi)部正弦信號,先測量調(diào)制信號是否為1kHz,調(diào)制信號測試正確后,繼續(xù)測量FM信號的最高頻率和最低頻率,最高頻率對應(yīng)位置為正弦調(diào)制信號的波峰,最低頻率對應(yīng)位置為正弦調(diào)制信號的
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人融資融券合同標(biāo)準(zhǔn)文本
- 《鐘》音樂教案(6篇)
- 介紹浙江烏鎮(zhèn)導(dǎo)游詞(4篇)
- 家園共育攜手同行計劃
- 五月再見六月你好優(yōu)美說說句子3篇
- 個人承兌貼息合同標(biāo)準(zhǔn)文本
- 健康資訊服務(wù)合同標(biāo)準(zhǔn)文本
- 2025金融投資信托合同范本
- 2025村委會農(nóng)業(yè)合作合同
- 學(xué)校社區(qū)合作發(fā)展方案計劃
- 舞蹈素質(zhì)測試表
- DB15T 1417-2018 膠粉改性瀝青及混合料設(shè)計與施工規(guī)范
- 基于核心素養(yǎng)導(dǎo)向的初中數(shù)學(xué)試題命制策略與實例課件
- 城市環(huán)境衛(wèi)生工作物資消耗定額
- 學(xué)校衛(wèi)生監(jiān)督課件
- 物理人教版(2019)必修第二冊5.2運(yùn)動的合成與分解(共19張ppt)
- 中國航信離港系統(tǒng)講義
- 6000m3內(nèi)浮頂油罐設(shè)計
- 食堂管理考核評分表
- (精心整理)朱德熙_說 “的”
- 《雷鋒叔叔,你在哪里》說課稿(附優(yōu)質(zhì)教案)
評論
0/150
提交評論