FPGA頻率計實驗報告_第1頁
FPGA頻率計實驗報告_第2頁
FPGA頻率計實驗報告_第3頁
FPGA頻率計實驗報告_第4頁
FPGA頻率計實驗報告_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)字頻率計實驗報告第 1 頁 共 3 頁數(shù)字頻率計數(shù)字頻率計用 VHDL 語言設(shè)計實現(xiàn)基于 FPGA 的數(shù)字頻率計學校:學院:姓名:學號:實驗室:實驗日期: 摘要第 2 頁 共 3 頁2摘要摘要本文介紹了一種基于 FPGA 的數(shù)字頻率的實現(xiàn)方法。該設(shè)計采用硬件描述語言 VHDL,在軟件開發(fā)平臺 ISE 上完成。該設(shè)計的頻率計有三種閘門選擇,分別是 1s、0.1s、0.01s,能較準確的測量頻率在 10Hz 到 10MHz 之間的信號。使用 ModelSim 仿真軟件對各個模塊的 VHDL 程序做了仿真,對各個模塊的功能進行了測試,并完成了綜合布局布線,最終下載到芯片上取得了良好測試效果。關(guān)鍵詞

2、:VHDL、 頻率計、 FPGA、 測量 引言第 3 頁 共 3 頁目 錄第一章 引言 .1第二章 基于 FPGA 的 VHDL 設(shè)計流程 .22.1 概述.22.2 VHDL 語言和 VERILOG HDL 介紹.22.2.1 VHDL 的特點 .32.3 FPGA 介紹 .4第三章 數(shù)字頻率計的軟件開發(fā)環(huán)境 .53.1 開發(fā)環(huán)境.53.2 MODELSIM介紹 .53.3 ISE 介紹 .5第四章 數(shù)字頻率計的設(shè)計與實現(xiàn) .74.1 任務(wù)要求.74.2 測量原理.74.3 設(shè)計方案與系統(tǒng)需求.74.4 各模塊的功能及實現(xiàn).94.4.1 分頻器 .94.4.2 閘門選擇器 .104.4.3

3、測頻控制器 .114.4.4 計數(shù)器 .124.4.5 鎖存器 .134.4.6 顯示控制系統(tǒng) .14 4.5 分配引腳和下載實現(xiàn).154.6 誤差分析.16第五章 實驗結(jié)論及總結(jié) .19參考文獻.20致 謝 .21附 錄 .22 引言0第一章、引言硬件描述語言(英文: Hardware Description Language ,簡稱: HDL )是電子系統(tǒng)硬件行為描述、結(jié)構(gòu)描述、數(shù)據(jù)流描述的語言。利用這種語言,數(shù)字電路系統(tǒng)的設(shè)計可以從頂層到底層(從抽象到具體)逐層描述自己的設(shè)計思想,用一系列分層次的模塊來表示極其復(fù)雜的數(shù)字系統(tǒng)。以硬件描述語言(Verilog 或 VHDL)所完成的電路設(shè)計

4、,可以經(jīng)過簡單的綜合與布局,快速的燒錄至 FPGA 上進行測試,是現(xiàn)代 IC 設(shè)計驗證的技術(shù)主流。這些可編輯元件可以被用來實現(xiàn)一些基本的邏輯門電路(比如AND、OR、XOR、NOT)或者更復(fù)雜一些的組合功能比如解碼器或數(shù)學方程式。在大多數(shù)的 FPGA 里面,這些可編輯的元件里也包含記憶元件例如觸發(fā)器(Flipflop)或者其他更加完整的記憶塊。在電子技術(shù)中,頻率是最基本的參數(shù)之一,并且與許多電參量的測量方案、測量結(jié)果都有十分密切的關(guān)系,因此,頻率的測量就顯得更為重要。所謂“頻率”,就是周期信號在單位時間(秒)內(nèi)變化的次數(shù),若在一定的時間間隔 T內(nèi)計得某周期信號的重復(fù)變化次數(shù)為 N,則該信號的頻

5、率為。測量頻率TNf 的方法有多種,其中電子計數(shù)器測量頻率具有精度高、使用方便、測量迅速,以及便于實現(xiàn)測量過程自動化等優(yōu)點,是頻率測量的重要手段之一。電子計數(shù)器測頻有兩種方式:一是直接測頻法,即在一定閘門時間內(nèi)測量被測信號的脈沖個數(shù);二是間接測頻法,如周期測頻法。直接測頻法適用于高頻信號的頻率測量,間接測頻法適用于低頻信號的頻率測量。 本文使用的是直接測頻法。 引言1 第二章、基于 FPGA 的 VHDL 設(shè)計流程2 第二章、基于 FPGA 的 VHDL 設(shè)計流程2.1 概述頻率計的基本原理是用一個頻率穩(wěn)定度高的頻率源作為基準時鐘,對比測量其他信號的頻率。通常情況下計算每秒內(nèi)待測信號的脈沖個數(shù)

6、,此時我們稱閘門時間為 1 秒。閘門時間也可以大于或小于一秒。閘門時間越長,得到的頻率值就越準確,但閘門時間越長則沒測一次頻率的間隔就越長。閘門時間越短,測的頻率值刷新就越快,但測得的頻率精度就受影響。本文中,數(shù)字頻率計是用數(shù)字顯示被測信號頻率的儀器,限于實驗條件等,被測信號只能是方波。 數(shù)字頻率計是數(shù)字電路中的一個典型應(yīng)用,實際的硬件設(shè)計用到的器件較多,連線比較復(fù)雜,而且會產(chǎn)生比較大的延時,造成測量誤差、可靠性差。頻率計的設(shè)計有傳統(tǒng)方法和現(xiàn)代方法,傳統(tǒng)的設(shè)計方法耗時耗功,設(shè)計強度大,且容易出錯,設(shè)計的質(zhì)量不一定是最好的。自然我們考慮到現(xiàn)代方法,即二十世紀八十年代興起的電子設(shè)計自動化技術(shù),英文

7、為 Electronic Design Auto,縮寫為 EDA。在 EDA 設(shè)計工具中,用的最廣泛的是 VHDL 和 VERILOG,當然還有其它的,例如 sopc。比較 VHDL 和 VERILOG,在頂層設(shè)計方面 VHDL 優(yōu)于VERILOG,在門級電路設(shè)計方面 VERILOG 優(yōu)于 VHDL。隨著復(fù)雜可編程邏輯器件(CPLD)的廣泛應(yīng)用,以 EDA 工具作為開發(fā)手段,運用 VHDL 語言,將使整個系統(tǒng)大大簡化,提高整體的性能和可靠性。本次的頻率計設(shè)計主要是頂層設(shè)計,目的是設(shè)計 6 位十進制頻率計,學習常用的數(shù)字系統(tǒng)設(shè)計方法。采用 VDHL 編程設(shè)計實現(xiàn)的數(shù)字頻率計,除被測信號的整形部分

8、、鍵輸入部分以外,其余全部在一片 FPGA 芯片上實現(xiàn),整個系統(tǒng)非常精簡,而且具有靈活的現(xiàn)場可更改性。在不更改硬件電路的基礎(chǔ)上,對系統(tǒng)進行各種改進還可以進一步提高系統(tǒng)的性能。該數(shù)字頻率計具有高速、精確、可靠、抗干擾性強和現(xiàn)場可編程等優(yōu)點。2.2 VHDL 語言和 Verilog HDL 介紹 VHDL 誕生于 1982 年。在 1987 年底,VHDL 被 IEEE 和美國國防部確認為標準硬件描述語言。自 IEEE 公布了 VHDL 的標準版本,IEEE-1076(簡稱 87 版)之后,各 EDA 公司相繼推出了自己的 VHDL 設(shè)計環(huán)境,或宣布自己的設(shè)計工具可以和VHDL 接口。此后 VHD

9、L 在電子設(shè)計領(lǐng)域得到了廣泛的接受,并逐步取代了原有的非標準的硬件描述語言。而 Verilog HDL 是由 GDA(Gateway Design Automation)公司的 PhilMoorby 在 1983 年末首創(chuàng)的,最初只設(shè)計了一個仿真與驗證工具,之后又陸續(xù)開發(fā)了相關(guān)的故障模擬與時序分析工具。1985 年 Moorby推出它的第三個商用仿真器 Verilog-XL,獲得了巨大的成功,從而使得 Verilog 第二章、基于 FPGA 的 VHDL 設(shè)計流程3HDL 迅速得到推廣應(yīng)用。1989 年 CADENCE 公司收購了 GDA 公司,使得VerilogHDL 成為了該公司的獨家專利

10、。1990 年 CADENCE 公司公開發(fā)表了Verilog HDL,并成立 LVI 組織以促進 Verilog HDL 成為 IEEE 標準,即 IEEE Standard 1364-1995。由于 GDA 公司本就偏重于硬件,所以不可避免地Verilog HDL 就偏重于硬件一些,故 Verilog HDL 的底層統(tǒng)合做得非常好。而VHDL 的邏輯綜合就較之 Verilog HDL 要出色一些。所以,Verilog HDL 作重強調(diào)集成電路的綜合,而 VHDL 強調(diào)于組合邏輯的綜合。2.2.1 VHDL 的特點VHDL 是一種用普通文本形式設(shè)計數(shù)字系統(tǒng)的硬件描述語言,主要用于描述數(shù)字系統(tǒng)的

11、結(jié)構(gòu)、行為、功能和接口,可以在任何文字處理軟件環(huán)境中編輯。除了含有許多具有硬件特征的語句外,其形式、描述風格及語法十分類似于計算機高級語言。VHDL 程序?qū)⒁豁椆こ淘O(shè)計項目(或稱設(shè)計實體)分成描述外部端口信號的可視部分和描述端口信號之間邏輯關(guān)系的內(nèi)部不可視部分,這種將設(shè)計項目分成內(nèi)、外兩個部分的概念是硬件描述語言(HDL)的基本特征。當一個設(shè)計項目定義了外部界面(端口),在其內(nèi)部設(shè)計完成后,其他的設(shè)計就可以利用外部端口直接調(diào)用這個項目。VHDL 的主要特點如下: (1)作為 HDL 的第一個國際標準,VHDL 具有很強的可移植性。 (2)具有豐富的模擬仿真語句和庫函數(shù),隨時可對設(shè)計進行仿真模擬

12、,因而能將設(shè)計中的錯誤消除在電路系統(tǒng)裝配之前,在設(shè)計早期就能檢查設(shè)計系統(tǒng)功能的可行性,有很強的預(yù)測能力。 (3)VHDL 有良好的可讀性,接近高級語言,容易理解。 (4)系統(tǒng)設(shè)計與硬件結(jié)構(gòu)無關(guān),方便了工藝的轉(zhuǎn)換,也不會因工藝變化而使描述過時。 (5)支持模塊化設(shè)計,可將大規(guī)模設(shè)計項目分解成若干個小項目,還可以把已有的設(shè)計項目作為一個模塊調(diào)用。 (6)對于用 VHDL 完成的一個確定設(shè)計,可以利用 EDA 工具進行邏輯綜合和優(yōu)化,并能自動地把 VHDL 描述轉(zhuǎn)變成門電路級網(wǎng)表文件。 (7)設(shè)計靈活,修改方便,同時也便于設(shè)計結(jié)果的交流、保存和重用,產(chǎn)品開發(fā)速度快,成本低。 VHDL 是一種快速的電

13、路設(shè)計工具,其功能涵蓋了電路描述、電路合成、電路仿真等設(shè)計工作。VHDL 具有極強的描述能力,能支持系統(tǒng)行為級、寄存器傳輸級和邏輯門電路級三個不同層次的設(shè)計,能夠完成從上層到下層(從抽象到具體)逐層描述的結(jié)構(gòu)化設(shè)計思想。 用 VHDL 設(shè)計電路主要的工作過程是: 1)編輯。用文本編輯器輸入設(shè)計的源文件(為了提高輸入效率,可用某些專用編輯器)。 2)編譯。用編譯工具將文本文件編譯成代碼文件,并檢查語法錯誤。 3)功能仿真(前仿真)。在編譯前進行邏輯功能驗證,此時的仿真沒有延時,對于初步的功能檢測非常方便。 4)綜合。將設(shè)計的源文件用自動綜合工具由語言轉(zhuǎn)換為實際的電路圖(門電路級網(wǎng)表),但此時還沒

14、有在芯片中形成真正的電路,就好像是把設(shè)計者腦海中的電路畫成了原理圖。 5)布局、布線。用已生成的網(wǎng)表文件,再根據(jù) CPLD(或 FPGA)器件的容量 第二章、基于 FPGA 的 VHDL 設(shè)計流程4和結(jié)構(gòu),用自動布局布線工具進行電路設(shè)計。首先根據(jù)網(wǎng)表文件內(nèi)容和器件結(jié)構(gòu)確定邏輯門的位置,然后再根據(jù)網(wǎng)表提供的門連接關(guān)系,把各個門的輸入輸出連接起來,類似于設(shè)計 PCB(印刷電路板)時的布局布線工作。最后生成一個供器件編程(或配置)的文件,同時還會在設(shè)計項目中增加一些時序信息,以便于后仿真。 6)后仿真(時序仿真)。這是與實際器件工作情況基本相同的仿真,用來確定設(shè)計在經(jīng)過布局、布線之后,是否仍能滿足設(shè)

15、計要求。如果設(shè)計的電路時延滿足要求,則可以進行器件編程(或配置)。2.3 FPGA 介紹FPGA(FieldProgrammable Gate Array),即現(xiàn)場可編程門陣列,它是在 PAL、GAL、CPLD 等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。傳統(tǒng)的電路設(shè)計過程是:先畫原理圖、把原理圖繪制成印制電路板圖、再制版、安裝、調(diào)試。有了 FPGA,我們只需要在計算機上繪出原理圖,再運行相應(yīng)的軟件,就可把所設(shè)計的邏輯電路在 FPGA 中實現(xiàn)。所有步驟均可自動完成。電子設(shè)

16、計工程師自己設(shè)計專用集成電路成為了一件很容易的事情。FPGA 作為專用集成電路(ASIC)概念上的一個新型范疇和門類,以其高度靈活的用戶現(xiàn)場編程方式,現(xiàn)場定義高容量數(shù)字單片系統(tǒng)的能力,能夠重復(fù)定義、反復(fù)改寫的新穎功能,為復(fù)雜數(shù)字系統(tǒng)設(shè)計、研制以及產(chǎn)品開發(fā)提供了有效的技術(shù)手段。電子應(yīng)用設(shè)計工程師應(yīng)用 FPGA 技術(shù)不僅可避免通常 ASIC 單片系統(tǒng)設(shè)計周期長,前期投資風險大的弱點,而且克服了過去板級通用數(shù)字電路應(yīng)用設(shè)計的落后,繁瑣和不可靠性。目前 FPGA 的兩個重要發(fā)展與突破是,大多數(shù)廠商在其高端器件上都提供了片上的處理器(如 CPU、DSP)等硬核(Hard Core)或固化核(Fixed

17、Core)。比如 Xilinx 的 Virtex II Pro 芯片可以提供 Power PC,而 Altera 的Stratix、Excalibur 等系列芯片可以提供 Nios、DSP 和 Arm 等模塊。在 FPGA上集成微處理器,使 SOPC 設(shè)計更加便利與強大。另一個發(fā)展是在不同器件商推出的高端芯片上大都集成了高速串行收發(fā)器,一般能夠達到 3Gb/s 以上的數(shù)據(jù)處理能力,在 Xilinx、Altera、Lattice 都有相應(yīng)的器件型號提供該功能。這些新功能使 FPGA 的數(shù)據(jù)吞吐能力大幅度增強。 第三章、數(shù)字頻率計的軟件開發(fā)環(huán)境5第三章、數(shù)字頻率計的軟件開發(fā)環(huán)境本章主要介紹項目中將

18、要用到了一系列軟件,包括用于 VHDL 語言編寫和編譯的 ISE 軟件和用于程序仿真的仿真軟件 ModelSim。3.1 開發(fā)環(huán)境隨著可編程器件紛紛超越百萬門級,設(shè)計者面臨的產(chǎn)品性能與設(shè)計效率的挑戰(zhàn)也越來越大。設(shè)計者必須合理選擇各 EDA 廠家提供的加速設(shè)計的工具軟件,這樣才能在較短的時間內(nèi)設(shè)計出高效穩(wěn)定的產(chǎn)品。在本次設(shè)計中,由于選擇的FPGA 芯片是由 Xilinx 公司生產(chǎn)的,所以我們主要使用 ModelSim 和 ISE 軟件進行仿真和綜合。3.2 ModelSim 介紹Mentor 公司的 ModelSim 是業(yè)界最優(yōu)秀的 HDL 語言仿真軟件,它能提供友好的仿真環(huán)境,是業(yè)界唯一的單內(nèi)

19、核支持 VHDL 和 Verilog 混合仿真的仿真器。它采用直接優(yōu)化的編譯技術(shù)、Tcl/Tk 技術(shù)、和單一內(nèi)核仿真技術(shù),編譯仿真速度快,編譯的代碼與平臺無關(guān),便于保護 IP 核,個性化的圖形界面和用戶接口,為用戶加快調(diào)錯提供強有力的手段,是 FPGA/ASIC 設(shè)計的首選仿真軟件。ModelSim 完全支持 VHDL 和 Verilog 標準;采用直接編輯技術(shù),大大提高HDL 編譯和仿真速度。還可以利用 ModelSim 調(diào)用設(shè)計文件進行仿真分析。在調(diào)試環(huán)境中,設(shè)計者可以通過 ModelSim 的快速調(diào)試步驟以及對各種信號的監(jiān)控功能(無論信號處于 VHDL 層,還是處于混合語言層)使仿真的執(zhí)

20、行過程形象直觀化,幫助設(shè)計者及時發(fā)現(xiàn)漏洞,縮短設(shè)計周期。ModelSim 最大的特點是其強大的調(diào)試功能:先進的數(shù)據(jù)流窗口,可以迅速追蹤到生產(chǎn)不定或者錯誤狀態(tài)的原因;性能分析工具幫助分析性能瓶頸,加速仿真;代碼覆蓋率檢查確保測試的完備;多種模式的波形比較功能;先進的 SignalSpy 功能,可以方便地訪問 VHDL 或者 VHDL 和 Verilog 混合設(shè)計中的底層信號;支持加密 IP;可以實現(xiàn)與 Matlab 的 Simulink 的聯(lián)合仿真。3.3 ISE 介紹ISE 的主要功能包括設(shè)計輸入、綜合、仿真、實現(xiàn)和下載,涵蓋了可編程 第三章、數(shù)字頻率計的軟件開發(fā)環(huán)境6邏輯器件開發(fā)的全過程,從

21、功能上講,完成 CPLD/FPGA 的設(shè)計流程無需借助任何第三方 EDA 軟件。下面簡要說明各功能的作用:設(shè)計輸入:ISE 提供的設(shè)計輸入工具包括用于 HDL 代碼輸入和查看報告的ISE 文本編輯器(The ISE Text Editor),用于原理圖編輯的工具 ECS(The Engineering Capture System),用于生成 IP Core 的 Core Generator,用于狀態(tài)機設(shè)計的 StateCAD 以及用于約束文件編輯的 Constraint Editor 等。綜合:ISE 的綜合工具不但包含了 Xilinx 自身提供的綜合工具 XST,同時還可以內(nèi)嵌 Mento

22、r Graphics 公司的 Leonardo Spectrum 和 Synplicity 公司的Synplify,實現(xiàn)無縫鏈接。 仿真:ISE 本身自帶了一個具有圖形化波形編輯功能的仿真工具 HDL Bencher,同時又提供了使用 Model Tech 公司的 Modelsim 進行仿真的接口。 實現(xiàn):此功能包括了翻譯、映射、布局布線等,還具備時序分析、管腳指定以及增量設(shè)計等高級功能。 下載:下載功能包括了 BitGen,用于將布局布線后的設(shè)計文件轉(zhuǎn)換為位流文件,還包括了 IMPACT,功能是進行芯片配置和通信,控制將程序燒寫到 FPGA芯片中去。 第四章、數(shù)字頻率計的設(shè)計與實現(xiàn)7第四章、

23、數(shù)字頻率計的設(shè)計與實現(xiàn)4.1 任務(wù)要求 本實驗核心任務(wù)是完成基于 FPGA 利用 VHDL 語言設(shè)計一個數(shù)字頻率計的設(shè)計,仿真,下載實現(xiàn)并實際測量效果。具體要求是:頻率測量范圍為10Hz10MHz,用 6 只數(shù)碼管以 kHz 為單位顯示測量結(jié)果;有三個帶鎖按鍵開關(guān)(任何時候都只會有一個被按下)用來選擇 1S、0.1S 和 0.01S 三個閘門時間中的一個,若按下兩個及以上或者不選擇則隨意顯示;有兩只 LED,一只的亮滅用來顯示閘門信號高低電平,另一只當計數(shù)器溢出時做溢出指示。4.2 測量原理 頻率計的基本原理是用一個頻率穩(wěn)定度高的頻率源作為基準時鐘,對比測量其他信號的頻率。通常情況下計數(shù)每秒內(nèi)

24、待測信號的脈沖個數(shù),此時我們稱閘門時間為 1S,閘門時間也可以大于或小于 1S。閘門時間越長,得到的頻率值就準確,但閘門時間越長則每測一次頻率的間隔就越長;閘門時間越短,測得頻率值刷新就越快,但測得的頻率精準度就受影響。4.3 設(shè)計方案與系統(tǒng)需求 由電子計數(shù)器頻率測量基本原理可知,測頻功能實現(xiàn)需要脈沖形成電路、閘門、十進制電子計數(shù)器、門控電路、時基信號發(fā)生器。 圖 4.1 實驗原理框架 從圖 4.1 中可知,所設(shè)計的頻率計需要 6 個模塊,分別是:分頻器、閘門選擇器、測頻控制器,計數(shù)器、鎖存器以及顯示模塊。被測信號輸入閘門計數(shù)器放大整形門控電路石英震蕩器鎖存器分頻器閘門選擇掃描顯示控制子系統(tǒng)(

25、包括顯示譯碼和掃描控制)閘門選擇開關(guān)GateOver被測頻率顯示GATECLEARLATCH1Hz10Hz100Hza,b,c,d,e,f,g,dpselC,selB,selA時間或頻率基準信號48MHz1kHz小數(shù)點位置實驗板上的顯示電路 第四章、數(shù)字頻率計的設(shè)計與實現(xiàn)8 核心板硬件結(jié)構(gòu)如下圖所示: 結(jié)合實際實驗板的硬件條件,可以利用 EDA 軟件和 VHDL 語言在 EEC-FPGA 實驗板上完成頻率計的數(shù)字部分的設(shè)計與實現(xiàn)。Fpga 實驗板如圖 4-2 所示: 圖 4.2 EDA 實驗板從圖 4.1 和圖 4.2 可知,如果以此實驗板做為頻率計的硬件實現(xiàn),可以使用 50Mhz 的有源晶振

26、作為時基信號發(fā)生器,但是測量需要的時基信號為1S、0.1S、0。01S,因此需要進行分頻,另外計數(shù)器的輸出結(jié)果可以使用數(shù)碼 第四章、數(shù)字頻率計的設(shè)計與實現(xiàn)9管顯示,需要一個 1KHz 的掃描信號,也可由晶振分頻得到,脈沖形成電路可以使用模擬電路,另外為了使數(shù)碼管能夠穩(wěn)定顯示,在輸出之前加一個鎖存器,閘門選擇可以使用實驗板上的撥碼開關(guān)得到。至此可以確定,可以在 EEC-FPGA實驗板實現(xiàn)的數(shù)字電路部分為分頻器、計數(shù)器、鎖存器、測頻控制、閘門選擇、數(shù)碼管掃描顯示控制子系統(tǒng),這些模塊之間的關(guān)系如圖 4.1 所示。放大整形電路(模擬電路):放大被測信號并將其整形為方波脈沖,該方波脈沖經(jīng)過閘門后送計數(shù)器

27、計數(shù)。石英振蕩器:產(chǎn)生一個頻率高度穩(wěn)定的信號送分頻器分頻。分頻器:對石英振蕩器產(chǎn)生的信號進行分頻,得到 100Hz、10Hz 和 1Hz 三個基準頻率;同時產(chǎn)一個 1000Hz 的信號作為掃描顯示譯碼模塊的時鐘,以產(chǎn)生掃描選擇信號。門控電路:產(chǎn)生控制信號門控電路在時間基準信號的控制下產(chǎn)生門控信號GATE,門控信號有效時,閘門開通,計數(shù)器計數(shù)。當門控信號停止作用時,閘門關(guān)斷。為了使計數(shù)結(jié)果能夠在顯示器上穩(wěn)定的顯示,閘門關(guān)斷后門控電路要產(chǎn)生一個鎖存命令 Latch 使鎖存器鎖存計數(shù)結(jié)果。在計數(shù)結(jié)果鎖存以后,下一次計數(shù)開始以前,門控電路還要產(chǎn)生一個清零信號 CLEAR 將計數(shù)器清零,以便重新計數(shù)。4

28、.4 各模塊的功能及實現(xiàn)4.4.1 分頻器 分頻器的功能是提供標準閘門時間控制信號以精確控制計數(shù)器的開閉。由于閘門時間只有 1S,0.1S,0.01S 三檔,且在數(shù)碼管顯示時采用動態(tài)掃描的方法,需要產(chǎn)生 1kHz 的掃描信號,由于本設(shè)計將下載到開發(fā)板上,其提供的標準時間是 50MHz 晶振,所以要對系統(tǒng)的 50MHz 時鐘信號進行分頻,以產(chǎn)生符合要求的各頻率信號:先由系統(tǒng)時鐘 50MHz 分頻出 1kHz 作為數(shù)碼管顯示的動態(tài)掃描信號,再由 1kHz 分頻出 100Hz 產(chǎn)生 0.01S 的計數(shù)閘門信號脈沖,由 100Hz 分頻出10Hz 產(chǎn)生 0.1S 的計數(shù)閘門信號脈沖,由 10Hz 分頻

29、出 1Hz 產(chǎn)生 1S 的計數(shù)閘門信號脈沖。同時給整個系統(tǒng)定義系統(tǒng)復(fù)位。由以上分析,可分頻器模塊如下圖所示: 第四章、數(shù)字頻率計的設(shè)計與實現(xiàn)10 這個模塊實現(xiàn)了把 50MHz 的晶振信號分成了我們需要的四個信號1Hz,10Hz,100Hz,1KHz。 因為仿真圖需經(jīng)過 50000 個周期 clk_1kHz 才能出現(xiàn)一次上升沿,無法準確顯示 50000 次,故而仿真圖略。4.4.2 閘門選擇器 該模塊的功能是根據(jù)開關(guān) sw(2:0)的不同輸入,實現(xiàn)對輸入的幾個閘門信號 fdiv_in、fdiv_in10、fdiv_in100 的手動選擇,輸出被選中的閘門信號fdiv_out 和小數(shù)點的控制信號

30、dp_loc(2:0)。生成的模塊如下圖所示: 第四章、數(shù)字頻率計的設(shè)計與實現(xiàn)11 該模塊有四個輸入端口,其中 sw(2:0)為選擇端,fdiv_in、fdiv_in10、fdiv_in100 為被選時基信號輸入端。當 sw 為 001 時,1hz 的輸入時基信號被選中,被賦值給輸出端口 fdiv_out 輸出,此時 dp_loc為 011;當 sw 為 010 時,10hz 時基信號被選中,被賦值給輸出端口 fdiv_out輸出,此時 dp_loc 為 010;最后當 sw 為 100 時,100hz 時基信號被選中,被賦值給輸出端口 fhz 輸出,此時 dp_loc 為 001。仿真圖如圖

31、 4-8 所示:4.4.3 測頻控制器 測頻控制器是控制整個頻率計各模塊進行時序工作的控制裝置,它對輸入的標準時鐘信號 fdiv_in 進行變換,產(chǎn)生我們所需要的三個信號閘門信號counter_en_out,鎖存信號 latch_en_out 以及清零信號 count_reset_out。其生成的模塊如下圖所示: 第四章、數(shù)字頻率計的設(shè)計與實現(xiàn)12測頻控制器的計數(shù)使能信號 fdiv_in 能產(chǎn)生一個周期信號,并對頻率計的計數(shù)器使能端進行同步控制。當 fdiv_in 為高電平時,允許計數(shù),為低電平時停止計數(shù),并保持其所計得脈沖數(shù)。在停止計數(shù)期間,首先需要一個鎖存信號latch_en_out 的上

32、升沿將計數(shù)器在前一秒的計數(shù)值鎖存進 24 位鎖存器latch_en_out 中,并經(jīng)過顯示模塊顯示。鎖存信號之后,必須有一清零信號count_reset_out 對計數(shù)器清零,為下一秒的計數(shù)操作準備。測頻控制信號發(fā)生器的仿真工作時序如下圖所示。 如果閘門信號 fdiv_in 的頻率取 100Hz,那么信號 fdiv_in 的脈寬恰好為0.01S,可以用作計數(shù)閘門信號,而選擇其他閘門信號時也類似。然后根據(jù)測頻的時序要求,可得出信號 latch_en_out 和 count_reset_out 的邏輯描述。由圖可見,在計數(shù)完成后,即計數(shù)使能信號 fdiv_in 在 1S 的高電平后,利用其反相值產(chǎn)

33、生一個鎖存信號 latch_en_out,由于反相器的器件延時,鎖存信號的上升沿是在計數(shù)使能信號即閘門信號 fdiv_in 的下降沿之后,即是計數(shù)完了才鎖存的,符合我們的設(shè)計要求。而清零信號 count_reset_out 的上升沿的產(chǎn)生是在下一個 fdiv_in 信號上升沿來臨之前,也就是說是清了零才開始計數(shù)的,不是計了一會兒數(shù)再被清零了繼續(xù)計數(shù),這也是與我們的設(shè)計要求相符合的。4.4.4 計數(shù)器 由于要求頻率計的顯示為十進制六位,所示我們設(shè)計的是使能端的十進制計數(shù)器,所生成的模塊如圖所示:其中 clr 是清零端,enc 是計數(shù)信號輸入端,fx 為被測信號輸入端,進位輸出作為溢出標志用 ov

34、er 來表示,用以顯示計數(shù)器計數(shù)是否溢出。 第四章、數(shù)字頻率計的設(shè)計與實現(xiàn)13計數(shù)器的仿真圖如下圖所示:從上圖可知計數(shù)器符合我們設(shè)計的要求。4.4.5 鎖存器 如果計數(shù)器輸出直接與譯碼器相連接,那么在計數(shù)過程中輸出端則隨輸入脈沖數(shù)的增加而不斷跳變,那么顯示數(shù)碼管則也會不斷閃爍跳變,讓人不能看到 第四章、數(shù)字頻率計的設(shè)計與實現(xiàn)14穩(wěn)定的輸出,設(shè)鎖存器后,則不再跳變,便可清晰讀出計數(shù)結(jié)果。由控制模塊產(chǎn)生的 latch 信號來提供鎖存脈沖。其生成的功能模塊如下圖所示:這模塊實現(xiàn)了對六位計數(shù)結(jié)果和溢出信號 over_in 的鎖存功能。即鎖存信號的上升沿來時送數(shù),其它時候則保持不變。仿真圖如下所示:4.

35、4.6 掃描顯示控制系統(tǒng) 本模塊通過用一個頻率 1KHz 的信號來掃描一個多路選擇器,實現(xiàn)對六位已經(jīng)鎖存的計數(shù)結(jié)果的掃描輸出,由于 1KHz 相對了人眼的暫留效應(yīng)已經(jīng)很高了,所以顯示結(jié)果不會讓人感覺到閃爍。這樣就可以在程序中實現(xiàn)對六個 4 位二進制數(shù)的譯碼。譯碼結(jié)果再和段選碼結(jié)合,同樣由 1KHz 的信號來同步掃描選通。最后的輸出全部通過下載前的固定引腳連接到 LED 顯示管上。實現(xiàn)最終結(jié)果的數(shù)字顯示。輸入端包括掃描信號 1KHz,由前小數(shù)點指示信號 dp_loc(2:0)以及鎖 第四章、數(shù)字頻率計的設(shè)計與實現(xiàn)15存器的輸出結(jié)果。其生成的模塊圖如下所示:仿真圖如下所示:4.5 分配引腳和下載實

36、現(xiàn) 全部仿真通過后,就運行 ISE 的設(shè)計實現(xiàn),然后分配引腳,即實現(xiàn)設(shè)計的輸入輸出端口與實際芯片的輸入輸出端口的對應(yīng)連接。比如六段 LED 管的控制信號就連接到實際電路的六個引腳。需要注意的是一些端口是固定的,不能胡亂的連接。外部信號輸入只能由外部信號源接口輸入,同時還要考慮內(nèi)部的可配制邏輯塊一切都準備就緒后就可以運行 Configure Device,選擇要下載的位文件(.bit)便可開始下載了。 第四章、數(shù)字頻率計的設(shè)計與實現(xiàn)16 管腳分配文件也在附錄中給出,僅供參考。4.6 誤差分析 在實際測量中,輸入 10MHz 的方波,顯示為 09.9998MHz,調(diào)低一檔,若要顯示 999.999

37、kHz 則需要輸入 1.00001MHz,若在 1Hz 檔,將輸入方波的頻率逐漸增加,增加到約為 800kHz 時,最后一位開始閃爍,隨著頻率的不斷增加,輸入頻率與顯示的差距逐漸增大。1Hz 檔測得數(shù)據(jù)如下:輸入(Hz)輸出(kHz)1000.00110000.010 100000.1001000001.000 10000010.000100000099.999800000800.0011000001999.9991000002溢出10Hz 檔測得的數(shù)據(jù):輸入(Hz)輸出(kHz)100000.011000000.10 10000001.00100000010.00 1000000100.00

38、10000000999.9980000200800.01100000129999.9910000013溢出100Hz 檔測得的數(shù)據(jù):輸入(Hz)輸出(kHz)10000000.1100000001.0 1000000010.010000000100.0 100000001000.01000000009999.8 下面我們來分析計數(shù)器測頻的測量誤差。從公式(4-1)可知,上述測頻TNf 方法的測量誤差,一方面決定于閘門時間 T,另一方面決定于計數(shù)器計得的數(shù)據(jù)。根據(jù)誤差合成方法,從公式(4-1)可得: (4-2)TTNNffxx 第四章、數(shù)字頻率計的設(shè)計與實現(xiàn)17 公式(4-2)中第一項是數(shù)字化儀

39、器所特有的誤差,而第二項是閘門時間的相對誤差,這項誤差決定于石英振蕩器所提供的標準頻率的準確度。現(xiàn)分述如下。(1) 1 誤差 在測頻時,主門的開啟時刻與計數(shù)脈沖之間的時間關(guān)系是不相關(guān)的,所以它們在時間軸上的相對位置是隨機的。這樣,在相同的主門開啟時間內(nèi),計數(shù)器所計得的數(shù)卻不一定相同,當主門開啟時間 T 接近甚至等于被測信號周期的xT整數(shù)倍 N 倍時,此項誤差為最大,圖 4-2 畫出的就是這種情況。 圖 4-2 正負 1 誤差 若主門開啟時刻為,而第 1 個計數(shù)脈沖出現(xiàn)在,圖 4-2 (a)中示出了0TxTxT0 的情況(),這時計數(shù)器計得 N 個數(shù)(圖中 N=6);現(xiàn)在再來看圖 0T0TTTx

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

41、準不準,主要決定于由石英振蕩器提供的標準頻率的準確度,若石英振蕩器的頻率為,分頻系數(shù)為 k,則 ccfkkTT 第四章、數(shù)字頻率計的設(shè)計與實現(xiàn)18 而 2ccffkT 所以 (4-4)ccffTT 可見,閘門時間的準確度在數(shù)值上等于標準頻率的準確度,式中負號表示由引起的閘門時間的誤差為。T(3) 結(jié)論綜上所述,可得如下結(jié)論:計數(shù)器直接測頻的誤差主要有兩項:即誤差和標準頻率誤差。一般,總誤差可采用分項誤差絕對值合成,即 (4-5)1(ccxxxffTfff 由以上公式可知:當輸入頻率值為 10000012HZ 時,輸出頻率值為 9999.99kHZ,誤差為:100000129999990100%

42、0.00022%10000012當輸入頻率值為 10000000Hz 時,輸出頻率值為 09999.8Hz,其誤差為:100000009999980100%0.0002%10000000其余的相對誤差計算方法一樣,分析結(jié)果可見,誤差都在 0.0002%左右,這個數(shù)很小,因此在一般精度的系統(tǒng)中,就可以應(yīng)用該頻率計來計數(shù)或測頻。 第五章 實驗結(jié)論及總結(jié)19第五章 實驗結(jié)論及總結(jié) 本文主要介紹了利用 VHDL 語言完成基于 FPGA 的數(shù)字頻率計的設(shè)計與實現(xiàn)。詳細介紹了測量原理,設(shè)計方案、各模塊的設(shè)計過程及其實現(xiàn)的功能,并對設(shè)計中遇到的問題作了分析和處理;利用 ISE 和 ModelSim 對設(shè)計進

43、行了仿真,分析,綜合,并最終下載到 FPGA 芯片中,實現(xiàn)了對頻率的測量。 (1).通過 ISE 綜合,ModelSim 仿真,最終在 EDA 實驗板上實現(xiàn)了 10Hz10MHz 頻率計的設(shè)計,其誤差在 0.01%數(shù)量級,能夠較為精確的測量頻率。 (2).當頻率計值達到該檔量程最大測量值時,這時輸入頻率值再繼續(xù)增加,則會產(chǎn)生溢出,并且 LED6 會變亮表示計數(shù)器已經(jīng)溢出。 (3).在測量頻率過程中我們應(yīng)當選擇適當?shù)臋n位,使得測量結(jié)果更加精確,特別是溢出信號 LED 亮的時候,一定要選擇更高檔位來進行測量。而有時為了能更精確的顯示頻率,也應(yīng)調(diào)低檔次來讀數(shù)。 通過頻率計的設(shè)計試驗,對頻率計有了更深

44、的認識,尤其是對頻率計的工作原理以及各功能模塊的實現(xiàn)有深入了解。此外,還熟悉了 Xilinx ISE 10.1i、ModelSim 軟件的用法和 VHDL/Verilog 的編程環(huán)境,通過本次的設(shè)計培養(yǎng)自己的實驗動手能力。這是第一次利用 VHDL 語言來實現(xiàn)基于 FPGA 的實際工程項目,所以在實驗過程中不可避免的遇到了很多問題。理論和實踐沒有有機的聯(lián)系起來,導(dǎo)致出現(xiàn)各種錯誤。 參考文獻20參考文獻1. 蔣煥文,孫續(xù). 電子測量(第二版). 中國計量出版社 (中).2. Volnei A. Pedroni. VHDL 數(shù)字電路設(shè)計教程. 電子工業(yè)出版社 (巴西).3. 姜立東. VHDL 語言

45、程序設(shè)計及應(yīng)用 (第二版). 北京郵電出版社 (中).4. 湯山俊夫. 數(shù)字電路設(shè)計與制作. 科學出版社 (日).5. 廖超平. EDA 技術(shù). 北京理工大學出版社 (中).6. 孫航. Xilinx 可編程邏輯器件的高級應(yīng)用與設(shè)計技巧. 電子工業(yè)出版社 (中). 致 謝21致 謝 在此,我首先向不辭辛勞,誨人不倦的老師 老師,表示最衷心的感謝。本實驗在系統(tǒng)的設(shè)計和開發(fā)、代碼的編寫和調(diào)試過程中都得到了劉老師和皇老師的悉心指導(dǎo)與指正。正是老師們的諄諄教導(dǎo)和熱心關(guān)懷使我較快的熟悉了如何使用硬件語言 VHDL 來實現(xiàn)項目的過程,并最終順利完成實驗。同時,老師們嚴謹?shù)闹螌W態(tài)度以及對工作的一絲不茍,也使

46、我受益匪淺,終生難忘。 特別感謝同學們在實驗期間給予我的巨大幫助與支持。在此,謹向他們致以深深的敬意和誠摯的感謝! 附 錄 22附 錄分頻器(50000 分頻,即出來 1kHz 的脈沖)- Engineer: - Create Date:03/15/2015 -LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity frequency_divider_50000 isport(f_in : in std_logic;f_out : out std_logic);end frequency_d

47、ivider_50000;architecture behav of frequency_divider_50000 issignal count : std_logic_vector(15 downto 0) := (others=0);beginprocess(f_in)beginif f_inevent and f_in = 0 thenif count = 49999 thencount 0);elsecount = count + 1;end if;end if;end process;f_out 0);beginprocess(f_in)beginif f_inevent and

48、f_in = 0 thenif count = 9 thencount 0);elsecount = count + 1;end if;end if;end process;f_out fdiv_out = fdiv_in;dp_loc fdiv_out = fdiv_in10;dp_loc fdiv_out = fdiv_in100;dp_loc fdiv_out = 0;dp_loc = 111;end case;end process;end one;測頻控制器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARI

49、TH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity control isport(fdiv_in:in std_logic;counter_en_out:out std_logic:=0;counter_reset_out:out std_logic:=0;latch_en_out:out std_logic:=0);end control;architecture one of control issignal sig1,sig2:std_logic:=0;beginprocess(fdiv_in,sig1,sig2)beginif rising_ed

50、ge(fdiv_in) thensig1=not sig1;end if;if falling_edge(fdiv_in) then 附 錄 25sig2=not sig2;end if;end process;counter_en_out=sig1;latch_en_out=sig2;counter_reset_out=(not fdiv_in)and(not sig1)and(sig2);end one;計數(shù)器:- Company: - Engineer: - - Create Date: 16:32:10 03/18/2015 - Design Name: - Module Name:

51、count_6 - Behavioral - Project Name: - Target Devices: - Tool versions: - Description: - Dependencies: - Revision: - Revision 0.01 - File Created- Additional Comments: -library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following lib

52、rary declaration if using- arithmetic functions with Signed or Unsigned values-use IEEE.NUMERIC_STD.ALL;- Uncomment the following library declaration if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all; 附 錄 26entity counter_6 is Port ( fx : in STD_LOGIC;

53、enc : in STD_LOGIC; clr : in STD_LOGIC; over_l: out STD_LOGIC; cn1 : out STD_LOGIC_VECTOR (3 downto 0); cn2 : out STD_LOGIC_VECTOR (3 downto 0); cn3 : out STD_LOGIC_VECTOR (3 downto 0); cn4 : out STD_LOGIC_VECTOR (3 downto 0); cn5 : out STD_LOGIC_VECTOR (3 downto 0); cn6 : out STD_LOGIC_VECTOR (3 do

54、wnto 0);end counter_6;architecture Behavioral of counter_6 issignal a,b,c,d,e,f:std_logic_vector(3 downto 0):=0000;begincn1 = a;cn2 = b;cn3 = c;cn4 = d;cn5 = e;cn6 = f;process(fx,clr,enc,a,b,c,d,e,f)beginif clr=1 thena=0000;b=0000;c=0000;d=0000;e=0000;f=0000;over_l=0;elsif rising_edge(fx) thenif enc

55、 = 1 thenif a1001 thena=a+1;else a=0000;if b1001 thenb=b+1; 附 錄 27elseb=0000;if c1001 thenc=c+1;elsec=0000;if d1001 thend=d+1;elsed=0000;if e1001 thene=e+1;elsee=0000;if f1001 thenf=f+1;elsef=0000;over_l=1;end if;end if;end if;end if;end if;end if;end if;end if;end process;end Behavioral;鎖存器:- Engin

56、eer: - - Create Date:03/15/2015 -LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; 附 錄 28entity latch isport(num_in1,num_in2,num_in3,num_in4,num_in5,num_in6:in std_logic_vector(3 downto 0);en,over_in:in std_logic;num_out1,num_out2,num_out3,num_out4,num_out5,num_out6:out std_logic_vector(3 downto 0);over_out:out std_logic);end latch;architecture one of latch isbeginprocess(en,num_in1

溫馨提示

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

最新文檔

評論

0/150

提交評論