基于FPGA的奇偶分頻器的設(shè)計與實現(xiàn)_第1頁
基于FPGA的奇偶分頻器的設(shè)計與實現(xiàn)_第2頁
基于FPGA的奇偶分頻器的設(shè)計與實現(xiàn)_第3頁
基于FPGA的奇偶分頻器的設(shè)計與實現(xiàn)_第4頁
基于FPGA的奇偶分頻器的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、內(nèi)蒙古科技大學本科生畢業(yè)設(shè)計說明書(畢業(yè)論文)題 目:基于FPGA的奇偶分頻器的設(shè)計與實現(xiàn)學生姓名: 學 號:專 業(yè):電子信息工程班 級:電信10-1班指導教師: 基于FPGA的奇偶分頻器的設(shè)計與實現(xiàn)摘 要分頻器作為一種最基本的數(shù)字電路,廣泛的應(yīng)用在各種復雜的邏輯電路設(shè)計中,對于FPGA芯片來說,雖然能用自帶的鎖相環(huán)來產(chǎn)生一部分我們所需的頻率,但是,用VHDL語言實現(xiàn)分頻能從同一時鐘較為方便、快捷的生成多個所需要的頻率,同時能夠?qū)崿F(xiàn)信號的同步,因此,分頻器的應(yīng)用非常廣泛。本設(shè)計應(yīng)用軟件為開發(fā)平臺,運用VHDL語言編程實現(xiàn)整數(shù)的奇偶分頻的設(shè)計,在本設(shè)計中實現(xiàn)了0、2、4、6、8、10、12、14

2、偶數(shù)的整數(shù)分頻器設(shè)計和1、3、5、7、9、11、13、15奇數(shù)的整數(shù)分頻器設(shè)計。通過仿真結(jié)果,驗證了設(shè)計的正確性。 關(guān)鍵詞:FPGA;分頻器;VHDL語言;Quartus Design and implementation of FPGA-based parity dividerAbstractDivider as a basic digital circuits, widely used in a variety of complex logic circuit design, the FPGA chip, although able to own a part of our phase-l

3、ocked loop to produce the desired frequency, but using VHDL language divide from the same clock frequency is more convenient and efficient to generate multiple needs, while able to achieve synchronization signal, and therefore, the divider is widely used. The design of application software developme

4、nt platform, the use of VHDL language programming odd integer divider design, the design is implemented in an even integer divider 0,2,4,6,8,10,12,14 design and 1,3,5,7,9,11,13,15 odd integer divider design. The simulation results verify the correctness of the design.Key words: FPGA; divider; VHDL l

5、anguage;Quartus 目 錄摘 要IAbstractII第一章 緒論11.1 課題來源11.2 選題的意義和目的21.3 課題研究現(xiàn)狀31.4 本文組織結(jié)構(gòu)4第二章 EDA技術(shù)62.1 FPGA技術(shù)62.2 Quartus 軟件簡介72.3 VHDL語言82.3.1 VHDL簡介82.3.2 VHDL特點92.3.3 VHDL組成10第三章 奇偶分頻器設(shè)計與仿真123.1 偶數(shù)分頻12 原理分析12 設(shè)計與仿真123.2 奇數(shù)分頻17 原理分析17 設(shè)計與仿真18第四章 系統(tǒng)設(shè)計234.1 設(shè)計的任務(wù)234.2 系統(tǒng)設(shè)計234.3 其余模塊設(shè)計274.3.1 encoder_12模塊

6、274.3.2 mux21模塊29 數(shù)碼管顯示驅(qū)動模塊30第五章 下載與測試355.1 BTYG-EDA實驗概述355.2 BTYG-EDA實驗開發(fā)系統(tǒng)特點355.3 引腳分配355.4 驗證36第六章 結(jié)論與展望376.1 結(jié)論376.2 展望37參考文獻39致謝40第一章 緒論1.1 課題來源分頻器作為數(shù)字系統(tǒng)設(shè)計中一類重要的電子電路,在數(shù)字電路的迅速發(fā)展歷程中,通常要運用分頻器來實現(xiàn)設(shè)計中希望獲取的時鐘頻率。在遇到實際問題時,人們一般運用到的是整數(shù)分頻,所以在實際情況中時而體現(xiàn)出等占空比,時而體現(xiàn)出非等占空比。相同的系統(tǒng)設(shè)計有時也會運用不同形式的頻率,此時,一般由定時器或定時器的級聯(lián)模式

7、組成不同形式的任意占空比偶數(shù)分頻和不等占空比的奇數(shù)分頻,這樣的設(shè)計較為容易,而對比等占空比的奇數(shù)分頻和小數(shù)分頻設(shè)計就沒有那么容易了。本設(shè)計是運用VHDL硬件敘述語言,通過Quartus9.0軟件編程,應(yīng)用Altera公司的FPGA內(nèi)核,實現(xiàn)了一種不僅可以滿足以上需求,并且能夠共用的可控分頻器。只要將分頻器的輸入接入對應(yīng)的撥碼開關(guān),就能夠獲取希望得到的頻率。電子技術(shù)飛速更新的歷程中,F(xiàn)PGA/CPLD以它的可靠性強、運行快、串并行運行模式等多重優(yōu)點在電子設(shè)計中具有更廣泛的意義,并且標志著將來EDA發(fā)展的趨向。FPGA/CPLD系統(tǒng)的設(shè)計運用了高級語言,例如當前常用的也比較成熟的VHDL語言和AH

8、DL語言等,從而聯(lián)接了軟件與硬件之間的相互的運用和融洽,減少了設(shè)計產(chǎn)業(yè)的開發(fā)周期。因此應(yīng)用先進的FPGA/CPLD替換舊式的通用集成電路、接口電路將使得電子技術(shù)走向更成熟的道路,為電子技術(shù)的迅速發(fā)展奠定了基礎(chǔ)1。EDA技術(shù)的發(fā)展推進了當代電子設(shè)計和數(shù)字技術(shù)的迅速發(fā)展,熟練地運用EDA工具,人類從此能夠應(yīng)用最基本的原理、實用算法、協(xié)議等進行對電子和數(shù)字系統(tǒng)的設(shè)計和發(fā)明,所有的工作幾乎都能夠通過計算機進行計算和分析,而且能夠把電子產(chǎn)品從電路設(shè)計、性能分析到設(shè)計出IC版圖或PCB版圖的全部流程在計算機上智能分析和控制。再加上當今電子產(chǎn)品日新月異的發(fā)展和集成技術(shù)功能強大的變化后,舊式階段技術(shù)體現(xiàn)的中小

9、規(guī)模集成電路結(jié)構(gòu)已經(jīng)不能滿足人類的需求量,因此電路設(shè)計也逐漸地從中小規(guī)模芯片升級為大規(guī)模及超大規(guī)模芯片,且擁有高集成度、運行快、功耗小的可編程IC單一設(shè)備蓬勃發(fā)展起來了。分頻器應(yīng)用在FPGA 系統(tǒng)設(shè)計中具有相當高的工作效率,使用硬件描述語言完成設(shè)計消耗較少的邏輯地址就能夠完成對時鐘的操作,其成本很低,并且可編程等優(yōu)點2。1.2 選題的意義和目的自信息時代快速發(fā)展開始,電子產(chǎn)品已經(jīng)日益在現(xiàn)實生活中占據(jù)越來越重要的作用對其的研發(fā)也隨著電子元器件的快速發(fā)展而變化,相比最早的電子管器件和晶體管,到現(xiàn)在的集成電路占據(jù)市場,工程師在產(chǎn)品開發(fā)時,運用的工具和方法都日益先進快捷,但不管什么時候電子設(shè)計的思路一

10、直是:利用印刷電路板上的分立、現(xiàn)成元件、連接器或者IC創(chuàng)建物理平臺實現(xiàn)所需要的功能。例如:在60年代,假設(shè)要制作一臺收音機,工程師就必須在PCB板上利用晶體管、電感、電阻、電容、電線、濾波器、二極管等電路搭建出一個物理平臺,然后對RF信號的調(diào)諧、濾波、放大等,最后收音機才具有全部功能。在實現(xiàn)基礎(chǔ)電路后,大部分分立器件將被統(tǒng)一集成到一顆芯片上,但是總的來說設(shè)計的思路沒有任何變化,關(guān)鍵還是在于在一個PCB板上利用無源器件和IC搭建出一個物理平臺,然后該電子產(chǎn)品即可成功接收信號并且實現(xiàn)對信號的處理和輸出。但是,隨著可編程器件的出現(xiàn),例如FPGA,不同于之前傳統(tǒng)設(shè)計思路,設(shè)計思路從此發(fā)生了巨大的變化,

11、工程師將大部分功能全部集中到可編程領(lǐng)域,設(shè)計流程也發(fā)生了巨大變化,更多樣式的設(shè)計流程被統(tǒng)一到一起。至于現(xiàn)在,更為快捷有效的電子設(shè)計是融合辦卡設(shè)計、軟件開發(fā)和可編程邏輯設(shè)計到一起,而將來,F(xiàn)PGA將融合處理、儲存一體,板卡設(shè)計全部集中到可編程邏輯設(shè)計中,電子產(chǎn)品設(shè)計也將變成兩種設(shè)計,即可編程邏輯設(shè)計和嵌入式軟件設(shè)計。那時,電子設(shè)計會更專注于軟件設(shè)計,即一種由開發(fā)語言和工具實現(xiàn)的設(shè)計。而FPGA也會演變?yōu)檫@種軟件設(shè)計的載體,以FPGA形式存在的低成本、大規(guī)??删幊唐骷⒖梢噪S時隨地的得到,這將使得工程師可以將所有系統(tǒng)核心功能都集中到軟件設(shè)計中,并且充分利用這種設(shè)計得天獨厚的優(yōu)勢3。分頻器是FPGA

12、設(shè)計中最常見也是最基本的設(shè)計之一,雖然在當前大部分設(shè)計中,使用芯片廠家集成的鎖相環(huán)資源居多,例如altera的PLL,Xilinx的DLL.來進行時鐘的倍頻,分頻以及相移。但是對于一些對時鐘要求不高的基本設(shè)計,利用語言對時鐘進行分頻和相移仍然十分流行。首先運用這種方法可以大幅度節(jié)省芯片內(nèi)部的鎖相環(huán)資源;再者,在達到對時鐘操作的目的的同時將減少邏輯單元的消耗。另一方面,利用語言設(shè)計進行時鐘分頻,可以體現(xiàn)出設(shè)計者對設(shè)計語言理解程度的深淺。數(shù)字系統(tǒng)設(shè)計中的基本電路就是分頻器,根據(jù)設(shè)計需要的不同,設(shè)計者會碰到偶數(shù)分頻、奇數(shù)分頻、半整數(shù)分頻等等,有時需要等占空比,也有要求非等占空比。在同一個設(shè)計中有時要

13、求多種形式的分頻。一般由計數(shù)器或計數(shù)器的級聯(lián)構(gòu)成各種各樣的偶數(shù)分頻及非等占空比得到奇數(shù)分頻,實現(xiàn)較為簡單。但對半整數(shù)分頻、等占空比的奇數(shù)分頻及小數(shù)分頻實現(xiàn)較為困難。本文通過VHDL硬件描述語言,通過開發(fā)平臺,使用FPGA,設(shè)計了一種能夠完美滿足上述所有要求的分頻器。只需要在分頻器的輸入端輸入相應(yīng)的分頻系數(shù),便可以獲得所需的頻率。隨著各種各樣先進電子產(chǎn)品的快速推出,無線通訊網(wǎng)絡(luò)的廣泛應(yīng)用,導致對晶源的要求變得越來越高。特別是在現(xiàn)代電子對抗戰(zhàn)中,我們要求各種器件盡量工作我們要求的頻率下。電子產(chǎn)品的工作頻率在其研發(fā)階段就必須經(jīng)過反復的調(diào)試才能確定下來,它既要必須保證電子產(chǎn)品具有較高的工作效率又需要保

14、證電子產(chǎn)品的穩(wěn)定性必須過關(guān)。有一些產(chǎn)品要求其工作區(qū)域比較廣,并且我們還希望它能夠在不同的工作環(huán)境下采用不同的工作頻率,在及其惡劣的環(huán)境下也必須保證其工作的穩(wěn)定性,而在環(huán)境比較好的情況下我們希望它的工作效率得到更好的提高。上述的條件就要求我們的工作頻率可以隨著我們環(huán)境的變化進行不斷調(diào)整。對于一個晶振源我們只能得到唯一的一個工作頻率,但如果集成大量晶振來實現(xiàn)多頻率輸出,一方面要投入很大的成本,另一方面不同晶振間的相位延遲也無法預測,并且在一個區(qū)間中集成大量晶振也容易引起串擾。假如我們能夠通過分頻,對較高的晶振源進行分頻就可以比較容易的獲得豐富的頻率,這有利于我們對產(chǎn)品的測試和應(yīng)用。在傳統(tǒng)的FPGA

15、設(shè)計方法中,為了能夠?qū)崿F(xiàn)等占空比的奇數(shù)分頻,通常采用通過對輸入頻率進行二倍頻的電路,以及對倍頻后的頻率F進行偶數(shù)分頻,這樣就能夠降低設(shè)計電路的最高工作頻率,提高對硬件的要求。本設(shè)計在不改變設(shè)計要求的前提下,通過對常規(guī)的設(shè)計方法進行適當?shù)母倪M,實現(xiàn)了在不需要對輸入頻率進行二倍頻的條件下實現(xiàn)等占空比分頻,并且更好的利用了頻率資源,同時降低了設(shè)計的復雜性4。1.3 課題研究現(xiàn)狀在數(shù)字邏輯電路設(shè)計中,分頻器是一種基本電路,通常用來對某個給定頻率的時鐘進行分頻,得到所需的時鐘。時序電路設(shè)計中需要各種各樣的分頻器來獲得不同頻率的時鐘,其中以整數(shù)分頻器最為常見。整數(shù)分頻可以簡單的使用模N計數(shù)器實現(xiàn),即隨驅(qū)動

16、時鐘跳變N次后就輸出一個進位脈沖,然后立即被清零或置位,再開始新一輪的循環(huán)的計數(shù)。模N計數(shù)器的進位脈沖的寬度一般與驅(qū)動時鐘相同,這對于邊沿驅(qū)動的時序邏輯并不會帶來什么問題。但是在某些需要使用電平邏輯的設(shè)計中,我們更希望分頻時鐘擁有50%,或者與驅(qū)動時鐘有相同的占空比。這時就需要通過另外的邏輯方法來進行分頻,或者使用PLL。在基于CPLD(復雜可編程邏輯器件)/FPGA(現(xiàn)場可編程門陣列)的數(shù)字系統(tǒng)設(shè)計中,很容易實現(xiàn)由計數(shù)器或其級聯(lián)構(gòu)成各種形式的偶數(shù)分頻及非等占空比的奇數(shù)分頻,但對等占空比的奇數(shù)分頻及半整數(shù)分頻的實現(xiàn)較為容易5。對于分頻器的研究,Adler最早對注入鎖定分頻器進行研究,他在注入信

17、號強度很弱的情況下對此進行了精確的推導,并且在小注入情況下得到了注入鎖定范圍比較精確的表達式,由此可以推導出在弱注入鎖定現(xiàn)象發(fā)生的范圍。但是這個模型是不完善的,它的前提是注入信號的強度很弱,而在實際應(yīng)用中,這個前提往往是不成立的。Stanford大學的Thomas H.Lee等人對其做出了改進,提高了模型的精度,重新推導了Adler的經(jīng)典公式。由于注入鎖定分頻器各種優(yōu)點,使之非常適合在毫米波通信領(lǐng)域擔任分頻角色,因此,近年來受到學術(shù)界的廣泛重視。許多科研單位,如加州大學洛杉磯分校,斯坦福大學,明呢蘇達雙城分校,佛羅里達大學,香港科技大學,韓國科技大學,田納西大學,臺灣大學,東京大學等知名高校都

18、紛紛加入關(guān)于此研究的行列。相比之下,國內(nèi)對此的研究還比較少,主要集中在清華大學和浙江大學等高校。因此,為了縮小與國外研究的差距,在以后毫米通信的核心技術(shù)競爭上占據(jù)主動位置,積極展開這方面的研究顯得很有必要6。在應(yīng)用研究方面,科研人員針對目前注入鎖定分頻器在應(yīng)用中出現(xiàn)的主要問題進行了廣泛的研究,主要的方向有:擴大鎖定范圍,提高正交多相輸出的精度,降低源電壓和功耗,研究多模分頻以及提高工作速度。多模分頻的研究:在應(yīng)用中,常常需要分頻器有靈活的分頻模式,比如小數(shù)頻率合成器中就需要用到雙模或多模的分頻器。這種技術(shù)在數(shù)字觸發(fā)器實現(xiàn)的分頻器中已經(jīng)比較成熟,但是在注入鎖定分頻器領(lǐng)域仍然需要深入研究7。1.4

19、 本文組織結(jié)構(gòu)本文主要講解了基于FPGA的奇數(shù)偶數(shù)分頻器的設(shè)計,并把這二種功能模塊集成到一起,通過Quartus 軟件驗證設(shè)計的正確性并最終下載到實驗箱上進行最終驗證。本文分為六章講述,分別如下:第一章:主要介紹了課題的來源,選這個課題有何意義,目的是什么?分析查閱國內(nèi)外研究這個設(shè)計已到什么地步。第二章:主要是對整個設(shè)計過程應(yīng)該會用到的一些工具和軟件的介紹,比如,F(xiàn)PGA的介紹,Quartus 軟件的基本功能介紹,VHDL語言的特點,組成部分等。第三章:主要介紹偶數(shù)分頻模塊和奇數(shù)分頻模塊的原理分析,具體實現(xiàn)方法,流程圖分析,程序?qū)崿F(xiàn)以及波形仿真。第四章:主要介紹了設(shè)計的整個系統(tǒng),頂層文件。各個

20、模塊所實現(xiàn)的功能是什么,包括程序設(shè)計以及波形仿真。第五章:主要介紹了整個試驗箱的功能,程序的驗證,并觀察出最終結(jié)果。驗證設(shè)計的正確性。第六章:主要對論文進行了總結(jié)與歸納,與已有結(jié)果進行了一個簡明比較,概括了仍然存在的一些問題,包括進一步開展研究的見解和建議等。第二章 EDA技術(shù)現(xiàn)場可編程門陣列FPGA(Field-Programmable Gate- Array)是美國Xilinx公司在二十世紀八十年代年最先開發(fā)出的一種通用型用戶可編程器件。FPGA既具有門陣列器件的高度集成性能和通用性,又可以通過可編程邏輯器件使得用戶編程的時候具有靈活性。2.1 FPGA技術(shù)FPGA利用了邏輯單元陣列LCA

21、(Logic Cell Array)中的一個概定義,內(nèi)部是由可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內(nèi)部連線(Interconnect)三個部分構(gòu)成。當前流行的FPGA仍然是建立在查找表技術(shù)上的,已經(jīng)有很大一部分超越了之前版本的基礎(chǔ)性能特性,而且結(jié)合了常用功能(如RAM、時鐘管理和DSP)的硬核(ASIC型)模塊,F(xiàn)PGA芯片基本上是由六個部分完成,分別是:可編程輸入和輸出單元、基本的可編程邏輯單元、完整的時鐘管理單元、嵌入塊式RAM、豐富的布線資源、內(nèi)嵌的底層功能單元和內(nèi)嵌專用硬件模塊。FPGA的基

22、本特性有:(1)用戶在采用FPGA設(shè)計ASIC電路(專用集成電路)的時候,不需要投片去制作,就能夠獲取到適用的芯片。(2)FPGA能夠制作出其它全定制或半定制ASIC電路的中試樣片。(3)FPGA內(nèi)部有多樣的觸發(fā)器與IO引腳。(4)FPGA是ASIC電路設(shè)計中周期最短、開發(fā)資費最低、危險性能最小的器件之一。(5)FPGA利用高速的CHMOS工藝,做功耗能低,能夠被CMOS、TTL電平支持。(6)FPGA是通過放置在片內(nèi)RAM中的程序來設(shè)定它工作狀態(tài)的,所以,工作的時候需要對片內(nèi)的RAM程序進行編程。用戶可以通過配置模式的不同,采納不同的編程方式。配電時,F(xiàn)PGA芯片將EPROM中數(shù)據(jù)讀取到片內(nèi)

23、編程RAM中,配置完成之后,F(xiàn)PGA隨即進入工作狀態(tài)。去電后,F(xiàn)PGA將恢復成白片,內(nèi)部邏輯的關(guān)系也同時取消,因此,F(xiàn)PGA能夠反復被運用。FPGA的編程不需要特定的FPGA編程器,只需用通用的EPROM、PROM編程器就可以。當需要更改FPGA的功能時,只需要更換一片EPROM就行。如此,同一片F(xiàn)PGA,不一樣的編程數(shù)據(jù),就可以產(chǎn)生不盡相同的電路功能。因此,F(xiàn)PGA的運用是非常靈活的。FPFA的主要生產(chǎn)廠商主要有:Altera ,Xilinx ,Actel ,Lattice 。其中Altera作為世界上最先開發(fā)可編程邏輯器件的廠家,是目前世界范圍內(nèi)市場占有率最大的廠家,它和Xilinx主要生

24、產(chǎn)常用功能的FPGA,其主要生產(chǎn)的產(chǎn)品是采用了RAM工藝。Actel主要制作生產(chǎn)非易失性的FPGA,產(chǎn)品主要采用了反熔絲工藝和FLASH工藝8。2.2 Quartus 軟件簡介Quartus 是Altera公司開發(fā)的一種PLD綜合性的研發(fā)軟件,它能夠通過原理圖、VHDL、VerilogHDL以及AHDL等多種輸入形式來設(shè)計,它里邊包括了綜合器和仿真器,可以完成一個較為完整PLD設(shè)計流程,從輸入到硬件配置的設(shè)計流程。Quartus 能夠在XP、Linux以及Unix等系統(tǒng)上運用,不但可以利用Tcl腳本去完成設(shè)計的流程,而且還提供了較為完善的用戶圖形界面設(shè)計形式。它的特點有能夠使運行的速度加快,界

25、面的完美統(tǒng)一,功能能夠集中起來,容易學習而且能夠快速上手操作等。Quartus 能夠兼容Altera的IP核,包括了LPM/MegaFunction宏功能模塊數(shù)據(jù)庫,這樣就可以使用戶充分的運用已有的模塊,從而解決了設(shè)計的復雜性,最后使得設(shè)計的流程速度加快。此外,Quartus 通過與DSP Builder工具還有Matlab/Simulink相互結(jié)合,使得設(shè)計人員能夠很容易地設(shè)計出各種DSP應(yīng)用操作系統(tǒng)。它可以通過Altera的片上可編程系統(tǒng)(SOPC)來研發(fā),將系統(tǒng)級的設(shè)計、嵌入式軟件開發(fā)和可編程邏輯設(shè)計三種過程結(jié)合為一體,成為一種綜合性的開發(fā)平臺。Quartus 能夠運用的器件類型是豐富多

26、樣的,其圖形界面也很容易去操作。Altera在Quartus 中囊括了很多例如SignalTap II、Chip Editor和RTL Viewer等的輔助設(shè)計工具,結(jié)合了SOPC和HardCopy的設(shè)計流程,而且傳承了Maxplus II 優(yōu)美的圖形界面以及簡單的操作方法。Quartus 在不斷利用的同時,受到設(shè)計人員的高度評價和歡迎,因為它作為可編程邏輯其中的一種設(shè)計環(huán)境,有強大的設(shè)計功能和簡易實用的接口,在實際設(shè)計當中能夠展現(xiàn)出它強大的特性,使得設(shè)計過程簡單方便,流程簡易清晰9。2.3 VHDL語言VHDL全名Very-High-Speed Integrated Circuit Hard

27、ware Description Language,在1982年被研究出。該語言被研究出直到1987年底,VHDL被IEEE電子電氣工程師協(xié)會和美國國防部所確認,作為標準的硬件使用語言 。自IEEE-1076稱為87版之后,各EDA公司先后進行推出各自的VHDL設(shè)計使用環(huán)境,或著宣布各自的設(shè)計使用器具可以與VHDL接口對接完成。在20世紀90年代中期,IEEE對VHDL完成了修改任務(wù),從兩方面完成修改,一是提高了抽象層次的高度;二是擴展了VHDL整體描述的能力。宣布了新的VHDL型號,就是IEEE標準的1076-1993版本,通俗稱為93版。VHDL是工業(yè)標準的研究硬件的語言,同時Verilo

28、g也作為IEEE的工業(yè)規(guī)定的硬件描述語言,得到大多數(shù)EDA公司的支持,在電子項目建設(shè)領(lǐng)域,已作為事實上的通用硬件敘述的語言10。2.3.1 VHDL簡介VHDL語言是一種高等級語言,用于電子設(shè)計和建設(shè)項目中。80年代的后期它被成功應(yīng)用。最開始是通過美國國防部研究出來的,為美軍所使用。主要是為增加設(shè)計的可靠能力和減小研究周期的一種應(yīng)用范圍很廣的設(shè)計語言。VHDL被譯成中文的意思是,超高速綜合電路硬件敘述語言,主要在數(shù)字電路的設(shè)計中完成任務(wù)。他在中國的應(yīng)用領(lǐng)域是,F(xiàn)PGA/CPLD/EPLD的建設(shè)。當然在大多數(shù)實力資源很雄厚的單位,它也被用來完成ASIC的建設(shè)。VHDL主要用于敘述數(shù)字系統(tǒng)的構(gòu)造、

29、行動、功能和連接端口。除了具有很多具有硬件特點的語句外,VHDL的語言方式、訴述風格和語言是十分相似于大多數(shù)的計算機高等語言。VHDL的程序框架特點是使工程項目設(shè)計,或叫做設(shè)計實體(是一個元器件,電路單元或系統(tǒng))。外部(或稱看見的部分,及接口)和內(nèi)部(或稱不可以看到部分),內(nèi)部功能和實際計算功能就是他應(yīng)用的部分。設(shè)計的物理實體定義與內(nèi)部相反窗口后,只要內(nèi)部環(huán)境完成建設(shè)開發(fā),其他的建設(shè)內(nèi)容就完成調(diào)用,使得實體完成設(shè)計。這種將設(shè)計實體內(nèi)外部分的定義就是VHDL系統(tǒng)設(shè)計的重要支出,他的優(yōu)點如下方所敘:(1)VHDL語言是種豐富層次的硬件敘述語言,覆蓋面擴大,敘述能力增加了。就是設(shè)計的原始敘述可以是很

30、精簡的表示,通過層次之間的提高,結(jié)果可生成能夠應(yīng)用原始生產(chǎn)的電路,完成版圖和系統(tǒng)的刷新和表示,完整的過程是可以通過VHDL環(huán)境下檢測的。(2)VHDL的設(shè)計描述就有擴展和談性能力,就可以被計算機認識識別,是他被計算機容易識別,用VHDL生成的原件就是程序文件,我們應(yīng)用的文檔文件,就是工程設(shè)計人員的交互信息的文件,又能作為合同簽約人員之間使文件。(3)VHDL本身使用生命期較長。因為VHDL的硬件敘述和使用的工藝技術(shù)沒有關(guān)系與聯(lián)系,不會因為技術(shù)的不同而被滯后使用。當技術(shù)任務(wù)和特點變化時,需要改成相應(yīng)程序文件的屬性和參數(shù)就行。(4)支持大規(guī)模設(shè)計的分離和原來擁有設(shè)計的多次重復應(yīng)用。單個大規(guī)模設(shè)計是

31、項目組共同完成,單個人對于整體項目是不能完成的。支持大規(guī)模設(shè)計的分離和原來擁有設(shè)計的多次重復應(yīng)用提供有力支持。(5)VHDL已經(jīng)成功作為電子電氣工程師協(xié)會承認的一個工業(yè)的基準,實際上已作為通用硬件敘述的語言11。2.3.2 VHDL特點與其他硬件描述語言相比,VHDL具有以下特點:(1)功能強大、設(shè)計靈活VHDL具有功能強大的語言結(jié)構(gòu),可以用簡潔明確的源代碼來描述復雜的邏輯控制。它具有多層次的設(shè)計描述功能,層層細化,最后可直接生成電路級描述。VHDL支持同步電路、異步電路和隨機電路的設(shè)計,這是其他硬件描述語言所不能比擬的。VHDL還支持各種設(shè)計方法,既支持自底向上的設(shè)計,又支持自頂向下的設(shè)計;

32、既支持模塊化設(shè)計,又支持層次化設(shè)計。(2)支持廣泛、易于修改由于VHDL已經(jīng)成為IEEE標準所規(guī)范的硬件描述語言,大多數(shù)EDA工幾乎都支持VHDL,這為VHDL的進一步推廣和廣泛應(yīng)用奠定了基礎(chǔ)。在硬件電路設(shè)計過程中,主要的設(shè)計文件是用VHDL編寫的源代碼,因為VHDL易讀和結(jié)構(gòu)化,所以易于修改設(shè)計。(3)強大的系統(tǒng)硬件描述能力VHDL具有多層次的設(shè)計描述功能,既可以描述系統(tǒng)級電路,又可以描述門級電路。而描述既可以采用行為描述、寄存器傳輸描述或結(jié)構(gòu)描述,也可以采用三者混合的混合級描述。另外,VHDL支持慣性延遲和傳輸延遲,還可以準確地建立硬件電路模型。VHDL支持預定義的和自定義的數(shù)據(jù)類型,給硬

33、件描述帶來較大的自由度,使設(shè)計人員能夠方便地創(chuàng)建高層次的系統(tǒng)模型。(4)獨立于器件的設(shè)計、與工藝無關(guān)設(shè)計人員用VHDL進行設(shè)計時,不需要首先考慮選擇完成設(shè)計的器件,就可以集中精力進行設(shè)計的優(yōu)化。當設(shè)計描述完成后,可以用多種不同的器件結(jié)構(gòu)來實現(xiàn)其功能。(5)很強的移植能力VHDL是一種標準化的硬件描述語言,同一個設(shè)計描述可以被不同的工具所支持,使得設(shè)計描述的移植成為可能。(6)易于共享和復用VHDL采用基于庫(Library)的設(shè)計方法,可以建立各種可再次利用的模塊。這些模塊可以預先設(shè)計或使用以前設(shè)計中的存檔模塊,將這些模塊存放到庫中,就可以在以后的設(shè)計中進行復用,可以使設(shè)計成果在設(shè)計人員之間進

34、行交流和共享,減少硬件電路設(shè)計12。2.3.3 VHDL組成VHDL作為EDA技術(shù)的設(shè)計入門語言,包括實體、結(jié)構(gòu)體、程序包、庫和配置幾個部分,實體用來描述設(shè)計單元的外部接口信號;結(jié)構(gòu)體用于秒速設(shè)計單元內(nèi)部結(jié)構(gòu)和行為;程序包用來存放各個設(shè)計模塊共享的數(shù)據(jù)類型、常數(shù)、子程序;庫是專門用于存放程序包的地方;配置語句是在一個實體對應(yīng)有多個結(jié)構(gòu)體時,按照設(shè)計的要求指定實體所要配置的結(jié)構(gòu)體,已支持正確編譯。在各個組成部分中,實體、結(jié)構(gòu)體是必不可少的,其余的部分可以根據(jù)需要選用。下面主要介紹實體和結(jié)構(gòu)體。(1)entity 實體:用來描述設(shè)計的對外端口信息,如輸入和輸出端口的描述,也可以描述參數(shù)化的數(shù)值。e

35、ntity實體描述格式如下:entity 實體名 is generic(類屬表)port(端口表);begin實體語句部分;end 實體名;端口方向有四種模式:輸入in、輸出out、雙向inout和繁沖buffer。缺省的話是輸入。常用端口類型:布爾boolean、位bit、位矢量bit_vector、整數(shù)interger、標準邏輯std_logic和標準邏輯矢量std_logic_vector等。如果使用std_logic和std_logic_vector 需要在實體前使用下述語句進行說明:library IEEE;(2) 結(jié)構(gòu)體:是電路和系統(tǒng)邏輯功能描述部分。所有的結(jié)構(gòu)體都附屬于該實體,是

36、實體的說明。結(jié)構(gòu)體描述格式如下:Architecture 結(jié)構(gòu)體名 of 實體名 is 說明部分;begin 并行語句;End 結(jié)構(gòu)體名;結(jié)構(gòu)體由兩部分組成:begin前的說明語句部分和begin后的并行語句部分。結(jié)構(gòu)體名是該結(jié)構(gòu)體的唯一名稱,of后面跟隨的實體名表明該結(jié)構(gòu)體對應(yīng)的是哪個實體,is表明結(jié)構(gòu)體的命名結(jié)束。說明語句用于對結(jié)構(gòu)體內(nèi)部所用到的信號、常數(shù)和函數(shù)等的定義,其定義只對結(jié)構(gòu)體內(nèi)部可見,即僅結(jié)構(gòu)體內(nèi)部可以使用。并行語句描述電路和系統(tǒng)并行發(fā)生的行為。(3)庫: 庫是經(jīng)編譯后的數(shù)據(jù)的集合,用來存放程序包定義、實體定義、結(jié)構(gòu)體定義和配置定義,使設(shè)計者可以共享已經(jīng)編譯過的設(shè)計結(jié)果。在VH

37、DL語言中,庫的說明總是放自在設(shè)計單元的最前面:LIBRARY 庫名;這樣一來,在設(shè)計單元內(nèi)的語句就可以使用庫中的數(shù)據(jù)。VHDL語言允許存在多個不同的庫,但各個庫之間是彼此獨立的,不能互相嵌套13。第三章 奇偶分頻器設(shè)計與仿真眾所周知,分頻器是FPGA設(shè)計中使用頻率非常高的基本設(shè)計之一,盡管在目前大部分設(shè)計中,廣泛使用芯片廠家集成的鎖相環(huán)資源,如altera的PLL,Xilinx的DLL.來進行時鐘的分頻,倍頻以及相移。但是對于時鐘要求并不是很高的基本設(shè)計,通過語言進行時鐘的分頻相移仍然非常流行,首先這種方法可以節(jié)省芯片內(nèi)部的鎖相環(huán)資源,再者,消耗不多的邏輯單元就可以達到對時鐘進行操作的目的。

38、奇數(shù)偶數(shù)分頻在日常設(shè)計中經(jīng)常用到,在此重點講解奇數(shù)偶數(shù)的設(shè)計原理分析,各自流程圖和程序?qū)崿F(xiàn),最后進行波形的仿真與分析。3.1 偶數(shù)分頻3.1.1 原理分析所謂偶數(shù)分頻即是分頻系數(shù)為偶數(shù)的分頻,偶數(shù)分頻比較容易實現(xiàn),一般來說有兩種方案:第一種方案是用計數(shù)器temp對clkin上升沿進行計數(shù),當計數(shù)到temp/2-1時,將輸出的電平進行一次翻轉(zhuǎn),并同時給temp一個復位信號,使計數(shù)器從新開始計數(shù),這樣如此循環(huán)下去,可以實現(xiàn)占空比為50%的偶數(shù)temp分頻。另一種方案是首先根據(jù)撥碼開關(guān)預置的分頻系數(shù)(count),然后用計數(shù)器(temp)對clkin的上升沿進行計數(shù),當temp<count/2

39、時,ckout信號輸出1,當count/2=<temp<count,ckout輸出0,從而實現(xiàn)偶數(shù)分頻,只有當偶數(shù)分頻模塊的sel端被選中,且rst輸入信號為高電平時,偶數(shù)分頻才開始工作。本設(shè)計主要采用第二種種方案,能實現(xiàn)的分頻系數(shù)根據(jù)撥碼開關(guān)d,c,b,a的值決定,如表3.1所示14。3.1.2 設(shè)計與仿真程序的流程圖如圖3.1和圖3.2所示。 圖3.1的程序執(zhí)行流程為:首先判斷復位信號rst是否為高電平1(高電平用1表示),如果為1,判斷選擇信號sel是否被選中為1,如果不為1,結(jié)束程序;如果選擇信號sel為1,那么判斷輸入時鐘信號clkin的上升沿是否到來,如果到來,判斷計數(shù)

40、器temp是否等于count-1,如果等于,直接給計數(shù)器temp賦值0,如果不等于執(zhí)行temp<=temp+1。最后結(jié)束進程。表3.1 偶數(shù)分頻系數(shù)dcbcount<=8*d+4*c+2*b00000012010401161008101101101211114圖3.1 偶數(shù)分頻流程圖圖3.2 偶數(shù)分頻程序流程圖圖3.2的程序執(zhí)流程為:首先判斷復位信號rst是否為高電平1,如果不是,輸出信號clkout直接輸出高電平1,如果rst為高電平1,在判斷選擇信號sel是否為1,如果不為1直接結(jié)束程序,如果sel=1,那么判斷計數(shù)器temp是否小于count/2,如果小于,那么clkout輸

41、出高電平1,否者clkout輸出低電平0,最后結(jié)束進程。圖3.1和圖3.2,它們之間為并行執(zhí)行。library ieee;use ieee.std_logic_1164.all;entity oufen isport( clkin,rst:in std_logic; b,c,d:in integer range 1 downto 0; sel:in std_logic; clkout:out std_logic );end oufen;architecture fen of oufen issignal temp:integer range 16 downto 0;signal count:i

42、nteger range 16 downto 0; begincount<=8*d+4*c+2*b;process(clkin)begin if rst='1' then if(sel='1')then if(clkin'event and clkin='1') then if temp=count-1 then temp<=0; else temp<=temp+1; end if; end if; else null; end if; else null; end if;end process; process(tem

43、p)begin if rst='1'then if(sel='1')then if temp<count/2 then clkout<='1' else clkout<='0' end if; else null; end if; else clkout<='1' end if;end process; end fen;偶數(shù)4分頻仿真結(jié)果如圖3.3所示。圖3.3 4分頻波形仿真結(jié)果圖3.3為4分頻波形仿真結(jié)果圖,圖中rst為復位信號輸入,sel為選擇信號輸入,d,c,b為3位撥碼開關(guān)輸入,用

44、于確定分頻系數(shù),具體指見表3.1所示。圖中看出,4個clkin的脈沖時間剛好為clkout一個脈沖的時間,所以程序為4分頻。同時還看出當rst和sel之間其中一個為0時,輸出信號clkout保持上一狀態(tài)繼續(xù)輸出,此時,計數(shù)器便停止計數(shù),當恢復為1時,計數(shù)器接著上次停止的時候繼續(xù)計數(shù),執(zhí)行分頻操作。偶數(shù)14分頻仿真結(jié)果如圖3.4所示。圖3.4 14分頻波形仿真結(jié)果圖3.4中,d,c,b都等賦值1,從表3.1看出執(zhí)行偶數(shù)14分頻,從波形中能觀察出14個clkin的脈沖時間剛好等于一個clkout的脈沖時間,即實現(xiàn)偶數(shù)14分頻。偶數(shù)0分頻仿真結(jié)果如圖3.5所示。圖3.5 0分頻波形仿真圖當d,c,b

45、都為0時,系統(tǒng)執(zhí)行0分頻,根據(jù)程序得,此時的輸出信號應(yīng)該一直為0,從波形圖中看出clkout一直為0。3.2 奇數(shù)分頻3.2.1 原理分析表3.2 奇數(shù)分頻系數(shù)表d2c2b2a2count1<=8*d2+4*c2+2*b2+1*a20001100113010150111710019101111110113111115奇數(shù)分頻為分頻系數(shù)為奇數(shù)的分頻。奇數(shù)分頻模塊根據(jù)撥碼開關(guān)d,c,b,a的值選擇分頻系數(shù)(count1)。本設(shè)計的關(guān)鍵是對clk信號的上升沿信號進行計數(shù)(p)和對clk信號的下降沿信號進行計數(shù)(q)。當p <(count1-1)/2 或者 q<(count1-1)/

46、2時 clout輸出1,否則輸出0,從而實現(xiàn)奇數(shù)分頻。只有當奇數(shù)分頻模塊的復位信號rst=1并且選擇信號sel=1時奇數(shù)分頻模塊才工作15。d,c,b,a的真值表如表3.2所示。3.2.2 設(shè)計與仿真程序的流程圖如圖3.6和圖3.7所示。圖3.6的執(zhí)行流程為:首先判斷復位信號rst是否為1,當rst=1時判斷sel是否為1,rst=0時,執(zhí)行p<=count1-1,當sel等于1時,判斷輸入時鐘信號clk的上升沿是否到來,如果到來,判斷p是否等于count1-1,即計數(shù)器計數(shù)是否已滿,如果計數(shù)已滿,給p賦值0,否者給p自身加1。圖3.7的執(zhí)行流程為:首先判斷復位信號rst是否1,當rst

47、=1時判斷sel是否為1,rst=0時,執(zhí)行q<=count1-1,當sel等于1時,在判斷輸入信號clk的下降沿是否到來,如果到來,判斷q是否等于count1-1,即計數(shù)器計數(shù)是否已滿,如果計數(shù)已滿,給q賦值0,否者給q自身加一。圖3.6和圖3.7,它們之間為并行執(zhí)行。程序的最后再用一條語句輸出信號,即當p<(count1-1)/2或者q< count1-1)/2時,clkout輸出1,否者clkout輸出0。圖3.6 奇數(shù)分頻程序流圖 圖3.7 奇數(shù)分頻程序流程圖奇數(shù)分頻實現(xiàn)程序如下:library ieee;use ieee.std_logic_1164.all;use

48、 ieee.std_logic_unsigned.all;entity jifen isport( clk,rst:in std_logic; sel:in std_logic; a2,b2,c2,d2:in integer range 1 downto 0; clkout1:out std_logic );end jifen;architecture rtl of jifen issignal p,q ,count1:integer range 18 downto 0;begincount1<=8*d2+4*c2+2*b2+1*a2;process(clk)beginif rst=&#

49、39;1' thenif(sel='1') then if (clk'event and clk = '1' ) thenif p=count1-1 thenp<=0;else p<=p+1;end if;end if; else null;end if;elsep<=count1-1;end if;end process;process(clk)beginif rst='1' thenif(sel='1') then if (clk 'event and clk = '0'

50、; ) thenif q=count1-1 thenq<=0;else q<=q+1;end if;end if; else null;end if;elseq<=count1-1;end if;end process;clkout1 <= '1' when p <(count1-1)/2 or q<(count1-1)/2 else '0'end rtl;奇數(shù)7分頻程序仿真結(jié)果如圖3.8所示。圖3.8 7分頻波形仿真結(jié)果圖3.8中,rst為復位信號,sel為選擇信號,d2,c2,b2,a2為4為二進制輸入,表明分頻系數(shù),cl

51、k為時鐘輸入,clkout為分頻時鐘輸出。圖中可以看出當rst和sel其中有一個等于0時,輸出信號clkout1輸出低電平,計數(shù)器便放棄對本次的計數(shù),當復位信號rst和選擇信號sel重新都為1時,便重新開始計數(shù),執(zhí)行分頻操作。這種設(shè)計存在的缺點是:放棄到本次的計數(shù)會造成一定時間的浪費,但對功能的實現(xiàn)幾乎沒有影響。奇數(shù)15分頻程序仿真結(jié)果如圖3.9所示。圖3.9 15分頻波形仿真結(jié)果圖3.9中可以看出,d2,c2,a2,b2都等于1,由前面可知此時程序為15分頻。從輸入信號clk與輸出信號clkout1對比看出,clkout1的周期剛好是clk周期的15,即此時執(zhí)行15分頻。奇數(shù)1分頻的波形仿真

52、如圖3.10所示。圖3.10 1分頻波形仿真結(jié)果圖3.10為奇數(shù)1分頻波形仿真,圖中,a2=01,d2,b2,c2都為0,此時為1分頻,根據(jù)程序得出,輸出信號clkout一直輸出為0,跟波形中的完全符合。第四章 系統(tǒng)設(shè)計4.1 設(shè)計的任務(wù)本設(shè)計的框圖如圖4.1所示。圖4.1 頂層框圖本設(shè)計主要是把奇數(shù)跟偶數(shù)這兩種需要設(shè)計的分頻器集成在一塊芯片上,用一個撥碼開關(guān)來控制encoder_12模塊,用于具體選擇哪種分頻被激活,然后用4位的撥碼開關(guān)設(shè)置一些基本的分頻系數(shù)。設(shè)計一個2位7段數(shù)碼管顯示驅(qū)動模塊,顯示分頻系數(shù),最后再用個二選一數(shù)據(jù)選著器mux21模塊選擇具體輸出哪路分頻信號。4.2 系統(tǒng)設(shè)計圖

53、4.2 設(shè)計頂層原理圖本設(shè)計頂層原理圖文件如圖4.2所示,其中包含五個模塊分別為:encoder_12模塊,數(shù)碼管顯示驅(qū)動模塊,奇數(shù)分頻模塊,偶數(shù)分頻模塊,二選一數(shù)據(jù)選擇模塊五個模塊。然后用具有電氣性質(zhì)的導線將各模塊按規(guī)定連接起來,最后在保存,編譯,并進行波形仿真與分析,驗證文件的正確性。圖4.2中,p 為encoder_12模塊輸入,a,b 為模塊輸出,p=0,選擇偶數(shù)分頻模塊;a=1,b=0;p=1,選擇奇數(shù)分頻模塊,a=0,b=1。clk為時鐘信號,接系統(tǒng)自帶時鐘,用作整個系統(tǒng)的分頻輸入;rst為復位信號,可接系統(tǒng)自帶的撥碼開關(guān)或按鍵開關(guān);d,c,b,a為四位二進制撥碼開關(guān),用于選擇分頻

54、系數(shù);n為整個系統(tǒng)的輸出,由輸入a判斷最后輸出哪路信號;p6.0為高位7段數(shù)碼管的輸入,q6.0為低位7段數(shù)碼管的輸入,顯示出最終的分頻系數(shù)。頂層文件如下所示:LIBRARY ieee;USE ieee.std_logic_1164.all; LIBRARY work;ENTITY dingchengtu IS PORT(clk : IN STD_LOGIC;rst : IN STD_LOGIC;d : IN STD_LOGIC;c : IN STD_LOGIC;b : IN STD_LOGIC;a : IN STD_LOGIC;n : OUT STD_LOGIC;p : OUT STD_LO

55、GIC_VECTOR(6 DOWNTO 0);q : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END dingchengtu;ARCHITECTURE bdf_type OF dingchengtu IS COMPONENT mux21PORT(a : IN STD_LOGIC; y1 : IN STD_LOGIC; y2 : IN STD_LOGIC; y : OUT STD_LOGIC);END COMPONENT;COMPONENT encoder_12PORT(p : IN STD_LOGIC; a : OUT STD_LOGIC; b : OUT STD_LOGIC);END COMPONENT;COMPONENT leddecoderPORT(a3 : IN STD_LOGIC; a2 : IN STD_LOGIC; a1 : IN STD_LOGIC; a0 : IN STD_LOGIC; H : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); L : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END COMPONENT;COMPONENT o

溫馨提示

  • 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

提交評論