用VHDL語言設計實現基于FPGA的數字頻率計_第1頁
用VHDL語言設計實現基于FPGA的數字頻率計_第2頁
用VHDL語言設計實現基于FPGA的數字頻率計_第3頁
用VHDL語言設計實現基于FPGA的數字頻率計_第4頁
用VHDL語言設計實現基于FPGA的數字頻率計_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、摘要摘要II電子科技大學211樓308數字頻率計用VHDL語言設計實現基于FPGA的數字頻率計學號姓名2014/04/07-2014/04/30摘 要本文重點介紹了一種基于FPGA的數字頻率的實現方法。該設計采用硬件描述語言VHDL,在軟件開發(fā)平臺ISE上完成。該設計的頻率計能準確的測量頻率在10Hz到10MHz之間的信號。使用ModelSim仿真軟件對VHDL程序做了仿真,并完成了綜合布局布線,最終下載到芯片上取得良好測試效果。關鍵詞:FPGA,VHDL,ISE,頻率計目錄目錄目 錄 TOC o 1-3 h z u HYPERLINK l _Toc386641898 第一章 引言 PAGER

2、EF _Toc386641898 h 1 HYPERLINK l _Toc386641899 第二章 基于FPGA的VHDL設計流程 PAGEREF _Toc386641899 h 2 HYPERLINK l _Toc386641900 2.1 概述 PAGEREF _Toc386641900 h 2 HYPERLINK l _Toc386641901 2.2 VHDL語言介紹 PAGEREF _Toc386641901 h 2 HYPERLINK l _Toc386641902 2.2.1 VHDL的特點 PAGEREF _Toc386641902 h 3 HYPERLINK l _Toc3

3、86641903 2.3 FPGA開發(fā)介紹 PAGEREF _Toc386641903 h 4 HYPERLINK l _Toc386641904 第三章 數字頻率計的軟件開發(fā)環(huán)境 PAGEREF _Toc386641904 h 5 HYPERLINK l _Toc386641905 3.1 開發(fā)環(huán)境 PAGEREF _Toc386641905 h 5 HYPERLINK l _Toc386641906 3.2 ModelSim介紹 PAGEREF _Toc386641906 h 5 HYPERLINK l _Toc386641907 3.3 ISE介紹 PAGEREF _Toc3866419

4、07 h 6 HYPERLINK l _Toc386641908 第四章 數字頻率計的設計與實現 PAGEREF _Toc386641908 h 7 HYPERLINK l _Toc386641909 4.1 任務要求 PAGEREF _Toc386641909 h 7 HYPERLINK l _Toc386641910 4.2 測量原理 PAGEREF _Toc386641910 h 7 HYPERLINK l _Toc386641911 4.2.1 頻率或時間的原始基準 PAGEREF _Toc386641911 h 8 HYPERLINK l _Toc386641912 4.2.2 電子

5、計數器測頻方法 PAGEREF _Toc386641912 h 9 HYPERLINK l _Toc386641913 4.3 設計方案與系統需求 PAGEREF _Toc386641913 h 10 HYPERLINK l _Toc386641914 4.4 各模塊的功能及實現 PAGEREF _Toc386641914 h 12 HYPERLINK l _Toc386641915 4.4.1 分頻器 PAGEREF _Toc386641915 h 12 HYPERLINK l _Toc386641916 4.4.2 閘門選擇器 PAGEREF _Toc386641916 h 13 HYPE

6、RLINK l _Toc386641917 4.4.3 測頻控制器 PAGEREF _Toc386641917 h 14 HYPERLINK l _Toc386641918 4.4.4 計數器 PAGEREF _Toc386641918 h 15 HYPERLINK l _Toc386641919 4.4.5 鎖存器 PAGEREF _Toc386641919 h 16 HYPERLINK l _Toc386641920 4.4.6 掃描顯示控制系統 PAGEREF _Toc386641920 h 17 HYPERLINK l _Toc386641921 4.4.6 7段譯碼顯示控制系統 PA

7、GEREF _Toc386641921 h 18 HYPERLINK l _Toc386641922 4.5 分配引腳和下載實現 PAGEREF _Toc386641922 h 19 HYPERLINK l _Toc386641923 4.6 誤差分析 PAGEREF _Toc386641923 h 19 HYPERLINK l _Toc386641924 4.6.1 1誤差 PAGEREF _Toc386641924 h 20 HYPERLINK l _Toc386641925 4.6.2 標準頻率誤差 PAGEREF _Toc386641925 h 21 HYPERLINK l _Toc3

8、86641926 4.6.3 結論 PAGEREF _Toc386641926 h 21 HYPERLINK l _Toc386641927 第五章 實驗結論及總結 PAGEREF _Toc386641927 h 23 HYPERLINK l _Toc386641928 參考文獻 PAGEREF _Toc386641928 h 24 HYPERLINK l _Toc386641929 致 謝 PAGEREF _Toc386641929 h 25 HYPERLINK l _Toc386641930 附 錄 PAGEREF _Toc386641930 h 26 HYPERLINK l _Toc38

9、6641931 附錄1. 分頻器程序 PAGEREF _Toc386641931 h 26 HYPERLINK l _Toc386641932 附錄2. 閘門選擇器程序 PAGEREF _Toc386641932 h 28 HYPERLINK l _Toc386641933 附錄3. 測頻控制器程序 PAGEREF _Toc386641933 h 29 HYPERLINK l _Toc386641934 附錄4. 計數器程序 PAGEREF _Toc386641934 h 30 HYPERLINK l _Toc386641935 附錄5. 鎖存器程序 PAGEREF _Toc386641935

10、 h 31 HYPERLINK l _Toc386641936 附錄5. 掃描顯示控制程序 PAGEREF _Toc386641936 h 33 HYPERLINK l _Toc386641937 附錄5. 譯碼系統程序 PAGEREF _Toc386641937 h 34第一章 引言 PAGE 1第一章 引言在電子技術領域內,頻率是一個最基本的參數,頻率與其它許多電參量的測量方案、測量結果都有十分密切的關系。如時間,速度等都涉及到或本身可轉化為頻率的測量。因此,頻率的測量就顯得更為重要。而且,目前在電子測量中,頻率的測量精確度是最高的.現在市場上有各種多功能,高精度,高頻率的數字頻率計,但價

11、格不菲。而在實際工程中,不是對所有信號的頻率測量都要求達到非常高的精度。因此,本文提出了一種能滿足一般測量精度要求,但成本低廉的數字頻率計的設計方案。本文主要任務是針對設計的要求,基于FPGA利用硬件描述語言VHDL完成數字頻率計的設計,通過仿真,分析,綜合并最終下載到FPGA里面去實現。除被測信號的整形部分、鍵輸入部分以外,其余全部在一片FPGA芯片上實現,整個系統非常精簡,而且具有靈活的現場可更改性。在不更改硬件電路的基礎上,對系統進行各種改進還可以進一步提高系統的性能。電子科技大學現代電子技術綜合實驗報告第二章 基于FPGA的VHDL設計流程 PAGE 4 PAGE 5第二章 基于FPG

12、A的VHDL設計流程2.1 概述數字頻率計是數字電路中的一個典型應用,實際的硬件設計用到的器件較多,連線比較復雜,而且會產生比較大的延時,造成測量誤差、可靠性差。頻率計的設計有傳統方法和現代方法,傳統的設計方法耗時耗功,設計強度大,且容易出錯,設計的質量不一定是最好的。自然我們考慮到現代方法,即二十世紀八十年代興起的電子設計自動化技術,英文為Electronic Design Auto,縮寫為EDA。在EDA設計工具中,用的最廣泛的是VHDL和VERILOG,當然還有其它的。比較VHDL和VERILOG,在頂層設計方面VHDL優(yōu)于VERILOG,在門級電路設計方面VERILOG優(yōu)于VHDL。隨

13、著復雜可編程邏輯器件(CPLD)的廣泛應用,以EDA工具作為開發(fā)手段,運用VHDL語言,將使整個系統大大簡化,提高整體的性能和可靠性。本次的頻率計設計主要是頂層設計,目的是設計6位十進制頻率計,學習常用的數字系統設計方法。采用VDHL編程設計實現的數字頻率計,除被測信號的整形部分、鍵輸入部分以外,其余全部在一片FPGA芯片上實現,整個系統非常精簡,而且具有靈活的現場可更改性。在不更改硬件電路的基礎上,對系統進行各種改進還可以進一步提高系統的性能。該數字頻率計具有高速、精確、可靠、抗干擾性強和現場可編程等優(yōu)點。2.2 VHDL語言介紹VHDL(Very-high-speed Integrated

14、 Circuit Hardware Description Language)誕生于1982年。1987年底,VHDL被IEEE(The Institute of Electrical and Electronics Engineers)和美國國防部確認為標準硬件描述語言。自IEEE公布了VHDL的標準版本(IEEE-1076)之后,各EDA公司相繼推出了自己的VHDL設計環(huán)境,并宣布自己的設計工具可以和VHDL接口。此后VHDL在電子設計領域得到了廣泛的接受,并逐步取代了原有的非標準硬件描述語言。1993年,IEEE對VHDL進行了修訂,從更高的抽象層次和系統描述能力上擴展VHDL的內容,公

15、布了新版本的VHDL,即IEEE標準的1076-1993版本。現在,VHDL和VERILOG作為IEEE的工業(yè)標準硬件描述語言,又得到眾多EDA公司的支持,在電子工程領域,已成為事實上的通用硬件描述語言。有專家認為,在新的世紀中,VHDL和VERILOG語言將承擔起幾乎全部的數字系統設計任務。2.2.1 VHDL的特點VHDL主要用于描述數字系統的結構、行為、功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式,描述風格以及句法十分類似于一般的計算機高級語言。VHDL的程序結構特點是將一項工程設計,或稱為設計實體(可以是一個元件、一個電路模塊或一個系統)分成外部(又稱為可視部分,即

16、端口)和內部(又稱為不可視部分),即設計實體的內部功能和算法完成部分。在對一個設計實體定義了外部界面后,一旦其內部開發(fā)完成后,其它的設計就可以直接調用這個實體。這種將設計實體分成內外部分的概念是VHDL系統設計的基本點。應用VHDL進行工程設計的優(yōu)點是多方面的,具體如下:1、與其它的硬件描述語言相比,VHDL具有更強的行為描述能力,從而決定了它成為系統設計領域最佳的硬件描述語言。強大的行為描述能力是避開具體的器件結構,從邏輯行為上描述和設計大規(guī)模電子系統的重要保證。就目前流行的EDA工具和VHDL綜合器而言,將基于抽象的行為描述風格的VHDL程序綜合成為具體的FPGA和CPLD等目標器件的網表

17、文件已不成問題,只是在綜合與優(yōu)化效率上略有差異。2、VHDL最初是作為一種仿真標準格式出現的,因此VHDL既是一種硬件電路描述和設計語言,也是一種標準的網表格式,還是一種仿真語言。其豐富的仿真語句和庫函數,使得在任何大系統的設計早期(即尚未完成),就能用于查驗設計系統的功能可行性,隨時可對設計進行仿真模擬。即在遠離門級的高層次上進行模擬,使設計者對整個工程設計的結構和功能的可行性做出決策。3、VHDL語句的行為描述能力和程序結構決定了它具有支持大規(guī)模設計的分解和已有設計的再利用功能,符合市場所需求的,大規(guī)模系統高效、高速的完成必須由多人甚至多個開發(fā)組共同并行工作才能實現的特點。VHDL中設計實

18、體的概念、程序包的概念、設計庫的概念為設計的分解和并行工作提供了有力的支持。4、對于用VHDL完成的一個確定的設計,可以利用EDA工具進行邏輯綜合和優(yōu)化,并自動地把VHDL描述設計轉變成為門級網表。這種方式突破了門級電路設計的瓶頸,極大地減少了電路設計的時間和可能發(fā)生的錯誤,降低了開發(fā)成本。應用EDA工具的邏輯優(yōu)化功能,可以自動地把一個綜合后的設計變成一個更高效、更高速的電路系統。反過來,設計者還可以容易地從綜合和優(yōu)化后的電路獲得設計信息,返回去更新修改VHDL設計描述,使之更為完善。5、VHDL對設計的描述具有相對獨立性,設計者可以不懂硬件的結構,也不必管最終設計實現的目標器件是什么,而進行

19、獨立的設計。正因為VHDL硬件描述與具體的工藝技術和硬件結構無關,VHDL設計程序的硬件實現目標器件有廣闊的選擇范圍,其中包括各系列的CPLD、FPGA及各種門陣列實現目標。6、由于VHDL具有類屬描述語句和子程序調用等功能,對于已完成的設計,在不改變源程序的條件下,只需要改變端口類屬參量或函數,就能輕易地改變設計的規(guī)模和結構。2.3 FPGA開發(fā)介紹現場可編程門陣列(FPGA)器件是八十年代中期出現的新產品,它的應用大大地方便了IC的設計,因而隨著數字技術日益廣泛的應用,以FPGA為代表的ASIC器件得到了迅速的普及和發(fā)展,器件集成度和速度都在高速增長。傳統的電路設計過程是:先畫原理圖、把原

20、理圖繪制成印制電路板圖、再制版、安裝、調試。有了FPGA,我們只需要在計算機上繪出原理圖,再運行相應的軟件,就可把所設計的邏輯電路在FPGA中實現。所有步驟均可自動完成。電子設計工程師自己設計專用集成電路成為了一件很容易的事情。FPGA作為專用集成電路(ASIC)概念上的一個新型范疇和門類,以其高度靈活的用戶現場編程方式,現場定義高容量數字單片系統的能力,能夠重復定義、反復改寫的新穎功能,為復雜數字系統設計、研制以及產品開發(fā)提供了有效的技術手段。電子應用設計工程師應用FPGA技術不僅可避免通常ASIC單片系統設計周期長,前期投資風險大的弱點,而且克服了過去板級通用數字電路應用設計的落后,繁瑣和

21、不可靠性。目前FPGA的兩個重要發(fā)展與突破是,大多數廠商在其高端器件上都提供了片上的處理器(如CPU、DSP)等硬核(Hard Core)或固化核(Fixed Core)。比如Xilinx的Virtex II Pro芯片可以提供Power PC,而Altera的Stratix、Excalibur等系列芯片可以提供Nios、DSP和Arm等模塊。在FPGA上集成微處理器,使SOPC設計更加便利與強大。另一個發(fā)展是在不同器件商推出的高端芯片上大都集成了高速串行收發(fā)器,一般能夠達到3Gb/s以上的數據處理能力,在Xilinx、Altera、Lattice都有相應的器件型號提供該功能。這些新功能使FP

22、GA的數據吞吐能力大幅度增強。第三章 數字頻率計的軟件開發(fā)環(huán)境 PAGE 6 PAGE 7第三章 數字頻率計的軟件開發(fā)環(huán)境本章主要介紹項目中將要用到了一系列軟件,包括用于VHDL語言編寫和編譯的ISE軟件和用于程序仿真的仿真軟件ModelSim。3.1 開發(fā)環(huán)境隨著可編程器件紛紛超越百萬門級,設計者面臨的產品性能與設計效率的挑戰(zhàn)也越來越大。設計者必須合理選擇各EDA廠家提供的加速設計的工具軟件,這樣才能在較短的時間內設計出高效穩(wěn)定的產品。在本次設計中,由于選擇的FPGA芯片是由Xilinx公司生產的,所以我們主要使用ModelSim和ISE軟件進行仿真和綜合。3.2 ModelSim介紹Mod

23、elSim支持PC和UNIX平臺,是單一內核支持VHDL和Verilog混合仿真的HDL語言仿真器。ModelSim不僅可以完成設計的功能驗證,也可實現邏輯綜合后的門級仿真以及布局布線后的功能與時序驗證。ModelSim完全支持VHDL和Verilog標準;采用直接編輯技術,大大提高HDL編譯和仿真速度。還可以利用ModelSim調用設計文件進行仿真分析。在調試環(huán)境中,設計者可以通過ModelSim的快速調試步驟以及對各種信號的監(jiān)控功能(無論信號處于VHDL層,還是處于混合語言層)使仿真的執(zhí)行過程形象直觀化,幫助設計者及時發(fā)現漏洞,縮短設計周期。ModelSim最大的特點是其強大的調試功能:先

24、進的數據流窗口,可以迅速追蹤到生產不定或者錯誤狀態(tài)的原因;性能分析工具幫助分析性能瓶頸,加速仿真;代碼覆蓋率檢查確保測試的完備;多種模式的波形比較功能;先進的 SignalSpy功能,可以方便地訪問VHDL或者VHDL和Verilog混合設計中的底層信號;支持加密IP;可以實現與Matlab的Simulink的聯合仿真。3.3 ISE介紹ISE的主要功能包括設計輸入、綜合、仿真、實現和下載,涵蓋了可編程邏輯器件開發(fā)的全過程,從功能上講,完成CPLD/FPGA的設計流程無需借助任何第三方EDA軟件。下面簡要說明各功能的作用:設計輸入:ISE提供的設計輸入工具包括用于HDL代碼輸入和查看報告的IS

25、E文本編輯器(The ISE Text Editor),用于原理圖編輯的工具ECS(The Engineering Capture System),用于生成IP Core的Core Generator,用于狀態(tài)機設計的StateCAD以及用于約束文件編輯的Constraint Editor等。綜合:ISE的綜合工具不但包含了Xilinx自身提供的綜合工具XST,同時還可以內嵌Mentor Graphics公司的Leonardo Spectrum和Synplicity公司的Synplify,實現無縫鏈接。 仿真:ISE本身自帶了一個具有圖形化波形編輯功能的仿真工具HDL Bencher,同時又提

26、供了使用Model Tech公司的Modelsim進行仿真的接口。 實現:此功能包括了翻譯、映射、布局布線等,還具備時序分析、管腳指定以及增量設計等高級功能。 下載:下載功能包括了BitGen,用于將布局布線后的設計文件轉換為位流文件,還包括了IMPACT,功能是進行芯片配置和通信,控制將程序燒寫到FPGA芯片中去。第四章 數字頻率計的設計與實現 PAGE 18 PAGE 17第四章 數字頻率計的設計與實現4.1 任務要求本實驗核心任務是完成基于FPGA利用VHDL語言設計一個數字頻率計的設計,仿真,下載實現并實際測量效果??紤]到是首次接觸VHDL描述語言,并且以前沒有過基于FPGA設計的經驗

27、,所以在完成實驗的同時,也不斷的加深對VHDL描述語言的掌握,以及不斷總結由軟件來實現硬件的特點,為以后的工作和更進一步的學習學習打好基礎。數字頻率計的相關技術指標如下:1、位數:測量頻率通過LED數碼管為六位十進制數顯示。2、測試頻率范圍為:10Hz10MHz。3、量程分為三檔:第一檔:最小量程檔,閘門時間為1S時,最大讀數為999.999KHz。第二檔:閘門時間為0.1S時,最大讀數為9999.99KHz。第三檔:閘門時間為0.01S時,最大讀數為99999.9KHz。以上三檔,實際測得的頻率是1Hz99999.9KHz。顯然完全涵蓋了10Hz10MHz的范圍。4、顯示工作方式:a、用BC

28、D七段共陽極數碼管顯示讀數,只有在讀數不發(fā)生跳變時才是正確的結果。b、用一個LED做計數器溢出標志。c、用一個LED閘門的開與閉。5、要求被測輸入信號應是符合數字電路要求的脈沖波或正弦波。4.2 測量原理頻率計的基本原理是用一個頻率穩(wěn)定度高的頻率源作為基準時鐘,對比測量其他信號的頻率。通常情況下計數每秒內待測信號的脈沖個數,此時我們稱閘門時間為1S,閘門時間也可以大于或小于1S。閘門時間越長,得到的頻率值就準確,但閘門時間越長則每測一次頻率的間隔就越長;閘門時間越短,測得頻率值刷新就越快,但測得的頻率精準度就受影響。4.2.1 頻率或時間的原始基準時間是某一時刻與另一時刻之間的時間長度,這里指

29、的時刻是連續(xù)流逝的時間中的一個時點。為了使大家能夠確定出同一時刻,就需要使用共同的時刻標尺來衡量,用這個時刻標尺上的標度來客觀地認識時刻。要計量時間需要有固定不變的時間單位,用秒作為時間的基本單位。如果一秒內的振動數即頻率為已知,則可由此振動數的倒數得到秒的間隔,這就是說單位秒和標準頻率數是互相依存的事物。時刻和時間發(fā)展的歷史,集中反映在秒的定義在不斷變遷,秒的準確度不斷提高。采用天文觀測方法,求得的太陽出現于天頂的平均周期為平均太陽日。將太陽日分為246060份,得到的秒為零類世界時(記作),其準確度在量級。地球自轉受到極運動(極移引起的經度變化)的影響,校正了這個偏差而得到的地球自轉的周期

30、,稱為第一世界時(記作)。再把地球自轉的季度性、年度性的變化(最大可達0.03秒)校正,就引出了第二世界時(記作)。世界時經過五十年的觀測,發(fā)現其穩(wěn)定度為。這樣,以為標準其計時準確度很難優(yōu)于。為了得到更準確的均勻不變的時間標準,人們以1.900回歸年的31 556 925 9747分之一作為歷書時的秒(記作ET),其準確度可達左右。、ET為宏觀計時標準,它需要精密的天文觀測,手續(xù)煩雜,準確度有限。近年來引進了微觀計時標準,這就是利用原子或分子內部能級躍遷所輻射或吸收的電磁波的頻率作為基準來計量時間。采用()原子基態(tài)的兩個超精細能級之間躍遷所對應的9 192 631 770個周期的持續(xù)時間為一秒

31、,以此為標準定出的時間標準稱為原子時(記作AT),其準確度可達。目前,國際上已經應用經過原子標準修正過的時間來發(fā)送時間標準,用原子時來對天文時(、ET)進行修正。另外,由于頻率是時間的倒數,因此,有了時間標準也就有了頻率標準。由于數字電路的飛速發(fā)展和數字集成電路的普及,電子計數器的應用已十分普及,利用電子計數器測量頻率具有精確度高、使用方便、測量迅速,以及便于實現測量過程自動化等一系列突出優(yōu)點,故已發(fā)展成為近代頻率測量的重要手段。4.2.2 電子計數器測頻方法目前,絕大多數實驗室用電子計數器都具有測量頻率(測頻)和測量周期(測周)等兩種以上的測量功能,故統稱“通用計數器.各種測量功能可利用功能

32、選擇開關加以選擇。 電子計數器的測頻原理所謂“頻率”,就是周期性信號在單位時間(一秒)內變化的次數。若在一定時間內計得這個周期信號變化的次數為N,則其頻率可表達: (4-1)電子計數器可以嚴格按照公式(4-1)所表達的頻率的定義進行測頻,其原理方框圖如圖 4-1 示:圖 4-1 測頻原理圖首先,把被測信號(以正弦波為例)通過脈沖形成電路轉變成脈沖(實際上變成方波即可)其重復頻率等于被測頻率,然后將它加到閘門的一個輸入端。閘門出門控信號來控制開、閉時間,只有在閘門開通時間T內,被計數的脈沖才能通過閘門,被送到十進制電子計數器進行計數。門控信號的作用時間T是非常準確的,以它作為時間基準(時基),它

33、由時基發(fā)生器提供。時基信號發(fā)生一個高穩(wěn)定的石英振蕩器和一系列數字分頻器組成,由它輸出的標準時間脈沖(時標)去控制門控電路形成門控信號。比如,時標信號的重復周期為1S,則加到閘門的門控信號作用時間T即閘門時間亦準確地等于1s,即閘門開通時間為1s,這時若計得10 000個數,則按式(4-1),被測頻率=10.000Hz,若計數器上單位顯示為“kHz”,則顯示10.000kHz,即小數點定位在第三位。不難設想,若閘門時間改為T=0.1s,則計數值為1 000,這個數乘以10就等于1s的計數值,即Hz。實際上,當改變閘門時間T時,顯示器上的小數點也隨著往右移一位(自動定位),即顯示10.000kHz

34、。從以上討論可知,電子計數器的測頻原理實質上以比較法為基礎,它將和時基信號頻率相比,兩個頻率相比的結果以數字的形式顯示出來。4.3 設計方案與系統需求由電子計數器頻率測量基本原理可知,測頻功能實現需要脈沖形成電路、閘門、十進制電子計數器、門控電路、時基信號發(fā)生器。結合實際實驗板的硬件條件,可以利用EDA軟件和HDL語言在EEC-FPGA實驗板上完成頻率計的數字部分的設計與實現。實驗板原理圖如圖4-2所示:圖 4-2 實驗板原理圖如果以此實驗板做為頻率計的硬件實現,可以使用48Mhz的有源晶振作為時基信號發(fā)生器,但是測量需要的時基信號為1S、0.1S、0。01S,因此需要進行分頻,另外計數器的輸

35、出結果可以使用數碼管顯示,需要一個1KHz的掃描信號,也可由晶振分頻得到,脈沖形成電路可以使用模擬電路,另外為了使數碼管能夠穩(wěn)定顯示,在輸出之前加一個鎖存器,閘門選擇可以使用實驗板上的開關得到。至此可以確定,可以在EEC-FPGA實驗板實現的數字電路部分為分頻器、計數器、鎖存器、門控電路、閘門選擇、數碼管掃描顯示控制子系統,這些模塊之間的關系如圖4-3所示:圖 4-3 原理框圖放大整形電路:放大被測信號并將其整形為方波脈沖,該方波脈沖經過閘門后送計數器計數。石英振蕩器:產生一個頻率(48MHz)高度穩(wěn)定的信號送給分頻器分頻。分頻器:對石英振蕩器產生的信號進行分頻,得到100Hz、10Hz和1H

36、z三個基準頻率;同時產一個1KHz的信號作為掃描顯示譯碼模塊的時鐘,以產生掃描選擇信號。門控電路:門控電路在時間基準信號的控制下產生門控信號GATE,門控信號有效時,閘門開通,計數器計數。當門控信號停止作用時,閘門關斷。此時,為了使計數結果能夠在顯示器上穩(wěn)定的顯示,門控電路要產生一個鎖存命令Latch使鎖存器鎖存計數結果。在計數結果鎖存以后,下一次計數開始以前,門控電路還要產生一個清零信號CLEAR將計數器清零,以便重新計數。GATE信號、Latch信號以及CLEAR信號三者的關系如圖4-4所示:圖 4-4 控制信號波形4.4 各模塊的功能及實現4.4.1 分頻器分頻器的功能是提供標準閘門時間

37、控制信號以精確控制計數器的開閉。由于閘門時間只有1S,0.1S,0.01S三檔,且在數碼管顯示時采用動態(tài)掃描的方法,需要產生1kHz的掃描信號,由于本設計將下載到開發(fā)板上,其提供的標準時間是48MHz,所以要對系統的48MHz時鐘信號進行分頻,以產生符合要求的各頻率信號:先由系統時鐘48MHz分頻出1kHz作為數碼管顯示的動態(tài)掃描信號,再由1kHz分頻出100Hz產生0.01S的計數閘門信號脈沖,由100Hz分頻出10Hz產生0.1S的計數閘門信號脈沖,由10Hz分頻出1Hz產生1S的計數閘門信號脈沖。同時給整個系統定義系統復位。由以上分析,可分頻器模塊如圖所示:圖 4-5 分頻器模塊仿真圖如

38、圖4-6所示:圖 4-6 分頻器模塊仿真圖這個模塊即實現了把48MHz的時基信號分成了我們需要的四個信號1Hz,10Hz,100Hz,1KHz。4.4.2 閘門選擇器該模塊的功能是實現對輸入的幾個閘門信號的手動選擇,并輸出被選中的閘門信號fhz和閘門開與斷的現實信號light以及小數點的控制信號dp。生成的模塊如圖4-7所示:圖 4-7 閘門選擇器該模塊有六個輸入端口,其中s(2:0)為選擇端,f1hz,f10hz,f100hz為被選時基信號輸入端。當s(0)為1,其余無效時,f1hz的輸入時基信號被選中,被賦值給輸出端口fhz輸出,此時dp(3)有效,其余的無效,點亮dp(4)連接的小數點;

39、當s(1)為0,其余無效時,f10hz時基信號被選中,被賦值給輸出端口fhz輸出,此時dp(2)有效,其余的無效,點亮dp(2)連接的小數點;最后當s(2)為0,其余無效時,f100hz時基信號被選中,被賦值給輸出端口fhz輸出,此時dp(1)有效,其余的無效,點亮dp(1)連接的小數。仿真圖如圖4-8所示:圖 4-8 閘門選擇器仿真圖4.4.3 測頻控制器測頻控制器是控制整個頻率計各模塊進行時序工作的控制裝置,它對輸入的標準時鐘信號進行變換,產生我們所需要的三個信號閘門信號GATE,鎖存信號LATCH以及清零信號CLEAR。其生成的模塊如下圖4-9所示:圖 4-9 測頻控制器測頻控制器的計數

40、使能信號Gate能產生一個周期信號,并對頻率計的計數器使能端進行同步控制。當Gate為高電平時,允許計數,為低電平時停止計數,并保持其所計得脈沖數。在停止計數期間,首先需要一個鎖存信號latch的上升沿將計數器在前一秒的計數值鎖存進24位鎖存器Latch中,并由外部的7段譯碼器譯出,并穩(wěn)定顯示。鎖存信號之后,必須有一清零信號clear對計數器清零,為下一秒的計數操作準備。測頻控制信號發(fā)生器的仿真工作時序如圖4-10所示。圖 4-10 測頻控制器的仿真圖如果閘門信號Gate的頻率取1Hz,那么信號Gate的脈寬恰好為1S,可以用作計數閘門信號。然后根據測頻的時序要求,可得出信號latch和Res

41、et的邏輯描述。由圖可見,在計數完成后,即計數使能信號Gate在1S的高電平后,利用其反相值產生一個鎖存信號latch,由于反相器的器件延時,鎖存信號的上升沿是在計數使能信號即閘門信號Gate的下降沿之后,即是計數完了才鎖存的,符合我們的設計要求。而清零信號Reset的上升沿的產生是在下一個Gate信號上升沿來臨之前,也就是說是清了零才開始計數的,不是計了一會兒數再被清零了繼續(xù)計數,這也是與我們的設計要求相符合的。高質量的測頻控制信號發(fā)生器的設計十分重要,設計中要對其進行仔細的實時仿真,防止可能產生的毛刺。4.4.4 計數器由于要求頻率計的顯示為十進制六位,所示我們設計的是使能端的十進制計數器

42、,所生成的模塊如圖所示:其中rst是清零端,wave是計數信號輸入端,進位輸出作為溢出標志用over來表示,用以顯示計數器計數是否溢出,溢出了就更換大一級的檔位。這樣的級聯形成了同步計數,是一種計數較快的級聯方式,生成的模塊如圖4-11所示:圖形 4-11 計數器模塊仿真圖如下圖4-12所示:圖 4-12 計數器的仿真圖由仿真圖可以看出,程序的綜合出來的這個計數器的確實現我們預定的要求。有清零端和保持端,通過對計數器的級聯就可以實現十進制六位數的計數。4.4.5 鎖存器如果計數器輸出直接與譯碼器相連接,那么在計數過程中輸出端則隨輸入脈沖數的增加而不斷跳變,那么顯示數碼管則也會不斷閃爍跳變,讓人

43、不能看到穩(wěn)定的輸出,設鎖存器后,則不再跳變,便可清晰讀出計數結果。由控制模塊產生的latch信號來提供鎖存脈沖。其生成的功能模塊如圖4-13所示:圖 4-13 鎖存器模塊這模塊實現了對六位計數結果和溢出信號over的鎖存功能。即鎖存信號的上升沿來時送數,其它時候則保持不變。4.4.6 掃描顯示控制系統本模塊通過用一個頻率1KHz的信號來掃描一個多路選擇器,實現對六位已經鎖存的計數結果的掃描輸出,由于1KHz相對了人眼的暫留效應已經很高了,所以顯示結果不會讓人感覺到閃爍。這樣就可以用一個譯碼器來實現對六個4位二進制數的譯碼。譯碼結果再連接到一個多路選擇器的輸入端,同樣由1KHz的信號來同步掃描選

44、通。最后的輸出全部通過下載前的固定引腳連接到LED顯示管上。實現最終結果的數字顯示。輸入端包括掃描信號1KHz,由前小數點指示信號dp以及鎖存器的輸出結果。第四章 數字頻率計的設計與實現 PAGE 24 PAGE 23其生成掃描模塊如圖4-14所示:圖 4-14 掃描顯示控制模塊掃描仿真結果如圖4-15所示:圖 4-15 掃描顯示控制模塊的仿真圖4.4.6 7段譯碼顯示控制系統六位十進制數的BCD碼相繼進入bcd_code,經7段譯碼輸出,顯示十進制數。并根據檔位信號確定小數點顯示的位置以實現檔位的顯示。模塊如圖4-16所示:圖 4-16 顯示譯碼控制模塊掃描仿真結果如圖4-17所示:圖 4-

45、17 顯示模塊的仿真圖4.5 分配引腳和下載實現全部仿真通過后,就運行ISE的設計實現,然后分配引腳,即實現設計的輸入輸出端口與實際芯片的輸入輸出端口的對應連接。比如七段LED管的控制信號就連接到實際電路的七個引腳。需要注意的是一些端口是固定的,不能胡亂的連接。比如時基信號即石英振蕩器所提供的信號就只能由T8輸入。外部信號輸入只能由外部信號源接口輸入,同時還要考慮內部的可配制邏輯塊CLB的數量是否夠滿足程序的綜合要求。一切都準備就緒后就可以運行Configure Device,選擇要下載的位文件(.bit)便可開始下載了。4.6 誤差分析下面我們來分析計數器測頻的測量誤差。從公式(4-1)可知

46、,上述測頻方法的測量誤差,一方面決定于閘門時間T準不準,另一方面決定于計數器計得的數準不準。根據誤差合成方法,從公式(4-1)可得: (4-2)公式(4-2)中第一項是數字化儀器所特有的誤差,而第二項是閘門時間的相對誤差,這項誤差決定于石英振蕩器所提供的標準頻率的準確度。現分述如下。4.6.1 1誤差在測頻時,主門的開啟時刻與計數脈沖之間的時間關系是不相關的,所以它們在時間軸上的相對位置是隨機的。這樣,在相同的主門開啟時間內,計數器所計得的數卻不一定相同,當主門開啟時間T接近甚至等于被測信號周期的整數倍N倍時,此項誤差為最大,圖 4-2 畫出的就是這種情況。圖 4-2 正負1誤差若主門開啟時刻

47、為,而第1個計數脈沖出現在,圖 4-2 (a)中示出了0的情況(),這時計數器計得N個數(圖中N=6);現在再來看圖 4-2 (b)情況,即趨近于0,這就有兩種可能的計數結果:若第1個計數脈沖和第7個計數脈沖都能通過主門,則可計得N+1=7個數;也可能這兩個脈沖都沒有能進入主門,則只能計得N-1=5個數。由此可知,最大的計數誤差為個數。所以考慮到公式(4-1),可寫成 (4-3)式中T為閘門時間,為被測頻率。從公式(4-3)可知,不管計數值N多少,其最大誤差總是1個計數單位,故稱“1個字誤差”,簡稱“1誤差”。而且一定時,增大閘門時間T,可減小1誤差對測頻誤差的影響。當T選定后,越低,則由1誤

48、差產生的測頻誤差越大。4.6.2 標準頻率誤差閘門時間T準不準,主要決定于由石英振蕩器提供的標準頻率的準確度,若石英振蕩器的頻率為,分頻系數為k,則而所以 (4-4)可見,閘門時間的準確度在數值上等于標準頻率的準確度,式中負號表示由引起的閘門時間的誤差為。通常,對標準頻率準確度的要求是根據所要求的測頻準確度提出來的,例如,當測量方案的最小計數單位為1Hz,而=Hz,在T=1s時的測量準確度為(只考慮誤差),為了使標準頻率誤差不對測量結果表明產生影響,石英振蕩器的輸出頻率準確度應優(yōu)于,即比誤差引起的測頻誤差小一個量級。4.6.3 結論綜上所述,可得如下結論:1、計數器直接測頻的誤差主要有兩項:即

49、誤差和標準頻率誤差。一般,總誤差可采用分項誤差絕對值合成,即 (4-5)可把公式(4-5)畫成圖 4-3 所示的曲線,即與T,以及的關系曲線。圖 4-3 誤差曲線從圖可知,一定時,閘門時間T選得越長,測量準確度就越高。而當T選定后,越高,則由于誤差對測量結果的影響越小,測量準確度就越高。但是,隨著誤差的減小,標準頻率誤差將對測量結果產生影響,并以(圖中以為例)為極限,即測量準確度不可能優(yōu)于。2、測量低頻時,由于誤差產生的測頻誤差大得驚人,例如,為10Hz,T=1s,則由誤差引起的測頻誤差可達到10%,所以,測量低頻時不宜采用直接測頻方法。第五章 結論 PAGE 25第五章 實驗結論及總結本文主

50、要介紹了利用VHDL語言完成基于FPGA的數字頻率計的設計與實現。詳細介紹了測量原理,設計方案以及各模塊的設計過程及其實現的功能,并對設計中遇到的問題作了分析和處理;利用ISE和ModelSim對設計進行了仿真,分析,綜合,并最終下載到FPGA芯片中,實現了對頻率的測量。(1).通過ISE綜合,ModelSim仿真,最終在XILINX學生EDA實驗板上實現了10Hz10MHz頻率計數器的設計,其誤差在0.01%數量級,能夠較為精確的測量頻率。(2).當頻率計值達到該檔量程最大測量值時,這時輸入頻率值再繼續(xù)增加,則會產生溢出,并且LED8會變亮表示計數器已經溢出。(3).在測量頻率過程中我們應當

51、選擇適當的檔位,使得測量結果更加精確,特別是溢出信號LED亮的時候,一定要選擇更高檔位來進行測量。通過頻率計的設計試驗,對頻率計有了更深的認識,尤其是對頻率計的工作原理以及各功能模塊的實現有深入了解。此外,還熟悉了Xilinx ISE 10.1i軟件的用法和VHDL/Verilog的編程環(huán)境,通過本次的設計培養(yǎng)自己的實驗動手能力。這是第一次利用HDL語言來實現基于FPGA的實際工程項目,所以在實驗過程中不可避免的遇到了很多問題以及設計中一些不足的地方。理論和實踐沒有有機的聯系起來,理論沒有起到應有的指導作用。 PAGE 24參考文獻1. 蔣煥文,孫續(xù). 電子測量(第二版). 中國計量出版社 (

52、中).2. Volnei A. Pedroni. VHDL數字電路設計教程. 電子工業(yè)出版社 (巴西).3. 姜立東. VHDL語言程序設計及應用 (第二版). 北京郵電出版社 (中).4. 湯山俊夫. 數字電路設計與制作. 科學出版社 (日).5. 廖超平. EDA技術. 北京理工大學出版社 (中).6. 孫航. Xilinx可編程邏輯器件的高級應用與設計技巧. 電子工業(yè)出版社 (中).致謝PAGE 26 PAGE 25致 謝在此,我首先向不辭辛勞,誨人不倦的老師劉曦工程師和皇曉輝工程師,表示最衷心的感謝。本實驗從最初的選題到任務的制定,系統的設計和開發(fā)過程中都得到了劉老師和的悉心指導與指正

53、。正是老師們的諄諄教導和熱心關懷使我較快的熟悉了用硬件語言來實現項目的過程,并最終順利完成實驗。同時,老師們嚴謹的治學態(tài)度以及對工作的一絲不茍,也使我受益匪淺,終生難忘。特別感謝固電專業(yè)的同學們在實驗期間給予我的巨大幫助與支持。同學們都樂于助人。在此,謹向他們致以深深的敬意和誠摯的感謝!最后,感謝電子工程學院和微電子與固體工程學院給予我這個鍛煉自我提升自我的實驗平臺。翻譯文稿 PAGE 46 PAGE 45附 錄附錄1. 分頻器程序library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD

54、_LOGIC_UNSIGNED.ALL; Uncomment the following library declaration if instantiating any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity divf is Port ( rst : in STD_LOGIC; clk : in STD_LOGIC; f1 : out STD_LOGIC; f10 : out STD_LOGIC; f100 : out STD_LOGIC; f1000 : out ST

55、D_LOGIC);end divf;architecture Behavioral of divf issignal f1_cnt:integer range 0 to 48000000:=1;signal f10_cnt:integer range 0 to 48000000:=1;signal f100_cnt:integer range 0 to 48000000:=1;signal f1000_cnt:integer range 0 to 48000000:=1;signal f1m:STD_LOGIC;signal f10m:STD_LOGIC;signal f100m:STD_LO

56、GIC;signal f1000m:STD_LOGIC;beginpf1:process(rst,clk,f1_cnt)beginif rst=0 then f1_cnt=1;elsif rising_edge(clk) then if f1_cnt=24000000 then f1m= not f1m; f1_cnt=1; else f1_cnt=f1_cnt+1; end if;end if;end process;pf10:process(rst,clk,f10_cnt)beginif rst=0 then f10_cnt=1;elsif rising_edge(clk) then if

57、 f1_cnt=2400000 then f10m= not f10m; f10_cnt=1; else f10_cnt=f10_cnt+1; end if;end if;end process;pf100:process(rst,clk,f100_cnt)beginif rst=0 then f100_cnt=1;elsif rising_edge(clk) then if f100_cnt=24000000 then f100m= not f100m; f100_cnt=1; else f100_cnt=f100_cnt+1; end if;end if;end process;pf100

58、0:process(rst,clk,f1000_cnt)beginif rst=0 then f1000_cnt=1;elsif rising_edge(clk) then if f1000_cnt=24000000 then f1000m= not f1000m; f1000_cnt=1; else f1000_cnt=f1000_cnt+1; end if;end if;end process;f1=f1m;f10=f10m;f100=f100m;f1000fhz=f1hz;dp=110111;lightfhz=f10hz;dp=110111;lightfhz=f100hz;dp=1101

59、11;lightfhz=Z;dp=111111;light=1;end case;end process;end Behavioral;附錄3. 測頻控制器程序library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL; Uncomment the following library declaration if instantiating any Xilinx primitives in this code.-library UNISIM;-use

60、UNISIM.VComponents.all;entity control2 is Port ( clr : in STD_LOGIC; fre : in STD_LOGIC; rst : out STD_LOGIC; latch : out STD_LOGIC; gate : out STD_LOGIC);end control2;architecture Behavioral of control2 issignal g1:STD_LOGIC;signal g2:STD_LOGIC;beginprocess(fre,clr)begin if clr=0 then g1=0; elsif r

溫馨提示

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

評論

0/150

提交評論