版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、<p><b> 波形發(fā)生器的設計</b></p><p><b> 一、概述</b></p><p> 波形發(fā)生器是一種常用的信號源,廣泛地應用于電子電路、自動控制系統(tǒng)和教學實驗等領域。多功能函數(shù)信號發(fā)生器能夠產(chǎn)生鋸齒波,三角波和正弦波等多種輸出信號。信號產(chǎn)生的模塊有:鋸齒波,三角波波,正弦波模塊等。這些信號的產(chǎn)生可以有多種方式
2、,如用計數(shù)器直接產(chǎn)生信號輸出,或者用計數(shù)器產(chǎn)生存儲器的地址,在存儲器中存放信號的數(shù)據(jù)。信號發(fā)生器的控制模塊是由數(shù)據(jù)選擇器實現(xiàn)對這幾種信號的選擇。最后將波形數(shù)據(jù)送入D/A轉(zhuǎn)換器,再用示波器測試D/A轉(zhuǎn)換器的輸出,就可以觀測到這幾種波形的輸出了。</p><p><b> 二、設計要求</b></p><p> 設計一個波形發(fā)生器。具體要求: 設計并實現(xiàn)一個可產(chǎn)生正弦
3、波、三角波和鋸齒波的波形發(fā)生器。其工作頻率為60MHz,可產(chǎn)生1MHz、2MHz、3MHz、4MHz、5MHz、6MHz、10MHz的正弦波、三角波和鋸齒波。所產(chǎn)生波形的幅度、相位均可調(diào)整。</p><p><b> 三、實現(xiàn)原理</b></p><p> 本程序的實現(xiàn)使用查表的方法來實現(xiàn)多波形發(fā)生器。先把各個波形的幅度存入在表格中,以mif的格式存放在LCP_R
4、OM中,它通過外來控制信號和高速時鐘信號,向波形數(shù)據(jù)ROM發(fā)出地址信號,輸出波形的頻率出發(fā)出的地址信號的速度決定;這樣就可以通過控制信號來改變輸出的波形和各個波形的輸出頻率了。由于輸入頻率是60M,所以在表格中存入60個數(shù)據(jù),如果以每一個時鐘都讀取每一個數(shù)值,則產(chǎn)生1M的輸出頻率,如果要產(chǎn)生10M的的輸出頻率,則只需要每十個時鐘讀一個數(shù)就可以了。其它頻率也是依照這個方法就可以實現(xiàn)不同頻率的輸出了。</p><p>
5、;<b> ?。?)電路外觀框圖</b></p><p> 各個端口的功能如下:</p><p> p[1..0]:P為輸出波形幅度調(diào)節(jié)檔,共有四個可調(diào)檔次。</p><p> clk:為系統(tǒng)工作時間,輸入頻率為60MHz。</p><p> en:復位信號,輸入端。</p><p>
6、fchu[2..0]:輸出波形頻率選擇,可產(chǎn)生1MHz、2MHz、3MHz、4MHz、5MHz、6MHz、10MHz</p><p> pword[7..0]:相位選擇檔,可以調(diào)節(jié)256個初始相位檔次</p><p> xtime[1..0]:LCP_ROM工作選擇時鐘,并做輸出波形選擇,可選擇輸出鋸齒波,三角波和正弦波。</p><p> da_out[9.
7、.0]:波形輸出</p><p><b> 四、程序代碼</b></p><p> 頻率輸出選擇與調(diào)相模塊</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_u
8、nsigned.all;</p><p> use ieee.std_logic_arith.all;</p><p> entity sin is</p><p> port(clk:in std_logic;</p><p> en:in std_logic;</p><p> fchu:in std_l
9、ogic_vector(2 downto 0); --fchu輸出頻率選擇</p><p> pword:in std_logic_vector( 7 downto 0);--相位調(diào)節(jié)0~255</p><p> z1,z2,z3,z4:out std_logic;</p><p> addr_rom:buffer std_logic_vector(7 dow
10、nto 0);--addr_rom地址采點,從LCP_ROM相應的地址讀取數(shù)據(jù)</p><p> xtime:in std_logic_vector(1 downto 0) --時間觸發(fā)選擇,從那個LCP_ROM中調(diào)取波形,其選擇的波開跟DA輸出通道是相一致的。</p><p><b> );</b></p><p><b
11、> end sin ;</b></p><p> architecture a of sin is</p><p> signal s:std_logic_vector(2 downto 0);</p><p> signal temp: integer range 0 to 715827880;</p><p>
12、 signal address: std_logic_vector(7 downto 0); </p><p> signal fre_count: std_logic_vector(31 downto 0);</p><p> signal fw: std_logic_vector(31 downto 0);</p><p> signal pw: std_
13、logic_vector(7 downto 0);</p><p> signal xx:std_logic_vector(1 downto 0);</p><p> signal cda:std_logic_vector(1 downto 0);</p><p> signal fo:std_logic_vector(31 downto 0);</p&
14、gt;<p><b> begin</b></p><p><b> s<=fchu;</b></p><p> xx<=xtime;</p><p> process(clk,s)</p><p><b> begin</b></p&
15、gt;<p> if clk'event and clk='1' then</p><p><b> case s is</b></p><p> when "001"=> temp<=71582788;</p><p> when "010"=&
16、gt; temp<=143165576;</p><p> when "011"=> temp<=214748364;</p><p> when "100"=> temp<=286331152;</p><p> when "101"=> temp<=357
17、913940;</p><p> when "110"=> temp<=429496728;</p><p> when "111"=> temp<=715827880;</p><p> when others=> temp<=71582788;</p><p&
18、gt;<b> end case;</b></p><p> end if; </p><p> fo<=conv_std_logic_vector(temp,32);</p><p> end process;</p><p> process(clk,fo,en,pword)</p>
19、<p><b> begin</b></p><p><b> fw<=fo;</b></p><p> if clk'event and clk='1' then</p><p> if en='1' then fre_count<=fre_c
20、ount+fw;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p> process(clk,pw)</p><p><b> begin<
21、/b></p><p> pw<=pword;</p><p> if clk'event and clk='1' then</p><p> if en='1' then address<=fre_count(31 downto 24)+pw;</p><p><b&
22、gt; end if;</b></p><p><b> end if;</b></p><p> addr_rom<=address;</p><p> end process;</p><p> process(xx,clk) </p><p><b>
23、 begin </b></p><p> if xx="00" then</p><p><b> z1<=clk;</b></p><p><b> else</b></p><p><b> z1<='1';</
24、b></p><p><b> end if;</b></p><p> if xx="01" then</p><p><b> z2<=clk;</b></p><p><b> else</b></p><p&g
25、t;<b> z2<='1';</b></p><p><b> end if;</b></p><p> if xx="10" then</p><p><b> z3<=clk;</b></p><p><b&g
26、t; else</b></p><p><b> z3<='1';</b></p><p><b> end if;</b></p><p> if xx="11" then</p><p><b> z4<=clk;&
27、lt;/b></p><p><b> else</b></p><p><b> z4<='1';</b></p><p><b> end if;</b></p><p> end process; </p><p&g
28、t;<b> end a;</b></p><p> ?。?)調(diào)頻調(diào)相模塊電路圖</p><p> 幅度調(diào)節(jié)與波形通道輸出模塊</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.s
29、td_logic_unsigned.all;</p><p> use ieee.std_logic_arith.all;</p><p> entity damodule is</p><p> port(clk,clrn:in std_logic; --key按鍵計數(shù),按一次時行加1或減1</p><p>
30、 chosebo,p:in std_logic_vector(1 downto 0); --chosebo選擇讓那個波形工作 (P四個檔,調(diào)節(jié)幅度)</p><p> lcp_rom0,lcp_rom1,lcp_rom2:in std_logic_vector(7 downto 0);--LCP_rom到DA的輸入通道</p><p> da_out:out std_logic_v
31、ector(9 downto 0)); --數(shù)據(jù)輸出</p><p> end damodule ;</p><p> architecture a of damodule is</p><p> signal count1:integer range 0 to 4;</p><p> signal cda:std_logic_ve
32、ctor(1 downto 0);</p><p> signal da_in: std_logic_vector(7 downto 0); </p><p> signal m:std_logic_vector(1 downto 0);</p><p><b> begin </b></p><p> cda
33、<=chosebo;</p><p><b> m<=p;</b></p><p> process(clk,m)</p><p><b> begin</b></p><p> if clk'event and clk='1' then</p>
34、;<p> case m is </p><p> when "00" => count1<=1; </p><p> when "01" => count1<=2; </p><p> when "10" => count1<=3; </p&
35、gt;<p> when "11" => count1<=4;</p><p><b> end case;</b></p><p><b> end if;</b></p><p> end process; </p><p> proc
36、ess(cda,clk,clrn)</p><p><b> begin</b></p><p> if clrn='1'then</p><p> if clk'event and clk='1' then</p><p> case cda is</p>
37、<p> when "00"=>da_in<=lcp_rom0;</p><p> when "01"=>da_in<=lcp_rom1;</p><p> when "10"=>da_in<=lcp_rom2;</p><p> when others
38、=>null;</p><p><b> end case;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p> pro
39、cess(clk)</p><p> variable d:integer range 0 to 1024;</p><p> begin </p><p> if clk'event and clk='1' then </p><p> d:=conv_intege
40、r(da_in)*count1;</p><p> da_out<=conv_std_logic_vector(d,10);</p><p><b> end if;</b></p><p> end process; </p><p><b> end a;</b></p&
41、gt;<p> ?。?)選波調(diào)幅模塊電路圖</p><p> ?。?)鋸齒波,三角波,正弦波的數(shù)據(jù)存址LCP_ROM</p><p><b> 五、仿真輸出結(jié)果</b></p><p> 下面舉例對對各個波形進行仿真,選擇輸出頻率為1MHz幅度為1初相為0的三個波形進行仿真。</p><p><b
42、> (5)鋸齒波</b></p><p><b> ?。?)三角波</b></p><p> 以下以正弦波為例,對其輸出頻率,相位,幅度進行變化的波形仿真。</p><p> (7)輸出頻率為1MHz的正弦波</p><p> ?。?)輸出頻率5MHz正弦波</p><p>
43、; ?。?)2倍幅度初相為0度的正弦波</p><p> ?。?0)四倍幅度初相為0度的正弦波</p><p> ?。?1)四倍幅度初相180度的正弦波</p><p> 從QUARTUS II的仿真結(jié)果可以看出,該程序基本上實現(xiàn)原先設計所要求的各個功能,但在個別波形的某個頻率檔處出現(xiàn)了毛刺現(xiàn)像,這是以后需要繼續(xù)改進和研究的方向。</p><p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 波形發(fā)生器課程設計
- 波形發(fā)生器課程設計
- 課程設計——波形發(fā)生器
- 課程設計-波形發(fā)生器
- 波形發(fā)生器課程設計
- 波形發(fā)生器課程設計
- 課程設計——波形發(fā)生器
- 課程設計--波形發(fā)生器設計
- 課程設計--函數(shù)波形發(fā)生器
- 波形發(fā)生器課程設計報告
- 波形發(fā)生器課程設計報告
- 簡易波形發(fā)生器課程設計
- 波形發(fā)生器課程設計報告
- 波形發(fā)生器的設計課程設計
- eda課程設計--任意波形發(fā)生器
- 綜合課程設計--簡易波形發(fā)生器
- 微機課程設計報告-波形發(fā)生器
- 微機原理課程設計波形發(fā)生器
- 智能儀器課程設計--波形發(fā)生器
- 簡易波形發(fā)生器課程設計報告
評論
0/150
提交評論