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

下載本文檔

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

文檔簡介

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

2、偶數(shù)的整數(shù)分頻器設(shè)計(jì)和1、3、5、7、9、11、13、15奇數(shù)的整數(shù)分頻器設(shè)計(jì)。通過仿真結(jié)果,驗(yàn)證了設(shè)計(jì)的正確性。 關(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特點(diǎn)92.3.3 VHDL組成10第三章 奇偶分頻器設(shè)計(jì)與仿真123.1 偶數(shù)分頻12 原理分析12 設(shè)計(jì)與仿真123.2 奇數(shù)分頻17 原理分析17 設(shè)計(jì)與仿真18第四章 系統(tǒng)設(shè)計(jì)234.1 設(shè)計(jì)的任務(wù)234.2 系統(tǒng)設(shè)計(jì)234.3 其余模塊設(shè)計(jì)274.3.1 encoder_12模塊

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

23、編程RAM中,配置完成之后,F(xiàn)PGA隨即進(jìn)入工作狀態(tài)。去電后,F(xiàn)PGA將恢復(fù)成白片,內(nèi)部邏輯的關(guān)系也同時(shí)取消,因此,F(xiàn)PGA能夠反復(fù)被運(yùn)用。FPGA的編程不需要特定的FPGA編程器,只需用通用的EPROM、PROM編程器就可以。當(dāng)需要更改FPGA的功能時(shí),只需要更換一片EPROM就行。如此,同一片F(xiàn)PGA,不一樣的編程數(shù)據(jù),就可以產(chǎn)生不盡相同的電路功能。因此,F(xiàn)PGA的運(yùn)用是非常靈活的。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è)計(jì),它里邊包括了綜合器和仿真器,可以完成一個(gè)較為完整PLD設(shè)計(jì)流程,從輸入到硬件配置的設(shè)計(jì)流程。Quartus 能夠在XP、Linux以及Unix等系統(tǒng)上運(yùn)用,不但可以利用Tcl腳本去完成設(shè)計(jì)的流程,而且還提供了較為完善的用戶圖形界面設(shè)計(jì)形式。它的特點(diǎn)有能夠使運(yùn)行的速度加快,界

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

41、出高電平1,否者clkout輸出低電平0,最后結(jié)束進(jìn)程。圖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為復(fù)位信號(hào)輸入,sel為選擇信號(hào)輸入,d,c,b為3位撥碼開關(guān)輸入,用

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

45、都為0時(shí),系統(tǒng)執(zhí)行0分頻,根據(jù)程序得,此時(shí)的輸出信號(hào)應(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è)計(jì)的關(guān)鍵是對clk信號(hào)的上升沿信號(hào)進(jìn)行計(jì)數(shù)(p)和對clk信號(hào)的下降沿信號(hào)進(jìn)行計(jì)數(shù)(q)。當(dāng)p <(count1-1)/2 或者 q<(count1-1)/

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

47、=1時(shí)判斷sel是否為1,rst=0時(shí),執(zhí)行q<=count1-1,當(dāng)sel等于1時(shí),在判斷輸入信號(hào)clk的下降沿是否到來,如果到來,判斷q是否等于count1-1,即計(jì)數(shù)器計(jì)數(shù)是否已滿,如果計(jì)數(shù)已滿,給q賦值0,否者給q自身加一。圖3.6和圖3.7,它們之間為并行執(zhí)行。程序的最后再用一條語句輸出信號(hào),即當(dāng)p<(count1-1)/2或者q< count1-1)/2時(shí),clkout輸出1,否者clkout輸出0。圖3.6 奇數(shù)分頻程序流圖 圖3.7 奇數(shù)分頻程序流程圖奇數(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為復(fù)位信號(hào),sel為選擇信號(hào),d2,c2,b2,a2為4為二進(jìn)制輸入,表明分頻系數(shù),cl

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

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

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

54、系數(shù);n為整個(gè)系統(tǒng)的輸出,由輸入a判斷最后輸出哪路信號(hào);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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論