基于FPGA的數(shù)字頻率計設(shè)計_第1頁
基于FPGA的數(shù)字頻率計設(shè)計_第2頁
基于FPGA的數(shù)字頻率計設(shè)計_第3頁
基于FPGA的數(shù)字頻率計設(shè)計_第4頁
基于FPGA的數(shù)字頻率計設(shè)計_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、本科學(xué)生畢業(yè)論文論文題目:基于fpga的數(shù)字頻率計設(shè)計學(xué) 院:電子工程學(xué)院年 級:2010專 業(yè):集成電路設(shè)計與集成系統(tǒng)姓 名:周景超學(xué) 號:20103665指導(dǎo)教師:林連冬2014年 5 月 11 日摘要eda技術(shù)的發(fā)展,改變了傳統(tǒng)的電子設(shè)計方法。fpga等大規(guī)模可編程邏輯器件的廣泛應(yīng)用,使電子設(shè)計變得和軟件編程一樣方便快捷。電子設(shè)計技術(shù)的進(jìn)步,也改變了傳統(tǒng)頻率計的設(shè)計方法。常用的頻率測量方法既有模擬的利用電路頻率特性測量頻率的方法,又有利用脈沖計數(shù)測量頻率的數(shù)字方法。隨著數(shù)字電路技術(shù)的發(fā)展,以脈沖計數(shù)法為基礎(chǔ)衍生出各種改進(jìn)型的數(shù)字測頻方法,在測量精度、測量響應(yīng)的快速性等方面都有了很大提高。

2、 本文分析了直接測頻法和周期測頻法的測量原理,說明了這兩種測頻方法產(chǎn)生1 個計數(shù)誤差的原因。多周期同步測頻法由于實現(xiàn)了測頻的閘門信號與被測脈沖信號的同步,消除了被測信號的1個計數(shù)誤差。文中對多周期同步測頻原理進(jìn)行了深入分析,并通過計算這三種測頻方法的測量誤差,說明了這三種測頻方法的優(yōu)缺點和適用的測頻場合。由于多周期同步測頻法的測量精度和被測信號的頻率無關(guān),是一種等精度測量方法,適用于寬范圍的頻率測量,所以本文采用多周期同步測頻法來進(jìn)行頻率計的設(shè)計,給出了設(shè)計總體方案。最終設(shè)計了一種基于fpga技術(shù)的數(shù)字頻率計,應(yīng)用vhdl硬件開發(fā)語言,在quartusii集成開發(fā)環(huán)境進(jìn)行了仿真實現(xiàn)。 關(guān)鍵詞數(shù)

3、字頻率計;直接測頻法;fpga;硬件開發(fā)語言abstractdevelopment of eda technology has changed the traditional method of electrical design. extensive application of programmable logic devices such as fpga has made the electrical design as convenient as software programming. the progress of electrical design technology als

4、o changed the traditional design method of frequency meter. the common measurement method of frequency is to utilize the frequency characteristics of the circuit to measure frequency, and also to adopt numerical method of utilizing pulse counting to measure frequency. with the development of digital

5、 circuit technology, a variety of improved frequency measurement methods are produced based on pulse counting method. this paper analyzes the direct frequency measurement method and the measuring principle of periodic frequency measurement method, which shows the reasons why these two methods produc

6、e error of 1 counts. multi-period synchronous frequency measurement method realized the synchronization of gate signal of frequency measurement and the measured pulse signal, eliminating the measured signal error of 1 counts. the paper analyzes the multi-period synchronous frequency measurement prin

7、ciple in depth and indicates the advantages and disadvantages of these three measurement methods and suitable measuring occasions by calculating the measurement error of these three methods. as the measurement accuracy of multi-period synchronous frequency measurement method is independent on the me

8、asured signal frequency, which is an equal-accquracy measurement method, it is applicable to a wide range of frequency measurement. the final design of the digital frequency meter, application development language vhdl hardware based on fpga technology in quartusii integrated development environment

9、 simulation implementation.key wordsdigital frequency meter;direct frequency measurement method;fpga;vhdl目錄摘要iabstractii第一章 緒論11.1 課題的研究背景11.2 頻率計的發(fā)展現(xiàn)狀11.3 課題研究的主要內(nèi)容21.4 論文各章主要內(nèi)容3第二章 頻率計測量原理42.1 常用頻率測量方法42.1.1 直讀法測頻42.1.2 比較法測頻52.1.3 脈沖計數(shù)法測頻52.2 脈沖計數(shù)法測量原理52.3 基于脈沖計數(shù)的直接測頻法62.3.1直接測頻法原理62.3.2直接測頻法誤差及測

10、頻范圍分析72.4 基于脈沖計數(shù)的周期測頻法72.4.1 周期測頻法原理72.4.2 周期測頻法的誤差分析82.5 本章小結(jié)8第三章 基于fpga頻率計的設(shè)計方案93.1 fpga的結(jié)構(gòu)與工作原理93.1.1 查找表的原理與結(jié)構(gòu)93.1.2 fpga的數(shù)字邏輯實現(xiàn)原理103.2 eda技術(shù)與vhdl113.2.1 vhdl語言113.2.2 eda設(shè)計方法123.2.3 基于eda工具的fpga設(shè)計流程133.3 頻率計的總體設(shè)計方案153.4 頻率計各功能模塊的設(shè)計原理163.4.1 計數(shù)單元設(shè)計163.4.2 數(shù)碼管拆分過程183.4.3 除法器設(shè)計193.5 本章小結(jié)20第四章 頻率計各

11、功能模塊的設(shè)計實現(xiàn)214.1 頻率測量及顯示控制模塊214.1.1 測頻閘門信號產(chǎn)生模塊的設(shè)計214.1.2 測頻閘門信號模塊的端口信號214.1.3 測頻閘門信號模塊的vhdl設(shè)計流程224.2 計數(shù)器模塊234.2.1 計數(shù)器的端口信號244.2.2 計數(shù)器的vhdl設(shè)計流程244.3 除法器模塊254.3.1 除法器的端口信號254.3.2 除法器的設(shè)計原理264.3.3 除法器的vhdl實現(xiàn)274.4 信號整形模塊284.5 電源模塊304.6 顯示模塊314.7 數(shù)字頻率計仿真324.7.1 搭建硬件仿真平臺324.7.2 除法器的仿真334.7.3 計數(shù)仲裁單元仿真334.7.4

12、計時過程仿真344.7.5 計數(shù)過程仿真344.8 本章小結(jié)35結(jié)論36參考文獻(xiàn)37致謝38第一章 緒論頻率是電子技術(shù)領(lǐng)域最基本的參數(shù)之一,頻率計是電子電氣、儀器儀表等應(yīng)用領(lǐng)域不可缺少的測量儀器,除電量以外,不少物理量的測量,如振動、轉(zhuǎn)速等的測量都涉及到或可以轉(zhuǎn)化為頻率的測量。1.1 課題的研究背景頻率計的設(shè)計技術(shù)是隨著電子電路技術(shù)的發(fā)展而逐步向前發(fā)展的,早期的頻率計采用分立元件設(shè)計,設(shè)計周期長、穩(wěn)定性差,并且成品體積大、功耗高。數(shù)字電子技術(shù)和集成電路的發(fā)展,使得數(shù)字頻率計廣泛應(yīng)用,數(shù)字頻率計可以使用單元電路和單片機(jī)來設(shè)計實現(xiàn)。相比分立件式的頻率計來說,數(shù)字頻率計提高了穩(wěn)定性,減小了體積,但是

13、數(shù)字頻率計仍然存在著電路復(fù)雜、設(shè)計周期長等缺點,數(shù)字頻率計的測量范圍都是有限的,為測量不同頻率的信號都要專門的設(shè)計某一部分電路,靈活性差。 20世紀(jì)末,隨著微電子技術(shù)的進(jìn)步和計算機(jī)技術(shù)的發(fā)展,在二者的相互促進(jìn)下,以fpga系列器件為代表的可編程邏輯器件的應(yīng)用逐漸普及??删幊踢壿嬈骷淹ㄓ眉呻娐吠ㄟ^編程集成到一塊尺寸很小的硅片上,成倍縮小了電路的體積,同時由于走線短,減少了干擾,提高了系統(tǒng)的可靠性。由于這類器件可以通過軟件編程而對其硬件的結(jié)構(gòu)和工作方式進(jìn)行重構(gòu),使得硬件的設(shè)計可以如同軟件設(shè)計那樣方便快捷,為數(shù)字電路系統(tǒng)的設(shè)計帶來了極大的靈活性。隨著可編程邏輯器件集成規(guī)模不斷擴(kuò)大,自身功能的不斷

14、完善和計算機(jī)輔助設(shè)計技術(shù)的提高,在現(xiàn)代電子系統(tǒng)設(shè)計領(lǐng)域中的eda便應(yīng)運而生了。 eda(電子設(shè)計自動化)是在cad(計算機(jī)輔助設(shè)計)、cam(計算機(jī)輔助制造)、cat(計算機(jī)輔助測試)和cae(計算機(jī)輔助工程)基礎(chǔ)上發(fā)展起來的計算機(jī)輔助設(shè)計系統(tǒng),eda是以大規(guī)??删幊踢壿嬈骷樵O(shè)計載體,以硬件描述語言為系統(tǒng)設(shè)計的主要表達(dá)方式,以計算機(jī)軟硬件開發(fā)系統(tǒng)為設(shè)計工具,自動完成集成電子系統(tǒng)設(shè)計的一門新技術(shù)。 1.2 頻率計的發(fā)展現(xiàn)狀由于社會發(fā)展和科技發(fā)展的需要,信息傳輸和處理的要求的提高,對頻率的測量精度也提出了更高的要求,需要更高準(zhǔn)確度的時頻基準(zhǔn)和更精密的測量技術(shù)。而 頻率測量所能達(dá)到的精度,主要取決

15、于作為標(biāo)準(zhǔn)頻率源的精度以及所使用的測量設(shè)備和測量方法。目前,國內(nèi)外使用的測頻的方法有很多,有直接測頻法、內(nèi)插法、游標(biāo)法、時間電壓變化法、多周期同步法、頻率倍增法、頻差倍增法以及相位比較法等等。直接測頻的方法較簡單,但精度不高。內(nèi)插法和游標(biāo)法都是采用模擬的方法,雖然精度提高了,但是電路設(shè)計卻很復(fù)雜。時間電壓變化法是利用電容的充放電時間進(jìn)行測量,由于經(jīng)過a/d轉(zhuǎn)換,速度較慢,且抗干擾能力較弱。多周期同步法是精度較高的一種。為了進(jìn)一步地提高精度,通常采用模擬內(nèi)插法或游標(biāo)法與多周期同步法結(jié)合使用,雖然精度有了進(jìn)一步的提高,但始終未解決1個字的計數(shù)誤差(1個字的誤差是指在規(guī)定的閘門時間內(nèi)存在1個信號的脈

16、沖計數(shù)誤差),而且這些方法設(shè)備復(fù)雜,不利于推廣。頻率誤差倍增法可以減小計數(shù)器的1個字的誤差,提高測量精度,但用這種方法來提高測量精度是有限的,因為如要得到210-13的測量精度,就要把被測頻率fx倍頻到mfx=1/21011hz=5000mhz,這無論是對倍頻技術(shù),還是對目前的計數(shù)器都是很難實現(xiàn)的。頻差倍增多周期法是一種頻差倍增法和差拍法相結(jié)合的測量方法。這種方法是將被測信號和參考信號經(jīng)頻差倍增使被測信號的相位起伏擴(kuò)大,在通過混頻器獲得差拍信號,用電子計數(shù)器在低頻下進(jìn)行多周期測量,能在較少的倍增次數(shù)和同樣的取樣時間情況下,得到比測頻法更高的系統(tǒng)分辨率和測量精度。但是仍然存在著時標(biāo)不穩(wěn)而引入的誤

17、差和一定的觸發(fā)誤差。以上只是對現(xiàn)存的幾種主要的測頻方法的概述,很顯然從以上的分析中知道:不同的測頻方法在不同的應(yīng)用條件下是具有一定的優(yōu)勢的。本文設(shè)計的頻率計主要應(yīng)用于一般性的頻率測量,對測量精度要求不是很高,通過比較各種測頻方法優(yōu)缺點,決定使用多周期同步測頻法進(jìn)行頻率計的設(shè)計。1.3 課題研究的主要內(nèi)容本課題主要研究如下內(nèi)容: 1分析比較常用的幾種測頻方式的測量精度,選擇一種合適的測頻實現(xiàn)方式。 2根據(jù)確定的測頻方式分模塊設(shè)計頻率計。 3用vhdl語言實現(xiàn)頻率計的各個模塊及頻率計的總體設(shè)計。 4將設(shè)計程序下載到fpga中,并設(shè)計頻率計的附件電路,完成頻率計總體硬件設(shè)計。1.4 論文各章主要內(nèi)容

18、本文旨在通過對于頻率計數(shù)器理論,頻率技術(shù)器這樣一個完整系統(tǒng)的制作。來加深自己對于fpga技術(shù)的認(rèn)識,同時加深對于頻率計數(shù)器的學(xué)習(xí)。具體主要包含以下內(nèi)容:第一章是緒論,主要介紹了課題的研究背景、研究現(xiàn)狀以及該課題的研究內(nèi)容。第二章介紹了頻率計量的原理、研究價值和幾種常用的頻率測量方法,重點介紹了直接測頻法、周期測頻法,對于本文的設(shè)計原理有了更加深入了解原理。第三章介紹了fpga的工作原理,同時介紹了vhdl語言。并且進(jìn)行了本電路fpga的軟件和硬件設(shè)計。提出了頻率計的總體設(shè)計方案,并按照不同功能對頻率計的總體設(shè)計進(jìn)行了模塊劃分。第四章根據(jù)第三章的設(shè)計理論對各個模塊進(jìn)行了設(shè)計與實現(xiàn),并對fpga數(shù)

19、字頻率計進(jìn)行了仿真。驗證了設(shè)計的搭建硬件仿真平臺、計數(shù)仲裁單元仿真、除法器單元仿真、計時過程仿真。第二章 頻率計測量原理頻率測量是電子測量領(lǐng)域的最基本測量之一。由于頻率信號抗干擾性強(qiáng)、易傳輸,可以獲得較高的測量精度,所以測頻方法的研究越來越受到重視,在檢測技術(shù)中,常將一些電量或其他電參量轉(zhuǎn)換成頻率進(jìn)行測量,以提高測量的精度。2.1 常用頻率測量方法目前,用于測量頻率的方法很多,頻率測量的準(zhǔn)確度主要取決于所測量的頻率范圍以及被測對象的特點。而測量所能達(dá)到的精度,不僅取決于作為標(biāo)準(zhǔn)使用的時鐘頻率的精度,也取決于所使用的測量設(shè)備和測量方法。下面對幾類常用的頻率測量方法進(jìn)行簡單介紹。2.1.1 直讀法

20、測頻直讀法測頻是利用電路的頻率特性進(jìn)行頻率的判讀。直讀法測量頻率有電橋測頻法、諧振測頻法、頻率電壓轉(zhuǎn)換測頻法等。 1. 電橋法 電橋法測頻是利用交流電橋的平衡條件與電橋電源頻率有關(guān)這一特性來測頻的。在電橋面板上將調(diào)節(jié)電橋平衡的可變電阻(或電容)的調(diào)節(jié)旋鈕(度盤)按頻率刻度,則在電橋指示平衡時,測試者便可從刻度上直接讀得被測信號頻率fx。 電橋法測頻的測量精度約為(0.51),一般用于低頻段的測量。在高頻時,由于寄生參數(shù)影響嚴(yán)重,會使測量精確度大大下降,電橋測頻法僅適用于10khz以下的音頻范圍。 2. 諧振法測頻 諧振法測頻是利用電感、電容組成的串聯(lián)諧振回路或并聯(lián)諧振回路的諧振特性來實現(xiàn)頻率的

21、測量。當(dāng)被測頻率加到變壓器式的諧振電路中時,調(diào)節(jié)電容使諧振電路達(dá)到諧振。如果電容的調(diào)節(jié)度盤按諧振頻率刻度,則可直接從該刻度讀出被測頻率值。諧振法測量頻率的誤差大約在(0.251)范圍內(nèi),主要用于高頻段的頻率測量。諧振法優(yōu)點是體積小、重量輕,不要求電源等,因而它目仍獲得廣泛的應(yīng)用。 3. 頻率電壓轉(zhuǎn)換測頻法 頻率電壓轉(zhuǎn)換(f-v)測頻法的原理是利用相關(guān)電路把正弦頻率fx轉(zhuǎn)換為周期相等、寬度、幅度均為定值的矩形脈沖序列,用低通濾波器濾除其全部交流分量,則平均值即直流分量。如下式: (2-1)輸出的直流電壓uo按頻率刻度的電壓表指示,則從電壓表指針?biāo)缚潭缺憧芍苯幼x出被測頻率fx。f-v轉(zhuǎn)換式頻率計

22、最高測量頻率可達(dá)幾兆赫。可以連續(xù)監(jiān)視頻率的變化是這種測量法的突出優(yōu)點。2.1.2 比較法測頻比較法測頻就是用標(biāo)準(zhǔn)頻率fc與被測頻率fx進(jìn)行比較,當(dāng)把標(biāo)準(zhǔn)頻率調(diào)節(jié)到與被測頻率相等時指零儀表(零示器)便指零,此時的標(biāo)準(zhǔn)頻率值即被測頻率值。比較法測頻可分為拍頻法測頻與差頻法測頻兩種。前者是將待測頻率信號與標(biāo)準(zhǔn)頻率信號在線性元件上疊加產(chǎn)生拍頻。后者是將待測頻率信號與標(biāo)準(zhǔn)頻率信號在非線性元件上進(jìn)行混頻。目前拍頻法測量頻率的絕對誤差約為零點幾赫茲,差頻法測量頻率的誤差可優(yōu)于10-5量級,最低可測信號電平達(dá)0.1v1v。拍頻法和差頻法在常規(guī)場合很少采用。2.1.3 脈沖計數(shù)法測頻計數(shù)法測頻是數(shù)字頻率計常用的

23、、最基本的頻率測量方法。計數(shù)法就是在單位時間內(nèi)對信號的周期個數(shù)進(jìn)行計數(shù)。計數(shù)法測頻的精確度取決于基準(zhǔn)時間的精確度和計數(shù)誤差。本設(shè)計采用計數(shù)法進(jìn)行頻率測量,下面對計數(shù)法的測頻原理和基于計數(shù)法的幾種的測頻方法進(jìn)行詳細(xì)分析。2.2 脈沖計數(shù)法測量原理計數(shù)法的原理就是在一定的時間內(nèi),對周期性脈沖的重復(fù)次數(shù)進(jìn)行計數(shù)??捎脠D 2-1來說明。設(shè)時間間隔為t,若周期性脈沖的周期為ta,則計數(shù)結(jié)果為: (2-2)由于t和ta兩個量是不相關(guān)的,t不一定正好是ta的整數(shù)n倍,即t與nta之間有一定誤差,如圖2-1所示。圖2-1 計數(shù)法測量原理圖中t1是閘門開啟時刻到第一個計數(shù)脈沖前沿的時間(假設(shè)計數(shù)脈沖前沿使計數(shù)器

24、翻轉(zhuǎn)計數(shù)),t2是閘門關(guān)閉時刻至下一個計數(shù)脈沖前沿的時間。處在t區(qū)間內(nèi)計數(shù)脈沖個數(shù)(即計數(shù)器計數(shù)結(jié)果)為n,則有: (2-3)其中,n的產(chǎn)生是由于計數(shù)時閘門的開啟時刻與計數(shù)脈沖之間的時間關(guān)系不相關(guān)造成的,即在相同的閘門開啟時間內(nèi),計數(shù)器所得的數(shù)并不一定相同。當(dāng)閘門開啟時間t接近甚至等于被測信號周期tx的整數(shù)倍時,n的絕對值最大,為n = 1。所以,脈沖計數(shù)的最大絕對誤差(又稱量化誤差)為: (2-4)最大相對誤差為: (2-5)以上是脈沖計數(shù)法的測量原理和誤差分析。具體到應(yīng)用脈沖計數(shù)法進(jìn)行頻率測量,通常根據(jù)頻率值高低,又可分為直接測頻法(m 法)和周期測頻法(t 法)。2.3 基于脈沖計數(shù)的直

25、接測頻法2.3.1直接測頻法原理直接測頻法又稱m法,是在脈沖計數(shù)法的基礎(chǔ)上,選用一個頻率相對較低的基準(zhǔn)頻率信號作為閘門信號(圖2-1中信號b),而將被測信號轉(zhuǎn)換為同頻的周期性脈沖信號(圖2-1中信號a),在固定閘門時間t內(nèi)對其計數(shù)。若計數(shù)結(jié)果為n,則用該方法測得的信號的頻率為: (2-6)這里,時間間隔t = mtc = m / fc,tc、fc分別是基準(zhǔn)頻率信號的周期和頻率值,m為t時間內(nèi)包含的基準(zhǔn)頻率信號的周期數(shù)。很顯然,直接測頻法適合于測量頻率較高的信號。2.3.2 直接測頻法誤差及測頻范圍分析直接測頻法的誤差分析:經(jīng)過對直接測頻法的分析,我們知道這種方法的主要誤差來自閾門時間t以及計數(shù)

26、器的結(jié)果正確與否,所以,我們可以得到總誤差同可用分項誤差這二者的絕對值進(jìn)行相加,得到: (2-7)在上面這個公式中,最大量化誤差的絕對值主要是由于閾門與被測計數(shù)脈沖這二者未在同一時刻打開的原因,然而,根據(jù)理論我們可以知道,即便這二者在同一時間開啟,也未必能夠得到一個相同的值。在上面的公式中fx為預(yù)測基本頻率,fx為預(yù)測頻率變化量,我們用f0/f0來表示直測法的閾門時間相對誤差,這一誤差值是由于電路標(biāo)準(zhǔn)頻率的偏差而產(chǎn)生的。通常情況下,閾門時間的正確與否是根據(jù)不同的測頻需求而先行制定的。在以往的測頻率誤差中,閾門時間都會對結(jié)果造成一定的影響,為了避免這種影響,我們選取的標(biāo)準(zhǔn)頻率的準(zhǔn)確度應(yīng)該取值高于

27、被測信號2個數(shù)量級或2個數(shù)量級以上。2.4 基于脈沖計數(shù)的周期測頻法2.4.1 周期測頻法原理周期測頻法又稱t法,是在脈沖計數(shù)法的基礎(chǔ)上,將頻率相對較高的基準(zhǔn)信號作為周期性脈沖計數(shù)信號(圖2-1中信號a),將被測信號轉(zhuǎn)換為時間長度等同于被測信號周期的閘門信號(圖2-1中信號b),在閘門時間t(被測信號周期)內(nèi)對基準(zhǔn)脈沖信號計數(shù)。若計數(shù)結(jié)果為n,則用該方法測得的信號的周期為: (2-8)被測信號的頻率為: (2-9)很顯然,周期測頻法適合于測量頻率較低的信號。2.4.2 周期測頻法的誤差分析經(jīng)過對直接測周期法的分析,我們知道這種方法的主要誤差在于標(biāo)準(zhǔn)頻率數(shù)器的結(jié)果正確與否,所以,我們可以得到總誤

28、差同可用分項誤差這二者的絕對值進(jìn)行相加,得到: (2-10)在上面這個2-10式中,最大量化誤差的絕對值主要是由于閾門與被測計數(shù)脈沖這二者未在同一時刻打開的原因。在上面的公式中,我們用f0/f0測法的閾門時間相對誤差,這一誤差值是由于電路標(biāo)準(zhǔn)頻率的偏差而產(chǎn)生的。通常情況下,閾門時間的正確與否是根據(jù)不同的測頻需求而先行制定的。在以往的測頻率誤差中,閾門時間都會對結(jié)果造成一定的影響,為了避免這種影響,我們選取的標(biāo)準(zhǔn)頻率的準(zhǔn)確度應(yīng)該取值高于被測信號2個數(shù)量級或2個數(shù)量級以上。由上文可以得出,被測頻率fx越高,閘門開啟時間t越長(m的值越大),測頻的相對誤差fx/fx越小,即測頻的精確度越高。2.5

29、本章小結(jié)本章主要介紹了常用的幾種頻率測量方法,并對各個測量方法的測量原理進(jìn)行了說明,在原理說明的基礎(chǔ)上對各個測量方法的最大相對誤差進(jìn)行了分析,給出了各個頻率測量方法適用的測頻場合。第三章 基于fpga頻率計的設(shè)計方案fpga 是現(xiàn)場可編程邏輯陣列(field programmable gate array)的英文縮寫。它和 cpld(complex programmable logic device,復(fù)雜可編程邏輯器件)一樣,是目前常用的一類大規(guī)??删幊踢壿嬈骷?。3.1 fpga的結(jié)構(gòu)與工作原理3.1.1 查找表的原理與結(jié)構(gòu)對于組合邏輯電路來說,當(dāng)前的輸出總是當(dāng)前輸入的函數(shù),并且當(dāng)電路結(jié)構(gòu)固定

30、時,輸入量不變,輸出量也不會發(fā)生變化。如圖3-1所示組合邏輯電路。圖3-1 組合邏輯電路示例圖3-1所示電路實現(xiàn)的組合邏輯為:p=ab+c;q=a (b+c)。該組合邏輯電路的真值表如表3-1所示。表3-1 示例組合電路的真值表 表3-2 ram中存儲的數(shù)據(jù)a b c p q0 0 0 0 00 0 1 1 00 1 0 0 00 1 1 1 01 0 0 0 01 0 1 1 11 1 0 1 11 1 1 1 1a2 a1 a0 d1 d00 0 0 0 00 0 1 1 00 1 0 0 00 1 1 1 01 0 0 0 01 0 1 1 11 1 0 1 11 1 1 1 1真值表決

31、定了輸入和輸出之間的邏輯關(guān)系。將真值表和隨機(jī)存儲器聯(lián)系起來,我們會看到,若輸入量a、b、c 作為隨機(jī)存儲器的地址輸入a2、a1、a0,則輸出量p、q可以看作是存儲器中該地址對應(yīng)的存儲單元中存儲的數(shù)據(jù) d1、d0。如表3-2所示。存儲器中各個單元存入不同的數(shù)據(jù),地址(輸入量)和存儲單元中的數(shù)據(jù)(輸出量)可構(gòu)成不同的組合邏輯關(guān)系。這是用隨機(jī)存儲器(ram)實現(xiàn)可編程組合邏輯的基本原理。 fpga可編程邏輯的形成方法就是采用基于這種原理的可編程的查找表(look up table,lut)結(jié)構(gòu)。lut是可編程的最小邏輯構(gòu)成單元。大部分的fpga采用基于sram(靜態(tài)隨機(jī)存儲器)的查找表邏輯形成結(jié)構(gòu),

32、就是用sram來構(gòu)成邏輯函數(shù)發(fā)生器。目前fpga中多使用4輸入的lut,所以每一個lut可以看成一個有4位地址線的 161 的ram。當(dāng)用戶在eda 開發(fā)環(huán)境中通過原理圖或hdl語言描述了一個邏輯電路以后,eda開發(fā)軟件會自動計算邏輯電路的所有可能的結(jié)果,并把結(jié)果事先寫入ram,這樣,每輸入一個信號進(jìn)行邏輯運算就等于輸入一個地址進(jìn)行查表,找出地址對應(yīng)的內(nèi)容,然后輸出即可。fpga查找表單元如圖3-2所示。圖3-2 fpga查找表單元至于一般情況下fpga采用4 輸入的lut,是因為,對于一個n輸入的查找表,需要sram存儲n個輸入構(gòu)成的真值表,需要2n個1位sram單元。顯然n不可能很大,否則

33、lut 的利用率很低,所以一般fpga的lut多采用4輸入的形式即n=4。當(dāng)邏輯函數(shù)的輸入多于4個的時候,必須用幾個查找表分開實現(xiàn)。3.1.2 fpga的數(shù)字邏輯實現(xiàn)原理我們以用fpga來實現(xiàn)圖3-3所示的數(shù)字電路來說明fpga實現(xiàn)數(shù)字邏輯的原理。在fpga中,a、b、c、d輸入信號由fpga芯片的管腳輸入后進(jìn)入可編程連線,然后作為地址線連到到lut,lut根據(jù)圖3-3中虛線框內(nèi)的邏輯關(guān)系通過編程已經(jīng)事先寫入了所有可能的邏輯結(jié)果,所以lut通過地址查找到相應(yīng)的數(shù)據(jù),然后輸出,這樣組合邏輯就實現(xiàn)了。電路中d觸發(fā)器是可利用lut后面d觸發(fā)器來實現(xiàn)。時鐘信號 clk由i/o腳輸入后進(jìn)入芯片內(nèi)部的時鐘

34、專用通道,直接連接到觸發(fā)器的時鐘端。圖3-3 數(shù)字邏輯電路示例觸發(fā)器的輸出與i/o腳相連,把結(jié)果輸出到芯片管腳。這樣fpga 就完成了圖3-3所示電路的功能。這個電路是一個很簡單的例子,只需要一個lut加上一個觸發(fā)器就可以完成。對于一個lut無法完成的電路,就需要通過進(jìn)位邏輯將多個單元相連,這樣fpga就可以實現(xiàn)復(fù)雜的邏輯。3.2 eda技術(shù)與vhdl3.2.1 vhdl語言本文的電路設(shè)計語言采用了傳統(tǒng)的電路設(shè)計語言vhdl。這是一種高級的、被廣泛應(yīng)用于設(shè)計電路的硬件開發(fā)語言。此硬件語言最早在上世紀(jì)的八十年代浮現(xiàn)于人們眼前,在vhdl語言被設(shè)計之處,是美國的國防部為了國家軍隊提高硬件開發(fā)的可靠

35、性與縮短開發(fā)時間而研發(fā)的一種硬件語言。在那個時候,vhdl的使用范圍還是分有限。vhdl即“very-high-speed integrated circuit hardware description language”。在漢文的意思中,是速度非??斓?、集成的、用來秒速電路硬件的語言。經(jīng)過多年的發(fā)展與使用,如今已經(jīng)被廣泛應(yīng)用于各個領(lǐng)域,尤其是在數(shù)字電路的設(shè)計方面應(yīng)用十分廣泛。在我國大陸地區(qū),vhdl硬件語言主要被應(yīng)用于fpga/cpld/epld的開發(fā)設(shè)計之中,只有一些非常有才能的企業(yè)應(yīng)用vhdl來設(shè)計開發(fā)asic。被主要使用在對系統(tǒng)結(jié)構(gòu)行為、功能接口的vhdl語言,是一種硬件特征明顯的語言

36、,但它不僅僅包括了硬件特征的語句,它描述語句的描述方式、語句風(fēng)格甚至到vhdl的語法都是特別接近計算機(jī)程序設(shè)計高級語言的,這在使用vhdl進(jìn)行硬件程序設(shè)計之時,十分的方便。如此一來,通過使用vhdl所開發(fā)設(shè)計的程序就具備了這樣一個特點:可以把一個工程項目中抑或者是某個設(shè)計實體(譬如一個系統(tǒng)或者一個元件)分成外部或者內(nèi)部,不但涉及實體的功能,還實現(xiàn)了算法部分。這么做的好處是:對已經(jīng)定義了外部界面的涉及實體,一旦這個實體的內(nèi)部完成了,那么其他的設(shè)計就能夠調(diào)用這個定義了外部界面的實體,這樣大大的減少了開發(fā)時間,提高了開發(fā)效率。在vhdl程序設(shè)計中,這一部分的優(yōu)勢與概念是vhdl系統(tǒng)的最基本的一個點。

37、3.2.2 eda設(shè)計方法eda技術(shù)的發(fā)展從理念上顛覆了傳統(tǒng)的電子設(shè)計方法。傳統(tǒng)的電子設(shè)計方法通常是自底向上的,即首先確定構(gòu)成系統(tǒng)的最底層的電路模塊或元件的結(jié)構(gòu)和功能,然后根據(jù)主系統(tǒng)的功能要求,將它們組合成更大的功能塊,使它們的結(jié)構(gòu)和功能滿足高層系統(tǒng)的要求,以此流程,逐步向上遞推,直至完成整個目標(biāo)系統(tǒng)的設(shè)計。自底向上的設(shè)計方法的特點是必須首先關(guān)注并致力于解決系統(tǒng)最底層硬件的可獲得性,以及它們的功能特性方面的諸多細(xì)節(jié)問題;在整個逐級設(shè)計和測試過程中,始終必須顧及具體目標(biāo)器件的技術(shù)細(xì)節(jié)。在這個設(shè)計過程中的任一時刻,最底層目標(biāo)器件的更換,或某些技術(shù)參數(shù)不滿足總體要求,或缺貨,或由于市場競爭的變化,臨

38、時提出降低系統(tǒng)成本,提高運行速度等不可預(yù)測的外圍因素,都可使前面的工作前功盡棄,工作又得重新開始。由此可見,在某些情況下,自底向上的設(shè)計方法是一種低效、低可靠性、費時費力、且成本高昂的設(shè)計方法。在電子設(shè)計領(lǐng)域,自頂向下的設(shè)計方法在eda技術(shù)得到快速發(fā)展和成熟應(yīng)用后才成為可能。自頂向下設(shè)計方法的有效應(yīng)用必須基于功能強(qiáng)大的eda工具,具備集系統(tǒng)描述、行為描述和結(jié)構(gòu)描述功能為一體的vhdl語言,以及先進(jìn)的asic制造工藝和 fpga開發(fā)技術(shù)。當(dāng)今,自頂向下的設(shè)計方法已經(jīng)是eda技術(shù)的首選設(shè)計方法,是asic或fpga開發(fā)的主要設(shè)計手段。自頂向下的設(shè)計方法,就是在整個設(shè)計流程中各設(shè)計環(huán)節(jié)逐步求精的過程

39、。一個項目的設(shè)計過程包括從自然語言說明到vhdl的系統(tǒng)行為描述,從系統(tǒng)的分解、rtl(register transport level,寄存器傳輸級)模型的建立、門級模型產(chǎn)生到最終的可以物理布線實現(xiàn)的底層電路,就是從高抽象級別到低抽象級別的整個設(shè)計周期。后端設(shè)計還必須包括涉及硬件的物理結(jié)構(gòu)實現(xiàn)方法和測試(仍然利用計算機(jī)完成)。應(yīng)用vhdl進(jìn)行自頂向下的設(shè)計,就是使用vhdl模型在所有綜合級別上對硬件設(shè)計進(jìn)行說明、建模和仿真測試。(這里的綜合是指綜合器將用vhdl語言描述的電子系統(tǒng),通過vhdl 到rtl,從rtl到邏輯門,從邏輯門最終轉(zhuǎn)換為可直接配置fpga 的配置網(wǎng)表文件或進(jìn)行asic設(shè)計所

40、需的版圖文件的過程。)主系統(tǒng)和子系統(tǒng)最初的功能要求在vhdl里體現(xiàn)為可以被vhdl仿真程序驗證的可執(zhí)行程序。由于綜合器(計算機(jī)軟件,eda 工具之一)可以將高級別的模型轉(zhuǎn)化生成門級模型,所以整個設(shè)計過程基本是由計算機(jī)自動完成的。人為介入的方式主要是根據(jù)仿真的結(jié)果和優(yōu)化的指標(biāo),控制邏輯綜合的方式和指向。因此,在設(shè)計周期中,要根據(jù)仿真的結(jié)果進(jìn)行優(yōu)化和升級,以及對模型進(jìn)行及時修改,以改進(jìn)系統(tǒng)或子系統(tǒng)的功能,更正設(shè)計錯誤,提高目標(biāo)系統(tǒng)的工作速度,較少面積耗用,降低功耗和成本等。在這些過程中,由于設(shè)計的下一步是基于當(dāng)前的設(shè)計,即使發(fā)現(xiàn)問題或做新的修改而需從頭開始設(shè)計,也不妨礙整體的設(shè)計效率。此外,vhd

41、l設(shè)計的可移植性、eda平臺的通用性以及與硬件結(jié)構(gòu)的無關(guān)性,使得前期的設(shè)計可以很容易地應(yīng)用于新的設(shè)計項目,而且設(shè)計的周期可以顯著縮短。自頂向下的設(shè)計方法可以將系統(tǒng)分解為各個功能模塊,不同的模塊可以同時設(shè)計、仿真、測試,最后將不同的模塊集成為最終的系統(tǒng)模型,并對其進(jìn)行綜合測試和評價。3.2.3 基于eda工具的fpga設(shè)計流程一個完整的eda設(shè)計流程既是自頂向下設(shè)計方法的具體實施途徑,也是eda工具軟件本身的組成結(jié)構(gòu)。使用vhdl硬件描述語言對數(shù)字電路進(jìn)行設(shè)計,一般的設(shè)計流程可用圖3-4表示。具體的設(shè)計流程為:1設(shè)計要求的定義 在從事設(shè)計進(jìn)行編寫vhdl代碼之前,必須先對設(shè)計目的和要求有一個明確

42、的認(rèn)識。例如,要設(shè)計的功能是什么?對所需的信號建立時間、時鐘/輸出時間、最大系統(tǒng)工作頻率、關(guān)鍵的路徑等這些要求,要有一個明確的定義,然后再選擇適當(dāng)?shù)脑O(shè)計方式和相應(yīng)的邏輯器件,進(jìn)行總體方案的設(shè)計。2設(shè)計vhdl描述按照vhdl的程序格式要求,用vhdl程序語言將設(shè)計方案表述出來。vhdl語言的代碼與其它計算機(jī)程序語言的代碼有很大的不同,它是和硬件相關(guān)的,編寫vhdl 程序時必須清醒地認(rèn)識到是正在設(shè)計硬件,編寫的vhdl代碼必須能夠綜合到采用可編程邏輯器件來實現(xiàn)的數(shù)字邏輯之中。 圖3-4 基于fpga的eda開發(fā)流程3vhdl文本編輯 使用編輯器將編寫好的vhdl語言源程序輸入到計算機(jī)當(dāng)中。編輯器

43、可以使用eda開發(fā)環(huán)境自帶的編輯器,也可以使用計算機(jī)上任一款文本編輯器如記事本等。但是不要使用office word,因為word中帶有一些隱形字符,不適合作為任一程序語言的編輯器。 4源代碼的功能仿真 功能仿真是直接對vhdl描述的邏輯功能進(jìn)行測試模擬,以了解其實現(xiàn)的功能是否滿足原設(shè)計要求。對于大型設(shè)計,采用vhdl仿真軟件對其進(jìn)行功能仿真可以節(jié)省時間,可以在設(shè)計的早期階段檢測到設(shè)計中的錯誤,從而進(jìn)行修正,以便盡可能地減少對設(shè)計日程計劃的影響。因為對于大型設(shè)計,其綜合優(yōu)化、配置往往要花費好幾個小時,在綜合之前對源代碼仿真,就可以大大減少設(shè)計重復(fù)次數(shù)和修正錯誤的時間。但對于小型設(shè)計,往往不需要

44、先對vhdl原代碼進(jìn)行功能仿真,即使做了,意義也不大。因為對于小型設(shè)計,其綜合優(yōu)化、配置花費的時間不多,而且在綜合優(yōu)化之后,往往會發(fā)現(xiàn)為了實現(xiàn)性能目標(biāo),將需要修改原設(shè)計。在這種情況下,用戶事先在源代碼仿真時所花費的時間是毫無意義的,因為一旦改變設(shè)計,還必須重新再做仿真。 5綜合 進(jìn)行綜合前要選擇最終使用的fpga目標(biāo)器件,在輸入約束條件后,vhdl綜合器將對vhdl源代碼進(jìn)行綜合處理,最終產(chǎn)生fpga的配置網(wǎng)表文件。整個的綜合過程就是將設(shè)計者輸入的vhdl語言源程序,依據(jù)給定的硬件結(jié)構(gòu)組件和約束控制條件進(jìn)行編譯、優(yōu)化、轉(zhuǎn)換和綜合,最終獲得門級電路甚至更底層的電路描述網(wǎng)表文件。 6適配 將綜合器

45、產(chǎn)生的網(wǎng)表文件配置于指定的目標(biāo)器件中,使之產(chǎn)生最終的下載文件,這一過程成為適配。完成適配的eda工具稱為適配器,根據(jù)其功能也稱結(jié)構(gòu)綜合器。適配器將綜合后的網(wǎng)表文件針對某一具體的目標(biāo)器件進(jìn)行邏輯映射操作,其中包括底層器件配置、邏輯分割、邏輯優(yōu)化、邏輯布局布線操作。適配完成后可以利用適配所產(chǎn)生的仿真文件作精確的時序仿真,同時產(chǎn)生可用于編程的下載文件。 7時序仿真 時序仿真就是接近真實器件運行特性的仿真,仿真文件中已包含了器件硬件特性參數(shù),因而,仿真精度高。但時序仿真文件必須來自針對具體器件的綜合器與適配器。綜合后所得的網(wǎng)表文件通常作為fpga適配器的輸入文件,產(chǎn)生的仿真網(wǎng)表文件中包含了精確的硬件延

46、遲信息。 8編程下載 把適配后生成的下載或配置文件,通過編程器或編程電纜向fpga下載,對目標(biāo) fpga器件進(jìn)行實際配置,以使其構(gòu)成所需要的電路系統(tǒng),便于進(jìn)行硬件測試和驗證。 9硬件測試 最后將含有載入了設(shè)計的fpga的硬件系統(tǒng)進(jìn)行統(tǒng)一測試,以便最終驗證設(shè)計項目在目標(biāo)系統(tǒng)上的實際工作情況,以排除錯誤,改進(jìn)設(shè)計。由以上eda設(shè)計流程可知,這些eda工具可以由fpga器件廠商單獨提供,也可以統(tǒng)一包含在eda的集成開發(fā)環(huán)境當(dāng)中。本課題設(shè)計所用的quartusii軟件包就是altera公司提供的fpga/cpld開發(fā)集成環(huán)境,altera公司是世界上最大的可編程邏輯器件供應(yīng)商之一。3.3 頻率計的總體

47、設(shè)計方案對輸入源的信號進(jìn)行信號整形,然后在fpga的io口處采集輸入信號上升沿,若在一秒內(nèi)采集到的數(shù)據(jù)個數(shù)大于一個,也即頻率輸入大于1hz,則對該信號計數(shù),在一秒內(nèi)采集到的數(shù)據(jù)個數(shù)記為當(dāng)前頻率;若采集到的信號不到1hz,也就是在1s內(nèi)沒有一個有效信號采集到則開始計數(shù),一直到下一個上升沿到來,也就是一個信號周期時間t。然后用1s除以t得到當(dāng)前頻率值。最終值顯示到數(shù)碼管上??傮w設(shè)計框圖如下圖3-5所示:圖3-5 總體設(shè)計框圖3.4 頻率計各功能模塊的設(shè)計原理本設(shè)計方案主要由計數(shù)單元設(shè)計、數(shù)碼管拆分過程、led顯示除法器設(shè)計等幾部分模塊組成。下面將一一介紹其中的設(shè)計思路。3.4.1 計數(shù)單元設(shè)計 外

48、部時鐘我們采用50mhz有源晶振,該設(shè)計可以提供穩(wěn)定且精準(zhǔn)的時鐘源。在此處我們設(shè)計方法上采用了同時計數(shù)法,就是在50m晶振的驅(qū)動下,同時對輸入信號和時間計數(shù),1s的計數(shù)周期就是在50m晶振驅(qū)動50000000次。該部分代碼設(shè)計如下。計數(shù)單元外部時鐘部分代碼設(shè)計process (clk_50m)beginif (clk_50mevent and clk_50m = 1) thenif (not(rst_n) = 1) thent_cnt = 0000000000000000000000000;tc_sel = 01;t_1s_done = to_stdlogicvector(one_second

49、_num, 25) thent_cnt = 0000000000000000000000000;t_1s_done 0000000000000000000000001) thentc_sel = 01;elsetc_sel = 00;end if;elset_1s_done = 00;t_cnt = t_cnt + 0000000000000000000000001;end if;end if;end if;end process;該部分設(shè)計同時做了仲裁功能,就是對1s時間內(nèi)的輸入信號做判斷,如果沒有輸入有效信號,則認(rèn)定為低于1hz,此時進(jìn)入低頻邏輯過程。否則進(jìn)入高頻相對于低于1hz的邏輯過程

50、。計數(shù)單元我們采用單獨的計數(shù)控制,只對輸入信號響應(yīng),可以實現(xiàn)精確的輸入記錄。該部分代碼設(shè)計如下:為了不影響計數(shù)精度,該部分只是負(fù)責(zé)輸入信號的計數(shù)。計數(shù)單元部分代碼設(shè)計:process (sig_i)beginif (sig_ievent and sig_i = 1) thenif (not(rst_n) = 1) thenc_cnt = 0000000000000000000000000;elsec_cnt = c_cnt + 0000000000000000000000001;if (t_1s_done /= 00) thenc_cnt temp_result = cur_fx;if (t_

51、ok = 1) thendivide_num_state = to_stdlogicvector(divide_num_s1, 5);divide_start = 1;elsedivide_start = 0;divide_num_state div_focus = 100110001001011010000000;div_num = temp_result(23 downto 0);load = 1;if (bsy = 1) thendivide_num_state if (not(bsy) = 1) thend_msb0 = res_quotient(3 downto 0);temp_re

52、sult = (0 & res_remaind);divide_num_state = to_stdlogicvector(divide_num_s2, 5);end if;3.4.3 除法器設(shè)計由于fpga并沒有提供硬件除法器,在實際設(shè)計過程中,除法會耗費大量的邏輯資源,于是我們單獨設(shè)計了除法器,并采用了循環(huán)相減法,具體的設(shè)計就是除數(shù)依次減去被除數(shù),一直減少到除數(shù)小于被除數(shù),此時記下此過程中的商數(shù)和余數(shù)就是所求的結(jié)果。實際測試顯示,該方法有效實現(xiàn)了除法過程。該部分代碼如下。除法器設(shè)計部分代碼:process (clk)beginif (clkevent and clk = 1) thenif (not(rst_n) = 1) thenres_quotient_xhdl0 = 0000;res_remaind = 0000;bsy = 0;divide_state load_r2 = load_r1;if (load_pos_edge = 1) thendivide_state = to_stdlogicvector(divide_s1, 4);div_num_r = div_num;div_fous_r = di

溫馨提示

  • 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

提交評論