調(diào)幅信號發(fā)生器設(shè)計_第1頁
調(diào)幅信號發(fā)生器設(shè)計_第2頁
調(diào)幅信號發(fā)生器設(shè)計_第3頁
調(diào)幅信號發(fā)生器設(shè)計_第4頁
調(diào)幅信號發(fā)生器設(shè)計_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、湖南人文科技學(xué)院課程設(shè)計報告課程名稱:VHDL語言與EDA課程設(shè)計設(shè)計題目:調(diào)幅信號發(fā)生器設(shè)計系別:通信與控制工程系專業(yè):電子信息工程班 級: 2009 級1班學(xué)生姓名:顏銳 李昌華學(xué) 號:09409143 09409124起止日期:起12年06月11日 2012年06月22日指導(dǎo)教師:田漢平 岳舟教研室主任:侯海良指導(dǎo)教師評語:指導(dǎo)教師簽名:年 月 日項目成權(quán)重成績顏銳李昌華1、設(shè)計過程中出勤、學(xué)習(xí)態(tài)度等 方面0.22、課程設(shè)計質(zhì)量與答辯0.53、設(shè)計報告書寫及圖紙規(guī)范程度0.3總成績教研室審核意見:教研室主任簽字:年 月 日教學(xué)系審核意見:主任簽字:年 月日在通信系統(tǒng)中,調(diào)制解調(diào)方式常常決

2、定了一個通信系統(tǒng)的性能,而幅度調(diào)制是一種 應(yīng)用很廣的連續(xù)波調(diào)制方式。在實際電路的設(shè)計過程中,要設(shè)計一個幅度模擬調(diào)制電路 (am電路)是相當(dāng)復(fù)雜的,而且要修改其中的調(diào)幅指數(shù)也不方便。但隨著現(xiàn)代電子技術(shù)的日趨成熟,采用Matlab/Simulink下建立相應(yīng)的通信系統(tǒng)的數(shù)學(xué)模型,然后在FPGA中以全數(shù)字化方法實現(xiàn)系統(tǒng)中的關(guān)鍵模塊是一種切實有效的方法。Altera公司推出的DSP Builder工具將系統(tǒng)數(shù)學(xué)模型的建立和通信系統(tǒng)開發(fā)結(jié)合起來,大大提高了通信系 統(tǒng)的開發(fā)效率。文中首先分析了調(diào)幅信號發(fā)生器的數(shù)學(xué)表達(dá)式,然后根據(jù)其數(shù)學(xué)表達(dá)式,在matlab/simulink下建立相應(yīng)的數(shù)學(xué)模型,然后利用

3、DSP Builder模塊庫的 SignalCompiler工具將此模型轉(zhuǎn)換為VHDL語言,最后在QuartusII中對其進(jìn)行編譯直至 下載到FPGA中,實現(xiàn)相應(yīng)的電路。這種設(shè)計方法可以快速進(jìn)行數(shù)字信號處理器的設(shè)計, 而且又便于修改和擴(kuò)充其功能,整個設(shè)計思路靈活,圖形界面簡單直觀,開發(fā)周期短。關(guān)鍵詞:數(shù)學(xué)模型,調(diào)幅信號,調(diào)制度,現(xiàn)場可編程門電路11設(shè)計要求 12前言 13方案對比 13.1 方案一 13.2 方案二 23.3 方案選擇 44各功能模塊分析 44.1 調(diào)制信號 44.2 多路選擇器 44.3 載波信號 44.4 載波頻率算法 45調(diào)試過程 55.1 技術(shù)問題 55.2 現(xiàn)象記錄

4、56結(jié)論 57元器件及儀器設(shè)備明細(xì)表 68參考文獻(xiàn) 69致謝 710、 附錄 710.1 附錄 1 710.2 附錄 2 12調(diào)幅信號發(fā)生器設(shè)計1設(shè)計要求能將FPGA內(nèi)部產(chǎn)生的低頻信號進(jìn)行調(diào)制,也能選擇外部輸入的幅度小于4V的低頻信號進(jìn)行調(diào)制,輸出信號的載波頻率為100KHz。輸出波形峰峰值大于2V。2前言目前的FPGA技術(shù)得到了極大的擴(kuò)展,資源容量和工作頻率都有了很大的提高,市 場中XILINX 和ALTERA公司的FPGA芯片都是很好的選擇。而且其都支持主流的硬 件編程語言VHDL和VERILOG。在FPGA中,相位累加器和相位調(diào)制器都可通過加法 器來實現(xiàn)。如果要實現(xiàn)對幅度的調(diào)制則可在正弦

5、查找表后插入一個乘法器來實現(xiàn)。在用 FPGA設(shè)計的過程中,整個流程都采用系統(tǒng)時鐘產(chǎn)生和控制,所以其各個部分的時序和 同步性需要認(rèn)真對待,還有考慮到加法器以及乘法器等對資源的使用情況,進(jìn)位鏈或流 水線技術(shù)都可以考慮進(jìn)行利用。3方案對比3.1 方案一利用單片機(jī)將模擬電路實現(xiàn)部分?jǐn)?shù)字化,從而使硬件設(shè)計更為簡單,圖3-1為簡化結(jié) 構(gòu)框圖。由外部接口、單片機(jī)、D/ A轉(zhuǎn)換器、數(shù)碼顯示和示波器組成。軟件程序經(jīng)編 譯后寫到單片機(jī)CPU中,將軟件程序數(shù)據(jù)表中對應(yīng)調(diào)幅波數(shù)字量由 D/ A轉(zhuǎn)換器轉(zhuǎn)換為 模擬信號,頻率值通過數(shù)碼管來顯示,也可在示波器上觀察到實際的調(diào)幅波。1數(shù)碼顯示外 部接口圖3-1圖3-2為信號發(fā)

6、生器電路原理圖,主要有8051CPU、DAC0832、LM324、插座等外 圍電路組成,8051外接12MHz晶振和復(fù)位電路,以滿足電路正常工作。J1插座可接到面 板上,外接相應(yīng)的按鈕來改變信號的幅度和頻率,其中1、2用于改變信號的幅度,3、4、5、6用于改變信號的頻率。J2插座用來外界/U出數(shù)碼顯示,VCC是電源端,GND是地端,電壓范圍為3.65 V。s?sislZ卷 出 煙DAC0K32e U 215圖3-23.2 方案二(1.1)Fdr是載波信號,F(xiàn)am是調(diào)制信號,m是調(diào)制度調(diào)幅信號表達(dá)式為:F =Fdr*(1+Fam*m)式中:F是調(diào)制后的輸出信號(0m1)。Fdr和Fam都是有符號

7、函數(shù)。圖3-3為調(diào)幅信號發(fā)生器的總體框圖圖3-3根據(jù)幅度調(diào)制信號調(diào)幅原理,可以在 Matlab/Simulink下利用DSP Builder來建立 幅度調(diào)制信號模型??梢栽贛atlab/Simulink作出圖3-4所示的電路模型。其中ADDER、 Dly、Bus、BusConversion、LMT 構(gòu)成一個DDS模塊,產(chǎn)生調(diào)制信號。進(jìn)入乘法器 Product 的a端;進(jìn)入b端的是Mux的輸出,這是一個8選1的多路選擇器,對預(yù)設(shè)好的8 個調(diào)制度數(shù)據(jù)進(jìn)行選擇,這里設(shè)置的調(diào)制度分別從0.9到0.1共8個調(diào)制度值,選通信 號由SL輸入。ADDER2將乘積(乘積項取高8位整數(shù))與128相加。由于是8位乘

8、積,故128 類似于1.1式中的1。和進(jìn)入第2個乘法器Product1的a端。元件 ADDER1、Dly1、BusConversion1、Bus1、LUT1 構(gòu)成另一個 DDS 模塊,產(chǎn) 生載波信號。進(jìn)入乘法器 Product1的b端,即得到調(diào)幅模擬信號,然后將此調(diào)幅模擬 信號經(jīng)10位DAC轉(zhuǎn)換后輸出,即得到模擬調(diào)幅模擬信號。Cst1輸入的數(shù)據(jù)控制調(diào)制信 號頻率;Cst2輸入的數(shù)據(jù)控制載波信號頻率;SL1的數(shù)據(jù)控制調(diào)制度;SL2選擇內(nèi)外信 號調(diào)制。MlkC/njrijn整6nmrrH2CorrdjntZn*E*-1 Mulbp-li-ErAddr 5uMijie: 0);signal SL1s

9、td_logic_vector(2 downto 0):=(others=0);signal SL2 :std_logic:=0;signal AM_OUTsignal SIGNAL_OUTstd_logic_vector(9 downto 0);std_logic_vector(7 downto 0);component untitledport(clock:in std_logic ;sclrp:in std_logic ;Input1:in std_logic_vector(7downto 0);SL1:in std_logic_vector(2 downto 0);SL2:in std

10、_logic;AM_OUT : out std_logic_vector(9 downto 0);SIGNAL_OUT : out std_logic_vector(7 downto 0); end component ;Beginassert (10) report altversion severity Note;-Sampling clock process generationClkPr : processbeginwait for ClockPeriod/2;clock = not clock;end process ClkPr;-System Reset : Initializat

11、ion of Altera Registers sReadSimulinkStimuli =0 when (CountClock4) else 1;WriteStimuli = not SystemReset;ctime:process(clock)beginif clockevent and clock=0 thenCountClock = CountClock+1;SystemReset clock,sclrp= SystemReset,Input1= Input1,SL1=SL1,SL2=SL2,AM_OUT = AM_OUT,SIGNAL_OUT = SIGNAL_OUT);-Read

12、ing Simulink Input Stimuli Input1 from the file Input1.salt pInput1:process(clock)file InputIFile : text open read_mode is DSPBuilder_untitled/Input1.salt; variable Inputlint: integer ;variable InputILine: line ;beginif (not endfile(InputlFile) and (sReadSimulinkStimuli=1) thenif clockevent and cloc

13、k=0 thenreadline(Input1file,Input1Line);read(Input1Line,Input1int);Inputl = int2sstd( Input1Int,8);end if ;end if ; end process ;-Reading Simulink Input Stimuli SL1 from the file SL1.salt pSL1:process(clock)file SLIFile : text open read_mode is DSPBuilder_untitled/SL1.salt;variable SLIInt: integer ;

14、variable SLILine: line ;beginif (not endfile(SLIFile) and (sReadSimulinkStimuli=1) thenif clockevent and clock=0 thenreadline(SL1file,SL1Line);read(SL1Line,SL1int);SL1 = int2sstd( SL1Int,3);end if ;end if ;end process ;-Reading Simulink Input Stimuli SL2 from the file SL2.salt pSL2:process(clock)fil

15、e SL2File : text open read_mode is DSPBuilder_untitled/SL2.salt;variable SL2Int: integer ;variable SL2Line: line ;beginif (not endfile(SL2File) and (sReadSimulinkStimuli=1) thenif clockevent and clock=0 thenreadline(SL2file,SL2Line);read(SL2Line,SL2int);SL2 left, field=5);writeline(oFile,traceline);

16、end if ;end if ;end process ;-Writing Output Signal SIGNAL_OUT in the file SIGNAL_OUT”.txtpSIGNAL_OUT:process(clock)file oFile : text open write_mode is SIGNAL_OUT.txt;variable traceline : line ;beginif WriteStimuli=1 thenif clockevent and clock=1 thenwrite(traceline, conv_integer(0 & SIGNAL_OUT),ju

17、stified=left, field=5);writeline(oFile,traceline);end if ;end if ;end process ;end architecture tbDspBuilder;10.2附錄2timescale 1ns / 1psmodule tb_untitled;/ Input Signalsreg clock;integer fopenok_stimuli;reg SystemReset;reg 7:0 Inputl;integer Input1_stimuli, Input1_valinteger ;reg 2:0 SL1;integer SL1

18、_stimuli, SL1_valinteger ;reg SL2;integer SL2_stimuli, SL2_valinteger ;/ Output Signalswire 9:0 AM_OUT;integer AM_OUT_stimuli, AM_OUT_valinteger ;wire 7:0 SIGNAL_OUT;integer SIGNAL_OUT_stimuli, SIGNAL_OUT_valinteger ;initialbeginfopenok_stimuli =1;Input1_stimuli = $fopen (DSPBuilder_untitledInput1.s

19、alt,r);if (Input1_stimuli=0) fopenok_stimuli=0;if (Input1_stimuli=0) $display(DSP Builder Warning : unable to open input stimuli files DSPBuilder_untitledInput1.salt);SL1_stimuli = $fopen (DSPBuilder_untitledSL1.salt,r);if (SL1_stimuli=0) fopenok_stimuli=0;if (SL1_stimuli=0) $display(DSP Builder War

20、ning : unable to open input stimuli files DSPBuilder_untitledSL1.salt);SL2_stimuli = $fopen (DSPBuilder_untitledSL2.salt,r);if (SL2_stimuli=0) fopenok_stimuli=0;if (SL2_stimuli=0) $display(DSP Builder Warning : unable to open input stimuli files DSPBuilder_untitledSL2.salt);AM_OUT_stimuli = $fopen (

21、AM_OUT.txt);if (AM_OUT_stimuli=0) fopenok_stimuli=0;if (AM_OUT_stimuli=0) $display(DSP Builder Warning : unable to open input stimuli files AM_OUT.txt);SIGNAL_OUT_stimuli = $fopen (SIGNAL_OUT.txt);if (SIGNAL_OUT_stimuli=0) fopenok_stimuli=0;if (SIGNAL_OUT_stimuli=0) $display(DSP Builder Warning : un

22、able to open input stimuli files SIGNAL_OUT.txt);# 0 clock = 1b0;# 0 SystemReset = 1b1;# 80 SystemReset = 1b0;endalwaysbegin# 10.000 clock = 1;# 10.000 clock = 0;end/ Read input stimuli from Input1.salt filealways (negedge clock)beginif (SystemReset=0)&(fopenok_stimuli=1)begin$fscanf(Input1_stimuli,

23、%d,Input1_valinteger);Input1 = Input1_valinteger;endend/ Read input stimuli from SL1.salt file always (negedge clock)beginif (SystemReset=0)&(fopenok_stimuli=1) begin$fscanf(SL1_stimuli,%d,SL1_valinteger);SL1 = SL1_valinteger;end end/ Read input stimuli from SL2.salt filealways (negedge clock)beginif (SystemReset=0)&(fopenok_stimuli=1)begin$fscanf(SL2_stimuli,%d,SL2_valinteger);SL

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論