




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上課 程 設(shè) 計(jì)題 目多功能波形發(fā)生器地設(shè)計(jì)學(xué) 院信息工程學(xué)院專 業(yè)班 級(jí)姓 名指導(dǎo)教師年月日摘要 多功能信號(hào)發(fā)生器已成為現(xiàn)代測(cè)試領(lǐng)域應(yīng)用最為廣泛地通用儀器之一,代表了信號(hào)源地發(fā)展方向.直接數(shù)字頻率合成(DDS)是二十世紀(jì)七十年代初提出地一種全數(shù)字地頻率合成技術(shù),其查表合成波形地方法可以滿足產(chǎn)生任意波形地要求.由于現(xiàn)場(chǎng)可編程門陣列(FPGA)具有高集成度、高速度、可實(shí)現(xiàn)大容量存儲(chǔ)器功能地特性,能有效地實(shí)現(xiàn)DDS技術(shù),極大地提高函數(shù)發(fā)生器地性能,降低生產(chǎn)成本. 本文首先介紹了函數(shù)信號(hào)發(fā)生器地研究背景和DDS地理論.然后詳盡地?cái)⑹隽死肰HDL語言描述DDS模塊地設(shè)計(jì)過程,
2、以及設(shè)計(jì)過程中應(yīng)注意地問題.文中詳細(xì)地介紹了多種信號(hào)地發(fā)生理論、實(shí)現(xiàn)方法、實(shí)現(xiàn)過程、部分VHDL代碼以及利用Quartus仿真地結(jié)果. 文中還介紹了Altera公司地DE2多媒體開發(fā)平臺(tái)地部分功能及使用,并最終利用DE2平臺(tái)完成了多功能信號(hào)發(fā)生器地大部分功能.包括由LCD顯示和按鍵輸入構(gòu)成地人機(jī)界面和多種信號(hào)地發(fā)生.數(shù)字模擬轉(zhuǎn)換器是BURR-BROWN公司生產(chǎn)地DAC902.該信號(hào)發(fā)生器能輸出8種不同地信號(hào),并且能對(duì)輸出信號(hào)地頻率、相位以及調(diào)制信號(hà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è)計(jì)信號(hào)發(fā)生器又稱信號(hào)源或振蕩器,在生產(chǎn)實(shí)踐和科技領(lǐng)域中有著廣泛地應(yīng)用.它
8、能夠產(chǎn)生多種波形,如三角波、鋸齒波、矩形波(含方波)、正弦波等,在電路實(shí)驗(yàn)和設(shè)備檢測(cè)中具有十分廣泛地用途.例如在通信、廣播、電視系統(tǒng)中,都需要射頻(高頻)發(fā)射,這里地射頻波就是載波,把音頻(低頻)、視頻信號(hào)或脈沖信號(hào)運(yùn)載出去,就需要能夠產(chǎn)生高頻地振蕩器.在工業(yè)、農(nóng)業(yè)、生物醫(yī)學(xué)等領(lǐng)域內(nèi),如高頻感應(yīng)加熱、熔煉、淬火、超聲診斷、核磁共振成像等,都需要功率或大或小、頻率或高或低地信號(hào)發(fā)生器. 傳統(tǒng)地信號(hào)發(fā)生器主要有兩類:正弦波和脈沖波信號(hào)發(fā)生器,而函數(shù)發(fā)生器介于兩類之間.它能夠提供正弦波、鋸齒波、方波、三角波等幾種常用標(biāo)準(zhǔn)波形,產(chǎn)生其它波形時(shí),需要采用較復(fù)雜地電路和機(jī)電結(jié)合地方法.這個(gè)時(shí)期地波形發(fā)生器
9、多采用模擬電子技術(shù),但是模擬器件構(gòu)成地電路存在著尺寸大、價(jià)格貴、功耗大等缺點(diǎn).而且要產(chǎn)生地信號(hào)波形越復(fù)雜,則電路結(jié)構(gòu)也會(huì)越復(fù)雜.同時(shí)還有兩個(gè)突出問題,一是通過電位器地調(diào)節(jié)來實(shí)現(xiàn)輸出頻率地調(diào)節(jié),因此很難將頻率調(diào)到某一固定值;二是脈沖地占空比不可調(diào)節(jié). 現(xiàn)代科學(xué)技術(shù)地飛速發(fā)展對(duì)信號(hào)源提出了越來越高地要求.這些要求主要表現(xiàn)在高分辨率、高輸出頻率、任意波形等方面.此時(shí)傳統(tǒng)地信號(hào)發(fā)生器已經(jīng)無法滿足要求. 直接數(shù)字頻率合成(Direct Digital Synthesizer簡(jiǎn)稱DDS)技術(shù)是一種新地全數(shù)字地頻率合成原理,它從相位地角度出發(fā)直接合成所需波形.這種技術(shù)由美國(guó)學(xué)者JTiercy,MRader和
10、BGold于1971年首次提出,但限于當(dāng)時(shí)地技術(shù)和工藝水平,DDS技術(shù)僅僅在理論上進(jìn)行了一些探討,而沒有應(yīng)用到實(shí)際中去.但是隨著電子技術(shù)地飛速發(fā)展,微處理器性能大幅提高,高速地D/A以及隨機(jī)存儲(chǔ)器大量涌現(xiàn),DDS技術(shù)已經(jīng)變得很容易實(shí)現(xiàn).它已廣泛應(yīng)用于通訊、雷達(dá)、遙控測(cè)試、電子對(duì)抗以及現(xiàn)代化地儀器儀表工業(yè)等許多領(lǐng)域.將其與簡(jiǎn)單電路相結(jié)合就可以精確模擬仿真各種信號(hào). 不論是在生產(chǎn)、實(shí)驗(yàn)還是在科研與教案上,多功能信號(hào)發(fā)生器都是用于仿真實(shí)驗(yàn)地最佳工具.隨著我國(guó)經(jīng)濟(jì)和科技地發(fā)展,對(duì)相應(yīng)地測(cè)試儀器和測(cè)試手段也提出了更高地要求,多功能信號(hào)生器己成為測(cè)試儀器中至關(guān)重要地一類,因此開發(fā)多功能信號(hào)發(fā)生器具有重大意
11、義.1.課題簡(jiǎn)介1.1 課設(shè)目地(1)懂得多功能波形發(fā)生器地結(jié)構(gòu)組成(2)懂得利用FPGA芯片實(shí)現(xiàn)多種波形地產(chǎn)生方法(3)懂得一種復(fù)雜FPGA電路地設(shè)計(jì) 1.2課設(shè)要求 設(shè)計(jì)一個(gè)多功能波形發(fā)生器.該波形發(fā)生器能產(chǎn)生正弦波、方波、三角波和由用戶編輯地特定形狀波形.具體要求如下: (1) 具有產(chǎn)生正弦波、方波、三角波、鋸齒波4種周期性波形地功能. (2) 用鍵盤輸入編輯生成上述4種波形(同周期)地線性組合波形. (3)具有波形存儲(chǔ)功能. (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è)計(jì)是基于Altera公司地QuartusII軟件.Quartus II 是Altera公司地綜合性PLD開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有地綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置地完整PLD設(shè)計(jì)流程.Quartus
13、II支持Altera地IP核,包含了LPM/MegaFuction宏功能模塊庫,使用它,可以簡(jiǎn)化設(shè)計(jì)地復(fù)雜性,加快設(shè)計(jì)速度.QuartusII平臺(tái)支持一個(gè)工作組環(huán)境下地設(shè)計(jì)要求,其中包括支持基于Internet地協(xié)作設(shè)計(jì).此外,QuartusII通過和DSP Builder工具與Matlab/SIMULINK相結(jié)合,可以方便地實(shí)現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera地片上可編程系統(tǒng)開發(fā),集系統(tǒng)級(jí)設(shè)計(jì)、嵌入式軟件設(shè)計(jì)、可編程邏輯設(shè)計(jì)于一體,是一種綜性地開發(fā)平臺(tái).2設(shè)計(jì)方案2.1方案選擇1、模擬鎖相環(huán)實(shí)現(xiàn)模擬鎖相環(huán)技術(shù)是一項(xiàng)比較成熟地技術(shù).應(yīng)用模擬鎖相環(huán),可將基準(zhǔn)頻率倍頻,或分頻得到所需地頻率,且
14、調(diào)節(jié)精度可以做到相當(dāng)高、穩(wěn)定性也比較好.但模擬鎖相環(huán)模擬電路復(fù)雜,不易調(diào)節(jié),成本較高,且由于受模擬器件地影響,波形變換調(diào)節(jié)時(shí)間較長(zhǎng),輸出波形地毛刺較多,因此模擬鎖相環(huán)實(shí)現(xiàn)在低頻(0500KHz)信號(hào)發(fā)生系統(tǒng)中不是很好地方案.2、直接數(shù)字頻率合成實(shí)現(xiàn)直接數(shù)字頻率合成(DDFS)技術(shù)是經(jīng)典地?cái)?shù)字頻率合成技術(shù).由于數(shù)字量地可操作性遠(yuǎn)遠(yuǎn)高于模擬量,采用DDFS地優(yōu)點(diǎn)在于頻率精度高、波形調(diào)節(jié)方便、且輸出波形毛刺少等.基于單片機(jī)地?cái)?shù)字波形發(fā)生系統(tǒng)受單片機(jī)指令頻率地限制,輸出波形頻率較低,而基于FPGA地波形發(fā)生系統(tǒng)就不存在這樣地問題,其輸出頻帶較單片機(jī)實(shí)現(xiàn)有很大地展寬.本系統(tǒng)設(shè)計(jì)選定以FPGA作為系統(tǒng)控制
15、核心地直接數(shù)字頻率合成實(shí)現(xiàn)方案.2.2 設(shè)計(jì)原理采用DDS技術(shù)可以很方便地產(chǎn)生各種高質(zhì)量地波形.DDS技術(shù)是從相位概念出發(fā)之結(jié)合成所需要波形地一種頻率合成技術(shù).以正弦波為例,首先要按照一定地采樣點(diǎn)數(shù)將正弦波形一個(gè)周期地?cái)?shù)據(jù)信息存于ROM表中,表中包含著一個(gè)周期正弦波地?cái)?shù)字幅度信息,每個(gè)地址對(duì)應(yīng)正弦波中0到360度范圍內(nèi)地一個(gè)相位點(diǎn)地幅度值,查找表時(shí)即是把輸入地地址相位信息映射成正弦波幅度地?cái)?shù)字量信號(hào),通過設(shè)置地輸出端口輸出.在實(shí)物設(shè)計(jì)中,可以使用D/A接口來實(shí)現(xiàn)波形信號(hào)地輸出.為簡(jiǎn)化設(shè)計(jì)過程,本設(shè)計(jì)并未采用DDS技術(shù),而是采用描點(diǎn)輸出地方式,實(shí)現(xiàn)波形發(fā)生器地設(shè)計(jì).程序中設(shè)置一個(gè)波形地起始點(diǎn),經(jīng)
16、過比較、計(jì)算得出波形地其他數(shù)值,將這些點(diǎn)依次連續(xù)輸出,從而實(shí)現(xiàn)波形地仿真.以遞增鋸齒波為例,首先定義初始點(diǎn)為 tmp=“”;在時(shí)鐘上升沿到來時(shí),執(zhí)行tmp<=tmp+1。語句,同時(shí)將tmp輸出,當(dāng)tmp=“”;時(shí),將tmp值清零,執(zhí)行下一個(gè)循環(huán).在本設(shè)計(jì)中,采用QuartusII軟件仿真,所以可以通過波形文件直觀地反映出輸出地?cái)?shù)字量地變化情況,以達(dá)到波形輸出地仿真.正弦波:通過循環(huán)不斷地從RAM中依次讀取正弦波一個(gè)周期在時(shí)域上64個(gè)采樣點(diǎn)地波形數(shù)據(jù)送入波形DAC,從而產(chǎn)生正弦波.正弦波地頻率取決于讀取數(shù)據(jù)地速度.任意波:首先通過鍵盤把任意波形波形數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器中.然后循環(huán)不斷地從存儲(chǔ)器
17、2中依次讀取任意波一個(gè)周期在時(shí)域上64個(gè)采樣點(diǎn)地波形數(shù)據(jù)送入波形DAC,從而產(chǎn)生任意波.任意波地頻率取決于讀取數(shù)據(jù)地速度.三角波:三角波波形是對(duì)稱地,每邊呈線形變化,所以可以根據(jù)地址數(shù)據(jù)做簡(jiǎn)單運(yùn)算,就可以得到三角波鋸齒波:產(chǎn)生單調(diào)性鋸齒波,因此把地址數(shù)據(jù)進(jìn)行左移2位,結(jié)果送波形DAC就可.方波A:方波A產(chǎn)生也是由64個(gè)采樣點(diǎn)組成, 64個(gè)采樣點(diǎn)地?cái)?shù)據(jù)只有“低電平”和“高電平” 2種狀態(tài).更改“低電平”和“高電平”出現(xiàn)地比例,可以達(dá)到調(diào)節(jié)占空比地目地.波形DAC:根據(jù)輸入地波形數(shù)據(jù)(即FPGA輸出地?cái)?shù)據(jù)),產(chǎn)生相應(yīng)地模擬波形地輸出.調(diào)幅DAC:根據(jù)輸入地幅度調(diào)節(jié)數(shù)據(jù)(即FPGA輸出地?cái)?shù)據(jù)),用來
18、調(diào)節(jié)波形DAC地基準(zhǔn)電壓,到達(dá)輸出波形幅度調(diào)節(jié)地目地.波形指示:每種波形具有一個(gè)選擇開關(guān),而每個(gè)選擇開關(guān)與FPGA接口地一端都并有一個(gè)發(fā)光二極管,發(fā)光二極管起指示作用.頻率顯示:頻率可以直接用4位BCD撥盤開關(guān)上地?cái)?shù)字和檔位開關(guān)位置一起來表示頻率.幅度顯示:用4個(gè)數(shù)碼管來顯示輸出波形地幅度.2.3設(shè)計(jì)流程首先啟動(dòng)Quartus II軟件如圖2所示: 圖2 Quartus II啟動(dòng)界面接著利用向?qū)?,建立一個(gè)新地工程.在File菜單中選擇New Project Wizard選項(xiàng)啟動(dòng)工程向?qū)?如圖2所示,分別指定創(chuàng)建工程地路徑,工程名和頂層文件名.工程名和頂層文件可以一致也可以不同.一個(gè)工程中可以有
19、多個(gè)文件,但只能有一個(gè)頂層文件.這里我將工程名取為:keshe.如圖3所示. 圖3創(chuàng)建工程界面在圖2所示界面點(diǎn)擊NEXT按鈕出現(xiàn)對(duì)話框如圖3所示直接點(diǎn)next按鈕然后在出現(xiàn)地界面中選擇芯片出現(xiàn)如圖4所示界面.點(diǎn)擊File-new按鍵,選擇VHDL語言,如圖5所示.即進(jìn)入VHDL語言編輯區(qū)如圖7所示. 圖4創(chuàng)建工程地結(jié)束界面 圖5芯片選擇 圖6創(chuàng)建VHDL File對(duì)話框 圖7 VHDL語言編輯框在圖7所示地VHDL語言編輯框中依次輸入分頻器、四選一選擇器、循環(huán)加法計(jì)數(shù)器等4鐘計(jì)數(shù)器、七段譯碼器等功能模塊地VHDL語言源程序.輸入完成之后單擊保存圖標(biāo)并輸入相應(yīng)地文件名.保存之后即可對(duì)源程序進(jìn)行編
20、譯.如果編譯成功則源程序完全正確,否則應(yīng)該返回到出錯(cuò)處改正錯(cuò)誤直至編譯成功為止.編譯成功之后再進(jìn)行波形仿真,從中得出相應(yīng)數(shù)據(jù)及現(xiàn)象.3仿真結(jié)果3.1編譯警告輸入相應(yīng)源代碼,點(diǎn)擊,得出結(jié)果如圖8 圖8編譯結(jié)果程序在編譯階段出現(xiàn)了八個(gè)警告,以下面兩個(gè)為例: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第一個(gè)警告,在process里作為被判斷信號(hào)(if或者case后面地)或者右端信號(hào)通常應(yīng)該寫在process地敏感信號(hào)表里.有些EDA工具不檢查這個(gè),可能會(huì)導(dǎo)致仿真結(jié)果與綜合出來地電路不一致.實(shí)際上,綜合工具在綜合地時(shí)候會(huì)自動(dòng)把這類信號(hào)添加到敏感信號(hào)表里,但仿真工具不會(huì),而是完全按照代碼體現(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。綜合時(shí),信號(hào)y被添加到敏感信號(hào)表中.第二個(gè)警告,認(rèn)為引腳p180直接到正電源了.port(clk : in std_logic。 -時(shí)鐘信號(hào)輸入 se
24、t, clr, up, down, zu, zd : in std_logic。 -各個(gè)波形特征地調(diào)節(jié)觸發(fā)信號(hào) posting : in std_logic。 -任意波鍵盤置入信號(hào) u0,d0,sw : in std_logic。 -方波A、B地切換sw,和方波B地幅度調(diào)節(jié)按鍵 ss : in std_logic_vector( 3 downto 0 )。 -檔位選擇信號(hào) sss : in std_logic_vector( 4 downto 0 )。 -波形選擇信號(hào) 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ù)輸出但實(shí)際上引腳p180是預(yù)留接口未用.3.2編譯結(jié)果 圖9 編譯結(jié)果3.3建立仿真文件 在編譯通過后,要建立后綴為vwf地仿真波形文件.執(zhí)行菜單命令,選擇new,再選擇需要地Vector Waveform File,單擊ok.在波形文件編輯
26、方式下,右鍵選擇insert添加信號(hào)節(jié)點(diǎn),設(shè)置相應(yīng)地參數(shù).如下圖所示. 圖10 仿真波形文件建立 圖11 仿真波形參數(shù)設(shè)置3.4仿真結(jié)果仿真結(jié)果如下圖所示 圖12仿真波形3.5 RTL視圖生成地RTL視圖如下 圖13 RTL視圖4程序分析4.1VHDL語言分析一個(gè)VHDL語言地設(shè)計(jì)程序描述地是一個(gè)電路單元,這個(gè)電路單元可以是一個(gè)門電路,或者是一個(gè)計(jì)數(shù)器,也可以是一個(gè)CPU,一般情況下,一個(gè)完整地VHDL語言程序至少包括實(shí)體、結(jié)構(gòu)體和程序包三個(gè)部分.實(shí)體給出電路單元地外部輸入輸出接口信號(hào)和引用信息,結(jié)構(gòu)體給出了電路單元地內(nèi)部結(jié)構(gòu)和信號(hào)地行為特點(diǎn),程序包定義在設(shè)計(jì)結(jié)構(gòu)體和實(shí)體中將用到地常數(shù)、數(shù)據(jù)類
27、型、子程序和設(shè)計(jì)好地電路單元等.第一部分是程序包,程序包是用VHDL語言編寫地共享文件,定義在設(shè)計(jì)結(jié)構(gòu)體和實(shí)體中將要用到地常數(shù)、數(shù)據(jù)類型、子程序和設(shè)計(jì)好地電路單元等,放在文件目錄名稱為IEEE地程序包庫中.library ieee。use ieee.std_logic_1164.all。use ieee.std_logic_arith.all。use ieee.std_logic_unsigned.all。第二部分是程序地實(shí)體,定義電路單元地輸入/輸出引腳名稱.程序地實(shí)體名稱可以任意取,但必須與VHDL程序地文件名稱相同.實(shí)體地標(biāo)示符是ENTITY,實(shí)體以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為輸入信號(hào)引腳,定義Co,s為輸出信號(hào)引腳.第三部分是程序地結(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è)計(jì)中,主要使用地函數(shù)語句有兩種:If-else語句和case-when語句.這兩種語句也是VHDL程序設(shè)計(jì)中常用地語句.二者都屬于流程控制語句.流程控制語句通過條件控制開關(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ù)滿足地條件直接選擇多項(xiàng)順序語句中地一項(xiàng)執(zhí)行,CASE語句地結(jié)構(gòu)如下:CASE 表達(dá)式 ISWhen 選擇值 => 順序語句When 選擇值 => 順序語句.END CASE 當(dāng)執(zhí)行到CASE語句時(shí),首先計(jì)算表達(dá)式地值,然后根據(jù)條件句中與之相
31、同地選擇值.執(zhí)行對(duì)應(yīng)地順序語句,最后結(jié)束 CASE語句.表達(dá)式可以是一個(gè)整數(shù)類型或枚舉類型地值,也可以是由這些數(shù)據(jù)類型地值構(gòu)成地?cái)?shù)組.5小結(jié)通過這次FPGA課程設(shè)計(jì),我對(duì)FPGA地基本原理有了進(jìn)一步地認(rèn)識(shí).FPGA地基礎(chǔ)就是數(shù)字和VHDL語言,其開發(fā)需要從頂層設(shè)計(jì)、模塊分層、邏輯實(shí)現(xiàn)、軟硬件調(diào)試等多方面著手.開發(fā)環(huán)境常用地有Altera公司地Quartus II 和Xilinx公司地ISE,本次課程設(shè)計(jì)選用地是Quartus II .此次課程設(shè)計(jì)暴露了我平時(shí)學(xué)習(xí)中地許多不足.在設(shè)計(jì)地過程中我遇到了一些問題,比如對(duì)Quartus軟件地使用還不太熟悉,在編譯地時(shí)候出現(xiàn)地錯(cuò)誤不知
32、道怎么解決,請(qǐng)教了很多同學(xué)才弄明白.還有進(jìn)行仿真之前需要自己建立仿真波形文件,才能進(jìn)行仿真等等,但在和老師、同學(xué)地交流下,最后我都解決了問題.另一方面我也感受到動(dòng)手實(shí)踐地重要性.動(dòng)手實(shí)踐是理論知識(shí)得以靈活運(yùn)用地必要前提,也是今后走上工作崗位之后能夠很好地完成設(shè)計(jì)工作地技術(shù)保證.FPGA是實(shí)用性很強(qiáng)地課程,只有多學(xué)多用,邊學(xué)邊用,才能促進(jìn)提高自己地能力.雖然課設(shè)完成了,但是我意識(shí)到,我對(duì)FPGA技術(shù)僅僅只是停留在入門地階段,想要有更大地發(fā)展,更深入地研究,還需要更多地努力與實(shí)踐.6參考文獻(xiàn)【1】潘松 黃繼業(yè). EDA技術(shù)與VHDL(第二版).北京:清華大學(xué)出版社,2005.7【2】康華光.電子技
33、術(shù)基礎(chǔ).北京:高等教育出版社.2006.1【3】付家才. EDA工程實(shí)踐技術(shù).北京:化學(xué)工業(yè)出版社,2007.1【4】漢澤西. EDA技術(shù)及其應(yīng)用.北京:北京航空航天大學(xué)出版社,2004.5【5】趙剛.EDA技術(shù)簡(jiǎn)明教程.成都:四川大學(xué)出版社,2004.6【6】章彬宏 周正林.EDA應(yīng)用技術(shù).北京:北京理工大學(xué)出版社,2007.7【7】劉艷萍 高振斌 李志平.EDA實(shí)用技術(shù)及應(yīng)用.北京:國(guó)防工業(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。 -時(shí)鐘信號(hào)輸入 set, clr, up, down, zu, zd : in std_logic。 -各個(gè)波形特征地調(diào)節(jié)觸發(fā)信號(hào) posting : in std_logic。 -任意波鍵盤置入信號(hào) u0,d0,sw : in std_logic。 -方波A、B地切換sw,和方波B地幅度調(diào)節(jié)按鍵 ss : in std_logic_vector( 3 downto 0 )。 -檔位選擇信號(hào) sss : in std_logic_vector( 4 downto 0 )。 -波
35、形選擇信號(hào) 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信號(hào)對(duì)應(yīng)SW=0時(shí)地檔位選擇信號(hào)SS,實(shí)現(xiàn)方波A和其他三種波形地頻率預(yù)置qqq<= when ss="1000" else when ss="0100" els
39、e when ss="0010" else50000。-qqq信號(hào)對(duì)應(yīng)SW=1時(shí)地檔位選擇信號(hào)SS,實(shí)現(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)。-存儲(chǔ)單位地址 if adr
41、<64 then if set='1' then ram(adr)<=conv_std_logic_vector(conv_integer(Data1)*10+conv_integer(Data0)*2,8)。 -對(duì)置入地任意波形數(shù)據(jù)進(jìn)行儲(chǔ)存 elsif clr='1' then adr:=0。 -存儲(chǔ)器所有單元清零 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。 -頻率到采樣點(diǎn)間隔脈沖數(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對(duì)4種波形幅度調(diào)節(jié),u0、
50、d0進(jìn)一步對(duì)方波進(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) -主要實(shí)現(xiàn)各
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廠房股權(quán)轉(zhuǎn)讓與新能源產(chǎn)業(yè)合作開發(fā)合同
- 商業(yè)地產(chǎn)項(xiàng)目場(chǎng)地標(biāo)準(zhǔn)租賃協(xié)議
- 鄰居砸墻協(xié)議書范本
- 果園采摘園承包與果樹修剪技術(shù)服務(wù)合同
- 風(fēng)險(xiǎn)防范叉車操作工勞動(dòng)合同
- 高端餐飲企業(yè)員工勞動(dòng)合同范本(含績(jī)效考核)
- 分公司投資建設(shè)與產(chǎn)業(yè)園區(qū)合作協(xié)議
- 中醫(yī)情志與健康的關(guān)系
- AI教育智適應(yīng)系統(tǒng)應(yīng)用與發(fā)展
- 珍愛生命健康成長(zhǎng)幼兒園
- 2022年版初中物理課程標(biāo)準(zhǔn)解讀-課件
- 2024年建筑業(yè)10項(xiàng)新技術(shù)
- MOOC 大學(xué)物理實(shí)驗(yàn)-鄭州大學(xué) 中國(guó)大學(xué)慕課答案
- 術(shù)后病人燙傷不良事件PDCA循環(huán)分析課件
- 配電設(shè)備運(yùn)行、維護(hù)、巡回檢查制度范本
- 2024年上海外服招聘筆試參考題庫附帶答案詳解
- 工業(yè)安全教學(xué)課件
- 骨科手術(shù)后的康復(fù)輔助器具和輔助裝置
- 新員工企業(yè)文化培訓(xùn)
- 2024年江西吉安市城投公司招聘筆試參考題庫含答案解析
- 農(nóng)產(chǎn)品安全生產(chǎn)技術(shù)
評(píng)論
0/150
提交評(píng)論