版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 移相信號(hào)發(fā)生器</b></p><p><b> 摘要</b></p><p> 信號(hào)發(fā)生器又稱信號(hào)源,在生產(chǎn)生活實(shí)踐中應(yīng)用廣泛。在我們各電子實(shí)驗(yàn)室是不可少的實(shí)驗(yàn)儀器。他能夠產(chǎn)生多種波形,如正弦波、三角波、方波、鋸齒波等。并且可以選擇輸出任意頻率、幅度、相位的波形。</p><p> 本
2、設(shè)計(jì)是采用DDS直接數(shù)字頻率合成技術(shù)來產(chǎn)生各種波形信號(hào),它具有相對(duì)帶寬很寬,頻率轉(zhuǎn)換時(shí)間極短,頻率分辨率很高,輸出相位連續(xù),并且很容易實(shí)現(xiàn)頻率、相位、幅度的調(diào)制。本設(shè)計(jì)是移相信號(hào)發(fā)生器具有波形選擇,調(diào)頻、調(diào)相、調(diào)幅的功能。</p><p> 關(guān)鍵字 DDS 調(diào)頻 調(diào)相 調(diào)幅 正弦波 三角波 方波 鋸齒波</p><p><b> 目錄</b></p>
3、;<p><b> 摘要1</b></p><p><b> 目錄2</b></p><p> 第一章 整體設(shè)計(jì)論述3</p><p> 第二章 直接數(shù)字頻率合成技術(shù)(DDS)基本原理5</p><p><b> 2.1基本原理5</b><
4、;/p><p> 2.2 DDS的參數(shù)確定6</p><p> 第三章 單元模塊設(shè)計(jì)及仿真波形7</p><p> 3.1正弦波設(shè)計(jì)模塊7</p><p> 3.2 三角波設(shè)計(jì)模塊8</p><p> 3.3 方波產(chǎn)生模塊10</p><p> 3.4 鋸齒波設(shè)計(jì)模塊11&l
5、t;/p><p> 3.5 整體電路仿真波形13</p><p> 第四章 硬件實(shí)驗(yàn)結(jié)果14</p><p> 4.1引腳鎖定14</p><p> 4.2 硬件測試結(jié)果15</p><p> 第五章 心得與體會(huì)21</p><p> 第六章 附錄23</p>
6、<p> 第一章 整體設(shè)計(jì)論述</p><p> 本設(shè)計(jì)是基于DDS技術(shù)(直接數(shù)字頻率合成技術(shù))設(shè)計(jì)的一個(gè)移相信號(hào)發(fā)生器。能夠產(chǎn)生正弦波、三角波、方波、鋸齒波四種周期性波形。具有選擇波形類別、調(diào)頻、調(diào)相、調(diào)幅的功能。設(shè)計(jì)利用EDA硬件在嵌入式邏輯分析儀(SingnalTap II)進(jìn)行采樣分析。</p><p> 本設(shè)計(jì)輸出有兩路信號(hào)標(biāo)準(zhǔn)信號(hào)pout_h(13位)及移相信
7、號(hào)fout_h(13位)。</p><p> 頻率由8位的頻率控制字fword_h控制,控制其取點(diǎn)的步距,最大范圍0~255倍,頻率控制字越大頻率越大。相位由8位的相位控制字pword_h控制,最大范圍0~255,控制他的起始值,相位控制字越大初相越大。幅度由十位乘法器一4位乘數(shù)ss所以可以最大增大16倍,ss值越大幅度越大。波形類型的選擇采用2位的位選sel來確定當(dāng)sel=00時(shí)輸出正弦波這時(shí)可以對(duì)正弦波進(jìn)行
8、調(diào)頻,調(diào)相,調(diào)幅,當(dāng)sel=01時(shí)輸出三角波,當(dāng)sel=10時(shí)輸出方波,當(dāng)sel=11時(shí)輸出鋸齒波。這里利用按鍵Q2、Q4來控制波形選擇。Q4接高位。同時(shí)電路還設(shè)計(jì)了復(fù)位功能低電平復(fù)位,將鍵Q1按下就復(fù)位輸出為0。</p><p><b> 設(shè)計(jì)框圖如下:</b></p><p> 波形產(chǎn)生原理:1、正弦波原理 采用dds技術(shù),包括基準(zhǔn)時(shí)鐘、相位增量寄存器、相
9、位累加器、波形存儲(chǔ)器,乘法器等模塊。正弦波將采集的1024點(diǎn)波形數(shù)據(jù)預(yù)先存在ROM單元中,然后在系統(tǒng)標(biāo)準(zhǔn)時(shí)鐘clk下,按照一定的順序從定制的ROM單元中讀取數(shù)據(jù)。用頻率控制字來控制地址間隔,從而改變頻率。用相位控制字來控制初始地址從而控制相位。通過在波形存儲(chǔ)器后接乘法器來控制幅度。</p><p> 2、三角波原理 連續(xù)加運(yùn)算到一定值,然后連續(xù)進(jìn)行減運(yùn)算回到原值,這樣反復(fù)就是三角波。他通過改變加的數(shù)fword
10、的值來改變頻率。通過對(duì)初值置一個(gè)數(shù)pword來改變相位。進(jìn)行相位累加來產(chǎn)生波形。通過對(duì)輸出的數(shù)做乘法來改變幅度。</p><p> 3、方波原理 輸出高電平一段時(shí)間在讓其輸出低電平一段時(shí)間就可以產(chǎn)生方波了。改變計(jì)數(shù)間隔可以改變頻率。與三角波一樣通過置數(shù)在進(jìn)行加法來調(diào)相。調(diào)幅與三角波一樣。</p><p> 4、鋸齒波原理 連續(xù)加一個(gè)數(shù)到一定值,然后置0,可以得到一鋸齒波。調(diào)頻,調(diào)
11、相,調(diào)幅的方法與三角波一樣。</p><p><b> 程序見附錄</b></p><p> 第二章 直接數(shù)字頻率合成技術(shù)(DDS)基本原理</p><p> DDS技術(shù),是一種新型的頻率合成技術(shù)和信號(hào)產(chǎn)生方法。其電路系統(tǒng)具有較高的頻率分辨率,可以實(shí)現(xiàn)快速的頻率切換,并且在改變時(shí)能夠保持相位的連續(xù),很容易實(shí)現(xiàn)頻率、相位、幅度的調(diào)制。它是將
12、輸出波形的一個(gè)完整的周期、幅度值都順序地存放在波形存儲(chǔ)器中,通過控制相位增量產(chǎn)生頻率、相位可控制的波形。</p><p><b> 2.1基本原理</b></p><p> DDS電路一般包括基準(zhǔn)時(shí)鐘、相位增量寄存器、相位累加器、波形存儲(chǔ)器、D/A轉(zhuǎn)換器和低通濾波器(LPF)等模塊。</p><p><b> 原理框圖如下:&l
13、t;/b></p><p> 相位增量寄存器寄存頻率控制數(shù)據(jù),相位累加器完成相位累加的功能,波形存儲(chǔ)器存儲(chǔ)波形數(shù)據(jù)的單周期幅值數(shù)據(jù),D/A轉(zhuǎn)換器將數(shù)字量形式的波形幅值數(shù)據(jù)轉(zhuǎn)化為所要求合成頻率的模擬量形式信號(hào),低通濾波器濾除諧波分量。</p><p> 整個(gè)系統(tǒng)在統(tǒng)一的時(shí)鐘下工作,從而保證所合成信號(hào)的精確。每來一個(gè)時(shí)鐘脈沖,相位增量寄存器頻率控制數(shù)據(jù)與累加寄存器的累加相位數(shù)據(jù)相加,
14、把相加后的結(jié)果送至累加寄存器的數(shù)據(jù)輸出端。這樣,相位累加器在參考時(shí)鐘的作用下,進(jìn)行線性相位累加,當(dāng)相位累加器累加滿量時(shí)就會(huì)產(chǎn)生一次溢出,完成一個(gè)周期性的動(dòng)作,這個(gè)周期就是DDS合成信號(hào)的一個(gè)頻率周期,累加器的溢出頻率就是DDS輸出的信號(hào)頻率。</p><p> 相位累加器輸出的數(shù)據(jù)的高位地址作為波形存儲(chǔ)器的地址,從而進(jìn)行相位到幅值的轉(zhuǎn)換,即可在給定的時(shí)間上確定輸出的波形幅值。</p><p&
15、gt; 波形存儲(chǔ)器產(chǎn)生的所需波形的幅值的數(shù)字?jǐn)?shù)據(jù)通過D/A轉(zhuǎn)換器轉(zhuǎn)換成模擬信號(hào),經(jīng)過低通濾波器濾除不需要的分量以便輸出頻譜純凈的所需信號(hào)。信號(hào)發(fā)生器的輸出頻率f0可表示為:</p><p> 上式中為系統(tǒng)時(shí)鐘,為系統(tǒng)分辨率,N為相位累加器位數(shù)即相位控制,M為相位累加器的增量即頻率控制字。</p><p> 2.2 DDS的參數(shù)確定</p><p> 首先確定
16、系統(tǒng)的分辨率,最高頻率,及最高頻率下的最少采樣點(diǎn)數(shù)根據(jù)需要產(chǎn)生的最高頻率以及該頻率下的最少采樣點(diǎn)數(shù),由公式</p><p><b> (1.2)</b></p><p> 確定系統(tǒng)時(shí)鐘的下限值。同時(shí)又要滿足分辨率計(jì)算公式</p><p><b> (1.3)</b></p><p><
17、b> 綜合考慮決定的值。</b></p><p> 選定了的值后,則由公式(1.3)可得=,據(jù)此可確定相位累加器位數(shù)N。</p><p><b> 然后由最高輸出頻率</b></p><p> 推出M=,得出相位增量寄存器為S位。</p><p> 第三章 單元模塊設(shè)計(jì)及仿真波形</
18、p><p> 3.1正弦波設(shè)計(jì)模塊</p><p><b> 正弦波產(chǎn)生原理</b></p><p><b> 電路圖如下</b></p><p> Fword是8位頻率控制字,控制輸出信號(hào)的頻率;pword是8位相移控制字,控制輸出信號(hào)的相移量;adder32b和adder10b分別是32位和
19、10位加法器;sin_rom是存放正弦波數(shù)據(jù)的rom,10跟數(shù)據(jù)線,10根地址線,其中的數(shù)據(jù)文件是LUT10X10.mif。reg32b和reg10b分別是32位和10 位寄存器;mux10 b是10位乘法器;pout1和fout1是13位輸出,可以分別與兩位高速d/a相接,他們分別輸出參考信號(hào)和可移相正弦信號(hào)。Fout1經(jīng)過了一個(gè)移相的10位加法器adder10b。</p><p> 本電路是在每個(gè)時(shí)鐘周期內(nèi)
20、,將加法器的值與頻率控制字相加,得到當(dāng)前相位的值,將當(dāng)前相位的值作為rom的地址,讀出rom的正弦波數(shù)據(jù)。ROM是所生成正弦波形一周期采樣1024點(diǎn)的數(shù)據(jù)值,只需改變FWORD的值而改變地址間隔從而改變頻率。頻率控制字越大,ROM的地址變化越快,輸出頻率越大。為了頻率變化明顯將fword向左移20位在與adder32b相加。對(duì)于移相是通過PWORD相位控制字與10位加法器ADDER10B在送入10位寄存器得到當(dāng)前相位的地址值,從而得到當(dāng)
21、前相位值。只需改變PWORD的值就可以改變相位。在將從ROM讀出的數(shù)據(jù)通過與一4位數(shù)SS相乘控制輸出幅度。</p><p><b> 主要參數(shù)</b></p><p> 頻率控制范圍:0~255。相位控制范圍:0~255。輸出分辨率:與加法器的位數(shù)有關(guān)。位數(shù)大分辨率高。</p><p> 3.1.2 mif文件的生成</p>
22、<p> 本設(shè)計(jì)定制的正弦波形數(shù)據(jù)存儲(chǔ)器ROM所需的正弦波形數(shù)據(jù)MIF文件,數(shù)據(jù)深度是1024、數(shù)據(jù)類型是十進(jìn)制數(shù),數(shù)據(jù)位寬為10位。</p><p> 可以通過MATLABLE來采樣取點(diǎn)。這里是通過C語言程序生成的程序。</p><p><b> MIF文件見附錄2</b></p><p><b> 正弦波產(chǎn)生
23、程序</b></p><p><b> 見附錄</b></p><p><b> 正弦波仿真波形</b></p><p><b> 具體說明如下:</b></p><p> CLK是系統(tǒng)時(shí)鐘信號(hào),設(shè)為100納秒。FWORD為8位的頻率控制字;</p&g
24、t;<p> PWORD為8位的頻率控制字;SS為4位控制幅度。FOUT1為移相輸出信號(hào);POUT1為標(biāo)準(zhǔn)輸出信號(hào)。</p><p> 從上圖可以看出當(dāng)FWORD的值為200時(shí),POUT1輸出的數(shù)的間隔大于當(dāng)FWORD=1時(shí)的值。如666與806之間差140,5490與5460差30。即FWORD越大間隔越大頻率也就越大。當(dāng)PWORD=1時(shí)與PWORD=0時(shí)比較。FOUT1對(duì)POUT1明顯相移了
25、。PWORD=1時(shí)FOUT1不等于POUT1。PWORD=0時(shí)FOUT1=POUT1。改變PWORD的值可以改變相位。由圖可知當(dāng)改變SS的值輸出的幅值也不一樣。所以改變ss可以實(shí)現(xiàn)調(diào)幅。</p><p> 3.2 三角波設(shè)計(jì)模塊</p><p> 3.2.1 基本原理</p><p> 該設(shè)計(jì)是通過連續(xù)加運(yùn)算到a,然后連續(xù)進(jìn)行減運(yùn)算回到b,這樣反復(fù)就是三角波。
26、A=“1100000000”, 只要加到大于a這個(gè)數(shù)就可以做減運(yùn)算;b=“0000000111”,當(dāng)小于b再進(jìn)行加運(yùn)算。他通過改變加的數(shù)fword的值來改變?cè)隽繌亩淖冾l率。通過對(duì)初值置一個(gè)數(shù)pword來改變相位。這個(gè)數(shù)是在復(fù)位是設(shè)置的,而且在每次改變pword是必須復(fù)位。最后將得到的10位數(shù)乘以四位的ss得到14位的數(shù)從而實(shí)現(xiàn)調(diào)幅。</p><p> 補(bǔ)充:fword、pword為8位 最終的結(jié)果為14位。&
27、lt;/p><p> 設(shè)計(jì)框圖如下:程序見附錄</p><p> 3.2.2 三角波仿真波形</p><p><b> 具體說明如下:</b></p><p> CLK是系統(tǒng)時(shí)鐘信號(hào),設(shè)為100納秒。FWORD為8位的頻率控制字;</p><p> PWORD為8位的頻率控制字;SS為4位控
28、制幅度。Clrn為復(fù)位低電平復(fù)位。FOUT2為13位移相輸出信號(hào);POUT2為13位標(biāo)準(zhǔn)輸出信號(hào)。</p><p> 從上圖可以看出當(dāng)FWORD的值為130時(shí),POUT2輸出的數(shù)的相對(duì)間隔大于當(dāng)FWORD=1時(shí)的值。如0與10之間差10,17與34差17。即FWORD越大間隔越大頻率也就越大。當(dāng)PWORD=100時(shí)與PWORD=0時(shí)比較。FOUT2對(duì)POUT2明顯相移了。PWORD=100時(shí)FOUT2不等于PO
29、UT2(fout2=3840,pout2=0)。PWORD=0時(shí)FOUT2=POUT2。改變PWORD的值可以改變相位。由圖可知(當(dāng)ss=10時(shí)fout2=3840,當(dāng)ss=1時(shí)fout2=17)當(dāng)改變SS的值輸出的幅值也不一樣。所以改變ss可以實(shí)現(xiàn)調(diào)幅。且具有復(fù)位功能,低電平復(fù)位。每次改變pword的值時(shí)需先復(fù)位。</p><p> 3.3 方波產(chǎn)生模塊</p><p> 3.3.1
30、 基本工作原理</p><p> 輸出高電平一段時(shí)間在讓其輸出低電平一段時(shí)間就可以產(chǎn)生方波了。具體如下:通過計(jì)數(shù)來控制是否為高電平還是低電平。設(shè)f,若小于512則置1,否則置0.同三角波原理,他也是通過改變加的數(shù)fword的值來改變?cè)隽繌亩淖冾l率。通過對(duì)初值置一個(gè)數(shù)pword來改變相位。這個(gè)數(shù)是在復(fù)位是設(shè)置的,而且在每次改變pword是必須復(fù)位。最后將得到的10位數(shù)乘以四位的ss得到14位的數(shù)從而實(shí)現(xiàn)調(diào)幅。&
31、lt;/p><p> 程序設(shè)計(jì)框圖如下:程序見附錄</p><p><b> 方波仿真波形</b></p><p><b> 具體說明如下:</b></p><p> CLK是系統(tǒng)時(shí)鐘信號(hào),設(shè)為100納秒。FWORD為8位的頻率控制字;</p><p> PWORD為8
32、位的頻率控制字;SS為4位控制幅度。Clrn為復(fù)位低電平復(fù)位。FOUT3為13位移相輸出信號(hào);POUT3為13位標(biāo)準(zhǔn)輸出信號(hào)。</p><p> 從上圖可以看出當(dāng)FWORD的值為200時(shí),POUT3輸出的數(shù)的疏密程度大于當(dāng)FWORD=50時(shí)。即FWORD越大越密頻率也就越大。當(dāng)PWORD=110時(shí)與PWORD=0時(shí)比較。FOUT3對(duì)POUT3明顯相移了。PWORD=100時(shí)FOUT3不等于POUT3(fout2
33、=1023,pout2=0),它們上下不同步。PWORD=0時(shí)FOUT3=POUT3??梢钥闯龈淖働WORD的值可以改變相位。由圖可知(當(dāng)ss=10時(shí)fout3=3840,當(dāng)ss=1時(shí)fout3=17)當(dāng)改變SS的值輸出的幅值也不一樣。所以改變ss可以實(shí)現(xiàn)調(diào)幅。且具有復(fù)位功能,低電平復(fù)位。每次改變pword的值時(shí)需先復(fù)位。</p><p> 3.4 鋸齒波設(shè)計(jì)模塊</p><p><
34、;b> 3.4.1基本原理</b></p><p> 這里是遞增鋸齒波,它是通過連續(xù)加法運(yùn)算到某個(gè)值時(shí)再置0.他是通過頻率控制字fword控制加的間隔,來控制頻率,fword越大頻率也越大。相位是通過給被加數(shù)置一個(gè)數(shù)pword來改變。調(diào)相波與標(biāo)準(zhǔn)波不同在于初值不同。標(biāo)準(zhǔn)波是從0開始加。調(diào)幅是通過乘法來實(shí)現(xiàn)。且具有復(fù)位功能,低電平復(fù)位。每次改變pword的值時(shí)需先復(fù)位。</p>
35、<p> 設(shè)計(jì)框圖如下 :(程序見附錄4)</p><p> 3.4.2鋸齒波仿真波形</p><p> CLK是系統(tǒng)時(shí)鐘信號(hào),設(shè)為100納秒。FWORD為8位的頻率控制字;</p><p> PWORD為8位的頻率控制字;SS為4位控制幅度。Clrn為復(fù)位低電平復(fù)位。FOUT4為13位移相輸出信號(hào);POUT4為13位標(biāo)準(zhǔn)輸出信號(hào)。</p&g
36、t;<p> 從上圖可以看出當(dāng)FWORD的值為200時(shí),POUT4輸出的數(shù)的相對(duì)間隔大于當(dāng)FWORD=1時(shí)的值。如384與408之間差24,12與24差12。即FWORD越大間隔越大頻率也就越大。當(dāng)PWORD=100時(shí)與PWORD=0時(shí)比較。FOUT4對(duì)POUT4明顯相移了。PWORD=100時(shí)FOUT4不等于POUT4(fout4=384,pout4=0)。PWORD=0時(shí)FOUT2=POUT2。改變PWORD的值可以
37、改變相位。由圖可知在頻率,相位不變的情況下,當(dāng)ss=12時(shí)fout4=12,當(dāng)ss=1時(shí)fout2=4,改變SS的值輸出的幅值也不一樣。所以改變ss可以實(shí)現(xiàn)調(diào)幅。且具有復(fù)位功能,低電平復(fù)位。每次改變pword的值時(shí)需先復(fù)位。</p><p> 3.5 整體電路仿真波形</p><p><b> 具體說明如下:</b></p><p> C
38、LK_h是系統(tǒng)時(shí)鐘信號(hào),設(shè)為100納秒。FWORD_h為8位的頻率控制字;</p><p> PWORD_h為8位的頻率控制字;SS_h為4位控制幅度。Clrn_h為復(fù)位低電平復(fù)位。Sel是兩位的波形選擇位。FOUT_h為13位移相輸出信號(hào);POUT_h為13位標(biāo)準(zhǔn)輸出信號(hào)。</p><p> 如上圖所示:當(dāng)sel=“00”是輸出正弦波,sel=“01”輸出三角波,sel=“10”&l
39、t;/p><p> 輸出方波,sel=“11”輸出鋸齒波。然后通過fword_h來調(diào)頻,pword_h 來移相,ss_h來調(diào)幅。</p><p> 第四章 硬件實(shí)驗(yàn)結(jié)果</p><p><b> 4.1引腳鎖定</b></p><p> 如上圖輸入輸出信號(hào)所接引腳為:</p><p> Cl
40、k_h系統(tǒng)時(shí)鐘接pin_152,設(shè)為2kHz,CLRN_H復(fù)位信號(hào)鎖定引腳PIN_135,名稱位QK1,當(dāng)按下時(shí)復(fù)位。(鍵按下為0,平時(shí)為1).fword_h[7--5]是頻率控制字的高三位分別鎖定PIN-159、PIN_158、PIN_156,名稱分別為DK3、DK2、DK1。(ON為0,OFF為1)pword_h[7--5]是相位控制字的高三位分別鎖定PIN-162、PIN_161、PIN_160,名稱分別為DK6、DK5、DK4。
41、SS_H[3-2]是幅度控制的高2位分別鎖定PIN-164、PIN_163,名稱分別為DK8、DK7。Sel[1-0]是波形選擇位,分別鎖定PIN_138 PIN_136名稱為QK4、QK2。</p><p> 4.2 硬件測試結(jié)果</p><p> 輸出結(jié)果是通過signaltap II來觀察分析。啟動(dòng)分析儀后,將QK1按下,可以看到輸出一直線。當(dāng)將QK4、QK2都按下,可看到輸出正
42、弦波,再將DK1、DK2、DK3置ON或OFF可以改變頻率,將DK6、DK5|、DK4置ON或OFF可以改變相位,將DK8、DK7置ON或OFF可以改變輸出幅度(結(jié)果如圖1---4)。將QK4按下可以觀察輸出三角波,同理將DK1、DK2、DK3置ON或OFF可以改變頻率,將DK6、DK5|、DK4置ON或OFF可以改變相位,將DK8、DK7置ON或OFF可以改變輸出幅度(結(jié)果如圖5---8)。若將QK2按下輸出方波通過DK1~DK8可以
43、調(diào)頻、調(diào)相、調(diào)幅(結(jié)果如圖9~12)。若不按下QK4、QK2輸出鋸齒波,結(jié)果如圖12~15。</p><p> 硬件結(jié)果如下:正弦波</p><p> 圖1 參照波 pword_h=0 ,將fword_h[5]DK1置1其他為0,ss_h[2]、ss_h[3]都置1</p><p> 圖2 調(diào)頻 只改變fword_h,讓其增大,頻率比圖1要大<
44、;/p><p> 圖3 調(diào)相 在圖2的基礎(chǔ)上改變了pword_h,將pword_h[5]、pword_h[6]置1其他為0.上下波形相位不一樣。</p><p> 圖4調(diào)幅 在圖3的基礎(chǔ)上將ss_h[2]置0,從而改變輸出幅度</p><p><b> 三角波</b></p><p> 圖5 參照波 pword
45、_h=0 ,將fword_h[5]DK1置1其他為0,ss_h[2]、ss_h[3]都置1</p><p> 圖6 調(diào)頻 只改變fword_h,讓其增大,頻率比圖5要大</p><p> 圖7 調(diào)相 在圖6的基礎(chǔ)上改變了pword_h,將pword_h[5]、pword_h[6]置1其他為0.上下波形相位不一樣。</p><p> 圖8調(diào)幅 在圖7的基
46、礎(chǔ)上將ss_h[2]置0,從而改變輸出幅度,輸出幅度比圖7要小</p><p><b> 方波</b></p><p> 圖9 參照波 pword_h=0 ,將fword_h[5]DK1置1其他為0,ss_h[2]、ss_h[3]都置1</p><p> 圖10 調(diào)頻 只改變fword_h,讓其增大,頻率比圖9要大</p&
47、gt;<p> 圖11 調(diào)相 在圖9的基礎(chǔ)上改變了pword_h,將pword_h[5]、pword_h[6]置1其他為0.上下波形相位不一樣。</p><p> 圖12調(diào)幅 在圖11的基礎(chǔ)上將ss_h[2]置0,從而改變輸出幅度,輸出幅度減小</p><p><b> 鋸齒波</b></p><p> 圖13 參照波
48、 pword_h=0 ,將fword_h[5]DK1置1其他為0,ss_h[2]、ss_h[3]都置1</p><p> 圖14 調(diào)頻 只改變fword_h,讓其增大,頻率比圖13要大</p><p> 圖15 調(diào)相 在圖13的基礎(chǔ)上改變了pword_h,將pword_h[5]、pword_h[6]置1其他為0.上下</p><p><b>
49、 波形相位不一樣。</b></p><p> 圖16調(diào)幅 在圖15的基礎(chǔ)上將ss_h[2]置0,從而改變輸出幅度,輸出幅度減小</p><p><b> 鋸齒波</b></p><p><b> 第五章 心得與體會(huì)</b></p><p> 經(jīng)過長達(dá)兩個(gè)星期的課程設(shè)計(jì),終于在自
50、己的努力奮戰(zhàn)下完成了設(shè)計(jì)。雖然這兩個(gè)星期沒日沒夜的在實(shí)驗(yàn)室,但是這兩星期過得很充實(shí),收獲也很多。</p><p> 這次的設(shè)計(jì)是移相信號(hào)發(fā)生器,要求產(chǎn)生正弦波、三角波、方波。并且可以進(jìn)行調(diào)頻、調(diào)相、調(diào)幅。</p><p> 在整個(gè)設(shè)計(jì)過程中,學(xué)會(huì)了很多知識(shí)。首先,讓我熟練了QUARTUS II軟件。1、文件名必須與實(shí)體名一樣,工程名可以自選。2、若要對(duì)某個(gè)VHDL文件進(jìn)行編譯、仿真或其
51、他操作必須現(xiàn)將其設(shè)為頂層文件。3、仿真波形中信號(hào)值的設(shè)置要求可以觀察明顯的現(xiàn)象。其次,學(xué)會(huì)了用嵌入式邏輯分析儀signaltap II。步驟:1、file—new—others file打開signaltap II編輯窗口。2、調(diào)入待測信號(hào),主頻時(shí)鐘信號(hào)不可調(diào)入。3、參數(shù)設(shè)置,設(shè)工作時(shí)鐘信號(hào)clock時(shí)應(yīng)選主頻時(shí)鐘信號(hào)。4、保存、編譯下載,每次編譯后都要重新下載。5、最后啟動(dòng)分析儀進(jìn)行分析觀察。</p><p>
52、 同時(shí)在整個(gè)設(shè)計(jì)過程中,我碰到了許多問題,并解決了。1、剛設(shè)計(jì)的時(shí)候,應(yīng)載想整個(gè)設(shè)計(jì)的大概而遲遲不知如何下手,最后經(jīng)同學(xué)指點(diǎn),分模塊來做才一一完成。2、整個(gè)基本設(shè)計(jì)都完成后在對(duì)波形觀察分析時(shí),發(fā)現(xiàn)波形不規(guī)則而且有好多毛刺。經(jīng)分析嘗試發(fā)現(xiàn)是因?yàn)樵趯?duì)信號(hào)進(jìn)行引腳鎖定時(shí),頻率控制字和相位控制字只用了高三位,其他懸空了。將其他沒用到的為置0后毛刺少好多,波形也規(guī)則了。還有發(fā)現(xiàn)在頻率較低的情況下,波形很標(biāo)準(zhǔn)。3、在觀察調(diào)相時(shí),不管仿真波形,還是
53、硬件測試,三角波、方波、鋸齒波,不管相位控制字設(shè)為多大都沒移相,最終在經(jīng)程序中得知因?yàn)槊看味际窃趶?fù)位后才置數(shù)的。所以在調(diào)相前必須先復(fù)位再測試。</p><p> 總體來說,在這次設(shè)計(jì)過程中,給我感觸最深的是,學(xué)會(huì)了電子系統(tǒng)設(shè)計(jì)的一般方法。在設(shè)計(jì)過程中應(yīng)一個(gè)模塊一模塊的完成,一個(gè)一個(gè)問題的解決,這樣所有難題就會(huì)迎刃而解。</p><p><b> 第六章 附錄</b&g
54、t;</p><p> 程序附錄1 正弦波產(chǎn)生程序</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity adder32b i
55、s --32位加法器</p><p> port (a: in std_logic_vector(31 downto 0);</p><p> b: in std_logic_vector(31 downto 0);</p><p> s: out std_logic_vector(31 downto 0)); &l
56、t;/p><p> end adder32b;</p><p> architecture behav of adder32b is</p><p><b> begin </b></p><p><b> s<=a+b;</b></p><p> end beh
57、av;</p><p> library ieee; --10位加法器</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity adder10b
58、is</p><p> port (a: in std_logic_vector(9 downto 0);</p><p> b: in std_logic_vector(9 downto 0);</p><p> s: out std_logic_vector(9 downto 0)); </p><p> end adder10b
59、;</p><p> architecture behav of adder10b is</p><p><b> begin </b></p><p><b> s<=a+b;</b></p><p> end behav;</p><p> library
60、 ieee;</p><p> use ieee.std_logic_1164.all;</p><p> entity reg32b is --32位寄存器</p><p> port (load:in std_logic;</p><p> din:in std_logic_vecto
61、r(31 downto 0);</p><p> dout:out std_logic_vector(31 downto 0));</p><p> end reg32b;</p><p> architecture behav of reg32b is</p><p><b> begin</b></p&
62、gt;<p> process(load,din)</p><p><b> begin</b></p><p> if load'event and load='1' then</p><p> dout<=din;</p><p><b> end if
63、;</b></p><p> end process;</p><p> end behav;</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> entity reg10b is
64、 --10位寄存器</p><p> port (load:in std_logic;</p><p> din:in std_logic_vector(9 downto 0);</p><p> dout:out std_logic_vector(9 downto 0));</p><p> end reg10b;</p>
65、;<p> architecture behav of reg10b is</p><p><b> begin</b></p><p> process(load,din)</p><p><b> begin</b></p><p> if load'event
66、and load='1' then</p><p> dout<=din;</p><p><b> end if;</b></p><p> end process;</p><p> end behav;</p><p> library ieee;</p
67、><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity mux10b is --乘法器</p><p> port (c: in std_logic_vector(3 downto 0);</p
68、><p> d: in std_logic_vector(9 downto 0);</p><p> s: out std_logic_vector(13 downto 0)); </p><p> end mux10b;</p><p> architecture behav of mux10b is</p><p&
69、gt;<b> begin </b></p><p><b> s<=c*d;</b></p><p> end behav;</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p&
70、gt; use ieee.std_logic_unsigned.all;</p><p> entity dds1 is --正弦波</p><p> port(clk: in std_logic;</p><p> ss:in std_logic_vector(3 downto 0);</p><p
71、> fword:in std_logic_vector(7 downto 0);</p><p> pword:in std_logic_vector(7 downto 0);</p><p> fout1:out std_logic_vector(13 downto 0);</p><p> pout1:out std_logic_vector(13
72、 downto 0));</p><p><b> end;</b></p><p> architecture one of dds1 is</p><p> component reg32b --32位寄存器</p><p> port (load:in std_logic;</p><
73、;p> din:in std_logic_vector(31 downto 0);</p><p> dout:out std_logic_vector(31 downto 0));</p><p> end component;</p><p> component reg10b --10位寄存器</p><p>
74、port (load:in std_logic;</p><p> din:in std_logic_vector(9 downto 0);</p><p> dout:out std_logic_vector(9 downto 0));</p><p> end component;</p><p> component adder
75、32b --32位加法器</p><p> port (a: in std_logic_vector(31 downto 0);</p><p> b: in std_logic_vector(31 downto 0);</p><p> s: out std_logic_vector(31 downto 0)); </p><p>
76、; end component;</p><p> component adder10b --10位加法器</p><p> port (a: in std_logic_vector(9 downto 0);</p><p> b: in std_logic_vector(9 downto 0);</p><p> s: o
77、ut std_logic_vector(9 downto 0)); </p><p> end component;</p><p> component sin_rom --正弦波形存儲(chǔ)器</p><p> port (address:in std_logic_vector(9 downto 0);</p><p> cloc
78、k:in std_logic;</p><p> q:out std_logic_vector(9 downto 0));</p><p> end component;</p><p> component mux10b --10*4位乘法器</p><p> port (c: in std_logic_vector(3 do
79、wnto 0);</p><p> d: in std_logic_vector(9 downto 0);</p><p> s: out std_logic_vector(13 downto 0));</p><p> end component;</p><p> signal f32b,d32b,din32b:std_logic
80、_vector(31 downto 0);-- 定義信號(hào)</p><p> signal p10b,lin10b,sin10b,ptmp1,ftmp1:std_logic_vector(9 downto 0);</p><p><b> begin</b></p><p> f32b(27 downto 20)<=fword;f32
81、b(31 downto 28)<="0000";</p><p> f32b(19 downto 0)<="00000000000000000000";--將fword移位</p><p> p10b(9 downto 2)<=pword;p10b(1 downto 0)<="00";</p>
82、;<p> u1:adder32b port map(a=>f32b,b=>d32b,s=>din32b); --元件例化</p><p> u2:reg32b port map(dout=>d32b,din=>din32b,load=>clk);</p><p> u3:sin_rom port map(addres
83、s=>sin10b,q=>ftmp1,clock=>clk);</p><p> u4:adder10b port map(a=>p10b,b=>d32b(31 downto 22),s=>lin10b);</p><p> u5:reg10b port map(dout=>sin10b,din=>lin10b,load=>clk)
84、;</p><p> u6:sin_rom port map(address=>d32b(31 downto 22),q=>ptmp1,clock=>clk);</p><p> u7:mux10b port map(d=>ptmp1,c=>ss,s=>pout1);</p><p> u8:mux10b port map(
85、d=>ftmp1,c=>ss,s=>fout1);</p><p><b> end one;</b></p><p><b> 程序附錄2</b></p><p> LIBRARY IEEE;</p><p> use ieee.std_logic_1164.all;&l
86、t;/p><p> use ieee.std_logic_unsigned.all;</p><p> ENTITY dds2 IS --三角波</p><p> PORT( clk,clrn: in std_logic;</p><p> ss:in std_logic_vector(3 down
87、to 0);</p><p> fword:in std_logic_vector(7downto 0);</p><p> pword:in std_logic_vector(7 downto 0);</p><p> fout2:out std_logic_vector(13 downto 0);</p><p> pout2:o
88、ut std_logic_vector(13 downto 0));</p><p><b> end;</b></p><p> ARCHITECTURE a OF dds2 IS</p><p><b> BEGIN</b></p><p> PROCESS(CLK,clrn,fword
89、 ,pword) ---進(jìn)程</p><p> variable tmp1,tmp2,p10b: std_logic_vector(9 downto 0); --定義信號(hào)</p><p> variable f,p: std_logic;</p><p> variable f5b:std_
90、logic_vector(4 downto 0);</p><p><b> begin</b></p><p> f5b(4 downto 2):=fword(7 downto 5);f5b(1 downto 0):="00";</p><p> p10b(9 downto 7):=pword(7 downto 5)
91、;p10b(6 downto 0):="0000000";</p><p> if clrn='0' then tmp1:="0000000000";tmp2:=p10b;--復(fù)位</p><p> elsif clk'event and clk='1' then</p><p>
92、 if f='0' then </p><p> if tmp1>"1100000000" then f:='1'; </p><p> else tmp1:=tmp1+1+f5b; end if;--增加</p><p><b> else </b></p><
93、;p> if tmp1<"0000000111" then f:='0';</p><p> else tmp1:=tmp1-1-f5b; end if;--減小</p><p><b> end if;</b></p><p> if p='0' then </p&
94、gt;<p> if tmp2>"1100000000" then p:='1';</p><p> else tmp2:=tmp2+1+f5b; end if;--增加</p><p><b> else </b></p><p> if tmp2<"000000
95、0111" then p:='0';</p><p> else tmp2:=tmp2-1-f5b; end if;--減小</p><p><b> end if;</b></p><p><b> end if;</b></p><p> fout2<=t
96、mp2*ss;---調(diào)幅</p><p> pout2<=tmp1*ss;</p><p> end process;</p><p><b> end a;</b></p><p><b> 程序附錄3</b></p><p> LIBRARY IEEE;&
97、lt;/p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> ENTITY dds3 IS --方波</p><p> PORT( clk,clrn: in std_log
98、ic;</p><p> ss:in std_logic_vector(3 downto 0);</p><p> fword:in std_logic_vector(7 downto 0);</p><p> pword:in std_logic_vector(7 downto 0);</p><p> fout3:out std_
99、logic_vector(13 downto 0);</p><p> pout3:out std_logic_vector(13 downto 0));</p><p><b> end;</b></p><p> ARCHITECTURE a OF dds3 IS</p><p> SIGNAL F,p: s
100、td_logic;</p><p> signal q1,q2: std_logic_vector(9 downto 0);</p><p><b> BEGIN</b></p><p> PROCESS(CLK,clrn,fword ,pword)</p><p> variable tmp1,tmp2,p10
101、b: std_logic_vector(9 downto 0);</p><p> variable f5b:std_logic_vector(4 downto 0);</p><p><b> BEGIN</b></p><p> f5b(4 downto 2):=fword(7 downto 5);f5b(1 downto 0):=&
102、quot;00";</p><p> p10b(9 downto 7):=pword(7 downto 5);p10b(6 downto 0):="0000000";</p><p> IF CLRN='0' THEN TMP1:="0000000000";tmp2:=p10b;</p><p>
103、 ELSE IF CLK'EVENT AND CLK='1' THEN</p><p> IF TMP1="1111111111" THEN TMP1:="0000000000";--標(biāo)準(zhǔn)波</p><p> ELSE TMP1:=TMP1+1+f5b;END IF;</p><p> IF T
104、MP1<"0111111111"THEN F<='1';</p><p> ELSE F<='0';END IF;</p><p> IF TMP2="1111111111" THEN TMP2:="0000000000";--調(diào)相</p><p>
105、ELSE TMP2:=TMP2+1+f5b;END IF;</p><p> IF TMP2<"0111111111"THEN p<='1';</p><p> ELSE p<='0';END IF;</p><p><b> END IF;</b></p>
106、<p><b> END IF;</b></p><p> END PROCESS;</p><p> PROCESS(CLK,F,p)</p><p><b> BEGIN</b></p><p> IF CLK'EVENT AND CLK='1'
107、THEN</p><p> IF F='1' THEN q1<="1111111111";--高電平</p><p> ELSE q1<="0000000000";---低電平</p><p><b> END IF;</b></p><p>
108、IF p='1' THEN q2<="1111111111";</p><p> ELSE q2<="0000000000";</p><p><b> END IF;</b></p><p><b> end if;</b></p>
109、<p> POUT3<=q1*SS;--標(biāo)準(zhǔn)波</p><p> FOUT3<=q2*SS;--調(diào)相波</p><p> END PROCESS;</p><p><b> END A;</b></p><p><b> 程序附錄4</b></p>&l
110、t;p> LIBRARY IEEE;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> ENTITY dds4 IS --鋸齒波 </p><p> PORT(
111、clk,clrn: in std_logic;</p><p> ss:in std_logic_vector(3 downto 0);</p><p> fword:in std_logic_vector(7downto 0);</p><p> pword:in std_logic_vector(7 downto 0);</p><p&
112、gt; fout4:out std_logic_vector(13 downto 0);</p><p> pout4:out std_logic_vector(13 downto 0));</p><p><b> end;</b></p><p> ARCHITECTURE a OF dds4 IS</p><p
113、><b> BEGIN</b></p><p> PROCESS(CLK,clrn,fword,pword )</p><p> variable tmp1,tmp2,p10b: std_logic_vector(9 downto 0);</p><p> variable f5b:std_logic_vector(4 downt
114、o 0);</p><p><b> begin</b></p><p> f5b(4 downto 2):=fword(7 downto 5);f5b(1 downto 0):="00";</p><p> p10b(9 downto 7):=pword(7 downto 5);p10b(6 downto 0):=&
115、quot;0000000";</p><p> if clrn='0' then tmp1:="0000000000";tmp2:=p10b;--復(fù)位</p><p> elsif clk'event and clk='1' then</p><p> if tmp1>"11
116、00000000" then tmp1:="0000000000";</p><p> else tmp1:=tmp1+1+f5b; end if; --增加</p><p> if tmp2>"1100000000" then tmp2:="0000000000";--調(diào)相</p><
117、p> else tmp2:=tmp2+1+f5b; end if; --增加</p><p><b> end if;</b></p><p> fout4<=tmp2*ss; --調(diào)相波</p><p> pout4<=tmp1*ss; --標(biāo)準(zhǔn)波</p><p> end process
118、;</p><p><b> end a;</b></p><p><b> 程序附錄5</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_l
119、ogic_unsigned.all;</p><p> entity dds is ---主程序設(shè)為頂層文件</p><p> port(clk_h,clrn_h: in std_logic;</p><p> sel:in std_logic_vector(1 downto 0);</p><p&
120、gt; ss_h:in std_logic_vector(3 downto 0);</p><p> fword_h:in std_logic_vector(7 downto 0);</p><p> pword_h:in std_logic_vector(7 downto 0);</p><p> fout_h:out std_logic_vector(1
121、3 downto 0);</p><p> pout_h:out std_logic_vector(13 downto 0));</p><p><b> end;</b></p><p> architecture one of dds is</p><p> component dds1
122、 --正弦</p><p> port(clk: in std_logic;</p><p> ss:in std_logic_vector(3 downto 0);</p><p> fword:in std_logic_vector(7 downto 0);</p><p> pword:in std_logic_vect
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計(jì)--dds信號(hào)發(fā)生器
- eda課程設(shè)計(jì)——基于dds的正弦信號(hào)發(fā)生器設(shè)計(jì)
- eda課程設(shè)計(jì)--基于fpga的dds信號(hào)發(fā)生器設(shè)計(jì)
- 基于vhdl語言信號(hào)發(fā)生器的設(shè)計(jì)--eda課程設(shè)計(jì)
- eda課程設(shè)計(jì)--信號(hào)發(fā)生器
- eda課程設(shè)計(jì)-簡易信號(hào)發(fā)生器
- eda課程設(shè)計(jì)--基于cpld的信號(hào)發(fā)生器設(shè)計(jì)
- eda設(shè)計(jì)實(shí)驗(yàn)課程設(shè)計(jì)-函數(shù)信號(hào)發(fā)生器
- 畢業(yè)論文--基于dds的數(shù)字移相信號(hào)發(fā)生器(含外文翻譯)
- eda課程設(shè)計(jì)---函數(shù)信號(hào)發(fā)生器的設(shè)計(jì)
- dds課程設(shè)計(jì)---基于dds的波形發(fā)生器設(shè)計(jì)
- eda課程設(shè)計(jì)-多功能波形信號(hào)發(fā)生器
- 基于dds的可掃頻移相信號(hào)發(fā)生器的畢業(yè)設(shè)計(jì)(含外文翻譯)
- eda音樂發(fā)生器課程設(shè)計(jì)
- 基于dds技術(shù)的信號(hào)發(fā)生器設(shè)計(jì)與實(shí)現(xiàn)
- 信號(hào)發(fā)生器課程設(shè)計(jì)----函數(shù)信號(hào)發(fā)生器
- 基于DDS技術(shù)的信號(hào)發(fā)生器設(shè)計(jì).pdf
- eda課程設(shè)計(jì)--任意波形發(fā)生器
- fpga課程設(shè)計(jì)--基于vhdl的2fsk的信號(hào)發(fā)生器
- 基于DDS技術(shù)信號(hào)發(fā)生器的研究與設(shè)計(jì).pdf
評(píng)論
0/150
提交評(píng)論