【正文】
創(chuàng)建工程的路徑,工程名和頂層文件名。頻率顯示:頻率可以直接用4位BCD撥盤開關(guān)上的數(shù)字和檔位開關(guān)位置一起來表示頻率。更改“低電平”和“高電平”出現(xiàn)的比例,可以達(dá)到調(diào)節(jié)占空比的目的。然后循環(huán)不斷地從存儲器2中依次讀取任意波一個周期在時域上64個采樣點的波形數(shù)據(jù)送入波形DAC,從而產(chǎn)生任意波。在本設(shè)計中,采用QuartusII軟件仿真,所以可以通過波形文件直觀的反映出輸出的數(shù)字量的變化情況,以達(dá)到波形輸出的仿真。為簡化設(shè)計過程,本設(shè)計并未采用DDS技術(shù),而是采用描點輸出的方式,實現(xiàn)波形發(fā)生器的設(shè)計。 設(shè)計原理采用DDS技術(shù)可以很方便地產(chǎn)生各種高質(zhì)量的波形。直接數(shù)字頻率合成實現(xiàn)直接數(shù)字頻率合成(DDFS)技術(shù)是經(jīng)典的數(shù)字頻率合成技術(shù)。此外,QuartusII通過和DSP Builder工具與Matlab/SIMULINK相結(jié)合,可以方便地實現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera的片上可編程系統(tǒng)開發(fā),集系統(tǒng)級設(shè)計、嵌入式軟件設(shè)計、可編程邏輯設(shè)計于一體,是一種綜性的開發(fā)平臺。 圖1 多功能波形發(fā)生器系統(tǒng)框圖本次設(shè)計是基于Altera公司的QuartusII軟件。 (5)輸出波形幅度范圍0~5V(峰峰值),(峰峰值)調(diào)整。具體要求如下: (1) 具有產(chǎn)生正弦波、方波、三角波、鋸齒波4種周期性波形的功能。 不論是在生產(chǎn)、實驗還是在科研與教學(xué)上,多功能信號發(fā)生器都是用于仿真實驗的最佳工具。這種技術(shù)由美國學(xué)者J.Tiercy,M.Rader和B.Gold于1971年首次提出,但限于當(dāng)時的技術(shù)和工藝水平,DDS技術(shù)僅僅在理論上進(jìn)行了一些探討,而沒有應(yīng)用到實際中去。 現(xiàn)代科學(xué)技術(shù)的飛速發(fā)展對信號源提出了越來越高的要求。它能夠提供正弦波、鋸齒波、方波、三角波等幾種常用標(biāo)準(zhǔn)波形,產(chǎn)生其它波形時,需要采用較復(fù)雜的電路和機(jī)電結(jié)合的方法。它能夠產(chǎn)生多種波形,如三角波、鋸齒波、矩形波(含方波)、正弦波等,在電路實驗和設(shè)備檢測中具有十分廣泛的用途。包括由LCD顯示和按鍵輸入構(gòu)成的人機(jī)界面和多種信號的發(fā)生。 本文首先介紹了函數(shù)信號發(fā)生器的研究背景和DDS的理論。課 程 設(shè) 計題 目多功能波形發(fā)生器的設(shè)計學(xué) 院信息工程學(xué)院專 業(yè)班 級姓 名指導(dǎo)教師年月日摘要 3Abstract 4多功能波形發(fā)生器的設(shè)計 4 6 課設(shè)目的 6 62設(shè)計方案 8 8 設(shè)計原理 8 93仿真結(jié)果 15 15 16 16 18 RTL視圖 194程序分析 21 21 215小結(jié) 236參考文獻(xiàn) 247附錄源程序代碼 25摘要 多功能信號發(fā)生器已成為現(xiàn)代測試領(lǐng)域應(yīng)用最為廣泛的通用儀器之一,代表了信號源的發(fā)展方向。然后詳盡地敘述了利用VHDL語言描述DDS模塊的設(shè)計過程,以及設(shè)計過程中應(yīng)注意的問題。數(shù)字模擬轉(zhuǎn)換器是BURRBROWN公司生產(chǎn)的DAC902。例如在通信、廣播、電視系統(tǒng)中,都需要射頻(高頻)發(fā)射,這里的射頻波就是載波,把音頻(低頻)、視頻信號或脈沖信號運(yùn)載出去,就需要能夠產(chǎn)生高頻的振蕩器。這個時期的波形發(fā)生器多采用模擬電子技術(shù),但是模擬器件構(gòu)成的電路存在著尺寸大、價格貴、功耗大等缺點。這些要求主要表現(xiàn)在高分辨率、高輸出頻率、任意波形等方面。但是隨著電子技術(shù)的飛速發(fā)展,微處理器性能大幅提高,高速的D/A以及隨機(jī)存儲器大量涌現(xiàn),DDS技術(shù)已經(jīng)變得很容易實現(xiàn)。隨著我國經(jīng)濟(jì)和科技的發(fā)展,對相應(yīng)的測試儀器和測試手段也提出了更高的要求,多功能信號生器己成為測試儀器中至關(guān)重要的一類,因此開發(fā)多功能信號發(fā)生器具有重大意義。 (2) 用鍵盤輸入編輯生成上述4種波形(同周期)的線性組合波形。 (6)具有顯示輸出波形的類型、重復(fù)頻率(周期)和幅度的功能。Quartus II 是Altera公司的綜合性PLD開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計輸入到硬件配置的完整PLD設(shè)計流程。2設(shè)計方案模擬鎖相環(huán)實現(xiàn)模擬鎖相環(huán)技術(shù)是一項比較成熟的技術(shù)。由于數(shù)字量的可操作性遠(yuǎn)遠(yuǎn)高于模擬量,采用DDFS的優(yōu)點在于頻率精度高、波形調(diào)節(jié)方便、且輸出波形毛刺少等。DDS技術(shù)是從相位概念出發(fā)之結(jié)合成所需要波形的一種頻率合成技術(shù)。程序中設(shè)置一個波形的起始點,經(jīng)過比較、計算得出波形的其他數(shù)值,將這些點依次連續(xù)輸出,從而實現(xiàn)波形的仿真。正弦波:通過循環(huán)不斷地從RAM中依次讀取正弦波一個周期在時域上64個采樣點的波形數(shù)據(jù)送入波形DAC,從而產(chǎn)生正弦波。任意波的頻率取決于讀取數(shù)據(jù)的速度。波形DAC:根據(jù)輸入的波形數(shù)據(jù)(即FPGA輸出的數(shù)據(jù)),產(chǎn)生相應(yīng)的模擬波形的輸出。幅度顯示:用4個數(shù)碼管來顯示輸出波形的幅度。工程名和頂層文件可以一致也可以不同。 圖3創(chuàng)建工程界面在圖2所示界面點擊NEXT按鈕出現(xiàn)對話框如圖3所示直接點next按鈕然后在出現(xiàn)的界面中選擇芯片出現(xiàn)如圖4所示界面。輸入完成之后單擊保存圖標(biāo)并輸入相應(yīng)的文件名。3仿真結(jié)果輸入相應(yīng)源代碼,點擊,得出結(jié)果如圖8 圖8編譯結(jié)果程序在編譯階段出現(xiàn)了八個警告,以下面兩個為例:1.Warning (10492): VHDL Process Statement warning at (232): signal y is read inside the Process Statement but isn39。實際上,綜合工具在綜合的時候會自動把這類信號添加到敏感信號表里,但仿真工具不會,而是完全按照代碼體現(xiàn)的語意來仿真。 when 3 = lcd(7 downto 1)=0000110。 when 7 = lcd(7 downto 1)=0001111。 end case。port(clk : in std_logic。 方波A、B的切換sw,和方波B的幅度調(diào)節(jié)按鍵 ss : in std_logic_vector( 3 downto 0 )。 預(yù)留接口 lcd : out std_logic_vector(7 downto 0)。 圖9 編譯結(jié)果 在編譯通過后,要建立后綴為vwf的仿真波形文件。 圖10 仿真波形文件建立 圖11 仿真波形參數(shù)設(shè)置仿真結(jié)果如下圖所示 圖12仿真波形 RTL視圖生成的RTL視圖如下 圖13 RTL視圖4程序分析一個VHDL語言的設(shè)計程序描述的是一個電路單元,這個電路單元可以是一個門電路,或者是一個計數(shù)器,也可以是一個CPU,一般情況下,一個完整的VHDL語言程序至少包括實體、結(jié)構(gòu)體和程序包三個部分。use 。程序的實體名稱可以任意取,但必須與VHDL程序的文件名稱相同。END fulladder。其中數(shù)據(jù)流描述方式又被稱為寄存器(RTL)描述方式。 Co=(a and b)or(a and Ci)or(b and Ci)。二者都屬于流程控制語句。執(zhí)行對應(yīng)的順序語句,最后結(jié)束 CASE語句。開發(fā)環(huán)境常用的有Altera公司的Quartus II還有進(jìn)行仿真之前需要自己建立仿真波形文件,才能進(jìn)行仿真等等,但在和老師、同學(xué)的交流下,最后我都解決了問題。雖然課設(shè)完成了,但是我意識到,我對FPGA技術(shù)僅僅只是停留在入門的階段,想要有更大的發(fā)展,更深入的研究,還需要更多的努力與實踐。use 。 任意波鍵盤置入信號 u0,d0,sw : in std_logic。 BCD碼輸入 p180 : out std_logic。 波形、幅度數(shù)據(jù)輸出end keshe。signal qqq : integer range 0 to 250000000。signal coun0 : integer range 0 to 250000000。signal f : std_logic_vector( 7 downto 0 )。signal bcd00,bcd10,bcd20,bcd30 : integer range 0 to 9。qq信號對應(yīng)SW=0時的檔位選擇信號SS,實現(xiàn)方波A和其他三種波形的頻率預(yù)置qqq= 500000 when ss=1000 else 5000000 when ss=0100 else 50000000 when ss=0010 else50000。variable count3 : integer range 0 to 250000000。variable dd0,dd1,dd2,dd3,dd4 : integer range 0 to 255。 then if count4=6249999 then count4:=0。 then ram(adr)=conv_std_logic_vector((conv_integer(Data1)*10+conv_integer(Data0))*2,8)。 存儲器所有單元清零 for i in 0 to 63 loop ram(i)=(others=39。 end if。 else if set=39。 coun0=0。 addr=0。039。 if f=63 then f=00000000。 con=con+1。 dd=00000000。00。00。 elsif addr=63 then dd=ram(63)。139。 dd0:=0。139。139。