多功能波形發生器的設計論文_第1頁
多功能波形發生器的設計論文_第2頁
多功能波形發生器的設計論文_第3頁
多功能波形發生器的設計論文_第4頁
多功能波形發生器的設計論文_第5頁
已閱讀5頁,還剩59頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1 / 64西安大西安大 學學畢業設計(論文)畢業設計(論文)題 目: 多功能波形發生器的設計 學 院: 電子工程學院 系 部: 光電子技術系 專 業: 光電信息工程 班 級:學生:導師:職稱: 副教授 起止時間: 2013 年 3 月 4 日2013 年 6 月 14 日 1 / 64畢業設計(論文)誠信聲明書畢業設計(論文)誠信聲明書本人聲明:本人所提交的畢業論文 多功能波形發生器的設計 是本人在指導教師指導下獨立研究、寫作的成果,論文中所引用他人的文獻、數據、圖件、資料均已明確標注;對本文的研究做出重要貢獻的個人和集體,均已在文中以明確方式注明并表示感。本人完全清楚本聲明的法律后果,申請

2、學位論文和資料若有不實之處,本人愿承擔相應的法律責任。論文作者簽名: 時間: 年 月 日指導教師簽名: 時間: 年 月 日1 / 64郵電大學郵電大學畢業設計畢業設計( (論文論文) )任務書任務書任務與要求任務與要求開始日期開始日期2013-03-042013-03-04 完成日期完成日期2013-06-142013-06-14 系主任系主任( (簽字簽字) )20132013 年年3 3 月月1717 日日任務:任務: 1.1. 掌握可編程邏輯器件的工作原理;掌握可編程邏輯器件的工作原理; 2.2. 利用可編程利用可編程邏輯器件完成多功能波形發生器的設計并且進行仿真驗證;邏輯器件完成多功能

3、波形發生器的設計并且進行仿真驗證; 3.3. 完成畢業設計論文的撰寫。完成畢業設計論文的撰寫。 要求:要求: 1.1. 熟悉可編程邏輯器件的熟悉可編程邏輯器件的工作原理與工作原理與 VHDLVHDL 語言編程;語言編程; 2.2. 熟悉熟悉 QUARTUSQUARTUS IIII 軟件的使用;軟件的使用;有一定的數字系統設計能力。有一定的數字系統設計能力。 1 / 64工作進程工作進程起止時間工 作 容2013.3.4 2013.3.17 了解多功能波形發生器的功能與工作原理2013.3.182013.3.31 熟悉可編程邏輯器件的工作原理,QUARTUS軟件的使用以與 VHDL 語言編程的相

4、關知識2013.4.12013.4.19 結合多功能波形發生器需要實現的功能,利用可編程邏輯器件完成多功能波形發生器的設計; 2013.4.202013.5.19 根據所得結果進行分析,用 Verilog 語言編程進行仿真,驗證設計方案是否能實現多功能波形發生器的功能以與實現的效果如何; 2013.5.202013.6.14 整理材料,撰寫論文。1 / 64主要參考書目(資料):EDA 技術與應用ModelSim 電子系統分析與仿真等主要儀器設備與材料:計算機與相應資料論文(設計)過程中教師的指導安排:每周三下午三號實驗樓 518 答疑對計劃的說明:無 指導教師簽字: 2013 年 3 月 6

5、 日1 / 64大學畢業設計(論文)開題報告課題名稱:多功能波形發生器的設計電子工程學院學院光電子技術 系(部)光電信息工程專業班學生: 學號: 指導教師: 報告日期: 2013 年 3 月 11 日 1 / 641本課題所涉與的問題與應用現狀綜述波形發生器亦稱函數發生器,作為實驗用信號源,是現今各種電子電路實驗設計應用中必不可少的儀器設備之一。所謂多功能波形發生器是能夠產生大量的標準信號和用戶自定義信號,并保證高精度、高穩定性、可重復性和已操作性的電子儀器。因而它具有廣闊的應用前景。可編程邏輯器件英文全稱為:programmable logic device 即 PLD。PLD 是作為一種通

6、用集成電路產生的,它的邏輯功能按照用戶對器件編程來確定。對于可編程邏輯器件,設計人員可利用價格低廉的軟件工具快速開發、仿真和測試其設計。 然后,可快速將設計編程到器件中,并立即在實際運行的電路中對設計進行測試。 在設計階段中客戶可根據需要修改電路,直到對設計工作感到滿意為止。 這是因為 PLD基于可重寫的存儲器技術要改變設計,只需要簡單地對器件進行重新編程。傳統波形發生器大多由振蕩器、放大器、衰減器、指示器和調制器組成。這種傳統設計方法的特點是硬件和軟件截然不同,設計中不可相互替代,而且硬件連線復雜,可靠性較差。硬件描述語言 VHDL 和可編程邏輯器件的廣泛應用打破了硬件和軟件的屏障。基于 V

7、erilog 語言,以EDA 技術作為開發手段,采用現場可編程器件作為控制核心實現的波形發生器,與傳統的設計相比較,不僅簡化了硬件控制,提高了系統的整體性能和工作可靠性,也為進一步提高系統集成創造了條件。本課題所涉與的問題包括了解多功能波形發生器的功能,熟悉可編程邏輯器件的工作原理、QUARTUS軟件的使用與 Verilog 語言編程,利用可編程邏輯器件完成多功能波形發生器的設計并且進行仿真驗證。2 2本課題需要重點研究的關鍵問題、解決的思路與實現預期目標的可行性分析本課題需要重點研究的關鍵問題是利用可編程邏輯器件完成多功能波形發生器的設計并進行仿真驗證。解決思路是在深入理解多功能波形發生器的

8、功能和可編程邏輯器件的工作原理的基礎上,用 Verilog 語言編程,利用可編程邏輯器件完成多功能波形發生器的設計并且進行仿真,驗證設計方案是否能實現多功能波形發生器的功能以與實現的效果如何。1 / 643 3完成本課題的工作方案2013.3.42013.3.17了解多功能波形發生器的功能與工作原理;2013.3.182013.3.31熟悉可編程邏輯器件的工作原理,QUARTUS軟件的使用以與 VHDL語言編程的相關知識;2013.4.12013.4.19結合多功能波形發生器需要實現的功能,利用可編程邏輯器件完成多功能波形發生器的設計;2013.4.202013.5.19根據所得結果進行分析,

9、用 Verilog 語言編程進行仿真,驗證設計方案是否能實現多功能波形發生器的功能以與實現的效果如何;2013.5.202013.6.14整理材料,撰寫論文。4 4指導教師審閱意見指導教師指導教師(簽字):2013 年 3 月 13 日1 / 641 / 641 / 64I / 64目錄目錄摘要摘要 IIIIABSTRACTABSTRACTIIIIII引言引言 1 11.1. EDAEDA 與軟件簡介與軟件簡介 2 21.1 EDA 技術發展 21.2 FPGA 介紹 31.3 Modelsim 介紹 41.4 Verilog 與 VHDL 語言介紹 51.5 測試激勵文件介紹 51.6 軟件

10、使用入門 51.6.1 系統仿真軟件 Modulsim 使用 51.6.2 Quartus II 軟件使用 72 2 系統總體設計系統總體設計 9 92.1 硬件總體框圖 92.2 軟件總體框圖 92.3 軟件與硬件設計總結 103 3 系統各模塊設計系統各模塊設計 11113.1 時鐘模塊設計 113.2 增斜波設計 133.3 減斜波設計 153.4 方波設計 183.5 三角波設計 203.6 正弦波設計 223.7 階梯波設計 254 4 系統軟硬件聯合調試系統軟硬件聯合調試 29294.1 系統整體模塊結構圖 294.2 系統仿真輸出圖 30結論結論 3131II / 64致致 33

11、33參考文獻參考文獻 3434附錄附錄 3 35 5譯文譯文 4545摘要摘要在函數發生器發展過程中,出現了很多波形發生的方法,其部分是利用 DDS原理制作而成,比如說由晶體管、運放 IC 等通用器件制作而成,或者利用單片集成芯片制做而成。但是隨著 FPGA 的出現,波形發生的方法更加多元化。將DDS 原理成功的移植到 FPGA 中,就能產生多種波形,頻率可調,相位可選的波形發生裝置,也可以自行設計方法產生波形,使得開發更加簡單。本文提出了一種基于可編程邏輯器件 FPGA 產生任意波形發生器的設計方法。完成了在 FPGA 的控制下,產生遞增斜波、遞減斜波、方波、三角波、正弦波與階梯波行,利用

12、Modelsim 和 Quartus II 進行仿真,驗證波形,并給出了實驗結果。實驗結果表明,此任意波形發生器能夠按照要求輸出相應波形,達到了設計要求。關鍵字:關鍵字:FPGA,斜波;方波;三角波;正弦波;階梯波III / 64ABSTRACTABSTRACT With function generator in the rapid development process, there have been many ways to generate waveform,And most of them do it with DDS. For example, a transistor, op

13、amp IC and other common devices made it , Or the use of monolithic integrated chip system to do. But with the emergence of FPGA,waveform generation method is more diversified. Produce a variety of waveforms, adjustable frequency, phase, selectable waveform generating device.FPGA can design their own

14、 methods of generating waveforms, making development easier.This paper proposes a method of arbitrary waveform generator ,which was based on programmable logic device FPGA design .Under the control of the FPGA,it gnenrated increasing oblique wave and decreasing oblique wave, square wave, triangle wa

15、ve, sine sweep ladder wave line,and then verify the results by the softwave of Modelsim.The experimental results showed that the arbitrary waveform generator can output waveform accordingly in accordance with the requirements, and has reached the design requirements.Keyword:Keyword: FPGA,oblique wav

16、e, square wave, triangle wave, sine wave and step wave1 / 64引言在電子、通信、實驗教學等領域,高精度、高分辨率、幅度相位可控的信號發生器有著廣泛的應用。信號發生器又稱為信號源或者振蕩器,在生產實踐和科技領域中有著廣泛的應用。函數發生器是使用最廣的通用信號源,提供正弦波、鋸齒波、方波、脈沖波等波形,有的還同時具有調制和掃描功能。 函數波形發生器在設計上分為模擬式和數字合成式。眾所周知,數字合成式函數信號源(DDS)無論就頻率、幅度乃至信號的信噪比(S/N)均優于模擬式,其鎖相環(PLL)的設計讓輸出信號不僅是頻率精準,而且相位抖動(ph

17、aseJitter)與頻率漂移均能達到相當穩定的狀態,但數字式信號源中,數字電路與模擬電路之間的干擾始終難以有效克服,也造成在小信號的輸出上不如模擬式的函數信號發生器。 本文引入利用 FPGA 來產生階梯波、三角波、遞增斜波、遞減斜波、正弦波、方波。具有以下優勢:開發信號發生器簡單,容易實現,成本低廉,能夠根據用戶需求進行定制等功能。FPGA 是作為專用集成電路領域中的一種半定制電路而出現的,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點。因為其是一種半定制的電路結構,因而 FPGA 具有很多靈活性,能夠根據本系統的需求靈活改變部電路,以達到系統的需要。另外一方面,硬件描述語

18、言出現,使得 FPGA 開發隨心應手,方便快捷。因為硬件描述語言具有設計的行為特性、設計的數據流特性、設計的結構組成以與包含響應監控和設計驗證方面的時延和波形產生機制,這樣使得從頂層整體架構到底層具體模塊的開發,以與后續的驗證,時延等更加方便快捷。從 FPGA 開發多功能信號發生器的角度來說,因為有了自我定制電路以與靈活高效的硬件描述語言,使得本系統開發簡單,編程容易,可靠性高,代碼冗余量少。而且能夠積極擴展,使得設計更加多元化,甚至能做成任意信號發生器。2 / 641. EDA 與軟件簡介1.1 EDA 技術發展在電子設計自動化(英語:Electronic design automation

19、,縮寫:EDA)出現之前,設計人員必須手工完成集成電路的設計、布線等工作,這是因為當時所謂集成電路的復雜程度遠不與現在。工業界開始使用幾何學方法來制造用于電路光繪(photoplotter)的膠帶。到了 1970 年代中期,開發人應嘗試將整個設計過程自動化,而不僅僅滿足于自動完成掩膜草圖。第一個電路布線、布局工具研發成功。設計自動化會議(Design Automation Conference)在這一時期被創立,旨在促進電子設計自動化的發展。從 1981 年開始,電子設計自動化逐漸開始商業化。1984 年的設計自動化會議(Design Automation Conference)上還舉辦了第一

20、個以電子設計自動化為主題的銷售展覽。Gateway 設計自動化在 1986 年推出了一種硬件描述語言Verilog,這種語言在現在是最流行的高級抽象設計語言。1987 年,在美國國防部的資助下,另一種硬件描述語言 VHDL 被創造出來。現代的電子設計自動化設計工具可以識別、讀取不同類型的硬件描述。根據這些語言規產生的各種仿真系統迅速被推出,使得設計人員可對設計的芯片進行直接仿真。后來,技術的發展更側重于邏輯綜合。目前的數字集成電路的設計都比較模塊化(參見集成電路設計、設計收斂(Design closure)和設計流(Design flow (EDA)) ) 。半導體器件制造工藝需要標準化的設計

21、描述,高抽象級的描述將被編譯為信息單元(cell)的形式。設計人員在進行邏輯設計時尚無需考慮信息單元的具體硬件工藝。利用特定的集成電路制造工藝來實現硬件電路,信息單元就會實施預定義的邏輯或其他電子功能。半導體硬件廠商大多會為它們制造的元件提供“元件庫” ,并提供相應的標準化仿真模型。相比數字的電子設計自動化工具,模擬系統的電子設計自動化工具大多并非模塊化的,這是因為模擬電路的功能更加復雜,而且不同部分的相互影響較強,而且作用規律復雜,電子元件大多沒有那么理想。Verilog AMS 就是一種用于模擬電子設計的硬件描述語言。此文,設計人員可以使用硬件驗證語言來完成項目的驗證工作目前最新的發展趨勢

22、是將集描述語言、驗證語言集成為一體,典型的例子有 SystemVerilog。隨著集成電路規模的擴大、半導體技術的發展,電子設計自動化的重要性急劇增加。這些工具的使用者包括半導體器件制造中心的硬件技術人員,他們的工作是操作半導體器件制造設備并管理整個工作車間。一些以設計為主要業3 / 64務的公司,也會使用電子設計自動化軟件來評估制造部門是否能夠適應新的設計任務。電子設計自動化工具還被用來將設計的功能導入到類似現場可編程邏輯門陣列的半定制可編程邏輯器件,或者生產全定制的專用集成電路。EDA 代表了當今電子設計技術的最新發展方向,它的基本特征是:設計人員按照“自頂向下”的設計方法,對整個系統進行

23、方案設計和功能劃分,系統的關鍵電路用一片或幾片專用集成電路(ASIC)實現,然后采用硬件描述語言(HDL)完成系統行為級設計,最后通過綜合器和適配器生成最終的目標器件。這樣的設計方法被稱為高層次的電子設計方法。下面介紹與 EDA 基本特征有關的幾個概念。1) “自頂向下”的設計方法10 年前,電子設計的基本思路還是選擇標準集成電路“自底向上”(BottomUp)的構造出一個新的系統,這樣的設計方法就如同一磚一瓦建造金字塔,不僅效率低、成本高而且容易出錯。高層次設計給我們提供了一種“自頂向下”(TopDown)的全新設計方法,這種設計方法首先從系統設計入手,在頂層進行功能方框圖的劃分和結構設計。

24、在方框圖一級進行仿真、糾錯,并用硬件描述語言對高層次的系統行為進行描述,在系統一級進行驗證。然后用綜合優化工具生成具體門電路的網表,其對應的物理實現級可以是印刷電路板或專用集成電路。由于設計的主要仿真和調試過程是在高層次上完成的,這一方面有利于早期發現結構設計上的錯誤,避免設計工作的浪費,同時也減少了邏輯功能仿真的工作量,提高了設計的一次成功率。2) ASIC 設計現代電子產品的復雜度日益加深,一個電子系統可能由數萬個中小規模集成電路構成,這就帶來了體積大、功耗大、可靠性差的問題,解決這一問題的有效方法就是采用 ASIC(Application Specific Integrated Circ

25、uits)芯片進行設計。ASIC 按照設計方法的不同可分為:全定制 ASIC,半定制 ASIC,可編程 ASIC(也稱為可編程邏輯器件)。設計全定制 ASIC 芯片時,設計師要定義芯片上所有晶體管的幾何圖形和工藝規則,最后將設計結果交由 IC 廠家掩膜制造完成。優點是:芯片可以獲得最優的性能,即面積利用率高、速度快、功耗低。缺點是:開發周期長,費用高,只適合大批量產品開發。半定制 ASIC 芯片的版圖設計方法有所不同,分為門陣列設計法和標準單元設計法,這兩種方法都是約束性的設計方法,其主要目的就是簡化設計,以犧牲芯片性能為代價來縮短開發時間。4 / 64可編程邏輯芯片與上述掩膜 ASIC 的不

26、同之處在于:設計人員完成版圖設計后,在實驗室就可以燒制出自己的芯片,無須 IC 廠家的參與,大大縮短了開發周期。可編程邏輯器件自七十年代以來,經歷了 PAL、GAL、CPLD、FPGA 幾個發展階段,其中 CPLD/FPGA 屬高密度可編程邏輯器件,目前集成度已高達 200 萬門/片,它將掩膜 ASIC 集成度高的優點和可編程邏輯器件設計生產方便的特點結合在一起,特別適合于樣品研制或小批量產品開發,使產品能以最快的速度上市,而當市場擴大時,它可以很容易的轉由掩膜 ASIC 實現,因此開發風險也大為降低。上述 ASIC 芯片,尤其是 CPLD/FPGA 器件,已成為現代高層次電子設計方法的實現載

27、體。1.2 FPGA 介紹FPGA(FieldProgrammable Gate Array) ,即現場可編程門陣列,它是在PAL、GAL、CPLD 等可編程器件的基礎上進一步發展的產物。它是作為專用集成電路(ASIC)領域中的一種半定制電路而出現的,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點。以硬件描述語言(Verilog 或 VHDL)所完成的電路設計,可以經過簡單的綜合與布局,快速的燒錄至 FPGA 上進行測試,是現代 IC 設計驗證的技術主流。這些可編輯元件可以被用來實現一些基本的邏輯門電路(比如AND、OR、XOR、NOT)或者更復雜一些的組合功能比如解碼器或數

28、學方程式。在大多數的 FPGA 里面,這些可編輯的元件里也包含記憶元件例如觸發器(Flipflop)或者其他更加完整的記憶塊。目前市場上開發 FPGA 的主要有兩大供應商,一個就是 ALTERA 公司,另一個就是 Xilinx 公司。Altera 的主流 FPGA 分為兩大類,一種側重低成本應用,容量中等,性能可以滿足一般的邏輯設計要求,如 Cyclone,CycloneII;還有一種側重于高性能應用,容量大,性能能滿足各類高端應用,如 Startix,StratixII 等,用戶可以根據自己實際應用要求進行選擇。在性能可以滿足的情況下,優先選擇低成本器件。MAX+PLUSII:普遍認為 Ma

29、xplusII 曾經是最優秀的 PLD 開發平臺之一,適合開發早期的中小規模 PLD/FPGA 由 QuartusII 替代,不再推薦使用。QuartusII:Altera 新一代 FPGA/PLD 開發軟件,適合新器件和大規模 FPGA的開發,已經取代 MaxplusII。SOPC Builder: 配合 QuartusII,可以完成集成 CPU 的 FPGA 芯片的開發工5 / 64作DSP Builder: QuartusII 與 Matlab 的接口,利用 IP 核在 Matlab 中快速完成數字信號處理的仿真和最終 FPGA 實現。Xilinx 的主流 FPGA 分為兩大類,一種側重

30、低成本應用,容量中等,性能可以滿足一般的邏輯設計要求,如 Spartan 系列;還有一種側重于高性能應用,容量大,性能能滿足各類高端應用,如 Virtex 系列,用戶可以根據自己實際應用要求進行選擇。 在性能可以滿足的情況下,優先選擇低成本器件。 ISE:Xilinx 公司集成開發的工具 Foundation: Xilinx 公司早期的開發工具,逐步被 ISE 取代嵌入式開發套件(EDK): 用于開發集成 PowerPC 硬核和 MicroBlaze 軟核CPU 的工具System Generator for DSP :配合 Matlab,在 FPGA 中完成數字信號處理的工具1.3 Mode

31、lsim 介紹Mentor 公司的 ModelSim 是業界最優秀的 HDL 語言仿真軟件,它能提供友好的仿真環境,是業界唯一的單核支持 VHDL 和 Verilog 混合仿真的仿真器。它采用直接優化的編譯技術、Tcl/Tk 技術、和單一核仿真技術,編譯仿真速度快,編譯的代碼與平臺無關,便于保護 IP 核,個性化的圖形界面和用戶接口,為用戶加快調錯提供強有力的手段,是 FPGA/ASIC 設計的首選仿真軟件。ModelSim 分幾種不同的版本:SE、PE、LE 和 OEM,其中 SE 是最高級的版本,而集成在 Actel、Atmel、Altera、Xilinx 以與 Lattice 等 FPG

32、A 廠商設計工具中的均是其 OEM 版本。SE 版和 OEM 版在功能和性能方面有較大差別,比如對于大家都關心的仿真速度問題,以 Xilinx 公司提供的 OEM 版本 ModelSim XE為例,對于代碼少于 40000 行的設計,ModelSim SE 比 ModelSim XE 要快 10 倍;對于代碼超過 40000 行的設計,ModelSim SE 要比 ModelSim XE 快近 40 倍。ModelSim SE 支持 PC、UNIX 和 LINUX 混合平臺;提供全面完善以與高性能的驗證功能;全面支持業界廣泛的標準;Mentor Graphics 公司提供業界最好的技術支持與服

33、務。1.4 Verilog 與 VHDL 語言介紹Verilog HDL 語言是一種硬件描述語言,用于從算法級、門級到開關級的多種抽象設計層次的數字系統建模。其具有下述描述能力:設計的行為特性、設計的數據流特性、設計的結構組成以與包含響應監控和設計驗證方面的時延和波形產生機制。所有這些都使用同一種建模語言。此外,Verilog HDL 語言提供6 / 64了編程語言接口,通過該接口可以在模擬、驗證期間從設計外部訪問設計,包括模擬的具體控制和運行。VHDL 語言是一種用于電路設計的高級語言。VHDL 主要用于描述數字系統的結構,行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL 的語言

34、形式、描述風格以與語法是十分類似于一般的計算機高級語言。VHDL 的程序結構特點是將一項工程設計,或稱設計實體(可以是一個元件,一個電路模塊或一個系統)分成外部(或稱可視部分,與端口)和部(或稱不可視部分) ,既涉與實體的部功能和算法完成部分。在對一個設計實體定義了外部界面后,一旦其部開發完成后,其他的設計就可以直接調用這個實體。1.5 測試激勵文件介紹測試激勵也叫 testbench,它是一種驗證的手段。首先,任何設計都是會有輸入輸出的。但是在軟環境中沒有激勵輸入,也不會對你設計的輸出正確性進行評估。那么此時便有一種,模擬實際環境的輸入激勵和輸出校驗的一種“虛擬平臺”的產生。在這個平臺上你可

35、以對你的設計從軟件層面上進行分析和校驗。用通俗的話來表示:測試激勵就是啟動模塊的鑰匙,它能夠模擬模塊的輸入變量,使其能夠按照工程師的要求進行工作。1.6 軟件使用入門1.6.1 系統仿真軟件 Modulsim 使用Modulsim 是目前市場上最流行的 FPGA 仿真軟件,以其卓越的性能和操作簡單性著稱。下面以 Modelsim 10.0 來做個使用向導。1) 軟件安裝好之后,打開軟件 modulsim,點擊 FILE-new-project,將出現如圖 1-4 所示畫面,起名為 test。7 / 64圖 1-4 新建工程2) 在如圖 1-5 所示界面添加 verilog 文件與測試文件,然后

36、進行編譯,將出現圖 1-6 所示畫面圖 1-5 添加文件圖 1-6 編譯結果3) 雙擊測試文件,tb_sysgen 將出現圖 1-7 所示現象,然后在測試文件tb_sysgen 上右擊選中 start simulation ,會出現如圖 1-8 所示現象。8 / 64圖 1-7 點擊仿真圖 1-8 添加波形4) 運行仿真,將開始進行波形仿真,如圖 1-9 所示:9 / 64圖 1-9 波形仿真圖1.6.2 Quartus II 軟件使用Quartus II 軟件是目前市場上最流行的 FPGA 開發綜合軟件,它的開發者是altera 公司。其容易操作,具有良好的可視化,開發簡單,易于被初學這接受

37、。以下介紹 Quartus II 12.0 的簡單使用。1) 打開 Quartus II 軟件,點擊 File 選項,然后選擇 new,選擇 new Quartus II project,選擇好器件以與存放路徑,就建立好工程文件了,如圖 2-10。10 / 64圖 1-10 新建工程2) 點擊 File,選擇 new,新建 verilog HDL,比如文件名字叫 test。編程完畢之后,可以編譯下,看看有沒有語法錯誤,如果沒有語法錯誤,則進入測試文件建立模塊。3) 點擊菜單欄中 processing,選擇 start,選擇 start testbench template write。此時會自

38、動生成 testbench 模板到項目文件夾simulation 里面,后綴為.vt ,這時候就可以通過 modulesim 進行仿真了。2 系統總體設計 本系統是基于 FPGA 開發的多功能波形發生器,利用硬件描述語言Verilog 進行編程,Quartus II 上進行編譯,并仿真驗證結構,接著利用Modelsim 進行再次仿真驗證,以達到本系統的要求,產生增斜波、減斜波、方波、三角波、正弦波、階梯波形。但是確定該方案之前還是有很多方案: 方案一: 用分立元件組成的函數發生器:通常是單函數發生器且頻率不高,其工作不很穩定,不易調試方案二:可以由晶體管、運放 IC 等通用器件制作,更多的則是

39、用專門的函數信號發生器 IC 產生。早期的函數信號發生器 IC,如L8038、BA205、XR2207/2209 等,它們的功能較少,精度不高,頻率上限只有300kHz,無法產生更高頻率的信號,調節方式也不夠靈活,頻率和占空比不能獨立調節,二者互相影響。11 / 64方案三:利用單片集成芯片的函數發生器:能產生多種波形,達到較高的頻率,且易于調試。鑒于此,美國美信公司開發了新一代函數信號發生器ICMAX038,它克服了(2)中芯片的缺點,可以達到更高的技術指標,是上述芯片望塵莫與的。MAX038 頻率高、精度好,因此它被稱為高頻精密函數信號發生器 IC。在鎖相環、壓控振蕩器、頻率合成器、脈寬調

40、制器等電路的設計上,MAX038 都是優選的器件。方案四: 利用專用直接數字合成 DDS 芯片的函數發生器:能產生任意波形并達到很高的頻率。但成本較高相比以上四種方案,利用 FPGA 進行開發具有自己的優勢性:1) 可以根據自己的需求進行定制特定的電路;2) 綜合仿真容易實現,擁有 Quartus II、Modelsim 和 ISE 等軟件編程;3) 可編程性強,Verilog 語言編程語法比較類似與熟悉的 C 語言,學習簡單易用2.1 硬件總體框圖硬件設計主要包含三個模塊,即時鐘產生模塊、FPGA 信號產生模塊、D/A 數模轉換模塊。總體框圖如圖 3-1 所示圖 3-1時鐘模塊是用來給 FP

41、GA 提供基準時鐘,其穩定性決定了信號產生器的穩定;FPGA 信號產生模塊是各種波形信號產生如:正弦波,方波,斜波,鋸齒波,三角波,波形頻率設定;D/A 數模轉化模塊是將 FPGA 輸出的數據整合成模擬的波形。12 / 64圖 3-22.2 軟件總體框圖軟件系統設計主要包含三個模塊,即基于 altera 公司的 Quartus II 分頻模塊,波形產生模塊,仿真軟件 Modelsim 波形仿真模塊。總體設計如圖 3-2所示。時鐘分頻模塊是指將基準時鐘進行分頻,以達到變換頻率的功能。波形產生模塊用來產生各種波形,如增斜波,減斜波,正弦波,階梯波形,方波。數字輸出模塊,將各種波形用數字進行輸出。2

42、.3 軟件與硬件設計總結綜上所述軟硬件結構,利用時鐘模塊產生基準時鐘傳輸到 FPGA 上,FPGA利用鎖相環對時鐘倍頻產生更高的時鐘頻率,然后根據用戶需要,對時鐘進行分頻,產生不同頻率的波形。通過 Verilog 語言進行編程來產生各種波形,輸出到 DA 數模轉換模塊,產生模擬波形信號。3 系統各模塊設計3.1 時鐘模塊設計時鐘模塊的功能是分配系統時鐘,使得 FPGA 輸出不同的頻率的波形。根據這個功能,利用 Verilog 編寫了分頻時鐘模塊。利用 ALTERA 公司開發的 QuartusII13 / 64軟件進行綜合,布線之后,得到如圖 3-1 模塊原理圖:圖 3-1 分頻時鐘模塊時鐘模塊

43、 Verilog 代碼如下:module clk_div(sysclk ,reset,div ,clk_out );input sysclk,reset;input 7:0 div;output clk_out;reg clk_out;/reg clk_out_tmp=0;reg 7:0 count;reg 7:0 div_2;always (posedge sysclk or negedge reset) beginif(!reset) beginclk_out = 0;count = 0;div_2 = div1;endelse beginif(count=div_2) beginclk_

44、out = clk_out;count = 0;endelsecount = count + 1;endendendmodule14 / 64從圖 3-1 和時鐘模塊代碼中可以得到以下信息:模塊的輸入變量是:外部基準時鐘 sysclk,模塊復位輸入 reset,分頻系數輸入 div,波形時鐘輸出 clk_out;復位輸入 reset 低電平時,時鐘模塊復位,系統不運作;分頻系數 div 決定波形時鐘,其分頻計算公式是:,比如說 div 值為 1,則輸出時鐘是1div 系統時鐘頻率輸出時鐘頻率系統時鐘的二分之一;根據以上程序,編寫了下列測試程序:module tb_clkdiv;/ Inputs

45、reg sysclk;reg reset;reg 7:0 div;/ Outputswire clk_out;/ Instantiate the Unit Under Test (UUT)clk_div uut (.sysclk(sysclk), .reset(reset), .div(div), .clk_out(clk_out);always #10 sysclk = sysclk;initial begin/ Initialize Inputssysclk = 0;reset = 0;div = 0;/ Wait 100 ns for global reset to finish#100

46、; reset = 1;div = 1;#200;div = 2;15 / 64endendmodule從上述激勵中看出,div=1,也就是 2 分頻,系統的運行周期是 20ns。利用 Modelsim 軟件對時鐘模塊進行仿真,結果如圖 3-2 所示:圖 3-2 兩分頻時鐘波形從圖中可以看出在 div=1,rest=1 的情況下,輸出時鐘 clk_out 是輸入時鐘 clk_in 的一半,這很好地證明了分頻時鐘的正確性。再用 Quartus II 軟件進行綜合仿真,結果如圖 3-3 所示。圖 3-3 兩分頻時鐘波形從圖 3-3 所示的時鐘波形來看輸出時鐘 clk_out 時鐘頻率是輸入時鐘的一

47、半,但是存在小量的延時,比如說以 1us 為周期的情況下,延時大約是0.25us,但是由于我們采用分頻后的時鐘作為產生波形的基準時鐘,所以這點延時不影響整個結果。綜上所述,該時鐘分頻模塊能夠將輸入時鐘頻率按照自己系統需求分配出不同頻率。3.2 增斜波設計增斜波是指波形按照一定的步幅遞增,達到最高點后又回到值為零的狀態,這樣循環進行。按照這種思想設計出來軟件流程圖如圖 3-4 所示。16 / 64圖 3-4 增斜波軟件流程圖根據圖 3-4 所示軟件流程圖設計出增斜波模塊的模塊框圖,如圖 3-5 所示。圖 3-5 增斜波模塊框圖 從圖 3-5 中來分析該模塊的輸入輸出模塊以與引腳定義:模塊的輸入變

48、量是:外部基準時鐘 sysclk_in,模塊復位輸入reset_in,分頻系數輸入 div。輸出時鐘波形時鐘輸出 Qout_add;復位輸入 reset 低電平時,時鐘模塊復位,系統不運作;分頻系數 div 決定波形時鐘,其分頻計算公式是:,比如說 div 值為 1,則輸出時鐘是1div系統時鐘頻率輸出時鐘頻率系統時鐘的二分之一;Qout_add 是增斜波模塊的波形輸出。根據軟件流程圖以與模塊框圖中輸入輸出引腳定義,使用 Verilog 語言設計了以下代碼:開始rest,sysclk,div輸入輸出遞增波形結束分頻初始化變量rest=1NOYES17 / 64module add(SysClk

49、 ,/系統時鐘rest,/復位開關,低電平復位div,/分頻Qout_add /遞增斜波 );input SysClk;input rest;input 7:0 div;input SysClk;input rest;input 7:0 div;output 7:0 Qout_add;wire clk_out;clk_div clk(.sysclk(SysClk),.reset(rest),.div(div) ,.clk_out(clk_out);/產生遞增斜波reg 7:0 tmp_add=0;always (posedge clk_out or negedge rest) beginif(

50、!rest) beginQout_add = 0;tmp_add = 0;endelse begintmp_add = tmp_add + 1 ;if(tmp_add = 8b1111_1111) begintmp_add = 0;endelse beginQout_add = tmp_add;18 / 64endendendendmodule通過以上的方法可以輸出遞增波形,其波形的頻率決定于輸入時鐘和分頻系數。設計測試文件,將 div 設置為 1 即為 2 分頻,sysclk 設置周期為 20ns。通過 Modelsim 仿真得到圖 3-6 增斜波輸出:圖 3-6 增斜波輸出從圖 3-6 中

51、,看出波形輸出 Qout_add 是按照增斜波的趨向增長的,步進值是 1,從 0 達到 255,到 255 溢出又變為 0 值。為了進一步驗證該遞增波形的正確性,我們采用 Quartus II 進行波形仿真,得到的仿真波形圖如圖 3-7 所示。圖 3-7 增斜波輸出從圖 3-6 和圖 3-7 分別是 Modelsim 和 Quartus II 仿真出來的波形,從波形上來觀察可以看出基本沒有區別,進一步驗證了該遞增斜波產生模塊的正確性。 3.3 減斜波設計減斜波是指波形按照一定的步幅遞減,達到最高點后又回到最大值的狀態,這樣循環進行。根據模塊需求設計出模塊流程圖如圖 3-8 所示。19 / 64

52、圖 3-8 減斜波軟件流程圖根據圖 3-8 所示軟件流程圖設計出減斜波模塊的模塊框圖,如圖 3-9 所示。圖 3-9 減斜波模塊原理圖從圖 3-9 中來分析該模塊的輸入輸出模塊以與引腳定義:模塊的輸入變量是:外部基準時鐘 sysclk,模塊復位輸入 reset,分頻系數輸入 div。輸出時鐘波形時鐘輸出 Qout_min;復位輸入 reset 低電平時,時鐘模塊復位,系統不運作;分頻系數 div 決定波形時鐘,其分頻計算公式是:,比如說 div 值為 1,則輸出時鐘是1div 系統時鐘頻率輸出時鐘頻率系統時鐘的二分之一;Qout_min 是減斜波模塊的波形輸出。根據軟件流程圖以與模塊框圖中輸入

53、輸出引腳定義,使用 Verilog 語言設計了以下代碼:module min1(SysClk ,/系統時鐘rest,/復位開關,低電平復位開始rest,sysclk,div輸入輸出遞減波形結束分頻初始化變量rest=1NOYES20 / 64div,/分頻Qout_min /遞增斜波 );input SysClk;input rest;input 7:0 div;input SysClk;input rest;input 7:0 div;output 7:0 Qout_min;wire clk_out;clk_div clk(.sysclk(SysClk),.reset(rest),.div(

54、div) ,.clk_out(clk_out);/產生遞減斜波reg 7:0 tmp_min=8b1111_1111;always (posedge clk_out or negedge rest) beginif(!rest) beginQout_min = 0;tmp_min = 8b1111_1111;endelse begintmp_min = tmp_min - 1 ;if(tmp_min = 0) begintmp_min = 8b1111_1111;endelse beginQout_min = tmp_min;endendend21 / 64endmodule從上述代碼可以分析

55、出輸出 Qout_min 從最大的 255 開始遞減,每來一次分頻過的時鐘減 1,一直到 0,然后又恢復到 255,這樣循環往復。設計測試文件,將 div 設置為 1 即為 2 分頻,sysclk 設置周期為 20ns。通過 Modelsim 仿真得到圖 3-10 波形:圖 3-10 減斜波波形輸出圖 3-10 可以清楚看出遞減斜波的波形圖,即從最大值開始依次往小減,直到最小值 0,又重新恢復到最大,這樣循環往復。為了進一步驗證該模塊的正確性,采用 Quartus II 進行波形仿真,其結果如圖 3-11 所示。圖 3-11 減斜波波形輸出 從圖 3-11 中可以發現跟圖 3-10 中發現的一

56、樣的周期性減斜波,進一步驗證了模塊的正確性。3.4 方波設計方波是指非正弦曲線的波形,輸出的形狀如矩形,只有0 , 1兩個值。根據模塊需求設計出模塊流程圖如圖 3-12 所示。22 / 64圖 3-12 方波模塊軟件流程圖根據圖 3-12 所示軟件流程圖設計出方波模塊的模塊框圖,如圖 3-13 所示。圖 3-13 方波模塊原理圖從圖 3-13 中來分析該模塊的輸入輸出模塊以與引腳定義:模塊的輸入變量是:外部基準時鐘 sysclk,模塊復位輸入 reset,分頻系數輸入 div。輸出時鐘波形時鐘輸出 Qout_squ;復位輸入 reset 低電平時,時鐘模塊復位,系統不運作;分頻系數 div 決

57、定波形時鐘,其分頻計算公式是:,比如說 div 值為 1,則輸出時鐘是1div 系統時鐘頻率輸出時鐘頻率系統時鐘的二分之一;Qout_squ 是方波波模塊的波形輸出。根據軟件流程圖以與模塊框圖中輸入輸出引腳定義,使用 Verilog 語言設計了以下核心代碼:/產生方波reg 7:0 tmp_squ=0;reg squ_flag=0;always (posedge clk_out or negedge rest) beginif(!rest) beginQout_squ = 0;tmp_squ = 0;squ_flag=0;end23 / 64else begintmp_squ = tmp_sq

58、u + 1;if(tmp_squ = 8b0000_1111) begintmp_squ = 0;squ_flag = squ_flag;endif(squ_flag)Qout_squ = 8b1111_1111;elseQout_squ = 0;endend簡單分析下以上代碼:tmp_squ 是用來計部時鐘 clk_out 的脈沖次數,當達到 8b0000_1111 時,重新計 0,這個時候,將輸出變量翻轉,產生方波。設計測試文件,將 div 設置為 1 即為 2 分頻,sysclk 設置周期為 20ns。通過Modelsim 仿真得到圖 3-14 波形:圖 3-14 方波波形仿真圖從圖 3

59、-14 中可以看出當 div=1 和 reset=1 的情況下 clk_out_tmp 是輸入時鐘的一辦,每來 16 個周期 Qout_squ 輸出電平翻轉一遍,以產生標準的方波。為了驗證方波模塊的正確性,采用 Quartus II 進行波形仿真,得到如圖 3-15所示仿真波形圖。圖 3-15 方波波形仿真圖從圖 3-14 中也可以看到和圖 3-15 同樣的現象每經過 16 個周期電平翻轉一次,也就是說每 32 個周期產生一個方波波形,完全符合標準,另外,其頻率取24 / 64決于分頻系數 div 和系統輸入時鐘。3.5 三角波設計三角波形是指波形值從最小值開始遞增,到達最高點后又開始依次減小

60、,直到減小到最小值,依次反復,形狀想三角形。根據模塊需求設計出模塊流程圖如圖 3-16 所示。圖 3-16 三角波軟件流程圖根據圖 3-16 所示軟件流程圖設計出方波模塊的模塊框圖,如圖 3-17 所示。圖 3-17 三角波模塊原理圖從圖 3-17 中來分析該模塊的輸入輸出模塊以與引腳定義:模塊的輸入變量是:外部基準時鐘 sysclk,模塊復位輸入 reset,分頻系數輸入 div。輸出時鐘波形時鐘輸出 Qout_tri;復位輸入 reset 低電平時,時鐘模塊復位,系統不運作;分頻系數 div 決定波形時鐘,其分頻計算公式是:,比如說 div 值為 1,則輸出時鐘是1div 系統時鐘頻率輸出

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論