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

下載本文檔

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

文檔簡介

-.z**大學畢業(yè)設(shè)計〔論文〕題目:多功能波形發(fā)生器的設(shè)計-.z畢業(yè)設(shè)計〔論文〕誠信聲明書本人聲明:本人所提交的畢業(yè)論文?多功能波形發(fā)生器的設(shè)計?是本人在指導教師指導下獨立研究、寫作的成果,論文中所引用他人的文獻、數(shù)據(jù)、圖件、資料均已明確標注;對本文的研究做出重要奉獻的個人和集體,均已在文中以明確方式注明并表示感謝。本人完全清楚本聲明的法律后果,申請學位論文和資料假設(shè)有不實之處,本人愿承當相應的法律責任。論文作者簽名:時間:年月日指導教師簽名:時間:年月日-.z**郵電大學畢業(yè)設(shè)計(論文)任務(wù)書任務(wù):1.掌握可編程邏輯器件的工作原理;2.利用可編程邏輯器件完成多功能波形發(fā)生器的設(shè)計并且進展仿真驗證;3.完成畢業(yè)設(shè)計論文的撰寫。要求:1.熟悉可編程邏輯器件的工作原理及VHDL語言編程;2.熟悉QUARTUSII軟件的使用;有一定的數(shù)字系統(tǒng)設(shè)計能力。任務(wù)與要求開場日期2013-03-04完成日期2013-06-14系主任(簽字)2013年3月17日-.z工作進程起止時間工作內(nèi)容———— 2013.3.17 了解多功能波形發(fā)生器的功能及工作原理—2013.3.31 熟悉可編程邏輯器件的工作原理,QUARTUSⅡ軟件的使用以及VHDL語言編程的相關(guān)知識—2013.4.19 結(jié)合多功能波形發(fā)生器需要實現(xiàn)的功能,利用可編程邏輯器件完成多功能波形發(fā)生器的設(shè)計;—2013.5.19 根據(jù)所得結(jié)果進展分析,用Verilog語言編程進展仿真,驗證設(shè)計方案是否能實現(xiàn)多功能波形發(fā)生器的功能以及實現(xiàn)的效果如何;————2013.6.14 整理材料,撰寫論文。-.z主要參考書目(資料):EDA技術(shù)及應用ModelSim電子系統(tǒng)分析及仿真等主要儀器設(shè)備及材料:計算機及相應資料論文(設(shè)計)過程中教師的指導安排:每周三下午三號實驗樓518答疑對方案的說明:無指導教師簽字:2013年3月6日-.z**大學課題名稱:多功能波形發(fā)生器的設(shè)計電子工程學院學院光電子技術(shù)系〔部〕光電信息工程專業(yè)班學生**:**:指導教師:報告日期:2013年3月11日-.z1.本課題所涉及的問題及應用現(xiàn)狀綜述波形發(fā)生器亦稱函數(shù)發(fā)生器,作為實驗用信號源,是現(xiàn)今各種電子電路實驗設(shè)計應用中必不可少的儀器設(shè)備之一。所謂多功能波形發(fā)生器是能夠產(chǎn)生大量的標準信號和用戶自定義信號,并保證高精度、高穩(wěn)定性、可重復性和已操作性的電子儀器。因而它具有廣闊的應用前景??删幊踢壿嬈骷⑽娜Q為:programmablelogicdevice即PLD。PLD是作為一種通用集成電路產(chǎn)生的,它的邏輯功能按照用戶對器件編程來確定。對于可編程邏輯器件,設(shè)計人員可利用價格低廉的軟件工具快速開發(fā)、仿真和測試其設(shè)計。然后,可快速將設(shè)計編程到器件中,并立即在實際運行的電路中對設(shè)計進展測試。

在設(shè)計階段中客戶可根據(jù)需要修改電路,直到對設(shè)計工作感到滿意為止。這是因為PLD基于可重寫的存儲器技術(shù)——要改變設(shè)計,只需要簡單地對器件進展重新編程。傳統(tǒng)波形發(fā)生器大多由振蕩器、放大器、衰減器、指示器和調(diào)制器組成。這種傳統(tǒng)設(shè)計方法的特點是硬件和軟件截然不同,設(shè)計中不可相互替代,而且硬件連線復雜,可靠性較差。硬件描述語言VHDL和可編程邏輯器件的廣泛應用打破了硬件和軟件的屏障?;赩erilog語言,以EDA技術(shù)作為開發(fā)手段,采用現(xiàn)場可編程器件作為控制核心實現(xiàn)的波形發(fā)生器,與傳統(tǒng)的設(shè)計相比擬,不僅簡化了硬件控制,提高了系統(tǒng)的整體性能和工作可靠性,也為進一步提高系統(tǒng)集成創(chuàng)造了條件。本課題所涉及的問題包括了解多功能波形發(fā)生器的功能,熟悉可編程邏輯器件的工作原理、QUARTUSⅡ軟件的使用及Verilog語言編程,利用可編程邏輯器件完成多功能波形發(fā)生器的設(shè)計并且進展仿真驗證。2.本課題需要重點研究的關(guān)鍵問題、解決的思路及實現(xiàn)預期目標的可行性分析本課題需要重點研究的關(guān)鍵問題是利用可編程邏輯器件完成多功能波形發(fā)生器的設(shè)計并進展仿真驗證。解決思路是在深入理解多功能波形發(fā)生器的功能和可編程邏輯器件的工作原理的根底上,用Verilog語言編程,利用可編程邏輯器件完成多功能波形發(fā)生器的設(shè)計并且進展仿真,驗證設(shè)計方案是否能實現(xiàn)多功能波形發(fā)生器的功能以及實現(xiàn)的效果如何。-.z3.完本錢課題的工作方案—了解多功能波形發(fā)生器的功能及工作原理;—熟悉可編程邏輯器件的工作原理,QUARTUSⅡ軟件的使用以及VHDL語言編程的相關(guān)知識;—結(jié)合多功能波形發(fā)生器需要實現(xiàn)的功能,利用可編程邏輯器件完成多功能波形發(fā)生器的設(shè)計;—根據(jù)所得結(jié)果進展分析,用Verilog語言編程進展仿真,驗證設(shè)計方案是否能實現(xiàn)多功能波形發(fā)生器的功能以及實現(xiàn)的效果如何;—整理材料,撰寫論文。4.指導教師審閱意見指導教師(簽字):2013年3月13日-.z-.z-.z-.z目錄摘要IIABSTRACTIII引言11.EDA與軟件簡介21.1EDA技術(shù)開展21.2FPGA介紹31.3Modelsim介紹41.4Verilog與VHDL語言介紹51.5測試鼓勵文件介紹51.6軟件使用入門51.6.1系統(tǒng)仿真軟件Modulsim使用51.6.2QuartusII軟件使用72系統(tǒng)總體設(shè)計92.1硬件總體框圖92.2軟件總體框圖92.3軟件與硬件設(shè)計總結(jié)103系統(tǒng)各模塊設(shè)計113.1時鐘模塊設(shè)計113.2增斜波設(shè)計133.3減斜波設(shè)計153.4方波設(shè)計183.5三角波設(shè)計203.6正弦波設(shè)計223.7階梯波設(shè)計254系統(tǒng)軟硬件聯(lián)合調(diào)試294.1系統(tǒng)整體模塊構(gòu)造圖294.2系統(tǒng)仿真輸出圖30結(jié)論31致謝33參考文獻34附錄35譯文45摘要 在函數(shù)發(fā)生器開展過程中,出現(xiàn)了很多波形發(fā)生的方法,其中大局部是利用DDS原理制作而成,比方說由晶體管、運放IC等通用器件制作而成,或者利用單片集成芯片制做而成。但是隨著FPGA的出現(xiàn),波形發(fā)生的方法更加多元化。將DDS原理成功的移植到FPGA中,就能產(chǎn)生多種波形,頻率可調(diào),相位可選的波形發(fā)生裝置,也可以自行設(shè)計方法產(chǎn)生波形,使得開發(fā)更加簡單。本文提出了一種基于可編程邏輯器件FPGA產(chǎn)生任意波形發(fā)生器的設(shè)計方法。完成了在FPGA的控制下,產(chǎn)生遞增斜波、遞減斜波、方波、三角波、正弦涉及階梯波行,利用Modelsim和QuartusII進展仿真,驗證波形,并給出了實驗結(jié)果。實驗結(jié)果說明,此任意波形發(fā)生器能夠按照要求輸出相應波形,到達了設(shè)計要求。關(guān)鍵字:FPGA,斜波;方波;三角波;正弦波;階梯波ABSTRACTWithfunctiongeneratorintherapiddevelopmentprocess,therehavebeenmanywaystogeneratewaveform,AndmostofthemdoitwithDDS.Fore*ample,atransistor,opampICandothermondevicesmadeit,Ortheuseofmonolithicintegratedchipsystemtodo.ButwiththeemergenceofFPGA,waveformgenerationmethodismorediversified.Produceavarietyofwaveforms,adjustablefrequency,phase,selectablewaveformgeneratingdevice.FPGAcandesigntheirownmethodsofgeneratingwaveforms,makingdevelopmenteasier.Thispaperproposesamethodofarbitrarywaveformgenerator,whichwasbasedonprogrammablelogicdeviceFPGAdesign.UnderthecontroloftheFPGA,itgnenratedincreasingobliquewaveanddecreasingobliquewave,squarewave,trianglewave,sinesweepladderwaveline,andthenverifytheresultsbythesoftwaveofModelsim.Thee*perimentalresultsshowedthatthearbitrarywaveformgeneratorcanoutputwaveformaccordinglyinaccordancewiththerequirements,andhasreachedthedesignrequirements.Keyword:FPGA,obliquewave,squarewave,trianglewave,sinewaveandstepwave-.z引言在電子、通信、實驗教學等領(lǐng)域,高精度、高分辨率、幅度相位可控的信號發(fā)生器有著廣泛的應用。信號發(fā)生器又稱為信號源或者振蕩器,在生產(chǎn)實踐和科技領(lǐng)域中有著廣泛的應用。函數(shù)發(fā)生器是使用最廣的通用信號源,提供正弦波、鋸齒波、方波、脈沖波等波形,有的還同時具有調(diào)制和掃描功能。函數(shù)波形發(fā)生器在設(shè)計上分為模擬式和數(shù)字合成式。眾所周知,數(shù)字合成式函數(shù)信號源〔DDS〕無論就頻率、幅度乃至信號的信噪比〔S/N〕均優(yōu)于模擬式,其鎖相環(huán)〔PLL〕的設(shè)計讓輸出信號不僅是頻率精準,而且相位抖動〔phaseJitter〕及頻率漂移均能到達相當穩(wěn)定的狀態(tài),但數(shù)字式信號源中,數(shù)字電路與模擬電路之間的干擾始終難以有效克制,也造成在小信號的輸出上不如模擬式的函數(shù)信號發(fā)生器。本文引入利用FPGA來產(chǎn)生階梯波、三角波、遞增斜波、遞減斜波、正弦波、方波。具有以下優(yōu)勢:開發(fā)信號發(fā)生器簡單,容易實現(xiàn),本錢低廉,能夠根據(jù)用戶需求進展定制等功能。FPGA是作為專用集成電路領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的缺乏,又克制了原有可編程器件門電路數(shù)有限的缺點。因為其是一種半定制的電路構(gòu)造,因而FPGA具有很多靈活性,能夠根據(jù)本系統(tǒng)的需求靈活改變內(nèi)部電路,以到達系統(tǒng)的需要。另外一方面,硬件描述語言出現(xiàn),使得FPGA開發(fā)隨心應手,方便快捷。因為硬件描述語言具有設(shè)計的行為特性、設(shè)計的數(shù)據(jù)流特性、設(shè)計的構(gòu)造組成以及包含響應監(jiān)控和設(shè)計驗證方面的時延和波形產(chǎn)生機制,這樣使得從頂層整體架構(gòu)到底層具體模塊的開發(fā),以及后續(xù)的驗證,時延等更加方便快捷。 從FPGA開發(fā)多功能信號發(fā)生器的角度來說,因為有了自我定制電路以及靈活高效的硬件描述語言,使得本系統(tǒng)開發(fā)簡單,編程容易,可靠性高,代碼冗余量少。而且能夠積極擴展,使得設(shè)計更加多元化,甚至能做成任意信號發(fā)生器。1.EDA與軟件簡介1.1EDA技術(shù)開展在電子設(shè)計自動化〔英語:Electronicdesignautomation,縮寫:EDA〕出現(xiàn)之前,設(shè)計人員必須手工完成集成電路的設(shè)計、布線等工作,這是因為當時所謂集成電路的復雜程度遠不及現(xiàn)在。工業(yè)界開場使用幾何學方法來制造用于電路光繪〔photoplotter〕的膠帶。到了1970年代中期,開發(fā)人應嘗試將整個設(shè)計過程自動化,而不僅僅滿足于自動完成掩膜草圖。第一個電路布線、布局工具研發(fā)成功。設(shè)計自動化會議〔DesignAutomationConference〕在這一時期被創(chuàng)立,旨在促進電子設(shè)計自動化的開展。

從1981年開場,電子設(shè)計自動化逐漸開場商業(yè)化。1984年的設(shè)計自動化會議〔DesignAutomationConference〕上還舉辦了第一個以電子設(shè)計自動化為主題的銷售展覽。Gateway設(shè)計自動化在1986年推出了一種硬件描述語言Verilog,這種語言在現(xiàn)在是最流行的高級抽象設(shè)計語言。1987年,在美國國防部的資助下,另一種硬件描述語言VHDL被創(chuàng)造出來?,F(xiàn)代的電子設(shè)計自動化設(shè)計工具可以識別、讀取不同類型的硬件描述。根據(jù)這些語言規(guī)*產(chǎn)生的各種仿真系統(tǒng)迅速被推出,使得設(shè)計人員可對設(shè)計的芯片進展直接仿真。后來,技術(shù)的開展更側(cè)重于邏輯綜合。

目前的數(shù)字集成電路的設(shè)計都比擬模塊化〔參見集成電路設(shè)計、設(shè)計收斂〔Designclosure〕和設(shè)計流〔Designflow(EDA)〕〕。半導體器件制造工藝需要標準化的設(shè)計描述,高抽象級的描述將被編譯為信息單元〔cell〕的形式。設(shè)計人員在進展邏輯設(shè)計時尚無需考慮信息單元的具體硬件工藝。利用特定的集成電路制造工藝來實現(xiàn)硬件電路,信息單元就會實施預定義的邏輯或其他電子功能。半導體硬件廠商大多會為它們制造的元件提供“元件庫〞,并提供相應的標準化仿真模型。相比數(shù)字的電子設(shè)計自動化工具,模擬系統(tǒng)的電子設(shè)計自動化工具大多并非模塊化的,這是因為模擬電路的功能更加復雜,而且不同局部的相互影響較強,而且作用規(guī)律復雜,電子元件大多沒有則理想。VerilogAMS就是一種用于模擬電子設(shè)計的硬件描述語言。此文,設(shè)計人員可以使用硬件驗證語言來完成工程的驗證工作目前最新的開展趨勢是將集描述語言、驗證語言集成為一體,典型的例子有SystemVerilog。隨著集成電路規(guī)模的擴大、半導體技術(shù)的開展,電子設(shè)計自動化的重要性急劇增加。這些工具的使用者包括半導體器件制造中心的硬件技術(shù)人員,他們的工作是操作半導體器件制造設(shè)備并管理整個工作車間。一些以設(shè)計為主要業(yè)務(wù)的公司,也會使用電子設(shè)計自動化軟件來評估制造部門是否能夠適應新的設(shè)計任務(wù)。電子設(shè)計自動化工具還被用來將設(shè)計的功能導入到類似現(xiàn)場可編程邏輯門陣列的半定制可編程邏輯器件,或者生產(chǎn)全定制的專用集成電路。EDA代表了當今電子設(shè)計技術(shù)的最新開展方向,它的根本特征是:設(shè)計人員按照“自頂向下〞的設(shè)計方法,對整個系統(tǒng)進展方案設(shè)計和功能劃分,系統(tǒng)的關(guān)鍵電路用一片或幾片專用集成電路(ASIC)實現(xiàn),然后采用硬件描述語言(HDL)完成系統(tǒng)行為級設(shè)計,最后通過綜合器和適配器生成最終的目標器件。這樣的設(shè)計方法被稱為高層次的電子設(shè)計方法。下面介紹與EDA根本特征有關(guān)的幾個概念?!白皂斚蛳篓暤脑O(shè)計方法10年前,電子設(shè)計的根本思路還是選擇標準集成電路“自底向上〞(Bottom–Up)的構(gòu)造出一個新的系統(tǒng),這樣的設(shè)計方法就如同一磚一瓦建造金字塔,不僅效率低、本錢高而且容易出錯。高層次設(shè)計給我們提供了一種“自頂向下〞(Top–Down)的全新設(shè)計方法,這種設(shè)計方法首先從系統(tǒng)設(shè)計入手,在頂層進展功能方框圖的劃分和構(gòu)造設(shè)計。在方框圖一級進展仿真、糾錯,并用硬件描述語言對高層次的系統(tǒng)行為進展描述,在系統(tǒng)一級進展驗證。然后用綜合優(yōu)化工具生成具體門電路的網(wǎng)表,其對應的物理實現(xiàn)級可以是印刷電路板或?qū)S眉呻娐?。由于設(shè)計的主要仿真和調(diào)試過程是在高層次上完成的,這一方面有利于早期發(fā)現(xiàn)構(gòu)造設(shè)計上的錯誤,防止設(shè)計工作的浪費,同時也減少了邏輯功能仿真的工作量,提高了設(shè)計的一次成功率。ASIC設(shè)計現(xiàn)代電子產(chǎn)品的復雜度日益加深,一個電子系統(tǒng)可能由數(shù)萬個中小規(guī)模集成電路構(gòu)成,這就帶來了體積大、功耗大、可靠性差的問題,解決這一問題的有效方法就是采用ASIC(ApplicationSpecificIntegratedCircuits)芯片進展設(shè)計。ASIC按照設(shè)計方法的不同可分為:全定制ASIC,半定制ASIC,可編程ASIC(也稱為可編程邏輯器件)。設(shè)計全定制ASIC芯片時,設(shè)計師要定義芯片上所有晶體管的幾何圖形和工藝規(guī)則,最后將設(shè)計結(jié)果交由IC廠家掩膜制造完成。優(yōu)點是:芯片可以獲得最優(yōu)的性能,即面積利用率高、速度快、功耗低。缺點是:開發(fā)周期長,費用高,只適合大批量產(chǎn)品開發(fā)。半定制ASIC芯片的幅員設(shè)計方法有所不同,分為門陣列設(shè)計法和標準單元設(shè)計法,這兩種方法都是約束性的設(shè)計方法,其主要目的就是簡化設(shè)計,以犧牲芯片性能為代價來縮短開發(fā)時間??删幊踢壿嬓酒c上述掩膜ASIC的不同之處在于:設(shè)計人員完成幅員設(shè)計后,在實驗室內(nèi)就可以燒制出自己的芯片,無須IC廠家的參與,大大縮短了開發(fā)周期??删幊踢壿嬈骷云呤甏詠?,經(jīng)歷了PAL、GAL、CPLD、FPGA幾個開展階段,其中CPLD/FPGA屬高密度可編程邏輯器件,目前集成度已高達200萬門/片,它將掩膜ASIC集成度高的優(yōu)點和可編程邏輯器件設(shè)計生產(chǎn)方便的特點結(jié)合在一起,特別適合于樣品研制或小批量產(chǎn)品開發(fā),使產(chǎn)品能以最快的速度上市,而當市場擴大時,它可以很容易的轉(zhuǎn)由掩膜ASIC實現(xiàn),因此開發(fā)風險也大為降低。上述ASIC芯片,尤其是CPLD/FPGA器件,已成為現(xiàn)代高層次電子設(shè)計方法的實現(xiàn)載體。1.2FPGA介紹FPGA〔Field-ProgrammableGateArray〕,即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的根底上進一步開展的產(chǎn)物。它是作為專用集成電路〔ASIC〕領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的缺乏,又克制了原有可編程器件門電路數(shù)有限的缺點。以硬件描述語言〔Verilog或VHDL〕所完成的電路設(shè)計,可以經(jīng)過簡單的綜合與布局,快速的燒錄至FPGA上進展測試,是現(xiàn)代IC設(shè)計驗證的技術(shù)主流。這些可編輯元件可以被用來實現(xiàn)一些根本的邏輯門電路〔比方AND、OR、*OR、NOT〕或者更復雜一些的組合功能比方解碼器或數(shù)學方程式。在大多數(shù)的FPGA里面,這些可編輯的元件里也包含記憶元件例如觸發(fā)器〔Flip-flop〕或者其他更加完整的記憶塊。目前市場上開發(fā)FPGA的主要有兩大供給商,一個就是ALTERA公司,另一個就是*ilin*公司。Altera的主流FPGA分為兩大類,一種側(cè)重低本錢應用,容量中等,性能可以滿足一般的邏輯設(shè)計要求,如Cyclone,CycloneII;還有一種側(cè)重于高性能應用,容量大,性能能滿足各類高端應用,如Starti*,Strati*II等,用戶可以根據(jù)自己實際應用要求進展選擇。在性能可以滿足的情況下,優(yōu)先選擇低本錢器件。MA*+PLUSII:普遍認為Ma*plusII曾經(jīng)是最優(yōu)秀的PLD開發(fā)平臺之一,適合開發(fā)早期的中小規(guī)模PLD/FPGA由QuartusII替代,不再推薦使用。QuartusII:Altera新一代FPGA/PLD開發(fā)軟件,適合新器件和大規(guī)模FPGA的開發(fā),已經(jīng)取代Ma*plusII。SOPCBuilder:配合QuartusII,可以完成集成CPU的FPGA芯片的開發(fā)工作DSPBuilder:QuartusII與Matlab的接口,利用IP核在Matlab中快速完成數(shù)字信號處理的仿真和最終FPGA實現(xiàn)。*ilin*的主流FPGA分為兩大類,一種側(cè)重低本錢應用,容量中等,性能可以滿足一般的邏輯設(shè)計要求,如Spartan系列;還有一種側(cè)重于高性能應用,容量大,性能能滿足各類高端應用,如Virte*系列,用戶可以根據(jù)自己實際應用要求進展選擇。在性能可以滿足的情況下,優(yōu)先選擇低本錢器件。

ISE:*ilin*公司集成開發(fā)的工具Foundation:*ilin*公司早期的開發(fā)工具,逐步被ISE取代嵌入式開發(fā)套件〔EDK〕:用于開發(fā)集成PowerPC硬核和MicroBlaze軟核CPU的工具SystemGeneratorforDSP:配合Matlab,在FPGA中完成數(shù)字信號處理的工具1.3Modelsim介紹Mentor公司的ModelSim是業(yè)界最優(yōu)秀的HDL語言仿真軟件,它能提供友好的仿真環(huán)境,是業(yè)界唯一的單內(nèi)核支持VHDL和Verilog混合仿真的仿真器。它采用直接優(yōu)化的編譯技術(shù)、Tcl/Tk技術(shù)、和單一內(nèi)核仿真技術(shù),編譯仿真速度快,編譯的代碼與平臺無關(guān),便于保護IP核,個性化的圖形界面和用戶接口,為用戶加快調(diào)錯提供強有力的手段,是FPGA/ASIC設(shè)計的首選仿真軟件。ModelSim分幾種不同的版本:SE、PE、LE和OEM,其中SE是最高級的版本,而集成在Actel、Atmel、Altera、*ilin*以及Lattice等FPGA廠商設(shè)計工具中的均是其OEM版本。SE版和OEM版在功能和性能方面有較大差異,比方對于大家都關(guān)心的仿真速度問題,以*ilin*公司提供的OEM版本ModelSim*E為例,對于代碼少于40000行的設(shè)計,ModelSimSE比ModelSim*E要快10倍;對于代碼超過40000行的設(shè)計,ModelSimSE要比ModelSim*E快近40倍。ModelSimSE支持PC、UNI*和LINU*混合平臺;提供全面完善以及高性能的驗證功能;全面支持業(yè)界廣泛的標準;MentorGraphics公司提供業(yè)界最好的技術(shù)支持與效勞。1.4Verilog與VHDL語言介紹VerilogHDL語言是一種硬件描述語言,用于從算法級、門級到開關(guān)級的多種抽象設(shè)計層次的數(shù)字系統(tǒng)建模。其具有下述描述能力:設(shè)計的行為特性、設(shè)計的數(shù)據(jù)流特性、設(shè)計的構(gòu)造組成以及包含響應監(jiān)控和設(shè)計驗證方面的時延和波形產(chǎn)生機制。所有這些都使用同一種建模語言。此外,VerilogHDL語言提供了編程語言接口,通過該接口可以在模擬、驗證期間從設(shè)計外部設(shè)計,包括模擬的具體控制和運行。VHDL語言是一種用于電路設(shè)計的高級語言。VHDL主要用于描述數(shù)字系統(tǒng)的構(gòu)造,行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式、描述風格以及語法是十分類似于一般的計算機高級語言。VHDL的程序構(gòu)造特點是將一項工程設(shè)計,或稱設(shè)計實體〔可以是一個元件,一個電路模塊或一個系統(tǒng)〕分成外部〔或稱可視局部,及端口)和內(nèi)部〔或稱不可視局部〕,既涉及實體的內(nèi)部功能和算法完成局部。在對一個設(shè)計實體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計就可以直接調(diào)用這個實體。1.5測試鼓勵文件介紹測試鼓勵也叫testbench,它是一種驗證的手段。首先,任何設(shè)計都是會有輸入輸出的。但是在軟環(huán)境中沒有鼓勵輸入,也不會對你設(shè)計的輸出正確性進展評估。則此時便有一種,模擬實際環(huán)境的輸入鼓勵和輸出校驗的一種“虛擬平臺〞的產(chǎn)生。在這個平臺上你可以對你的設(shè)計從軟件層面上進展分析和校驗。 用通俗的話來表示:測試鼓勵就是啟動模塊的鑰匙,它能夠模擬模塊的輸入變量,使其能夠按照工程師的要求進展工作。1.6軟件使用入門1.6.1系統(tǒng)仿真軟件Modulsim使用Modulsim是目前市場上最流行的FPGA仿真軟件,以其卓越的性能和操作簡單性著稱。下面以Modelsim10.0來做個使用向?qū)?。軟件安裝好之后,翻開軟件modulsim,點擊FILE->new->project,將出現(xiàn)如圖1-4所示畫面,起名為test。圖1-4新建工程在如圖1-5所示界面添加verilog文件與測試文件,然后進展編譯,將出現(xiàn)圖1-6所示畫面圖1-5添加文件圖1-6編譯結(jié)果雙擊測試文件,tb_sysgen將出現(xiàn)圖1-7所示現(xiàn)象,然后在測試文件tb_sysgen上右擊選中startsimulation,會出現(xiàn)如圖1-8所示現(xiàn)象。圖1-7點擊仿真圖1-8添加波形運行仿真,將開場進展波形仿真,如圖1-9所示:圖1-9波形仿真圖1.6.2QuartusII軟件使用 QuartusII軟件是目前市場上最流行的FPGA開發(fā)綜合軟件,它的開發(fā)者是altera公司。其容易操作,具有良好的可視化,開發(fā)簡單,易于被初學這承受。以下介紹QuartusII12.0的簡單使用。翻開QuartusII軟件,點擊File選項,然后選擇new,選擇newQuartusIIproject,選擇好器件以及存放路徑,就建立好工程文件了,如圖2-10。圖1-10新建工程點擊File,選擇new,新建verilogHDL,比方文件名字叫test。編程完畢之后,可以編譯下,看看有沒有語法錯誤,如果沒有語法錯誤,則進入測試文件建立模塊。點擊菜單欄中processing,選擇start,選擇starttestbenchtemplatewrite。此時會自動生成testbench模板到工程文件夾simulation里面,后綴為.vt,這時候就可以通過modulesim進展仿真了。2系統(tǒng)總體設(shè)計本系統(tǒng)是基于FPGA開發(fā)的多功能波形發(fā)生器,利用硬件描述語言Verilog進展編程,QuartusII上進展編譯,并仿真驗證構(gòu)造,接著利用Modelsim進展再次仿真驗證,以到達本系統(tǒng)的要求,產(chǎn)生增斜波、減斜波、方波、三角波、正弦波、階梯波形。但是確定該方案之前還是有很多方案:方案一:用分立元件組成的函數(shù)發(fā)生器:通常是單函數(shù)發(fā)生器且頻率不高,其工作不很穩(wěn)定,不易調(diào)試方案二:可以由晶體管、運放IC等通用器件制作,更多的則是用專門的函數(shù)信號發(fā)生器IC產(chǎn)生。早期的函數(shù)信號發(fā)生器IC,如L8038、BA205、*R2207/2209等,它們的功能較少,精度不高,頻率上限只有300kHz,無法產(chǎn)生更高頻率的信號,調(diào)節(jié)方式也不夠靈活,頻率和占空比不能獨立調(diào)節(jié),二者互相影響。方案三:利用單片集成芯片的函數(shù)發(fā)生器:能產(chǎn)生多種波形,到達較高的頻率,且易于調(diào)試。鑒于此,美國美信公司開發(fā)了新一代函數(shù)信號發(fā)生器ICMA*038,它克制了〔2〕中芯片的缺點,可以到達更高的技術(shù)指標,是上述芯片望塵莫及的。MA*038頻率高、精度好,因此它被稱為高頻精細函數(shù)信號發(fā)生器IC。在鎖相環(huán)、壓控振蕩器、頻率合成器、脈寬調(diào)制器等電路的設(shè)計上,MA*038都是優(yōu)選的器件。方案四:利用專用直接數(shù)字合成DDS芯片的函數(shù)發(fā)生器:能產(chǎn)生任意波形并到達很高的頻率。但本錢較高相比以上四種方案,利用FPGA進展開發(fā)具有自己的優(yōu)勢性:可以根據(jù)自己的需求進展定制特定的電路;綜合仿真容易實現(xiàn),擁有QuartusII、Modelsim和ISE等軟件編程;可編程性強,Verilog語言編程語法比擬類似與熟悉的C語言,學習簡單易用2.1硬件總體框圖硬件設(shè)計主要包含三個模塊,即時鐘產(chǎn)生模塊、FPGA信號產(chǎn)生模塊、D/A數(shù)模轉(zhuǎn)換模塊??傮w框圖如圖3-1所示圖3-1時鐘模塊是用來給FPGA提供基準時鐘,其穩(wěn)定性決定了信號產(chǎn)生器的穩(wěn)定;FPGA信號產(chǎn)生模塊是各種波形信號產(chǎn)生如:正弦波,方波,斜波,鋸齒波,三角波,波形頻率設(shè)定;D/A數(shù)模轉(zhuǎn)化模塊是將FPGA輸出的數(shù)據(jù)整合成模擬的波形。圖3-22.2軟件總體框圖軟件系統(tǒng)設(shè)計主要包含三個模塊,即基于altera公司的QuartusII分頻模塊,波形產(chǎn)生模塊,仿真軟件Modelsim波形仿真模塊。總體設(shè)計如圖3-2所示。時鐘分頻模塊是指將基準時鐘進展分頻,以到達變換頻率的功能。波形產(chǎn)生模塊用來產(chǎn)生各種波形,如增斜波,減斜波,正弦波,階梯波形,方波。數(shù)字輸出模塊,將各種波形用數(shù)字進展輸出。2.3軟件與硬件設(shè)計總結(jié)綜上所述軟硬件構(gòu)造,利用時鐘模塊產(chǎn)生基準時鐘傳輸?shù)紽PGA上,F(xiàn)PGA利用鎖相環(huán)對時鐘倍頻產(chǎn)生更高的時鐘頻率,然后根據(jù)用戶需要,對時鐘進展分頻,產(chǎn)生不同頻率的波形。通過Verilog語言進展編程來產(chǎn)生各種波形,輸出到D\A數(shù)模轉(zhuǎn)換模塊,產(chǎn)生模擬波形信號。3系統(tǒng)各模塊設(shè)計3.1時鐘模塊設(shè)計時鐘模塊的功能是分配系統(tǒng)時鐘,使得FPGA輸出不同的頻率的波形。根據(jù)這個功能,利用Verilog編寫了分頻時鐘模塊。利用ALTERA公司開發(fā)的QuartusII軟件進展綜合,布線之后,得到如圖3-1模塊原理圖:圖3-1分頻時鐘模塊時鐘模塊Verilog代碼如下:moduleclk_div( sysclk , reset , div , clk_out);inputsysclk,reset;input[7:0]div;outputclk_out;regclk_out;//regclk_out_tmp=0;reg[7:0]count;reg[7:0]div_2;always(posedgesysclkornegedgereset)begin if(!reset)begin clk_out=0; count=0; div_2=div>>1; end elsebegin if(count>=div_2) begin clk_out=~clk_out; count=0; end else count=count+1; end endendmodule從圖3-1和時鐘模塊代碼中可以得到以下信息:模塊的輸入變量是:外部基準時鐘sysclk,模塊復位輸入reset,分頻系數(shù)輸入div,波形時鐘輸出clk_out;復位輸入reset低電平時,時鐘模塊復位,系統(tǒng)不運作;分頻系數(shù)div決定波形時鐘,其分頻計算公式是:,比方說div值為1,則輸出時鐘是系統(tǒng)時鐘的二分之一;根據(jù)以上程序,編寫了以下測試程序:moduletb_clkdiv; //Inputs regsysclk; regreset; reg[7:0]div; //Outputs wireclk_out; //InstantiatetheUnitUnderTest(UUT) clk_divuut( .sysclk(sysclk), .reset(reset), .div(div), .clk_out(clk_out) ); always*10sysclk=~sysclk; initialbegin //InitializeInputs sysclk=0; reset=0; div=0; //Wait100nsforglobalresettofinish *100;reset=1; div=1; *200; div=2; endendmodule從上述鼓勵中看出,div=1,也就是2分頻,系統(tǒng)的運行周期是20ns。利用Modelsim軟件對時鐘模塊進展仿真,結(jié)果如圖3-2所示:圖3-2兩分頻時鐘波形從圖中可以看出在div=1,rest=1的情況下,輸出時鐘clk_out是輸入時鐘clk_in的一半,這很好地證明了分頻時鐘的正確性。再用QuartusII軟件進展綜合仿真,結(jié)果如圖3-3所示。圖3-3兩分頻時鐘波形 從圖3-3所示的時鐘波形來看輸出時鐘clk_out時鐘頻率是輸入時鐘的一半,但是存在小量的延時,比方說以1us為周期的情況下,延時大約是0.25us,但是由于我們采用分頻后的時鐘作為產(chǎn)生波形的基準時鐘,所以這點延時不影響整個結(jié)果。 綜上所述,該時鐘分頻模塊能夠?qū)⑤斎霑r鐘頻率按照自己系統(tǒng)需求分配出不同頻率。3.2增斜波設(shè)計增斜波是指波形按照一定的步幅遞增,到達最高點后又回到值為零的狀態(tài),這樣循環(huán)進展。按照這種思想設(shè)計出來軟件流程圖如圖3-4所示。圖3-4增斜波軟件流程圖根據(jù)圖3-4所示軟件流程圖設(shè)計出增斜波模塊的模塊框圖,如圖3-5所示。圖3-5增斜波模塊框圖從圖3-5中來分析該模塊的輸入輸出模塊以及引腳定義:模塊的輸入變量是:外部基準時鐘sysclk_in,模塊復位輸入reset_in,分頻系數(shù)輸入div。輸出時鐘波形時鐘輸出Qout_add;復位輸入reset低電平時,時鐘模塊復位,系統(tǒng)不運作;分頻系數(shù)div決定波形時鐘,其分頻計算公式是:,比方說div值為1,則輸出時鐘是系統(tǒng)時鐘的二分之一;Qout_add是增斜波模塊的波形輸出。根據(jù)軟件流程圖以及模塊框圖中輸入輸出引腳定義,使用Verilog語言設(shè)計了以下代碼:moduleadd( SysClk , //系統(tǒng)時鐘 rest , //復位開關(guān),低電平復位 div , //分頻 Qout_add //遞增斜波); inputSysClk; inputrest; input[7:0]div; inputSysClk; inputrest; input[7:0]div; output[7:0]Qout_add; wireclk_out; clk_divclk( .sysclk(SysClk) , .reset(rest) , .div(div) , .clk_out(clk_out) ); //產(chǎn)生遞增斜波 reg[7:0]tmp_add=0; always(posedgeclk_outornegedgerest)begin if(!rest)begin Qout_add=0; tmp_add=0; end elsebegin tmp_add=tmp_add+1; if(tmp_add>=8'b1111_1111)begin tmp_add=0; end elsebegin Qout_add=tmp_add; end end endendmodule通過以上的方法可以輸出遞增波形,其波形的頻率決定于輸入時鐘和分頻系數(shù)。設(shè)計測試文件,將div設(shè)置為1即為2分頻,sysclk設(shè)置周期為20ns。通過Modelsim仿真得到圖3-6增斜波輸出:圖3-6增斜波輸出從圖3-6中,看出波形輸出Qout_add是按照增斜波的趨向增長的,步進值是1,從0到達255,到255溢出又變?yōu)?值。為了進一步驗證該遞增波形的正確性,我們采用QuartusII進展波形仿真,得到的仿真波形圖如圖3-7所示。圖3-7增斜波輸出從圖3-6和圖3-7分別是Modelsim和QuartusII仿真出來的波形,從波形上來觀察可以看出根本沒有區(qū)別,進一步驗證了該遞增斜波產(chǎn)生模塊的正確性。3.3減斜波設(shè)計減斜波是指波形按照一定的步幅遞減,到達最高點后又回到最大值的狀態(tài),這樣循環(huán)進展。根據(jù)模塊需求設(shè)計出模塊流程圖如圖3-8所示。圖3-8減斜波軟件流程圖根據(jù)圖3-8所示軟件流程圖設(shè)計出減斜波模塊的模塊框圖,如圖3-9所示。圖3-9減斜波模塊原理圖從圖3-9中來分析該模塊的輸入輸出模塊以及引腳定義:模塊的輸入變量是:外部基準時鐘sysclk,模塊復位輸入reset,分頻系數(shù)輸入div。輸出時鐘波形時鐘輸出Qout_min;復位輸入reset低電平時,時鐘模塊復位,系統(tǒng)不運作;分頻系數(shù)div決定波形時鐘,其分頻計算公式是:,比方說div值為1,則輸出時鐘是系統(tǒng)時鐘的二分之一;Qout_min是減斜波模塊的波形輸出。根據(jù)軟件流程圖以及模塊框圖中輸入輸出引腳定義,使用Verilog語言設(shè)計了以下代碼:modulemin1( SysClk , //系統(tǒng)時鐘 rest , //復位開關(guān),低電平復位 div , //分頻 Qout_min //遞增斜波); inputSysClk; inputrest; input[7:0]div; inputSysClk; inputrest; input[7:0]div; output[7:0]Qout_min; wireclk_out; clk_divclk( .sysclk(SysClk) , .reset(rest) , .div(div) , .clk_out(clk_out) ); //產(chǎn)生遞減斜波 reg[7:0]tmp_min=8'b1111_1111; always(posedgeclk_outornegedgerest)begin if(!rest)begin Qout_min=0; tmp_min=8'b1111_1111; end elsebegin tmp_min=tmp_min-1; if(tmp_min==0)begin tmp_min=8'b1111_1111; end elsebegin Qout_min=tmp_min; end end endendmodule從上述代碼可以分析出輸出Qout_min從最大的255開場遞減,每來一次分頻過的時鐘減1,一直到0,然后又恢復到255,這樣循環(huán)往復。設(shè)計測試文件,將div設(shè)置為1即為2分頻,sysclk設(shè)置周期為20ns。通過Modelsim仿真得到圖3-10波形:圖3-10減斜波波形輸出圖3-10可以清楚看出遞減斜波的波形圖,即從最大值開場依次往小減,直到最小值0,又重新恢復到最大,這樣循環(huán)往復。為了進一步驗證該模塊的正確性,采用QuartusII進展波形仿真,其結(jié)果如圖3-11所示。圖3-11減斜波波形輸出從圖3-11中可以發(fā)現(xiàn)跟圖3-10中發(fā)現(xiàn)的一樣的周期性減斜波,進一步驗證了模塊的正確性。3.4方波設(shè)計方波是指非正弦曲線的波形,輸出的形狀如矩形,只有‘0’,‘1’兩個值。根據(jù)模塊需求設(shè)計出模塊流程圖如圖3-12所示。圖3-12方波模塊軟件流程圖根據(jù)圖3-12所示軟件流程圖設(shè)計出方波模塊的模塊框圖,如圖3-13所示。圖3-13方波模塊原理圖從圖3-13中來分析該模塊的輸入輸出模塊以及引腳定義:模塊的輸入變量是:外部基準時鐘sysclk,模塊復位輸入reset,分頻系數(shù)輸入div。輸出時鐘波形時鐘輸出Qout_squ;復位輸入reset低電平時,時鐘模塊復位,系統(tǒng)不運作;分頻系數(shù)div決定波形時鐘,其分頻計算公式是:,比方說div值為1,則輸出時鐘是系統(tǒng)時鐘的二分之一;Qout_squ是方波波模塊的波形輸出。根據(jù)軟件流程圖以及模塊框圖中輸入輸出引腳定義,使用Verilog語言設(shè)計了以下核心代碼: //產(chǎn)生方波 reg[7:0]tmp_squ=0; regsqu_flag=0; always(posedgeclk_outornegedgerest)begin if(!rest)begin Qout_squ=0; tmp_squ=0; squ_flag=0; end elsebegin tmp_squ=tmp_squ+1; if(tmp_squ>=8'b0000_1111)begintmp_squ=0; squ_flag=~squ_flag;end if(squ_flag) Qout_squ=8'b1111_1111; else Qout_squ=0; end end簡單分析下以上代碼:tmp_squ是用來計內(nèi)部時鐘clk_out的脈沖次數(shù),當?shù)竭_8’b0000_1111時,重新計0,這個時候,將輸出變量翻轉(zhuǎn),產(chǎn)生方波。設(shè)計測試文件,將div設(shè)置為1即為2分頻,sysclk設(shè)置周期為20ns。通過Modelsim仿真得到圖3-14波形:圖3-14方波波形仿真圖從圖3-14中可以看出當div=1和reset=1的情況下clk_out_tmp是輸入時鐘的一辦,每來16個周期Qout_squ輸出電平翻轉(zhuǎn)一遍,以產(chǎn)生標準的方波。為了驗證方波模塊的正確性,采用QuartusII進展波形仿真,得到如圖3-15所示仿真波形圖。圖3-15方波波形仿真圖從圖3-14中也可以看到和圖3-15同樣的現(xiàn)象每經(jīng)過16個周期電平翻轉(zhuǎn)一次,也就是說每32個周期產(chǎn)生一個方波波形,完全符合標準,另外,其頻率取決于分頻系數(shù)div和系統(tǒng)輸入時鐘。3.5三角波設(shè)計三角波形是指波形值從最小值開場遞增,到達最高點后又開場依次減小,直到減小到最小值,依次反復,形狀想三角形。根據(jù)模塊需求設(shè)計出模塊流程圖如圖3-16所示。圖3-16三角波軟件流程圖根據(jù)圖3-16所示軟件流程圖設(shè)計出方波模塊的模塊框圖,如圖3-17所示。圖3-17三角波模塊原理圖從圖3-17中來分析該模塊的輸入輸出模塊以及引腳定義:模塊的輸入變量是:外部基準時鐘sysclk,模塊復位輸入reset,分頻系數(shù)輸入div。輸出時鐘波形時鐘輸出Qout_tri;復位輸入reset低電平時,時鐘模塊復位,系統(tǒng)不運作;分頻系數(shù)div決定波形時鐘,其分頻計算公式是:,比方說div值為1,則輸出時鐘是系統(tǒng)時鐘的二分之一;Qout_tri是三角波模塊的波形輸出。根據(jù)軟件流程圖以及模塊框圖中輸入輸出引腳定義,使用Verilog語言設(shè)計了以下代碼:moduletri2(SysClk , //系統(tǒng)時鐘 rest , //復位開關(guān),低電平復位 div , //分頻 Qout_tri ); inputSysClk; inputrest; input[7:0]div; output[7:0]Qout_tri; wireQout_tri; clk_divclk_out( .sysclk(SysClk) , .reset(rest) , .div(div) , .clk_out(clk_out) ); //產(chǎn)生三角波 reg[7:0]tmp_tri=0; regtri_flag=0; always(posedgeclk_outornegedgerest)begin if(!rest)beginQout_tri=0; tmp_tri=0; tri_flag=0;end elsebegin if(!tri_flag)begin tmp_tri=tmp_tri+1; if(tmp_tri==8'b0000_1111) tri_flag=1; end elsebegin tmp_tri=tmp_tri-1; if(tmp_tri==0) tri_flag=0; end Qout_tri=tmp_tri; end endendmodule簡單分析下代碼:tmp_tri用來記錄時間脈沖的次數(shù),以上升沿方式觸發(fā)計數(shù);在未到達8’b0000_1111時,輸出上升波形,到達8’b0000_1111時,輸出下降波形。設(shè)計測試文件,將div設(shè)置為1即為2分頻,sysclk設(shè)置周期為20ns。通過Modelsim仿真得到圖3-18波形:圖3-18三角波形仿真圖從圖3-18可以看出輸出的波形是標準的三角波,波形從開場的最小值到最大值再從最大值到最小值。為了驗證三角波形產(chǎn)生模塊的正確性,利用QuartusII對該模塊進展仿真,得到地仿真波形如圖3-19所示。圖3-19三角波形仿真圖從圖3-18和圖3-19中可以看出,利用QuartsII和Modelsim軟件仿真均能產(chǎn)生三角波形,但是從結(jié)果直觀地觀察,在Modelsim中三角波形比擬光滑、平整,而在QuartusII中卻有一些很小的毛刺,這經(jīng)過分析只能將原因歸結(jié)于沒有完全會使用QuartusII,或是QuartusII波形仿真跟Modelsim本身就存在差距。3.6正弦波設(shè)計正弦波是頻率成分最為單一的一種信號,因這種信號的波形是數(shù)學上的正弦曲線而得名。該波形設(shè)計相比其他波形比擬復雜,其實現(xiàn)方法:首先設(shè)計一個ROM用來存放正弦函數(shù)的幅度數(shù)據(jù);用一個計數(shù)器來指定ROM地址〔相位〕的增加,輸出相應的幅度值。這樣在連續(xù)的時間內(nèi)顯示的就是一個完整的正弦波形。根據(jù)上述查找的思想,可以設(shè)計出軟件,但是正弦函數(shù)的幅度數(shù)據(jù)需要自己去設(shè)定,設(shè)定方法是通過MATLAB軟件,進展編程得到128位深度的值。在MATLAB里面輸入代碼為:y=ceil(128*sin(0:pi*2/127:2*pi))+127,也就是128個點的數(shù)組,簡單得解析一下上述命令:ceil是產(chǎn)生數(shù)組的函數(shù),因為正弦函數(shù)*圍是0到1*圍之內(nèi)的,因此要乘以128才能使其在~127到+128之內(nèi),又因為FPGA無法產(chǎn)生負數(shù),所以得加上127的偏置。0:pi*2/127:2*pi是指從0到QUOTE*圍內(nèi)依次取127個點,步進值是QUOTE。根據(jù)查表思想,以及MATLAB產(chǎn)生的128個數(shù)組,設(shè)計出軟件流程圖如圖3-20所示。圖3-20正弦波軟件流程圖根據(jù)圖3-20所示軟件流程圖設(shè)計出正弦波模塊的模塊框圖,如圖3-21所示。圖3-21正弦波模塊原理圖從圖3-21中來分析該模塊的輸入輸出模塊以及引腳定義:模塊的輸入變量是:外部基準時鐘sysclk,模塊復位輸入reset,分頻系數(shù)輸入div。輸出時鐘波形時鐘輸出Qout_sin;復位輸入reset低電平時,時鐘模塊復位,系統(tǒng)不運作;分頻系數(shù)div決定波形時鐘,其分頻計算公式是:,比方說div值為1,則輸出時鐘是系統(tǒng)時鐘的二分之一;Qout_sin是正弦波模塊的波形輸出。根據(jù)軟件流程圖以及模塊框圖中輸入輸出引腳定義,使用Verilog語言設(shè)計了以下核心代碼〔其中由于篇幅過長,講128點賦值去了〕:reg[7:0]tmp_sin=0; always(posedgeclk_outornegedgerest)begin if(!rest)begin tmp_sin=0; Qout_sin=0; end elsebegin case(tmp_sin)………..//128點,賦值endcase tmp_sin=tmp_sin+1; if(tmp_sin==127)begin tmp_sin=0; Qout_sin=128; end end end設(shè)計測試文件,將div設(shè)置為1即為2分頻,sysclk設(shè)置周期為20ns。通過Modelsim仿真得到圖3-22波形:圖3-22正弦波波形仿真從上圖可以看出,通過該模塊設(shè)計能夠產(chǎn)生正弦數(shù)字信號,二分頻時其周期是輸入時鐘的256倍,是輸出時鐘的128。為了進一步驗證波形仿真結(jié)果,使用QuartusII進展軟件仿真,得到結(jié)果如圖3-23所示結(jié)果。圖3-23正弦波波形仿真 圖3-22和圖3-23所示波形顯示出該正弦波模塊能夠產(chǎn)生正弦波,其中專業(yè)的波形仿真軟件Modelsim中顯示的正弦波平滑得多,也沒有個別毛刺。而QuartusII軟件仿真出來的結(jié)果卻又明顯的毛刺,可能是因為QuartusII仿真軟件的問題,或者自己設(shè)置引起的。3.7階梯波設(shè)計所謂的階梯波形就是指像臺階那樣,一級又一級,逐漸增大直到到達最大臺階,然后轉(zhuǎn)變?yōu)樽畹团_階,再重復循環(huán)出現(xiàn)的波形。根據(jù)模塊需求設(shè)計出模塊流程圖如圖3-24所示.圖3-24軟件流程圖根據(jù)圖3-24所示軟件流程圖設(shè)計出正弦波模塊的模塊框圖,如圖3-25所示。圖3-25階梯波形原理圖從圖3-25中來分析該模塊的輸入輸出模塊以及引腳定義:模塊的輸入變量是:外部基準時鐘sysclk,模塊復位輸入reset,分頻系數(shù)輸入div。輸出時鐘波形時鐘輸出Qout_lad;復位輸入reset低電平時,時鐘模塊復位,系統(tǒng)不運作;分頻系數(shù)div決定波形時鐘,其分頻計算公式是:,比方說div值為1,則輸出時鐘是系統(tǒng)時鐘的二分之一;Qout_lad是正弦波模塊的波形輸出。根據(jù)該原理圖以及上述各局部說明,用verilog語言設(shè)計出階梯波核心程序:reg[7:0]tmp_lad; always(posedgeclk_outornegedgerest)begin if(!rest)begin tmp_lad=0; Qout_lad=0; end elsebegin case(tmp_lad) 8'd0: Qout_lad=0;8'd16: Qout_lad=16; 8'd32: Qout_lad=32; 8'd48: Qout_lad=48; 8'd64: Qout_lad=64; 8'd80: Qout_lad=80; 8'd96: Qout_lad=96; 8'd112: Qout_lad=112; 8'd128: Qout_lad=128; 8'd144: Qout_lad=144; 8'd160: Qout_lad=160; 8'd176: Qout_lad=176; 8'd192: Qout_lad=192; 8'd208: Qout_lad=208; 8'd224: Qout_lad=224; 8'd240: Qout_lad=240; 8'd255: begin Qout_lad=255; tmp_lad=0; end endcase tmp_lad=tmp_lad+1; end end從上述代碼可以看出階梯值是16,每16個周期步進一格,從0開場直到255,再變?yōu)?,這樣不斷循環(huán)。設(shè)計測試文件,將div設(shè)置為1即為2分頻,sysclk設(shè)置周期為20ns。通過Modelsim仿真得到圖3-26波形:圖3-26階梯波形仿真圖從上圖可以看出,通過該模塊設(shè)計能夠產(chǎn)生階梯波形數(shù)字信號,每過16個周期波形,階梯遞增一個臺階,知道最高臺階之后又重新恢復到最低臺階,這樣循環(huán)往復,成為階梯波行的周期信號。為了進一步驗證階梯波形仿真圖,使用QuartusII軟件進展軟件仿真,得到波形仿真結(jié)果如圖3-27所示。圖3-27階梯波形仿真圖從圖3-26和圖3-27所得的結(jié)果可以看出,設(shè)計的階梯波形模塊能夠正常地產(chǎn)生階梯波形,但是在Modelsim中明顯很光滑,完全跟預期的一樣,而用QuartusII軟件得到的仿真結(jié)果在中間的時刻會突然出現(xiàn)很大的尖峰毛刺,可能是由于QuartusII仿真的問題。4系統(tǒng)軟硬件聯(lián)合調(diào)試經(jīng)過前兩章的介紹,將系統(tǒng)軟硬件的總體構(gòu)造原理圖以及各個子模塊的原理圖都詳細介紹了一下。目前各個模塊的設(shè)計以及仿真結(jié)果驗證正確,下一步就是要將所有子系統(tǒng)模塊聯(lián)合起來建立成多波形發(fā)生器系統(tǒng)。以下介紹多波形發(fā)生系統(tǒng)的聯(lián)合調(diào)試構(gòu)造以及調(diào)試結(jié)果。4.1系統(tǒng)整體模塊構(gòu)造圖 1)系統(tǒng)整個構(gòu)造圖包含2個局部:時鐘調(diào)制模塊,波形產(chǎn)生模塊。其中時鐘調(diào)制模塊是用來將輸入時鐘進展分頻配置,輸出系統(tǒng)需要的時鐘信號,波形產(chǎn)生模塊用來產(chǎn)生多種波形信號。構(gòu)造原理圖如圖4-1所示。圖4-1系統(tǒng)整體構(gòu)造圖波形產(chǎn)生模塊包含了6個局部:增斜波模塊,減斜波模塊,方波模塊,三角波模塊,正弦波模塊,階梯波模塊。其中增斜波模塊是用來產(chǎn)生增斜波波形,減斜波模塊是用來產(chǎn)生減斜波波形,方波模塊產(chǎn)生方波波形,三角波模塊用來產(chǎn)生三角波波形,正弦波模塊產(chǎn)生正弦波信號,階梯波模塊產(chǎn)生階梯波形。其構(gòu)造圖如圖4-2所示。圖4-2波形產(chǎn)生器構(gòu)造圖4.2系統(tǒng)仿真輸出圖 將系統(tǒng)整體模塊設(shè)計出來以后,用Verilog語言進展編程,編譯出整個系統(tǒng)的軟件體系。軟件編譯通過,利用QuartusII軟件或者ISE對其進展綜合,綜合成功之后就要做波形仿真,觀察波形。因為Modelsim擁有觀察模擬輸出的功能,所以選擇該軟件進展波形仿真,其結(jié)果如圖4-3所示圖4-3從上圖可以看出增斜波,減斜波的周期比擬大,但是分辨率高,三角波形的周期跟方波的是一樣的,正弦波取值一個周期點數(shù)是128點分辨率還是相當可以的,至于階梯波形,可以明顯的看到階梯現(xiàn)象。結(jié)論利用FPGA產(chǎn)生波形,其原理簡單,但是實現(xiàn)起來也并非看起來則容易,里面牽扯到很多知識。比方說:FPGA開發(fā)軟件QuartusII以及ISE的學習與應用,目前最流行的第三方波形仿真軟件Modelsim的學習與使用。Verilog語言語法學習,其雖然在語法表達上有點像C語言但是作為一種硬件描述語言還是跟C語言有很大差異的,比方C語言有乘法和除法,但是Verilog語言卻沒有,因此在很多時候,雖然邏輯和波形都是對的,但是綜合起來多出現(xiàn)錯誤,布線啥的都不成功。另外就是測試鼓勵文件的編寫,雖然簡單,但是在系統(tǒng)設(shè)計的過程中還是非常有必要的,特別是能夠利用測試鼓勵進展仿真,這樣比直接加載波形進展人工仿真要好的多,在ALTERA公司開發(fā)的DSPBuilder中可以自動生成測試鼓勵,當然*ilin*公司開發(fā)SystemGenerate軟件中也有相似的功能,給FPGA開發(fā)帶來了很大的方便。本系統(tǒng)是利用FPGA產(chǎn)生多種波形,方波、增斜波,減斜波,三角波,階梯波,正弦波。這些波形能夠通過通過同一個基準時鐘產(chǎn)生,而且通過時鐘分頻模塊到達了頻率可調(diào)的目的。利用業(yè)界最好的仿真軟件Modelsim,進展仿真,可以明顯看到可靠結(jié)論,每種波形輸出準確,精度高。文中所用的系統(tǒng)構(gòu)造圖,都是利用FPGA開發(fā)軟件生成Symbol,然后利用原理圖輸入的方式畫出來的,通過這種方式,可以將每個模塊都已一種硬件的模塊展示在讀者面前,這樣使得整個系統(tǒng)設(shè)計簡單明了,容易理解。 在軟件選型上面,還是破費周折。由于業(yè)界兩大FPGA廠商的軟件產(chǎn)品QuartusII和ISE都很好,由于同學介紹還是選擇了QuartusII軟件做布線綜合以及波形仿真驗證,又使用第三方軟件Modelsim進展仿真再驗證。兩者均能產(chǎn)生想要的波形,但是也是有差異的。專業(yè)的仿真軟件Modelsim中顯示的結(jié)果很平滑,效果很好,而在QuartusII中就不則好了,這樣可以看出QuartusII的波形仿真在軟件上就不如Modelsim專業(yè),在用法的簡單性方面也遠不如。 雖然該系統(tǒng)可以產(chǎn)生不同頻率的多種波形,但是不能控制波形相位,而且在速度上面還不太理想,需要進一步改良。最好就是使用DDS原理,進展設(shè)計,以到達最正確的效果。該系統(tǒng)在仿真上可以到達各種波形發(fā)生的效果,但是沒有使用具體的硬件資源進展調(diào)試,造成了本設(shè)計的遺憾,可以推薦使用8位的D/A數(shù)模轉(zhuǎn)化器接在輸出端,利用示波器觀察各波形。 本系統(tǒng)設(shè)計簡單明了,而且能夠產(chǎn)生多種波形,以及頻率可調(diào),但是還有有缺乏之處,比方說不可能把頻率做得太高,因為用的是D/A數(shù)模轉(zhuǎn)化模塊,其速度在很大程度上取決于系統(tǒng)時鐘以及數(shù)模轉(zhuǎn)化速度。但是在靈活性,多樣性方面有著明顯的優(yōu)勢。相信該多功能函數(shù)發(fā)生器只是個雛形,不可能走向群眾化的。因為目前市場上的各個廠家的函數(shù)發(fā)生器其波形的發(fā)生頻率很高,比方說學校最常見的RIGOL函數(shù)發(fā)生器發(fā)生頻率可以到達正弦波信號可以到達20MHz,根據(jù)該系統(tǒng)正弦設(shè)計,一個周期有128個點,也就是說每運行128下才能產(chǎn)生一個周期的正弦波,要到達20M頻率就得讓FPGA的時鐘頻率為20M*128=2,560MHz也就是2.5GHz,這是不可能到達的,對于目前低本錢的FPGA來說,時鐘頻率高一點是100M,低一點的是50M,就算在FPGA內(nèi)部倍頻上去也不可能到達1G,而且2.5G的模數(shù)轉(zhuǎn)化器也是不會有的。但是該設(shè)計有一個好處就是能夠隨心所遇產(chǎn)生各種波形,甚至是任意信號。舉個例子來說,可以產(chǎn)生將一階斜波與二階斜波疊加起來的波形。通過這種方法,就能根據(jù)用戶系統(tǒng)的需求,進展電路定制,產(chǎn)生所需要的波形。致謝本論文是在我的導師薛延霞教授的親切關(guān)心和悉心指導下完成的。她嚴肅的科學態(tài)度,嚴謹?shù)闹螌W精神,精益求精的工作作風,深深地感染和鼓勵著我。從課題的選擇到工程的最終完成她都始終給予我細心的指導和不懈的支持。薛教授不僅在學業(yè)上給了我精心的指導,同時還在思想、生活上給我以無微不至的關(guān)心,在此謹向薛教師致以誠摯的謝意和崇高的敬意。同時感謝我的室友們,從遙遠的家來到這個陌生的城市里,是你們和我共同維系著彼此之間姐妹般的感情,維系著寢室那份家的融洽。在論文即將完成之際,我的心情無法平靜,從開場進入課題到論文的順利完成,有多少可敬的師長、同學、朋友給了我無言的幫助,在這里請承受我誠摯的謝意!最后我還要感謝培養(yǎng)我長大含辛茹苦的父母,我永遠的支持者,正是在你們殷切目光的注視下,我才一步步完成求了學生涯。沒有你們就不會有今天的我。我一直很感謝你們,讓我擁有一個如此溫馨的家庭,讓我所有的一切都可以在你們這里得到理解與支持,得到諒解和分擔,你們的支持和鼓勵是我前進的動力。最后再次感謝所有曾經(jīng)幫助過我的人,祝你們在今后的工作中一帆風順,萬事如意參考文獻[1]SamirPalnitkar.VerilogHDL:AGuidetoDigitalDesignandSynthesisSecondEdition[M].電子工業(yè),2001.[2]朱正偉.EDA技術(shù)及應用[M].:清華大學,2005.[3]*文波,田耕.*ilin*FPGA開發(fā)實用教程[M],:清華大學,2012.[4]于斌,米秀杰.ModelSim電子系統(tǒng)分析及仿真[M],:電子工業(yè),2009[5]王誠,蔡**,等.Altera公司推薦FPGA/CPLD培訓教材?AlteraFPGA/CPLD設(shè)計(根底篇)(第2版)[M],:人民郵電,2011[6]吳繼華,蔡**,等.Altera公司推薦FPGA/CPLD培訓教材?AlteraFPGA/CPLD設(shè)計(高級篇)(第2版)[M],:人民郵電,2011附錄moduleallmodule( clkin , //系統(tǒng)時鐘 rest , //復位開關(guān),低電平復位 div , //分頻 Qout_add , //遞增斜波 Qout_min ,//遞減斜波 Qout_tri , //三角波 Qout_squ , //方波 Qout_sin , //正弦波 Qout_lad , //階梯波 clk_out_tmp ); inputclkin; inputrest; input[7:0]div; output[7:0]Q

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論