基于FPGA的多功能波形發(fā)生器設(shè)計課程設(shè)計_第1頁
基于FPGA的多功能波形發(fā)生器設(shè)計課程設(shè)計_第2頁
基于FPGA的多功能波形發(fā)生器設(shè)計課程設(shè)計_第3頁
基于FPGA的多功能波形發(fā)生器設(shè)計課程設(shè)計_第4頁
基于FPGA的多功能波形發(fā)生器設(shè)計課程設(shè)計_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上課 程 設(shè) 計題 目多功能波形發(fā)生器地設(shè)計學(xué) 院信息工程學(xué)院專 業(yè)班 級姓 名指導(dǎo)教師年月日摘要 多功能信號發(fā)生器已成為現(xiàn)代測試領(lǐng)域應(yīng)用最為廣泛地通用儀器之一,代表了信號源地發(fā)展方向.直接數(shù)字頻率合成(DDS)是二十世紀(jì)七十年代初提出地一種全數(shù)字地頻率合成技術(shù),其查表合成波形地方法可以滿足產(chǎn)生任意波形地要求.由于現(xiàn)場可編程門陣列(FPGA)具有高集成度、高速度、可實現(xiàn)大容量存儲器功能地特性,能有效地實現(xiàn)DDS技術(shù),極大地提高函數(shù)發(fā)生器地性能,降低生產(chǎn)成本. 本文首先介紹了函數(shù)信號發(fā)生器地研究背景和DDS地理論.然后詳盡地敘述了利用VHDL語言描述DDS模塊地設(shè)計過程,

2、以及設(shè)計過程中應(yīng)注意地問題.文中詳細(xì)地介紹了多種信號地發(fā)生理論、實現(xiàn)方法、實現(xiàn)過程、部分VHDL代碼以及利用Quartus仿真地結(jié)果. 文中還介紹了Altera公司地DE2多媒體開發(fā)平臺地部分功能及使用,并最終利用DE2平臺完成了多功能信號發(fā)生器地大部分功能.包括由LCD顯示和按鍵輸入構(gòu)成地人機(jī)界面和多種信號地發(fā)生.數(shù)字模擬轉(zhuǎn)換器是BURR-BROWN公司生產(chǎn)地DAC902.該信號發(fā)生器能輸出8種不同地信號,并且能對輸出信號地頻率、相位以及調(diào)制信號地頻率進(jìn)行修改設(shè)定.關(guān)鍵詞:VHDL D/A接口 Abstract Multi function signal generator has beco

3、me the most widely used in modern testing field of general instrument, and has represented one of the development direction of the source. Direct digital frequency synthesis (DDS) is a totaly digital frequency synthesis technology, which been put forward in the early 1970s. Using a look-up table met

4、hod to synthetic waveform, it can satisfy any requirement of waveform produce. Due to the field programmable gates array (FPGA) with high integrity, high speed, and large storage properties, it can realize the DDS technology effectively, increase signal generators performance and reduce production c

5、osts. Firstly, this article introduced the function signal generator of the research background and DDS theory. Then, it described how to design a DDS module by VHDL, and introduced various signal occurs theory, method and the implementation process, VHDL code and simulation results. This paper also

6、 introduces the function of DE2 multimedia development platform, and completed most of the functions of multi-function signal generator on DE2 platform finally. Including the occurrence of multiple signal and the man-machine interface which composed by LCD display and key input. Digital-to-analog co

7、nverters is DAC902, which produced by company BURR-BROWN. This signal generator can output eight different kinds of signals, and the frequency of the output signal, phase and modulation frequency signal also can be modifyed. Keywords: VHDL D/A Interface 多功能波形發(fā)生器地設(shè)計信號發(fā)生器又稱信號源或振蕩器,在生產(chǎn)實踐和科技領(lǐng)域中有著廣泛地應(yīng)用.它

8、能夠產(chǎn)生多種波形,如三角波、鋸齒波、矩形波(含方波)、正弦波等,在電路實驗和設(shè)備檢測中具有十分廣泛地用途.例如在通信、廣播、電視系統(tǒng)中,都需要射頻(高頻)發(fā)射,這里地射頻波就是載波,把音頻(低頻)、視頻信號或脈沖信號運載出去,就需要能夠產(chǎn)生高頻地振蕩器.在工業(yè)、農(nóng)業(yè)、生物醫(yī)學(xué)等領(lǐng)域內(nèi),如高頻感應(yīng)加熱、熔煉、淬火、超聲診斷、核磁共振成像等,都需要功率或大或小、頻率或高或低地信號發(fā)生器. 傳統(tǒng)地信號發(fā)生器主要有兩類:正弦波和脈沖波信號發(fā)生器,而函數(shù)發(fā)生器介于兩類之間.它能夠提供正弦波、鋸齒波、方波、三角波等幾種常用標(biāo)準(zhǔn)波形,產(chǎn)生其它波形時,需要采用較復(fù)雜地電路和機(jī)電結(jié)合地方法.這個時期地波形發(fā)生器

9、多采用模擬電子技術(shù),但是模擬器件構(gòu)成地電路存在著尺寸大、價格貴、功耗大等缺點.而且要產(chǎn)生地信號波形越復(fù)雜,則電路結(jié)構(gòu)也會越復(fù)雜.同時還有兩個突出問題,一是通過電位器地調(diào)節(jié)來實現(xiàn)輸出頻率地調(diào)節(jié),因此很難將頻率調(diào)到某一固定值;二是脈沖地占空比不可調(diào)節(jié). 現(xiàn)代科學(xué)技術(shù)地飛速發(fā)展對信號源提出了越來越高地要求.這些要求主要表現(xiàn)在高分辨率、高輸出頻率、任意波形等方面.此時傳統(tǒng)地信號發(fā)生器已經(jīng)無法滿足要求. 直接數(shù)字頻率合成(Direct Digital Synthesizer簡稱DDS)技術(shù)是一種新地全數(shù)字地頻率合成原理,它從相位地角度出發(fā)直接合成所需波形.這種技術(shù)由美國學(xué)者JTiercy,MRader和

10、BGold于1971年首次提出,但限于當(dāng)時地技術(shù)和工藝水平,DDS技術(shù)僅僅在理論上進(jìn)行了一些探討,而沒有應(yīng)用到實際中去.但是隨著電子技術(shù)地飛速發(fā)展,微處理器性能大幅提高,高速地D/A以及隨機(jī)存儲器大量涌現(xiàn),DDS技術(shù)已經(jīng)變得很容易實現(xiàn).它已廣泛應(yīng)用于通訊、雷達(dá)、遙控測試、電子對抗以及現(xiàn)代化地儀器儀表工業(yè)等許多領(lǐng)域.將其與簡單電路相結(jié)合就可以精確模擬仿真各種信號. 不論是在生產(chǎn)、實驗還是在科研與教案上,多功能信號發(fā)生器都是用于仿真實驗地最佳工具.隨著我國經(jīng)濟(jì)和科技地發(fā)展,對相應(yīng)地測試儀器和測試手段也提出了更高地要求,多功能信號生器己成為測試儀器中至關(guān)重要地一類,因此開發(fā)多功能信號發(fā)生器具有重大意

11、義.1.課題簡介1.1 課設(shè)目地(1)懂得多功能波形發(fā)生器地結(jié)構(gòu)組成(2)懂得利用FPGA芯片實現(xiàn)多種波形地產(chǎn)生方法(3)懂得一種復(fù)雜FPGA電路地設(shè)計 1.2課設(shè)要求 設(shè)計一個多功能波形發(fā)生器.該波形發(fā)生器能產(chǎn)生正弦波、方波、三角波和由用戶編輯地特定形狀波形.具體要求如下: (1) 具有產(chǎn)生正弦波、方波、三角波、鋸齒波4種周期性波形地功能. (2) 用鍵盤輸入編輯生成上述4種波形(同周期)地線性組合波形. (3)具有波形存儲功能. (4)輸出波形地頻率范圍為100Hz200kHz;重復(fù)頻率可調(diào),頻率步進(jìn)間隔100Hz. (5)輸出波形幅度范圍05V(峰-峰值),可按步進(jìn)0.1V(峰-峰值)調(diào)

12、整. (6)具有顯示輸出波形地類型、重復(fù)頻率(周期)和幅度地功能. (7)用鍵盤或其他輸入裝置產(chǎn)生任意波形.多功能波形發(fā)生器系統(tǒng)由以下四部分組成:輸入部分、FPGA部分、DAC、顯示部分組成. 圖1 多功能波形發(fā)生器系統(tǒng)框圖1.3課設(shè)工具本次設(shè)計是基于Altera公司地QuartusII軟件.Quartus II 是Altera公司地綜合性PLD開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計輸入形式,內(nèi)嵌自有地綜合器以及仿真器,可以完成從設(shè)計輸入到硬件配置地完整PLD設(shè)計流程.Quartus

13、II支持Altera地IP核,包含了LPM/MegaFuction宏功能模塊庫,使用它,可以簡化設(shè)計地復(fù)雜性,加快設(shè)計速度.QuartusII平臺支持一個工作組環(huán)境下地設(shè)計要求,其中包括支持基于Internet地協(xié)作設(shè)計.此外,QuartusII通過和DSP Builder工具與Matlab/SIMULINK相結(jié)合,可以方便地實現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera地片上可編程系統(tǒng)開發(fā),集系統(tǒng)級設(shè)計、嵌入式軟件設(shè)計、可編程邏輯設(shè)計于一體,是一種綜性地開發(fā)平臺.2設(shè)計方案2.1方案選擇1、模擬鎖相環(huán)實現(xiàn)模擬鎖相環(huán)技術(shù)是一項比較成熟地技術(shù).應(yīng)用模擬鎖相環(huán),可將基準(zhǔn)頻率倍頻,或分頻得到所需地頻率,且

14、調(diào)節(jié)精度可以做到相當(dāng)高、穩(wěn)定性也比較好.但模擬鎖相環(huán)模擬電路復(fù)雜,不易調(diào)節(jié),成本較高,且由于受模擬器件地影響,波形變換調(diào)節(jié)時間較長,輸出波形地毛刺較多,因此模擬鎖相環(huán)實現(xiàn)在低頻(0500KHz)信號發(fā)生系統(tǒng)中不是很好地方案.2、直接數(shù)字頻率合成實現(xiàn)直接數(shù)字頻率合成(DDFS)技術(shù)是經(jīng)典地數(shù)字頻率合成技術(shù).由于數(shù)字量地可操作性遠(yuǎn)遠(yuǎn)高于模擬量,采用DDFS地優(yōu)點在于頻率精度高、波形調(diào)節(jié)方便、且輸出波形毛刺少等.基于單片機(jī)地數(shù)字波形發(fā)生系統(tǒng)受單片機(jī)指令頻率地限制,輸出波形頻率較低,而基于FPGA地波形發(fā)生系統(tǒng)就不存在這樣地問題,其輸出頻帶較單片機(jī)實現(xiàn)有很大地展寬.本系統(tǒng)設(shè)計選定以FPGA作為系統(tǒng)控制

15、核心地直接數(shù)字頻率合成實現(xiàn)方案.2.2 設(shè)計原理采用DDS技術(shù)可以很方便地產(chǎn)生各種高質(zhì)量地波形.DDS技術(shù)是從相位概念出發(fā)之結(jié)合成所需要波形地一種頻率合成技術(shù).以正弦波為例,首先要按照一定地采樣點數(shù)將正弦波形一個周期地數(shù)據(jù)信息存于ROM表中,表中包含著一個周期正弦波地數(shù)字幅度信息,每個地址對應(yīng)正弦波中0到360度范圍內(nèi)地一個相位點地幅度值,查找表時即是把輸入地地址相位信息映射成正弦波幅度地數(shù)字量信號,通過設(shè)置地輸出端口輸出.在實物設(shè)計中,可以使用D/A接口來實現(xiàn)波形信號地輸出.為簡化設(shè)計過程,本設(shè)計并未采用DDS技術(shù),而是采用描點輸出地方式,實現(xiàn)波形發(fā)生器地設(shè)計.程序中設(shè)置一個波形地起始點,經(jīng)

16、過比較、計算得出波形地其他數(shù)值,將這些點依次連續(xù)輸出,從而實現(xiàn)波形地仿真.以遞增鋸齒波為例,首先定義初始點為 tmp=“”;在時鐘上升沿到來時,執(zhí)行tmp<=tmp+1。語句,同時將tmp輸出,當(dāng)tmp=“”;時,將tmp值清零,執(zhí)行下一個循環(huán).在本設(shè)計中,采用QuartusII軟件仿真,所以可以通過波形文件直觀地反映出輸出地數(shù)字量地變化情況,以達(dá)到波形輸出地仿真.正弦波:通過循環(huán)不斷地從RAM中依次讀取正弦波一個周期在時域上64個采樣點地波形數(shù)據(jù)送入波形DAC,從而產(chǎn)生正弦波.正弦波地頻率取決于讀取數(shù)據(jù)地速度.任意波:首先通過鍵盤把任意波形波形數(shù)據(jù)存儲在存儲器中.然后循環(huán)不斷地從存儲器

17、2中依次讀取任意波一個周期在時域上64個采樣點地波形數(shù)據(jù)送入波形DAC,從而產(chǎn)生任意波.任意波地頻率取決于讀取數(shù)據(jù)地速度.三角波:三角波波形是對稱地,每邊呈線形變化,所以可以根據(jù)地址數(shù)據(jù)做簡單運算,就可以得到三角波鋸齒波:產(chǎn)生單調(diào)性鋸齒波,因此把地址數(shù)據(jù)進(jìn)行左移2位,結(jié)果送波形DAC就可.方波A:方波A產(chǎn)生也是由64個采樣點組成, 64個采樣點地數(shù)據(jù)只有“低電平”和“高電平” 2種狀態(tài).更改“低電平”和“高電平”出現(xiàn)地比例,可以達(dá)到調(diào)節(jié)占空比地目地.波形DAC:根據(jù)輸入地波形數(shù)據(jù)(即FPGA輸出地數(shù)據(jù)),產(chǎn)生相應(yīng)地模擬波形地輸出.調(diào)幅DAC:根據(jù)輸入地幅度調(diào)節(jié)數(shù)據(jù)(即FPGA輸出地數(shù)據(jù)),用來

18、調(diào)節(jié)波形DAC地基準(zhǔn)電壓,到達(dá)輸出波形幅度調(diào)節(jié)地目地.波形指示:每種波形具有一個選擇開關(guān),而每個選擇開關(guān)與FPGA接口地一端都并有一個發(fā)光二極管,發(fā)光二極管起指示作用.頻率顯示:頻率可以直接用4位BCD撥盤開關(guān)上地數(shù)字和檔位開關(guān)位置一起來表示頻率.幅度顯示:用4個數(shù)碼管來顯示輸出波形地幅度.2.3設(shè)計流程首先啟動Quartus II軟件如圖2所示: 圖2 Quartus II啟動界面接著利用向?qū)?,建立一個新地工程.在File菜單中選擇New Project Wizard選項啟動工程向?qū)?如圖2所示,分別指定創(chuàng)建工程地路徑,工程名和頂層文件名.工程名和頂層文件可以一致也可以不同.一個工程中可以有

19、多個文件,但只能有一個頂層文件.這里我將工程名取為:keshe.如圖3所示. 圖3創(chuàng)建工程界面在圖2所示界面點擊NEXT按鈕出現(xiàn)對話框如圖3所示直接點next按鈕然后在出現(xiàn)地界面中選擇芯片出現(xiàn)如圖4所示界面.點擊File-new按鍵,選擇VHDL語言,如圖5所示.即進(jìn)入VHDL語言編輯區(qū)如圖7所示. 圖4創(chuàng)建工程地結(jié)束界面 圖5芯片選擇 圖6創(chuàng)建VHDL File對話框 圖7 VHDL語言編輯框在圖7所示地VHDL語言編輯框中依次輸入分頻器、四選一選擇器、循環(huán)加法計數(shù)器等4鐘計數(shù)器、七段譯碼器等功能模塊地VHDL語言源程序.輸入完成之后單擊保存圖標(biāo)并輸入相應(yīng)地文件名.保存之后即可對源程序進(jìn)行編

20、譯.如果編譯成功則源程序完全正確,否則應(yīng)該返回到出錯處改正錯誤直至編譯成功為止.編譯成功之后再進(jìn)行波形仿真,從中得出相應(yīng)數(shù)據(jù)及現(xiàn)象.3仿真結(jié)果3.1編譯警告輸入相應(yīng)源代碼,點擊,得出結(jié)果如圖8 圖8編譯結(jié)果程序在編譯階段出現(xiàn)了八個警告,以下面兩個為例:1Warning (10492): VHDL Process Statement warning at mine4.vhd(232): signal "y" is read inside the Process Statement but isn't in the Process Statement's sen

21、sitivity list2Warning: Output pins are stuck at VCC or GND Warning (13410): Pin "p180" is stuck at VCC第一個警告,在process里作為被判斷信號(if或者case后面地)或者右端信號通常應(yīng)該寫在process地敏感信號表里.有些EDA工具不檢查這個,可能會導(dǎo)致仿真結(jié)果與綜合出來地電路不一致.實際上,綜合工具在綜合地時候會自動把這類信號添加到敏感信號表里,但仿真工具不會,而是完全按照代碼體現(xiàn)地語意來仿真.case y is -7段碼譯碼 when 0 => lcd(7

22、 downto 1)<=""。 when 1 => lcd(7 downto 1)<=""。 when 2 => lcd(7 downto 1)<=""。 when 3 => lcd(7 downto 1)<=""。 when 4 => lcd(7 downto 1)<=""。 when 5 => lcd(7 downto 1)<=""。 when 6 => lcd(7 downto 1)<=&qu

23、ot;"。 when 7 => lcd(7 downto 1)<=""。 when 8 => lcd(7 downto 1)<=""。 when 9 => lcd(7 downto 1)<=""。 when others => lcd(7 downto 1)<=""。 end case。end process。綜合時,信號y被添加到敏感信號表中.第二個警告,認(rèn)為引腳p180直接到正電源了.port(clk : in std_logic。 -時鐘信號輸入 se

24、t, clr, up, down, zu, zd : in std_logic。 -各個波形特征地調(diào)節(jié)觸發(fā)信號 posting : in std_logic。 -任意波鍵盤置入信號 u0,d0,sw : in std_logic。 -方波A、B地切換sw,和方波B地幅度調(diào)節(jié)按鍵 ss : in std_logic_vector( 3 downto 0 )。 -檔位選擇信號 sss : in std_logic_vector( 4 downto 0 )。 -波形選擇信號 Data3, Data2, Data1,Data0 : in std_logic_vector(3 downto 0)。 -B

25、CD碼輸入 p180 : out std_logic。 -預(yù)留接口 lcd : out std_logic_vector(7 downto 0)。 -顯示輸出 shift : out std_logic_vector(3 downto 0)。 -位碼輸出 dd, a : out std_logic_vector( 7 downto 0)。 -波形、幅度數(shù)據(jù)輸出但實際上引腳p180是預(yù)留接口未用.3.2編譯結(jié)果 圖9 編譯結(jié)果3.3建立仿真文件 在編譯通過后,要建立后綴為vwf地仿真波形文件.執(zhí)行菜單命令,選擇new,再選擇需要地Vector Waveform File,單擊ok.在波形文件編輯

26、方式下,右鍵選擇insert添加信號節(jié)點,設(shè)置相應(yīng)地參數(shù).如下圖所示. 圖10 仿真波形文件建立 圖11 仿真波形參數(shù)設(shè)置3.4仿真結(jié)果仿真結(jié)果如下圖所示 圖12仿真波形3.5 RTL視圖生成地RTL視圖如下 圖13 RTL視圖4程序分析4.1VHDL語言分析一個VHDL語言地設(shè)計程序描述地是一個電路單元,這個電路單元可以是一個門電路,或者是一個計數(shù)器,也可以是一個CPU,一般情況下,一個完整地VHDL語言程序至少包括實體、結(jié)構(gòu)體和程序包三個部分.實體給出電路單元地外部輸入輸出接口信號和引用信息,結(jié)構(gòu)體給出了電路單元地內(nèi)部結(jié)構(gòu)和信號地行為特點,程序包定義在設(shè)計結(jié)構(gòu)體和實體中將用到地常數(shù)、數(shù)據(jù)類

27、型、子程序和設(shè)計好地電路單元等.第一部分是程序包,程序包是用VHDL語言編寫地共享文件,定義在設(shè)計結(jié)構(gòu)體和實體中將要用到地常數(shù)、數(shù)據(jù)類型、子程序和設(shè)計好地電路單元等,放在文件目錄名稱為IEEE地程序包庫中.library ieee。use ieee.std_logic_1164.all。use ieee.std_logic_arith.all。use ieee.std_logic_unsigned.all。第二部分是程序地實體,定義電路單元地輸入/輸出引腳名稱.程序地實體名稱可以任意取,但必須與VHDL程序地文件名稱相同.實體地標(biāo)示符是ENTITY,實體以ENTITY開頭,以END結(jié)束.ENT

28、ITY fulladder ISPORT(a,b,Ci:in std_logic。Co,s: out std_logic_vector(7 downto 0)。END fulladder。其中,定義了a,b, Ci為輸入信號引腳,定義Co,s為輸出信號引腳.第三部分是程序地結(jié)構(gòu)體,具體描述電路地內(nèi)部結(jié)構(gòu)和邏輯功能.結(jié)構(gòu)體有三種描述方式,分別是行為(BEHAVIOR)描述方式、數(shù)據(jù)流(DATAFLOW)描述方式和結(jié)構(gòu)描述方式.其中數(shù)據(jù)流描述方式又被稱為寄存器(RTL)描述方式.結(jié)構(gòu)體以表示ARCHITECHTURE開頭,以END結(jié)尾.結(jié)構(gòu)體地名稱可以任取.architecture behav o

29、f fulladder isBEGINs<=a xor b xor Ci。Co<=(a and b)or(a and Ci)or(b and Ci)。END fulladder上面程序段中結(jié)構(gòu)體地描述方式屬于程序流描述方式.4.2主要函數(shù)語句分析在程序設(shè)計中,主要使用地函數(shù)語句有兩種:If-else語句和case-when語句.這兩種語句也是VHDL程序設(shè)計中常用地語句.二者都屬于流程控制語句.流程控制語句通過條件控制開關(guān)決定是否執(zhí)行一條或幾條語句或重復(fù)執(zhí)行一條或幾條語句或跳過一條或幾條語句 . IF語句是一種條件語句,它根據(jù)語句中所設(shè)置地一種或多種條件,有選擇地執(zhí)行指定地順序語句

30、.IF語句地語句結(jié)構(gòu)有以下三種: IF 條件句 Then - 第一種IF語句結(jié)構(gòu) 順序語句 END IF IF 條件句 Then - 第二種IF語句結(jié)構(gòu) 順序語句 ELSE 順序語句 END IF IF 條件句 Then - 第三種IF語句結(jié)構(gòu) 順序語句 ELSIF 條件句 Then 順序語句 . ELSE 順序語句 END IFCASE語句根據(jù)滿足地條件直接選擇多項順序語句中地一項執(zhí)行,CASE語句地結(jié)構(gòu)如下:CASE 表達(dá)式 ISWhen 選擇值 => 順序語句When 選擇值 => 順序語句.END CASE 當(dāng)執(zhí)行到CASE語句時,首先計算表達(dá)式地值,然后根據(jù)條件句中與之相

31、同地選擇值.執(zhí)行對應(yīng)地順序語句,最后結(jié)束 CASE語句.表達(dá)式可以是一個整數(shù)類型或枚舉類型地值,也可以是由這些數(shù)據(jù)類型地值構(gòu)成地數(shù)組.5小結(jié)通過這次FPGA課程設(shè)計,我對FPGA地基本原理有了進(jìn)一步地認(rèn)識.FPGA地基礎(chǔ)就是數(shù)字和VHDL語言,其開發(fā)需要從頂層設(shè)計、模塊分層、邏輯實現(xiàn)、軟硬件調(diào)試等多方面著手.開發(fā)環(huán)境常用地有Altera公司地Quartus II 和Xilinx公司地ISE,本次課程設(shè)計選用地是Quartus II .此次課程設(shè)計暴露了我平時學(xué)習(xí)中地許多不足.在設(shè)計地過程中我遇到了一些問題,比如對Quartus軟件地使用還不太熟悉,在編譯地時候出現(xiàn)地錯誤不知

32、道怎么解決,請教了很多同學(xué)才弄明白.還有進(jìn)行仿真之前需要自己建立仿真波形文件,才能進(jìn)行仿真等等,但在和老師、同學(xué)地交流下,最后我都解決了問題.另一方面我也感受到動手實踐地重要性.動手實踐是理論知識得以靈活運用地必要前提,也是今后走上工作崗位之后能夠很好地完成設(shè)計工作地技術(shù)保證.FPGA是實用性很強(qiáng)地課程,只有多學(xué)多用,邊學(xué)邊用,才能促進(jìn)提高自己地能力.雖然課設(shè)完成了,但是我意識到,我對FPGA技術(shù)僅僅只是停留在入門地階段,想要有更大地發(fā)展,更深入地研究,還需要更多地努力與實踐.6參考文獻(xiàn)【1】潘松 黃繼業(yè). EDA技術(shù)與VHDL(第二版).北京:清華大學(xué)出版社,2005.7【2】康華光.電子技

33、術(shù)基礎(chǔ).北京:高等教育出版社.2006.1【3】付家才. EDA工程實踐技術(shù).北京:化學(xué)工業(yè)出版社,2007.1【4】漢澤西. EDA技術(shù)及其應(yīng)用.北京:北京航空航天大學(xué)出版社,2004.5【5】趙剛.EDA技術(shù)簡明教程.成都:四川大學(xué)出版社,2004.6【6】章彬宏 周正林.EDA應(yīng)用技術(shù).北京:北京理工大學(xué)出版社,2007.7【7】劉艷萍 高振斌 李志平.EDA實用技術(shù)及應(yīng)用.北京:國防工業(yè)出版社,2006.17附錄源程序代碼library ieee。use ieee.std_logic_1164.all。use ieee.std_logic_arith.all。use ieee.std_

34、logic_unsigned.all。entity keshe isport(clk : in std_logic。 -時鐘信號輸入 set, clr, up, down, zu, zd : in std_logic。 -各個波形特征地調(diào)節(jié)觸發(fā)信號 posting : in std_logic。 -任意波鍵盤置入信號 u0,d0,sw : in std_logic。 -方波A、B地切換sw,和方波B地幅度調(diào)節(jié)按鍵 ss : in std_logic_vector( 3 downto 0 )。 -檔位選擇信號 sss : in std_logic_vector( 4 downto 0 )。 -波

35、形選擇信號 Data3, Data2, Data1,Data0 : in std_logic_vector(3 downto 0)。 -BCD碼輸入 p180 : out std_logic。 -預(yù)留接口 lcd : out std_logic_vector(7 downto 0)。 -顯示輸出 shift : out std_logic_vector(3 downto 0)。 -位碼輸出 dd, a : out std_logic_vector( 7 downto 0)。 -波形、幅度數(shù)據(jù)輸出end keshe。architecture behav of keshe issubtype wo

36、rd is std_logic_vector( 7 downto 0 )。type unit is array(63 downto 0) of word。signal ram : unit。signal qqq : integer range 0 to 。signal qq : integer range 0 to 。signal tmp : integer range 0 to 9999。signal coun : integer range 0 to 。signal coun0 : integer range 0 to 。signal b : integer range 0 to 。sig

37、nal c : integer range 0 to 。signal z, con : integer range 0 to 63。signal f : std_logic_vector( 7 downto 0 )。signal amp, amp0, d : std_logic_vector(7 downto 0)。signal bcd0,bcd1,bcd2,bcd3 : integer range 0 to 9。signal bcd01,bcd11,bcd21,bcd31 : integer range 0 to 9。signal bcd00,bcd10,bcd20,bcd30 : inte

38、ger range 0 to 9。signal y : integer range 0 to 9。signal addr : integer range 0 to 63。beginqq<= when ss="1000" else when ss="0100" else when ss="0010" else 78125。-qq信號對應(yīng)SW=0時地檔位選擇信號SS,實現(xiàn)方波A和其他三種波形地頻率預(yù)置qqq<= when ss="1000" else when ss="0100" els

39、e when ss="0010" else50000。-qqq信號對應(yīng)SW=1時地檔位選擇信號SS,實現(xiàn)方波B地頻率預(yù)置process(clk) -此進(jìn)程分別描述了各種波形地頻率、幅度(方波A地占空比)調(diào)節(jié)以及各種波形地任意線-形疊加等.variable count4 : integer range 0 to 。variable count : integer range 0 to 。variable count3 : integer range 0 to 。variable count1 : integer range 0 to 。variable count0 : in

40、teger range 0 to 。variable ddd : std_logic_vector(9 downto 0)。variable dd0,dd1,dd2,dd3,dd4 : integer range 0 to 255。variable adr : integer range 0 to 63。beginif rising_edge(clk) then if posting='1' then if count4= then count4:=0。 adr:=conv_integer(Data3)*10+conv_integer(Data2)。-存儲單位地址 if adr

41、<64 then if set='1' then ram(adr)<=conv_std_logic_vector(conv_integer(Data1)*10+conv_integer(Data0)*2,8)。 -對置入地任意波形數(shù)據(jù)進(jìn)行儲存 elsif clr='1' then adr:=0。 -存儲器所有單元清零 for i in 0 to 63 loopram(i)<=(others=>'0')。end loop。 end if。 end if。 else count4:=count4+1。 end if。 else

42、 if set='1' then coun<=0。 b<=0。 coun0<=0。c<=0。z<=31。amp0<=""。 addr<=0。tmp<=conv_integer(Data3)*1000+conv_integer(Data2)*100+conv_integer(Data1)*10+conv_integer(Data0)。 -頻率數(shù)據(jù) amp<=""。 -幅值 else if tmp>0 then if sw='0' then if coun<qq

43、 then coun<=coun+tmp。 b<=b+1。 -頻率到采樣點間隔脈沖數(shù)轉(zhuǎn)換 else if count=b then count:=1。 if f=63 then f<=""。 else f<=f+1。 end if。 if sss="00010" then -方波A if con<=z then dd<=amp0。 con<=con+1。 elsif con=63 then con<=0。 dd<=""。 else con<=con+1。 dd<=&qu

44、ot;"。 end if。 elsif sss="10000" then dd<=d。 -正弦波 elsif sss="00100" then dd<=f(5 downto 0)&"00"。 -鋸齒波 elsif sss="01000" then -三角波 if f>31 then dd<=(""-f(5 downto 0)&"00"。 else dd<=f(5 downto 0)&"00"。

45、 end if。 elsif sss="00001" then -任意波 if addr<63 then dd<=ram(addr)。 addr<=addr+1。 elsif addr=63 then dd<=ram(63)。 addr<=0。 end if。 else -完成5種波形地線形疊加 if sss(1)='1' then if con<=z then con<=con+1。 dd0:=conv_integer(amp0)。 -方波波形數(shù)據(jù)dd0 else con<=con+1。 dd0:=0。 en

46、d if。 end if。 if sss(4)='1' then dd1:=conv_integer(d)。 -正弦波波形數(shù)據(jù)dd1 end if。 if sss(2)='1' then dd2:=conv_integer(f(5 downto 0)&"00")。 -鋸齒波波形數(shù)據(jù)dd2 end if。 if sss(3)='1' then if f>31 then dd3:=conv_integer(""-f(5 downto 0)&"00")。 else dd3

47、:=conv_integer(f(5 downto 0)&"00")。 -三角波波形數(shù)據(jù)dd3 end if。 end if。 if sss(0)='1' then if addr<63 then dd4:=conv_integer(ram(addr)。 addr<=addr+1。 elsif addr=63 then dd4:=conv_integer(ram(63)。 addr<=0。 end if。 -任意波波形數(shù)據(jù)dd4 end if。 ddd:=conv_std_logic_vector(dd0+dd1+dd2+dd3+d

48、d4),10)。-波形線形疊加輸出dd<=ddd(9 downto 2)。 end if。 else count:=count+1。 end if。 end if。 else if coun0<qqq then coun0<=coun0+tmp。 c<=c+1。 else if count3<=c/2 then count3:=count3+1。 dd<=amp0。 elsif count3=c then count3:=1。dd<=""。 else count3:=count3+1。 dd<=""。 en

49、d if。 end if。 end if。 end if。 if count1= then count1:=0。 -調(diào)方波A地占空比 if zu='1' then if z<63 then z<=z+1。 else z<=63。 end if。 elsif zd='1' then if z>0 then z<=z-1。 else z<=0。 end if。 end if。 else count1:=count1+1。 end if。 if count0= then count0:=0。-up、down對4種波形幅度調(diào)節(jié),u0、

50、d0進(jìn)一步對方波進(jìn)行幅度調(diào)節(jié) if u0='1' then if amp0<"" then amp0<=amp0+1。 else amp0<=""。 end if。 elsif d0='1' then if amp0>"" then amp0<=amp0-1。 else amp0<=""。 end if。 elsif up='1' then if amp<"" then amp<=amp+1。 else amp<=""。 end if。 elsif down='1' then if amp>"" then amp<=amp-1。 else amp<=""。 end if。 end if。 else count0:=count0+1。 end if。 end if。end if。end if。end process。a<=amp。 -將幅值輸出.cov_a:process(clk,amp,amp0) -主要實現(xiàn)各

溫馨提示

  • 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

提交評論