信號發(fā)生器的FPGA實現(xiàn)(畢業(yè)設(shè)計)_第1頁
信號發(fā)生器的FPGA實現(xiàn)(畢業(yè)設(shè)計)_第2頁
信號發(fā)生器的FPGA實現(xiàn)(畢業(yè)設(shè)計)_第3頁
信號發(fā)生器的FPGA實現(xiàn)(畢業(yè)設(shè)計)_第4頁
信號發(fā)生器的FPGA實現(xiàn)(畢業(yè)設(shè)計)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

./目錄TOC\o"1-3"\u摘要IAbstractII第1章緒論11.1信號發(fā)生器的研究意義與內(nèi)容11.2信號發(fā)生器的發(fā)展現(xiàn)狀和前景展望11.3信號發(fā)生器的總體設(shè)計思路3第2章設(shè)計簡介42.1FPGA簡介42.2VHDL硬件描述語言介紹62.3QuartusII軟件介紹82.4RLT級仿真9第3章系統(tǒng)硬件電路設(shè)計103.1信號發(fā)生器的系統(tǒng)組成103.2設(shè)計原理113.3輸入部分123.3D/A數(shù)模轉(zhuǎn)換部分14第4章系統(tǒng)的軟件設(shè)計164.1系統(tǒng)軟件流程圖164.2系統(tǒng)各模塊164.2.1三角波產(chǎn)生模塊164.2.2遞減斜坡產(chǎn)生模塊19遞增斜坡產(chǎn)生模塊214.2.4方波產(chǎn)生模塊234.2.5階梯波產(chǎn)生模塊254.2.6正弦波產(chǎn)生模塊274.2.7自定義波形產(chǎn)生模塊324.2.8波形選擇器產(chǎn)生模塊354.2.9頻率調(diào)節(jié)器產(chǎn)生模塊374.2.10主控制器產(chǎn)生模塊394.3引腳鎖定43第5章信號發(fā)生器的仿真455.1遞增斜坡的仿真結(jié)果與分析455.2遞減斜坡的仿真結(jié)果與分析455.3三角波的仿真結(jié)果與分析465.4正弦波的仿真結(jié)果與分析475.5方波的仿真結(jié)果與分析475.6階梯波的仿真結(jié)果與分析485.6自定義波形的仿真結(jié)果與分析48結(jié)束語49參考文獻(xiàn)50致謝51.信號發(fā)生器的FPGA實現(xiàn)摘要:信號發(fā)生器在各種實驗和測試中是必不可少的器件,同時在生產(chǎn)和科技領(lǐng)域中有著廣泛的運(yùn)用,例如在通信、控制、雷達(dá)、教學(xué)、軍事等領(lǐng)域。本次設(shè)計的內(nèi)容是信號發(fā)生器的FPGA實現(xiàn),要求用EAD技術(shù)設(shè)計一個信號發(fā)生器,此信號發(fā)生器的實現(xiàn)是利用EDA的硬件描述語言VHDL產(chǎn)生各個模塊,然后在Altera公司提供的FPGA/CPLD開發(fā)集成環(huán)境的QuartusII軟件上實現(xiàn)波形的編譯、仿真、下載到Cyclone芯片上。信號發(fā)生器由波形產(chǎn)生模塊、頻率調(diào)節(jié)模塊和波形選擇模塊組成,波形產(chǎn)生模塊可以產(chǎn)生三角波、正弦波、方波、階梯波、遞增斜坡、遞減斜坡、自定義波形等,通過波形選擇模塊和頻率調(diào)節(jié)模塊可以選擇自己所需要的波形和調(diào)節(jié)一定的頻率。關(guān)鍵字:信號發(fā)生器;FPGA;EDA;VHDL;QuartusFPGAimplementationofsignalgeneratorAbstract:Thesignalgeneratorisaessentialdeviceinvariousexperimentsandtests,atthesametime,itwidelyusedintheproductionandtechnologyfield,suchascommunications,controlling,radar,teaching,militaryandotherfields.Thecontentofthisdesignisthesignalgenerator’simplementationofFPGA,itrequiredtodesignasignalgeneratorwithEADtechnology,whichusedEDA’shardwaredescriptionlanguageVHDLtoproduceeachmodules,andthenachievedthecompilation,simulationanddownloadsofthewaveformtotheCyclonechipbyusingQuartusIIsoftwareontheintegrateddevelopmentenvironmentofFPGA/CPLDwhichprovidedbycompanyAltera.Thesignalgeneratorcontainsthewaveformgeneratormodule,frequencyadjustmentmoduleandwaveformselectionmodule.Thewaveformgeneratormodulecanproducetriangularwave,sinewave,squarewave,staircase,ascendingslope,descendingramp,customwaveforms,etc.,andthewaveformselectionmoduleandthefrequencyadjustmentmodulecanselectthewaveformintheirneedsandadjustthecertainfrequency.Keywords:SignalGenerator;FPGA;EDA;VHDL;Quartus.緒論信號發(fā)生器的研究意義與內(nèi)容信號發(fā)生器在系統(tǒng)檢測和調(diào)試、自動測量和控制、教學(xué)實驗和測試中是必不可少的一種基本的電子設(shè)備,它廣泛的應(yīng)用于通信工程、自動測控、雷達(dá)、電子設(shè)備以與現(xiàn)代化儀器儀表等多個領(lǐng)域,它可以產(chǎn)生正弦波、遞增斜坡、遞減斜坡、三角波、鋸齒波、方波等多種波形。信號發(fā)生器為電子測量工作提供了符合要求的精確的輸入電信號和示波器等,幾乎涉與電參量測量的都要用到信號發(fā)生器。同時信號發(fā)生器是一種能夠提供各種頻率、波形以與輸出電平的電信號,經(jīng)常用來作為測試的信號源或者激勵源的設(shè)備。綜上所述,不論是在生產(chǎn)實踐還是在科研與教育上,信號發(fā)生器都是電子工程師和電氣工程師等信號仿真試驗的最佳工具。隨著我國經(jīng)濟(jì)和科技的迅速發(fā)展和進(jìn)步,對相應(yīng)的測量儀器也有了更高的要求,信號發(fā)生器已經(jīng)不斷成為測量儀器中必不可少的一類,所以對信號發(fā)生器的研究具有重大意義。信號發(fā)生器的研究內(nèi)容是利用EDA技術(shù)實現(xiàn)信號的產(chǎn)生,EDA技術(shù)作為現(xiàn)代電子設(shè)計技術(shù)的核心,它依賴功能強(qiáng)大的計算機(jī),在EDA工具軟件平臺上,對以硬件描述語言HDL為系統(tǒng)邏輯描述手段完成的設(shè)計文件,自動地完成邏輯化簡、邏輯分割、邏輯綜合、結(jié)構(gòu)綜合,以與邏輯優(yōu)化和仿真測試等項功能,直至實現(xiàn)既定性能的電子線路系統(tǒng)功能。EDA技術(shù)使得設(shè)計者的工作幾乎僅限于利用軟件的方式,即利用硬件描述語言HDL和EDA軟件來完成對系統(tǒng)硬件功能的實現(xiàn)。EDA技術(shù)在硬件實現(xiàn)方面融合了大規(guī)模集成電路制造技術(shù)、IC版圖設(shè)計技術(shù)、ASIC測試和封裝技術(shù)、FPGA和CPLD編程下載技術(shù)、自動測試技術(shù)等,在計算機(jī)輔助工程方面融合了計算機(jī)輔助設(shè)計〔CAD〕、計算機(jī)輔助制造<CAM>、計算機(jī)輔助測試<CAT>、計算機(jī)輔助工程<CAE>技術(shù)以與多種計算機(jī)語言的設(shè)計概念。FPGA和CPLD是可編程邏輯件它們的特點(diǎn)是直接面向用戶、具有極大的靈活性和通用性,使用方便,硬件測試和實現(xiàn)快捷,開發(fā)效率高,成本低,上市時間短,技術(shù)維護(hù)簡單,工作可靠性好等。信號發(fā)生器的發(fā)展現(xiàn)狀和前景展望信號發(fā)生器是一種最悠久的測量儀器,早在20年代電子設(shè)備剛出現(xiàn)時它就產(chǎn)生了。隨著通訊和雷達(dá)技術(shù)的發(fā)展40年代出現(xiàn)了主要用于測試各種接收機(jī)的標(biāo)準(zhǔn)信號發(fā)生器,使信號發(fā)生器從定性分析的測試儀器發(fā)展成定量分析的測量儀器。同時還出現(xiàn)了可用來測量脈沖電路或用作脈沖調(diào)制器的脈沖信號發(fā)生器。由于早期的信號發(fā)生器機(jī)械結(jié)構(gòu)比較復(fù)雜,功率比較大,電路比較簡單,因此發(fā)展速度比較慢。直到1964年才出現(xiàn)第一臺全晶體管的信號發(fā)生。從六十年代開始,信號發(fā)生器有了快速的發(fā)展,逐漸出現(xiàn)了函數(shù)信號發(fā)生器,在這個時期的信號發(fā)生器以采用模擬電子技術(shù)為主,它是由模擬集成電路或者分立元件構(gòu)成,它的電路結(jié)構(gòu)尤其的復(fù)雜,并且它只能夠產(chǎn)生三角波、正弦波、矩形波和鋸齒波等幾種簡單基本的波形;因為模擬電路結(jié)構(gòu)的漂移比較大,使得它的輸出波形的弧度穩(wěn)定性較差,而且它的電路存在著尺寸大、功耗大和價格貴等缺點(diǎn),如果要產(chǎn)生復(fù)雜的信號波形,那么它的電路結(jié)構(gòu)尤其的復(fù)雜。七十年代出現(xiàn)微處理器以后,利用微處理器、D/A和A/D轉(zhuǎn)換器、硬件和軟件組成的信號發(fā)生器具有強(qiáng)大的功能和能夠產(chǎn)生復(fù)雜的波形。這個時期的信號發(fā)生器主要以軟件為主,它的實質(zhì)是采用微處理器對DAC的程序進(jìn)行控制,就可以得到簡單的波形。然而軟件控制波形有一個最大的缺點(diǎn)就是它的輸出波形頻率低,這是由于CPU的工作速度決定輸出波形的頻率,如果想要提高波形的頻率可以通過改進(jìn)軟件的程序來減少它的執(zhí)行周期,或者提CPU的工作時鐘周期。但是這些方法都是有限的不能完全解決,根本的辦法還是要對硬件電路進(jìn)行改進(jìn)。隨著計算機(jī)和信號處理技術(shù)的不斷發(fā)展,數(shù)字化技術(shù)在電子測量儀器中的應(yīng)用也得到了極大的促進(jìn),使得原有的模擬信號處理慢慢的被數(shù)字信號處理替代,從而不斷擴(kuò)充了信號儀器的處理能力,提高了信號測量的精度和準(zhǔn)確度以與變換速度,克服了模擬信號處理的缺點(diǎn),數(shù)字信號發(fā)生器也隨之逐漸發(fā)展起來。現(xiàn)在信號發(fā)生器的應(yīng)用是非常寬闊的,種類也很多。信號發(fā)生器可以分為通用和專用的兩大類發(fā)生器,專用的信號發(fā)生器主要是為了測量某些特殊值而研發(fā)的,例如電視信號和脈沖編碼信號發(fā)生器等。如果按其產(chǎn)生的頻率方法來分類可以分為諧振法和合成法兩類。一般的傳統(tǒng)信號發(fā)生器就是采用諧振法來產(chǎn)生的,即利用具有頻率選擇性的回路產(chǎn)生正弦振蕩的發(fā)生器來獲得所需要的頻率。如今電子測量技術(shù)對于信號發(fā)生器的頻率精確度和穩(wěn)定度的要求越來越苛刻,要求在較寬的頻率X圍之內(nèi)可以獲得較高頻率穩(wěn)定度和精確度的輸出信號。對于作為一種精密測量的信號發(fā)生器,它的頻率準(zhǔn)確度一般要達(dá)到QUOTE。所以傳統(tǒng)的信號發(fā)生器已經(jīng)不能滿足現(xiàn)代電子測量的要求。然而,合成的信號發(fā)生器具有頻率穩(wěn)定度高,它的頻率準(zhǔn)確度可以達(dá)到或者更高的水平。它可以輸出多種波形,具有廣泛和精確的輸出電平調(diào)整,同時具有較寬的頻率X圍和更小的輸出頻率間隔,所以應(yīng)用前景十分的廣闊。信號發(fā)生器的總體設(shè)計思路信號發(fā)生器的實現(xiàn)方法有很多種,包括利用數(shù)字電路小規(guī)模多器件組合、單片機(jī)、以與基于FPGA的實現(xiàn)方法。本設(shè)計采用FPGA芯片實現(xiàn),與用其他方法相比,FPGA不僅可以輸出用戶所需要的任意波形,而且還可以通過改變信號發(fā)生器和計算機(jī)的通信接口來拓展信號端口的地址空間,可以增加數(shù)據(jù)的位數(shù)和提高頻率分辨率的精度,以與可以增加信號發(fā)生器的輸出波形種類等的特性。而且它具有高速的傳輸速率和可靠性高的現(xiàn)場可編程,同時它能夠降低成本和系統(tǒng)工作穩(wěn)定可靠等優(yōu)點(diǎn)。信號發(fā)生器是由信號產(chǎn)生模塊、信號控制模塊和D/A轉(zhuǎn)換器模塊組成,整個系統(tǒng)是以FPGA為核心,加上必要的外圍電路來組成。FPGA主要是用來進(jìn)行初值和時鐘分頻等,外圍電路主要有波形的選擇和頻率的控制以與數(shù)據(jù)轉(zhuǎn)換電路,完成波形的顯示信息以與控制波形數(shù)據(jù)的輸出等功能。通過不同的選擇波形輸出后,經(jīng)過數(shù)碼轉(zhuǎn)換,將一個數(shù)字信號的波形轉(zhuǎn)換為一個模擬信號的波形。本次設(shè)計利用的軟件是QuartusII9.1來進(jìn)行編程和時序仿真,以與產(chǎn)生RTL和各模塊的結(jié)構(gòu)框圖。第2章設(shè)計簡介2.1FPGA簡介目前電子產(chǎn)品已滲透到幾乎所有的消費(fèi)領(lǐng)域,針對不同的市場產(chǎn)品需求,器件的專用性越來越強(qiáng),而產(chǎn)品的升級換代速率快使專用器件的使用周期不斷縮短。半導(dǎo)體產(chǎn)業(yè)界為降低器件制造成本,希望采用標(biāo)準(zhǔn)化技術(shù)生產(chǎn)通用器件,因而推出了超大規(guī)模通用可編程邏輯器件〔ProgrammableLogicDevice,PLD〕,以便改變市場需求的專用化和器件功能標(biāo)準(zhǔn)化的突出矛盾。PLD的內(nèi)部資源結(jié)構(gòu)主要分為陣列型和單元型,互連線方式分為集總型和分布型,編程信息存儲主要依賴EEMOS或RAM,每個存儲單元載入編程配置數(shù)據(jù)中的一位。根據(jù)可編程邏輯器件的邏輯資源結(jié)構(gòu)、編程工藝和互連方式的不同,可編程器件一般可分為復(fù)雜的可編程器件〔ComplexProgrammableLogicDevice,CPLD〕和現(xiàn)場可編程門陳列〔FieldProgrammaableGateArray,FPGA〕。CPLD的基本結(jié)構(gòu)一般基于含可編程與—或陣列和觸發(fā)器的宏邏輯塊〔LogicArrayBlock,LAB〕。每個宏邏輯塊具有數(shù)十個的輸入端口和十幾個輸出端口,邏輯塊與邏輯塊之間的互連方式一般采用集總連線方式,通過集中在一個全局布線區(qū)PIA的可編程互連線結(jié)構(gòu)組成更大規(guī)模的PLD。集總型互連方式的連線資源采用長度確定的金屬線串聯(lián)各邏輯單元。由于各邏輯塊間的信號傳遞路徑固定,與布局無關(guān),系統(tǒng)的信號延遲時間可預(yù)測。CPLD具有強(qiáng)大的時序控制能力,它很適合用來實現(xiàn)控制密集型的數(shù)字電路系統(tǒng)。CPLD的I/O端口可以連接到任何端口控制的邏輯塊。CPLD的邏輯資源密度較相同芯片面積的FPGA低,配置采用在系統(tǒng)可編程技術(shù),從電可擦除只讀存儲器保存編程數(shù)據(jù),芯片的配置數(shù)據(jù)將不會斷電失效。FPGA是20世紀(jì)80年代中期出現(xiàn)的可編程邏輯器件。FPGA和CPLD兩者都是可編程邏輯器件,它們都是在PAL、GAL等邏輯器件的基礎(chǔ)之上迅速發(fā)展起來的,與以前的PAL、GAL等可編輯邏輯器件相比,FPGA和CPLD不僅規(guī)模更大而且可以替代幾十甚至幾千塊通用的IC芯片。這類FPGA和CPLD實際上就是一個字系統(tǒng)部件,受到廣大的電子工程編輯者的關(guān)注和歡迎。經(jīng)過幾十年的不斷發(fā)展,各個公司相繼開發(fā)了多種PLD。比較典型的就是Xilinx公司的FPGA和Altera公司的CPLD器件系列,他們的起步比較早,占領(lǐng)了較大的PLD市場。FPGA以基于查找表結(jié)構(gòu)的可編程邏輯元構(gòu)成龐大的陣列,每個邏輯元的規(guī)模不大,輸入端不足十個,輸出僅1-2個??删幊痰倪B線分布在邏輯元之間的布線區(qū)。分布型連線方式的連線資源是分段的,利用長度不同的金屬線沿傳輸路徑連接邏輯元。片內(nèi)互連方式靈活,可人為干預(yù),但信號路徑與系統(tǒng)布局有關(guān),布線延時是累加的,不可以預(yù)測。FPGA的集成度更高,資源更豐富,適于實現(xiàn)運(yùn)算能力較強(qiáng)的數(shù)據(jù)密集型數(shù)字系統(tǒng)。FPGA內(nèi)部配置的陣列一般是采用在電路可重構(gòu)技術(shù)上編輯數(shù)據(jù),然后由靜態(tài)存儲器進(jìn)行保存。當(dāng)FPGA器件突然失電的時候,靜態(tài)存儲器中的配置數(shù)據(jù)也會隨之消失。FPGA是具有掩??删庉嬮T陣列的通用可編程結(jié)構(gòu),它是由邏輯功能塊排成陣列并且由可編程的互連資源連接到這些邏輯功能塊來實現(xiàn)不同的設(shè)計。FPGA一般由3種可編程電路和一個用于存放編程數(shù)據(jù)的靜態(tài)存儲器SRAM組成。這3種可編程電路是:可編程邏輯塊〔ConfigurableLogicBlock,CLB〕、輸入/輸出模塊<I/OBlock,IOB>和互連資源〔InterconnectResource,IR〕。〔1〕可編程邏輯塊CLDCLB是FPGA的主要組成部分,是實現(xiàn)邏輯功能的基本單元,主要由邏輯函數(shù)發(fā)生器、觸發(fā)器、數(shù)據(jù)選擇器和變換電路等組成。CLB通常規(guī)則地排列成一個陣列,散布于整個芯片之中?!?〕輸入/輸出模塊IOB輸入/輸出模塊IOB主要由輸入觸發(fā)器、輸入緩沖器和輸出觸發(fā)/鎖存器、輸出緩沖器組成。每個IOB控制一個引腳,可配置為輸入、輸出或雙向I/O功能?!?〕可編程互連資源IR可編程互連資源IR包括各種長度的連線和一些可編程連接開關(guān),它們將各CLB、各IOB以與CLB與IOB連接起來,構(gòu)成特定功能的電路。基于EDA軟件的CPLD/FPGA設(shè)計流程如圖2-1。原理圖原理圖/HDL文本編輯綜合FPGA/CPLD配置FPGA/CPLD編程下載時序與功能門級仿真FPGA/CPLD器件和電路系統(tǒng)圖2-1應(yīng)用于FPGA/CPLD的EDA設(shè)計流程2.2VHDL硬件描述語言介紹在EDA技術(shù)中最重要的組成部分是硬件描述語言HDL,目前常用的HDL主要是VHDL、VerilogHDL、SystemVerilog和SystemC。其中VHDL、VerilogHDL語言在現(xiàn)在EDA設(shè)計中時最常使用的,也得到了大部分的主流EDA工具的支持。而SystemVerilog和SystemC這兩種硬件描述語言現(xiàn)在還處于待完善的過程中,主要是為了加強(qiáng)了系統(tǒng)驗證方面的功能。VHDL已經(jīng)是電子設(shè)計主流硬件的描述語言之一。VHDL的英文全名是VHSIC<VeryHighSpeedIntegratedCircuit>HardwareDescriptionLanguage,與1983年由美國國防部〔DOD〕發(fā)起創(chuàng)建,由IEEE〔TheInstituteofElectricalandElectronicsEngineers〕進(jìn)一步發(fā)展并在1987年作為"IEEE標(biāo)準(zhǔn)1076"發(fā)布。VHDL是用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口的主要硬件描述語言,它除了具有許多硬件特征的語句之外,VHDL的語言描述方法和語言的格式以與語法和一般的計算機(jī)高級語言相似。在描述硬件的結(jié)構(gòu)和行為中,VHDL具有如下幾個特點(diǎn):〔1〕VHDL語言不僅支持自頂向下的設(shè)計方法,它同時還能夠支持同步和異步電路、FPGA以與其他隨機(jī)電路的設(shè)計?!?〕VHDL可以在很多種EDA工具環(huán)境中進(jìn)行運(yùn)行,它具有很好的通用性和兼容性?!?〕VHDL語言是可以多層次的描述系統(tǒng)硬件功能,可以從系統(tǒng)的數(shù)模到門級電路,其高層次的行為描述可以和低層次的結(jié)構(gòu)描述、寄存器傳輸級描述進(jìn)行混合使用?!?〕VHDL具有電路仿真和驗證功能,可以保證程序設(shè)計的正確性和有效性,用戶不必要編寫如何測試相量的程序便可以進(jìn)行源代碼級的調(diào)試和仿真,并且編程者可以非常方便地對各種方案進(jìn)行比較,可以確定它的可行性和優(yōu)劣性,不必要做任何實際的電路實驗和操作?!?〕VHDL語言主要是以行為描述為主,它能夠從一個比較抽象的角度來描述一個電子實體的各項功能。并且它的語言使用的是結(jié)構(gòu)化語言,因此也能夠從一個比較具體的角度來描述電子實體的結(jié)構(gòu)。在VHDL程序設(shè)計中有一些經(jīng)常用到的術(shù)語,在進(jìn)行VHDL的程序編寫時,在每個程序的描述中都會用到有一些基礎(chǔ)的VHDL程序構(gòu)造塊。如:〔1〕實體〔Entity〕。實體是硬件描述語言VHDL設(shè)計中最基本的組成部分之一,VHDL表達(dá)的所有設(shè)計都與實體有關(guān)系,是程序設(shè)計中最基本的不可缺少的構(gòu)造塊。〔2〕結(jié)構(gòu)體〔Architecture〕。所有能夠被仿真的實體都必須具有結(jié)構(gòu)體描述語句,結(jié)構(gòu)體語句是用于描述實體的結(jié)構(gòu)或行為的語句?!?〕配置〔Configuration〕,一個配置語句是用來綁定一個元器件到實體的結(jié)構(gòu)體的語句,一個配置可以看成是設(shè)計的一個元件表?!?〕程序包〔Package〕。在VHDL中,常量、變量、信號等數(shù)據(jù)對象和數(shù)據(jù)類型與子程序語句可以在實體說明或結(jié)構(gòu)體說明部分加以說明,且實體說明部分它所定義的常量和數(shù)據(jù)類型與子程序在對應(yīng)的結(jié)構(gòu)體中是可見的?!?〕屬性〔Attribute〕。屬性是描述VHDL實體和結(jié)構(gòu)體、類型以與信號的一些特征,比如數(shù)據(jù)和預(yù)定義數(shù)據(jù)等?!?〕進(jìn)程〔Process〕。進(jìn)程在VHDL中是最具特色的語句,并且是VHDL中執(zhí)行語句的基本單元?!?〕類屬〔Generic〕。一個類屬在VHDL中是用于將信息傳遞給一個實體的參數(shù)。例如。具有上升和下降延遲的門級模型?!?〕信號驅(qū)動器〔Driver〕。這是一個信號的驅(qū)動源。如果一個信號由兩個驅(qū)動源,那么當(dāng)兩個源都有效時,則信號具有兩個驅(qū)動器?!?〕總線〔Bus〕??偩€通常指的是用于硬件設(shè)計中的特定通信方式或一組信號。在VHDL中,一條總線就是一種特定的信號,通??偩€可以關(guān)閉其驅(qū)動器。一個完整的VHDL程序或者說設(shè)計實體,是指能夠為VHDL綜合器所接受,并且能夠作為一個單獨(dú)的設(shè)計單元,即以元件的形式存在于VHDL的程序中。VHDL的設(shè)計實體基本結(jié)構(gòu)如圖2-2。庫、程序包庫、程序包實體〔ENTITY〕配置〔CONFIGURATION〕結(jié)構(gòu)體〔ARCHITECTURE〕進(jìn)程或其他并行結(jié)構(gòu)圖2-2VHDL設(shè)計實體結(jié)構(gòu)圖2.3QuartusII軟件介紹QuartusII是Altera提供的FPGA/CPLD開發(fā)集成環(huán)境,Altera是世界上最大的可編程邏輯器件供應(yīng)商之一。QuartusII在21世紀(jì)初推出,是Altera前一代FPGA/CPLD集成開發(fā)環(huán)境MAX+plusII的更新?lián)Q代產(chǎn)品,其界面友好,使用便捷。Altera為QuartusII設(shè)計軟件提供完整的多平臺設(shè)計環(huán)境,它可以輕易滿足特定設(shè)計的需要。它是單芯片可編程系統(tǒng)設(shè)計的綜合性環(huán)境。QuartusII軟件擁有FPGA和CPLD設(shè)計的所有階段的結(jié)局方案。QuartusII具有以下主要模塊:〔1〕設(shè)計輸入。QuartusII軟件中的工程由所有設(shè)計文件和涉與有關(guān)的設(shè)置組成。用戶可以使用QuartusIIBlockEditor、TextEditor、MegaWizardPlug-InManage和EDA設(shè)計輸入工具建立包括Altera宏功能模塊、參數(shù)化模塊庫〔LPM〕函數(shù)和知識產(chǎn)權(quán)〔IP〕函數(shù)在內(nèi)的設(shè)計?!?〕綜合。可以使用Complier的QuartusIIAnalysis&Synthesis模塊分析設(shè)計文件和建立工程數(shù)據(jù)庫。Analysis&Synthesis使用QuartusIIIntegratedSynthesis綜合VHDL設(shè)計文件〔.vhd〕或Verilog設(shè)計文件〔.v〕。用戶喜歡的話,可以使用其他EDA綜合工具綜合VHDL或VerilogHDL設(shè)計文件,然后再生成可以與QuartusII軟件配合使用的EDIF網(wǎng)表文件〔.edf〕或〔.vqm〕。〔3〕仿真??梢允褂肣uartusII仿真器在工程中仿真任何設(shè)計。視所需的信息類型而定,可以進(jìn)行功能仿真以測試設(shè)計的邏輯運(yùn)算,也可以進(jìn)行時序仿真以在目標(biāo)器件中測試設(shè)計的邏輯運(yùn)算和最差時序。QuartusII軟件可以仿真整個設(shè)計,或仿真設(shè)計的任何部分??梢栽诠こ讨袑⑷魏卧O(shè)計實體指定為仿真焦點(diǎn)。在仿真時,仿真器仿真焦點(diǎn)實體與其所有附屬設(shè)計實體?!?〕布局布線。QuartusIITimingAnalyzer允許用戶分析設(shè)計中所有邏輯的性能,并協(xié)助引導(dǎo)Fitter滿足設(shè)計中的時序分析要求。如圖2-3上排所示的是QuartusII編譯設(shè)計主控界面,它顯示了QuartusII自動設(shè)計的各主要處理環(huán)節(jié)和設(shè)計流程,包括設(shè)計輸入編輯、設(shè)計分析與綜合、適配、編程文件匯編、時序參數(shù)提取以與編程下載幾個步驟。圖2-3下排的流程框圖,是與上面的QuartusII設(shè)計流程相對照的標(biāo)準(zhǔn)的EDA開發(fā)流程。圖形或HDL圖形或HDL編輯分析與綜合適配器編輯文件匯編編程器設(shè)計輸入適配器件仿真下載綜合或編譯時序分析器圖2-3QuartusII設(shè)計流程圖2.4RLT級仿真編寫VHDL代碼編譯檢查VHDL運(yùn)行RTL仿真結(jié)果正確否RLT級仿真是用來驗證RLT級的硬件描述語言VHDL的描述是否正確。設(shè)計者已經(jīng)描述了設(shè)計對象的行為模型。現(xiàn)在的設(shè)計者只要使用表達(dá)式設(shè)計環(huán)境的激勵信號來驅(qū)動設(shè)計,并且進(jìn)行檢驗確認(rèn)結(jié)果是否符合自己的所建的行為模型。一個標(biāo)準(zhǔn)的仿真器可以用來讀取RTLVHDL描述,而且可以驗證設(shè)計的正確性。編寫VHDL代碼編譯檢查VHDL運(yùn)行RTL仿真結(jié)果正確否否否是圖2-4RTL級仿真過程第3章系統(tǒng)硬件電路設(shè)計3.1信號發(fā)生器的系統(tǒng)組成本信號發(fā)生器的系統(tǒng)由輸入部分、FPGA部分、波形轉(zhuǎn)換部分組成。如圖3-1所示。時鐘時鐘復(fù)位波形選擇頻率選擇遞增斜坡遞減斜坡三角波方波正弦波階梯波自定義系統(tǒng)控制器波形輸出波形的D/A轉(zhuǎn)換FPGA部分圖3-1信號發(fā)生器的系統(tǒng)組成3.2設(shè)計原理本設(shè)計是利用FPGA實現(xiàn)信號發(fā)生器,采用的是自頂向下的設(shè)計方法,自頂向下的設(shè)計方法現(xiàn)在已經(jīng)是EDA技術(shù)的主要的設(shè)計方法,是FPGA的主要設(shè)計開發(fā)手段。自頂向下的設(shè)計流程如圖3-2所示?!病?〕設(shè)計說明書〔2〕建立VHDL行為模型〔3〕HDL行為仿真〔4〕HDL-RTL級建?!?〕前端功能仿真〔6〕邏輯綜合〔7〕測試向量生成〔8〕功能仿真〔9〕結(jié)構(gòu)綜合〔10〕門級時序仿真〔11〕硬件測試設(shè)計完成圖3-2自頂向下的設(shè)計流程信號發(fā)生器的FPGA實現(xiàn)是利用硬件描述語言VHDL實現(xiàn)波形的選擇、頻率的控制和波形的產(chǎn)生。波形的產(chǎn)生是通過VHDL語言進(jìn)行編程產(chǎn)生一組波形數(shù)據(jù),然后把程序下載到FPGA上經(jīng)過D/A轉(zhuǎn)換輸出波形。我們利用QuartusII9.1軟件來建立工作庫文件和編輯設(shè)計文件、創(chuàng)建工程、全程編譯、時序仿真,最后完成整個設(shè)計。3.3輸入部分輸入部分主要包括:基準(zhǔn)時鐘、信號復(fù)位、波形選擇、頻率控制基準(zhǔn)時鐘:時鐘的頻率選為100MHz。信號復(fù)位:設(shè)置為低電平有效。波形選擇:通過按鍵可以自由選擇7種波形。頻率控制:通過按鍵可以選擇1KHz-10KHZ、步進(jìn)1KHz的任意頻率。波形的選擇是利用波形控制模塊的內(nèi)部選擇端口與外部的按鍵連接,通過按鍵的控制產(chǎn)生遞增斜坡、遞減斜坡、三角波、正弦波、方波、階梯波和自定義波形,因為只有7種波形,所以設(shè)置7個不同的數(shù)值來選擇波形。例如:按鍵如果輸入的是"001"則輸出遞增斜坡、輸入"010"則輸出遞減斜坡、輸入"011"則輸出三角波、輸入"100"則輸出正弦波、輸入"101"則輸出方波、輸入"110"則輸出階梯波、輸入"111"則輸出自定義波形。頻率的控制也是通過調(diào)頻模塊的內(nèi)部選擇端口與外部的按鍵相連,通過按鍵的選擇可以產(chǎn)生1KHz-10KHz、步進(jìn)1KHz的任意頻率。因為頻率X圍為1KHz-10KHZ、步進(jìn)為1KHz,所以把頻率分為10份,每一份用一個按鍵控制。頻率選擇的計算,因為頻率X圍為1KHz-10KHz、步進(jìn)為1KHz、每個波形的一個周期有256個點(diǎn),每一個點(diǎn)都是當(dāng)基準(zhǔn)時鐘有一個上升沿產(chǎn)生,所以通過分頻可以控制信號的頻率。當(dāng)輸出頻率要求1KHz時,它的周期時間T1=1000μs。基準(zhǔn)時鐘的頻率為100MHz,所以它的周期為T2=10ns。因為一個波形由256個數(shù)據(jù)組成,而每個數(shù)據(jù)都是在基準(zhǔn)時鐘有一個上升沿產(chǎn)生,所以當(dāng)不采用分頻時波形的一個周期為QUOTET3=2560ns=2.56μs。因此調(diào)頻系數(shù)為K=T1/T3=390.625。所以設(shè)置的PK="110000111"。通過頻率調(diào)節(jié)模塊里面的CASE語句,當(dāng)頻率調(diào)節(jié)按鍵SELCON1="0001"時,把"110000111"的值賦給PK,然后輸出的波形就是1KHz了。輸出頻率要求2KHz時:T1=500μsQUOTET3=2560ns=2.56μsK=T1/T3=195.3所以:PK="0011000011"SELCON1="0010"輸出頻率要求3KHz時:T1=330μsQUOTET3=2560ns=2.56μsK=T1/T3=128.9所以:PK="0010000001"SELCON1="0011"輸出頻率要求4KHz時:T1=250μsQUOTET3=2560ns=2.56μsK=T1/T3=97.65所以:PK="0001100010"SELCON1="0100"輸出頻率要求5KHz時:T1=200μsQUOTET3=2560ns=2.56μsQUOTEK=T1/T3=78.125QUOTE所以:PK="0001100010"SELCON1="0101"輸出頻率要求6KHz時:T1=167μsQUOTET3=2560ns=2.56μsQUOTEK=T1/T3=65.2所以:PK="0001000001"SELCON1="0110"輸出頻率要求7KHz時:T1=143μsQUOTET3=2560ns=2.56μsQUOTEK=T1/T3=55.85QUOTE所以:PK="0000111000"SELCON1="0111"輸出頻率要求8KHz時:T1=125μsQUOTET3=2560ns=2.56μsQUOTEK=T1/T3=48.8所以:PK="0000110001"SELCON1="1000"輸出頻率要求9KHz時:T1=111μsQUOTET3=2560ns=2.56μsQUOTEK=T1/T3=43.3所以:PK="0000101011"SELCON1="1001"輸出頻率要求10KHz時:T1=100μsQUOTET3=2560ns=2.56μsQUOTEK=T1/T3=39.06所以:PK="0000100111"SELCON1="1010"3.3D/A數(shù)模轉(zhuǎn)換部分?jǐn)?shù)字信號到模擬信號的轉(zhuǎn)換稱為模數(shù)轉(zhuǎn)換,簡稱D/A轉(zhuǎn)換。能夠現(xiàn)實D/A轉(zhuǎn)換的電路稱為D/A轉(zhuǎn)換器或者DAC。為D/A轉(zhuǎn)換器的結(jié)構(gòu)如圖3-3所示,它是由數(shù)碼鎖存器、電阻網(wǎng)絡(luò)、電子開關(guān)以與求和電路組成。數(shù)碼鎖存器數(shù)碼鎖存器電子開關(guān)電阻網(wǎng)絡(luò)求和電路D0D1模擬輸出Dn-1Vref圖3-3數(shù)模轉(zhuǎn)換電路數(shù)模的轉(zhuǎn)換過程是需要時間的,數(shù)碼鎖存器的作用是把要保存的數(shù)字輸入暫時保存起來,方便進(jìn)行數(shù)模轉(zhuǎn)換。電子開關(guān)具有兩個檔位置,一檔是接基準(zhǔn)電壓Vref,另一個檔接地。電子開關(guān)受到數(shù)碼鎖存器的控制,當(dāng)數(shù)碼鎖存器中的數(shù)字控制字為1時,開關(guān)接基準(zhǔn)電壓Vref,當(dāng)為0的時候接地。電阻網(wǎng)絡(luò)是由不同的阻值電阻構(gòu)成,電阻的一端跟隨開關(guān)的位置分別接與基準(zhǔn)電壓Vref或地。求和電路是把電阻網(wǎng)絡(luò)中的各個電阻上的電流相加起來,然后經(jīng)過一個輸出反饋電阻就可以形成輸出電壓了。8位的數(shù)模轉(zhuǎn)換器DAC0832為典型的D/A芯片。DAC0832的引腳圖如圖3-4所示,它是由8位的DAC寄存器和8位的輸入寄存器、D/A轉(zhuǎn)換器組成。圖3-4DAC0832的引腳圖CS—片選信號。芯片的尋址輸入信號,當(dāng)CS=0時,芯片處于工作狀態(tài),當(dāng)CS=1是,芯片處于禁止?fàn)顟B(tài)而不能工作。ILE—允許鎖存信號。WR1—寫信號1。是輸入寄存器的寫選通信號。WR2—寫信號2。XFER—通道控制信號。數(shù)據(jù)傳送控制信號的輸入線,低電平有效Iout1—模擬電流輸出1。Iout2—模擬電路輸出2。Rfb—反饋電阻引出端。Vref—參考電壓輸入。X圍:+10V—-10V。Vcc—芯片電壓。X圍+5-+15V,最佳15V。AGND—模擬地。DGND—數(shù)字地。DAC0832可以采用雙緩沖器和單緩沖器的兩種方式進(jìn)行工作。采用雙緩沖器進(jìn)行工作時,輸入數(shù)據(jù)寄存器是用于數(shù)據(jù)采集的,DAC寄存器是用于D/A轉(zhuǎn)換的數(shù)據(jù)鎖存。在這種方式下工作,數(shù)模轉(zhuǎn)換的速度較快,但是它的控制電路復(fù)雜。采用單緩沖器的工作方式時,由輸入數(shù)據(jù)寄存器來完成數(shù)據(jù)的采集和數(shù)據(jù)的鎖存,而DAC寄存器僅僅作為一個數(shù)據(jù)通道。在這種方式下工作,數(shù)模轉(zhuǎn)換的速度沒有雙緩沖器方式那么快,但是它的控制電路簡單,所以它是最常用的工作方式。第4章系統(tǒng)的軟件設(shè)計4.1系統(tǒng)軟件流程圖信號發(fā)生器的FPGA實現(xiàn)是以FPGA為核心來控制波形的輸出和頻率的調(diào)節(jié),通過外部按鍵可以自由的選擇所需要的波形和頻率,設(shè)計的具體流程如圖4-1所示。初始化初始化按鍵輸入,選擇所需要的波形和頻率由FPGA生成波形數(shù)據(jù)由QuartusII軟件進(jìn)行仿真輸出波形圖4-1系統(tǒng)流程圖4.2系統(tǒng)各模塊4.2.1三角波產(chǎn)生模塊〔1〕三角波的VHDL的描述利用VHDL語言編程產(chǎn)生一個三角波波形數(shù)據(jù),同時通過調(diào)節(jié)PK可以調(diào)節(jié)三角波形的頻率,波形的前128值從1開始依次遞增到128,后128個點(diǎn)從127依次遞減到0,這樣就形成一個以256個數(shù)值為一個周期的三角波。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;--算符重載函數(shù)ENTITYSIS--三角波實體PORT<CLK:INSTD_LOGIC;--基準(zhǔn)時鐘 REST:INSTD_LOGIC;--信號復(fù)位 PK:INSTD_LOGIC_VECTOR<9DOWNTO0>;--頻率調(diào)節(jié) Q:OUTSTD_LOGIC_VECTOR<7DOWNTO0>>;--信號輸出ENDENTITYS;ARCHITECTUREHAVEOFSIS--三角波結(jié)構(gòu)體SIGNALB:STD_LOGIC_VECTOR<9DOWNTO0>;BEGINPROCESS<CLK,REST>VARIABLETEM:STD_LOGIC_VECTOR<7DOWNTO0>;VARIABLEA:STD_LOGIC;--變量ABEGINIFREST='0'THENQ<="00000000";--低電平復(fù)位ELSIFCLK'EVENTANDCLK='1'THEN--CLK上升沿有效B<=B+1;IFB=PKTHEN--判斷B是否等于分頻系數(shù)B<="0000000000";IFA='0'THENIFTEM="01111111"THEN--前128個依次遞增TEM:="10000000";A:='1';ELSETEM:=TEM+1;ENDIF;ELSEIFTEM="00000001"THEN--后128個依次遞減TEM:="00000000";A:='0';ELSETEM:=TEM-1;ENDIF;ENDIF;ENDIF;ENDIF;Q<=TEM;ENDPROCESS;ENDARCHITECTUREHAVE;〔2〕三角波的RTL電路圖通過選擇QuartusII軟件中的Tools下的NetlistViewers命令中的RTL,可以看到文件綜合之后生成的應(yīng)用RTL電路圖觀察圖。三角波的RTL圖如圖4-2所示。圖4-2三角波的RTL圖〔3〕三角波的結(jié)構(gòu)框圖三角波的結(jié)構(gòu)圖如圖4-3所示,其中PK為頻率的控制輸入端口,CLk為基準(zhǔn)時鐘,REST為復(fù)位鍵,Q為輸出信號。圖4-3三角波結(jié)構(gòu)框圖4.2.2遞減斜坡產(chǎn)生模塊〔1〕利用VHDL語言編程產(chǎn)生一個遞減斜坡,通過PK可以進(jìn)行調(diào)節(jié)波形的頻率,遞減斜坡的波形值是從255開始依次遞減到0,然后再從255依次遞減到0,這樣就形成一個以256個數(shù)值為一個周期的遞減斜坡。LIBRARYIEEE;--遞減斜坡USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;--算符重載函數(shù)ENTITYDJXPIS--遞減斜坡實體PORT<CLK:INSTD_LOGIC;--基準(zhǔn)時鐘REST:INSTD_LOGIC;--信號復(fù)位Q:OUTSTD_LOGIC_VECTOR<7DOWNTO0>;--信號輸出PK:INSTD_LOGIC_VECTOR<9DOWNTO0>>;--頻率調(diào)節(jié)ENDENTITYDJXP;ARCHITECTUREHAVEOFDJXPIS--遞減斜坡結(jié)構(gòu)體SIGNALA:STD_LOGIC_VECTOR<9DOWNTO0>;BEGINPROCESS<CLK,REST>VARIABLETEM:STD_LOGIC_VECTOR<7DOWNTO0>;BEGINIFREST='0'THEN--低電平復(fù)位TEM:="11111111";ELSIFCLK'EVENTANDCLK='1'THEN--CLK上升沿有效A<=A+1;IFA=PKTHEN--判斷A是否等于分頻系數(shù)A<="0000000000";IFTEM="00000000"THEN--判斷TEM是否等于0TEM:="11111111";ELSETEM:=TEM-1;--從255減到0ENDIF;ENDIF;ENDIF;Q<=TEM;ENDPROCESS;ENDARCHITECTUREHAVE;〔2〕遞減斜坡的電路圖通過選擇QuartusII軟件中的Tools下的NetlistViewers命令中的RTL,可以看到文件綜合之后生成的應(yīng)用RTL電路圖觀察圖。遞減斜坡的RTL圖如圖4-4所示。圖4-4遞減斜坡的RTL圖〔3〕遞減斜坡的結(jié)構(gòu)框圖遞減斜坡的結(jié)構(gòu)框圖如圖4-5所示,PK為頻率控制輸入端口,CLk為基準(zhǔn)時鐘,REST為復(fù)位鍵,Q為輸出信號。圖4-5遞減斜坡的結(jié)構(gòu)框圖遞增斜坡產(chǎn)生模塊〔1〕利用VHDL語言編程產(chǎn)生一個遞增斜坡,通過PK可以進(jìn)行調(diào)節(jié)波形的頻率,遞增斜坡的波形值從0開始依次遞增到255,然后再從0依次遞增到255,通過輸出就形成一個遞增斜坡。LIBRARYIEEE;--遞增斜坡USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;--算符重載函數(shù)ENTITYDZXPIS--遞增斜坡的實體PORT<CLK:INSTD_LOGIC;--基準(zhǔn)時鐘 REST:INSTD_LOGIC;--復(fù)位信號 PK:INSTD_LOGIC_VECTOR<9DOWNTO0>;--頻率調(diào)節(jié) Q:OUTSTD_LOGIC_VECTOR<7DOWNTO0>>;--輸出信號ENDENTITYDZXP;ARCHITECTUREHAVEOFDZXPIS--遞增斜坡的結(jié)構(gòu)體SIGNALA:STD_LOGIC_VECTOR<9DOWNTO0>;BEGIN PROCESS<CLK,REST> VARIABLETEM:STD_LOGIC_VECTOR<7DOWNTO0>; BEGIN IFREST='0'THEN--低電平復(fù)位 TEM:="00000000"; ELSIFCLK'EVENTANDCLK='1'THEN--CLK上升沿有效 A<=A+1;IFA=PKTHEN--判斷A是否等于分頻系數(shù)A<="0000000000"; IFTEM="11111111"THEN--判斷變量TEM是否等于255 TEM:="00000000"; ELSE TEM:=TEM+1;--TEM依次遞增 ENDIF; ENDIF; ENDIF;Q<=TEM;ENDPROCESS;ENDARCHITECTUREHAVE;〔2〕遞增斜坡的電路圖通過選擇QuartusII軟件中的Tools下的NetlistViewers命令中的RTL,可以看到文件綜合之后生成的應(yīng)用RTL電路圖觀察圖。遞增斜坡的RTL圖如圖4-6所示。圖4-6遞增斜坡的RTL圖〔3〕遞增斜坡的結(jié)構(gòu)框圖遞增斜坡的結(jié)構(gòu)框圖如圖4-7所示,PK為頻率控制的輸入端口,CLk為基準(zhǔn)時鐘,REST為復(fù)位鍵,Q為輸出信號。圖4-7遞增斜坡的結(jié)構(gòu)框圖4.2.4方波產(chǎn)生模塊〔1〕利用VHDL語言編程產(chǎn)生一個方波,通過PK可以進(jìn)行調(diào)節(jié)波形頻率,方波的波形值前128個是255,后128個是0。通過輸出就形成一個方波。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYFBIS--方波的實體PORT<CLK:INSTD_LOGIC;--基準(zhǔn)時鐘 REST:INSTD_LOGIC;--信號復(fù)位 PK:INSTD_LOGIC_VECTOR<9DOWNTO0>;--頻率調(diào)節(jié) Q:OUTSTD_LOGIC_VECTOR<7DOWNTO0>>;--信號輸出ENDENTITYFB;ARCHITECTUREHAVEOFFBIS--方波的結(jié)構(gòu)體SIGNALA:STD_LOGIC;SIGNALB:STD_LOGIC_VECTOR<9DOWNTO0>;BEGIN PROCESS<CLK,REST>--計算半個周期的進(jìn)程 VARIABLETEM:STD_LOGIC_VECTOR<7DOWNTO0>; BEGINIFREST='0'THEN--低電平復(fù)位A<='0';ELSIFCLK'EVENTANDCLK='1'THEN--CLK上升沿有效B<=B+1;IFB=PKTHEN--判斷B是否等于分頻系數(shù)B<="0000000000";IFTEM="11111111"THEN--判斷變量TEM是否等于255TEM:="00000000";ELSETEM:=TEM+1;ENDIF;IFTEM<="10000000"THEN--半個周期A<='1';ELSEA<='0';ENDIF;ENDIF;ENDIF;ENDPROCESS;PROCESS<CLK,A>--信號的輸出BEGINIFCLK'EVENTANDCLK='1'THENIFA='1'THENQ<="11111111";--前128個為‘1’ELSEQ<="00000000";--后128個為‘0’ENDIF;ENDIF;ENDPROCESS;ENDARCHITECTUREHAVE;〔2〕方波的電路圖通過選擇QuartusII軟件中的Tools下的NetlistViewers命令中的RTL,可以看到文件綜合之后生成的應(yīng)用RTL電路圖觀察圖。方波的RTL圖如圖4-8所示。圖4-8方波的RTL圖〔3〕方波的結(jié)構(gòu)框圖方波的結(jié)構(gòu)框圖如圖4-9所示,PK為頻率控制輸入端口,CLk為基準(zhǔn)時鐘,REST為復(fù)位鍵,Q為輸出信號。圖4-9方波的結(jié)構(gòu)框圖4.2.5階梯波產(chǎn)生模塊〔1〕利用VHDL語言編程產(chǎn)生一個階梯波,利用PK可以進(jìn)行調(diào)節(jié)頻率,階梯波的波形值是從0開始通過信號B的來延遲8個基準(zhǔn)時鐘,然后再每次加8。通過輸出就形成一個與沒有調(diào)頻的256個數(shù)值的波形信號一樣的周期。LIBRARYIEEE;--階梯波USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYJTBIS--階梯波實體PORT<CLK:INSTD_LOGIC;--基準(zhǔn)時鐘 REST:INSTD_LOGIC;--復(fù)位信號 PK:INSTD_LOGIC_VECTOR<9DOWNTO0>;--頻率調(diào)節(jié) Q:OUTSTD_LOGIC_VECTOR<7DOWNTO0>>;--信號輸出END;ARCHITECTUREHAVEOFJTBIS--階梯波結(jié)構(gòu)體SIGNALA:STD_LOGIC_VECTOR<9DOWNTO0>;--分頻信號SIGNALB:STD_LOGIC_VECTOR<3DOWNTO0>;--延遲信號BEGIN PROCESS<CLK,REST> VARIABLETEM:STD_LOGIC_VECTOR<7DOWNTO0>; BEGIN IFREST='0'THEN--低電平復(fù)位 TEM:="00000000"; ELSIFCLK'EVENTANDCLK='1'THEN--上升沿有效 A<=A+1;IFA=PKTHEN--判斷A是否等于分頻系數(shù)A<="0000000000"; IFTEM="11111111"THEN--判斷變量TEM是否等于255 TEM:="00000000"; ELSE B<=B+1; IFB="0111"THEN--判斷B是否延遲了8個基準(zhǔn)時鐘信號 TEM:=TEM+8;B<="0000"; ENDIF;ENDIF; ENDIF; ENDIF; Q<=TEM;ENDPROCESS;END;〔2〕階梯波的電路圖通過選擇QuartusII軟件中的Tools下的NetlistViewers命令中的RTL,可以看到文件綜合之后生成的應(yīng)用RTL電路圖觀察圖。階梯波的RTL圖如圖4-10所示。圖4-10階梯波的RTL圖〔3〕階梯波的結(jié)構(gòu)框圖階梯波的結(jié)構(gòu)框圖如圖4-11所示,PK為頻率控制的輸入端口,CLk為基準(zhǔn)時鐘,REST為復(fù)位鍵,Q為輸出信號。圖4-11階梯波的結(jié)構(gòu)框圖4.2.6正弦波產(chǎn)生模塊〔1〕利用VHDL語言編程產(chǎn)生一個正弦波,利用PK可以進(jìn)行調(diào)節(jié)頻率,正弦波的波形值是利用CASE語句來進(jìn)行賦值的,它的值是從255到0然后由1到255形成一個正弦波形。LIBRARYIEEE;--正弦波USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYZXBIS--正弦波的實體PORT<CLK:INSTD_LOGIC;--基準(zhǔn)時鐘REST:INSTD_LOGIC;--信號復(fù)位PK:INSTD_LOGIC_VECTOR<9DOWNTO0>;--頻率調(diào)節(jié)Q:OUTINTEGERRANGE0TO255>;--信號輸出ENDENTITYZXB;ARCHITECTUREHAVEOFZXBIS--正弦波的結(jié)構(gòu)體SIGNALA:STD_LOGIC_VECTOR<9DOWNTO0>;BEGINPROCESS<CLK,REST>VARIABLETEM:INTEGERRANGE0TO255;BEGINIFREST='0'THEN--低電平復(fù)位Q<=0;ELSIFCLK'EVENTANDCLK='1'THEN--上升沿有效A<=A+1;IFA=PKTHEN--判斷A是否等于分頻系數(shù)A<="0000000000";IFTEM=255THENTEM:=0;ELSETEM:=TEM+1;ENDIF;CASETEMIS--正弦波的波形數(shù)值WHEN00=>Q<=255;WHEN84=>Q<=89;WHEN168=>Q<=81;WHEN01=>Q<=255;WHEN85=>Q<=87;WHEN169=>Q<=83;WHEN02=>Q<=251;WHEN86=>Q<=85;WHEN170=>Q<=85;WHEN03=>Q<=249;WHEN87=>Q<=83;WHEN171=>Q<=87;WHEN04=>Q<=247;WHEN88=>Q<=81;WHEN172=>Q<=89;WHEN05=>Q<=245;WHEN89=>Q<=79;WHEN173=>Q<=91;WHEN06=>Q<=243;WHEN90=>Q<=77;WHEN174=>Q<=93;WHEN07=>Q<=241;WHEN91=>Q<=75;WHEN175=>Q<=95;WHEN08=>Q<=239;WHEN92=>Q<=73;WHEN176=>Q<=97;WHEN09=>Q<=237;WHEN93=>Q<=71;WHEN177=>Q<=99;WHEN10=>Q<=235;WHEN94=>Q<=69;WHEN178=>Q<=101;WHEN11=>Q<=233;WHEN95=>Q<=67;WHEN179=>Q<=103;WHEN12=>Q<=231;WHEN96=>Q<=65;WHEN180=>Q<=105;WHEN13=>Q<=229;WHEN97=>Q<=63;WHEN181=>Q<=107;WHEN14=>Q<=227;WHEN98=>Q<=61;WHEN182=>Q<=109;WHEN15=>Q<=225;WHEN99=>Q<=59;WHEN183=>Q<=111;WHEN16=>Q<=223;WHEN100=>Q<=57;WHEN184=>Q<=113;WHEN17=>Q<=221;WHEN101=>Q<=55;WHEN185=>Q<=115;WHEN18=>Q<=219;WHEN102=>Q<=53;WHEN186=>Q<=117;WHEN19=>Q<=217;WHEN103=>Q<=51;WHEN187=>Q<=119;WHEN20=>Q<=215;WHEN104=>Q<=49;WHEN188=>Q<=121;WHEN21=>Q<=213;WHEN105=>Q<=47;WHEN189=>Q<=123;WHEN22=>Q<=211;WHEN106=>Q<=45;WHEN190=>Q<=125;WHEN23=>Q<=209;WHEN107=>Q<=43;WHEN191=>Q<=127;WHEN24=>Q<=207;WHEN108=>Q<=41;WHEN192=>Q<=129;WHEN25=>Q<=205;WHEN109=>Q<=39;WHEN193=>Q<=131;WHEN26=>Q<=203;WHEN110=>Q<=37;WHEN194=>Q<=133;WHEN27=>Q<=201;WHEN111=>Q<=35;WHEN195=>Q<=135;WHEN28=>Q<=199;WHEN112=>Q<=33;WHEN196=>Q<=137;WHEN29=>Q<=197;WHEN113=>Q<=31;WHEN197=>Q<=139;WHEN30=>Q<=195;WHEN114=>Q<=29;WHEN198=>Q<=141;WHEN31=>Q<=193;WHEN115=>Q<=27;WHEN199=>Q<=143;WHEN32=>Q<=191;WHEN116=>Q<=25;WHEN200=>Q<=145;WHEN33=>Q<=189;WHEN117=>Q<=23;WHEN201=>Q<=147;WHEN34=>Q<=187;WHEN118=>Q<=21;WHEN202=>Q<=149;WHEN35=>Q<=185;WHEN119=>Q<=19;WHEN203=>Q<=151;WHEN36=>Q<=183;WHEN120=>Q<=17;WHEN204=>Q<=153;WHEN37=>Q<=181;WHEN121=>Q<=15;WHEN205=>Q<=155;WHEN38=>Q<=179;WHEN122=>Q<=13;WHEN206=>Q<=157;WHEN39=>Q<=177;WHEN123=>Q<=11;WHEN207=>Q<=159;WHEN40=>Q<=175;WHEN124=>Q<=9;WHEN208=>Q<=161;WHEN41=>Q<=173;WHEN125=>Q<=6;WHEN209=>Q<=163;WHEN42=>Q<=171;WHEN126=>Q<=3;WHEN210=>Q<=165;WHEN43=>Q<=169;WHEN127=>Q<=1;WHEN211=>Q<=167;WHEN44=>Q<=167;WHEN128=>Q<=0;WHEN212=>Q<=169;WHEN45=>Q<=165;WHEN129=>Q<=1;WHEN213=>Q<=171;WHEN46=>Q<=163;WHEN130=>Q<=3;WHEN214=>Q<=173;WHEN47=>Q<=161;WHEN131=>Q<=6;WHEN215=>Q<=175;WHEN48=>Q<=159;WHEN132=>Q<=9;WHEN216=>Q<=179;WHEN49=>Q<=157;WHEN133=>Q<=11;WHEN217=>Q<=181;WHEN50=>Q<=155;WHEN134=>Q<=13;WHEN218=>Q<=183;WHEN51=>Q<=153;WHEN135=>Q<=15;WHEN219=>Q<=185;WHEN52=>Q<=151;WHEN136=>Q<=17;WHEN220=>Q<=187;WHEN53=>Q<=149;WHEN137=>Q<=19;WHEN221=>Q<=189;WHEN54=>Q<=147;WHEN138=>Q<=21;WHEN222=>Q<=191;WHEN55=>Q<=145;WHEN139=>Q<=23;WHEN223=>Q<=193;WHEN56=>Q<=143;WHEN140=>Q<=25;WHEN224=>Q<=195;WHEN57=>Q<=141;WHEN141=>Q<=27;WHEN225=>Q<=197;WHEN58=>Q<=139;WHEN142=>Q<=29;WHEN226=>Q<=201;WHEN59=>Q<=137;WHEN143=>Q<=31;WHEN227=>Q<=203;WHEN60=>Q<=135;WHEN144=>Q<=33;WHEN228=>Q<=205;WHEN61=>Q<=133;WHEN145=>Q<=35;WHEN229=>Q<=207;WHEN62=>Q<=132;WHEN146=>Q<=37;WHEN230=>Q<=209;WHEN63=>Q<=131;WHEN147=>Q<=39;WHEN231=>Q<=211;WHEN64=>Q<=129;WHEN148=>Q<=41;WHEN232=>Q<=213;WHEN65=>Q<=127;WHEN149=>Q<=43;WHEN233=>Q<=215;WHEN66=>Q<=125;WHEN150=>Q<=45;WHEN234=>Q<=217;WHEN67=>Q<=123;WHEN151=>Q<=47;WHEN235=>Q<=219;WHEN68=>Q<=121;WHEN152=>Q<=49;WHEN236=>Q<=221;WHEN69=>Q<=119;WHEN153=>Q<=51;WHEN237=>Q<=223;WHEN70=>Q<=117;WHEN154=>Q<=53;WHEN238=>Q<=225;WHEN71=>Q<=115;WHEN155=>Q<=55;WHEN239=>Q<=227;WHEN72=>Q<=113;WHEN156=>Q<=57;WHEN240=>Q<=229;WHEN73=>Q<=111;WHEN157=>Q<=59;WHEN241=>Q<=231;WHEN74=>Q<=109;WHEN158=>Q<=61;WHEN242=>Q<=233;WHEN75=>Q<=107;WHEN159=>Q<=63;WHEN243=>Q<=235;WHEN76=>Q<=105;WHEN160=>Q<=65;WHEN244=>Q<=237;WHEN77=>Q<=103;WHEN161=>Q<=67;WHEN245=>Q<=239;WHEN78=>Q<=101;WHEN162=>Q<=69;WHEN246=>Q<=241;WHEN79=>Q<=99;WHEN163=>Q<=71;WHEN247=>Q<=243;WHEN80=>Q<=97;WHEN164=>Q<=73;WHEN248=>Q<=245;WHEN81=>Q<=95;WHEN165=>Q<=75;WHEN249=>Q<=247;WHEN82=>Q<=93;WHEN166=>Q<=77;WHEN250=>Q<=249;WHEN83=>Q<=91;WHEN167=>Q<=79;WHEN251=>Q<=251;WHEN252=>Q<=253;WHEN253=>Q<=254;WHEN254=>Q<=255;WHEN255=>Q<=255;WHENOTHERS=>NULL;ENDCASE;ENDIF;ENDIF;ENDPROCESS;ENDARCHITECTUREHAVE;〔2〕正弦波的電路圖通過選擇QuartusII軟件中的Tools下的NetlistViewers命令中的RTL,可以看到文件綜合之后生成的應(yīng)用RTL電路圖觀察圖。正弦波的RTL圖如圖4-12所示。圖4-12正弦波的RTL圖〔3〕正弦波的結(jié)構(gòu)框圖正弦波的結(jié)構(gòu)框圖如圖4-13所示,PK為頻率控制的輸入端口,CLk為基準(zhǔn)時鐘,REST為復(fù)位鍵,Q為輸出信號。圖4-13正弦波的結(jié)構(gòu)框圖4.2.7自定義波形產(chǎn)生模塊〔1〕利用VHDL語言編程產(chǎn)生一個自定義波形,利用PK可以進(jìn)行調(diào)節(jié)頻率,自定義的波形值是前128個的值從1開始依次遞增128,然后后128值為0,通過輸出就產(chǎn)生一個自定義波形。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYZIDINGYIIS--自定義波形的實體PORT<CLK:INSTD_LOGIC;--基準(zhǔn)時鐘 REST:INSTD_LOGIC;--信號復(fù)位 PK:INSTD_LOGIC_VECTOR<9DOWNTO0>;--頻率調(diào)節(jié) Q:OUTSTD_LOGIC_VECTOR<7DOWNTO0>>;--信號輸出ENDENTITYZIDINGYI;ARCHITECTUREHAVEOFZIDINGYIIS--自定義波形的結(jié)構(gòu)體SIGNALA:STD_LOGIC;SIGNALB:STD_LOGIC_VECTOR<9DOWNTO0>;SIGNALC:STD_LOGIC_VECTOR<9DOWNTO0>;BEGIN PROCESS<CLK,REST>--確定前后128個時鐘的進(jìn)程 VARIABLETEM:STD_LOGIC_VECTOR<7DOWNTO0>; BEGIN IFREST='0'THEN A<='0';ELSIFCLK'EVENTANDCLK='1'THENB<=B+1;IFB=PKTHEN--判斷B是否等于調(diào)頻系數(shù)PKB<="0000000000";IFTEM="11111111"THEN--判斷TEM是否等于255TEM:="00000000";ELSETEM:=TEM+1;ENDIF;IFTEM<="10000000"THEN--判斷是否等于128A<='1';ELSEA<='0';ENDIF;ENDIF;ENDIF;ENDPROCESS;PROCESS<CLK,A>--信號輸出進(jìn)程VARIABLETEW:STD_LOGIC_VECTOR<7DOWNTO0>;BEGINIFCLK'EVENTANDCLK='1'THEN C<=C+1;IFC=PK

溫馨提示

  • 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

提交評論