EDA課程設(shè)計航空通信中小數(shù)分頻器的設(shè)計_第1頁
EDA課程設(shè)計航空通信中小數(shù)分頻器的設(shè)計_第2頁
EDA課程設(shè)計航空通信中小數(shù)分頻器的設(shè)計_第3頁
EDA課程設(shè)計航空通信中小數(shù)分頻器的設(shè)計_第4頁
EDA課程設(shè)計航空通信中小數(shù)分頻器的設(shè)計_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、航空通信中小數(shù)分頻器的設(shè)計 摘要:fpga(fieldprogrammable gate array),即現(xiàn)場可編程門陣列,它是在pal、gal、cpld等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物。它是作為專用集成電路(asic)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。本次項目是小數(shù)分頻。小數(shù)分頻是為解決人們想要小數(shù)頻率的愿望,而不局限于整數(shù)頻率。 高速發(fā)展的的當今社會是數(shù)字化的時代,各種各樣的數(shù)字化產(chǎn)品進入了市場。而用vhdl語言實現(xiàn)的數(shù)字產(chǎn)品也在一定范圍內(nèi)滿足市場上不同的需求。用fpga設(shè)計的產(chǎn)品不但降低的生產(chǎn)成本,還在一定程度上縮短了生

2、產(chǎn)周期。同時所需的人力又不是特別多。小數(shù)分頻的基本原理小數(shù)分頻的基本原理是采用脈沖吞吐計數(shù)器和鎖相環(huán)技術(shù)先設(shè)計兩個不同分頻比的整數(shù)分頻器,然后通過控制單位時間內(nèi)兩種分頻比出現(xiàn)的不同次數(shù)來獲得所需要的小數(shù)分頻值。如設(shè)計一個分頻系數(shù)為10.1的分頻器時,可以將分頻器設(shè)計成9次10分頻,1次11分頻,這樣總的分頻值為:f=(910+111)/(9+1)=10.1從這種實現(xiàn)方法的特點可以看出,由于分頻器的分頻值不斷改變,因此分頻后得到的信號抖動較大。當分頻系數(shù)為n-0.5(n為整數(shù))時,可控制扣除脈沖的時間,以使輸出成為一個穩(wěn)定的脈沖頻率,而不是一次n分頻,一次n-1分頻。本次設(shè)計用vhdl設(shè)計了小數(shù)

3、分頻器,在quartus8.0上仿真,仿真結(jié)果證明本次實驗正確,最后用fpga器件實現(xiàn)了小數(shù)分頻器。關(guān)鍵字:fpga 小數(shù)分頻器 vhdl 頻率計目 錄1 fpga及vhdl簡介1.1 什么是fpga41.2 fpga由什么構(gòu)成51.3 fpga設(shè)計步驟51.4 硬件描述語言vhdl102 小數(shù)分頻分析及設(shè)計2.1 整數(shù)分頻與半整數(shù)分頻122.2 分頻的程序122.3 頂層原理圖153 外圍及顯示電路設(shè)計3.1 頻率計163.2 4位十進制頻率計的設(shè)計163.3 4位十進制頻率計系統(tǒng)仿真及結(jié)果173.4 testcl模塊的設(shè)計173.5 testcl模塊系統(tǒng)仿真及結(jié)果194 實驗總結(jié)20致 謝

4、21參考文獻21引言 隨著各種先進雷達、制導(dǎo)、定位系統(tǒng)、數(shù)字通信設(shè)備及專用測試儀性能的不斷提高,對其頻率源的要求越來越高。頻率源性能的優(yōu)劣,是決定現(xiàn)代電子系統(tǒng)性能優(yōu)劣的主要因素之一。 分頻器在cpld/fpga的使用頻率較高。目前大多數(shù)采用直接合成、鎖相環(huán)和直接數(shù)字合成之一或不同的組合。但市場上對于實現(xiàn)奇數(shù)分頻,半整數(shù)分頻及其他小數(shù)分頻往往不能滿足要求。人們希望有一中靈活的設(shè)計方法,只需在實驗室就能設(shè)計分頻器并能馬上投入使用,更改分頻系數(shù)不需要改變原器件或電路板,只需改變源程序,在數(shù)分鐘內(nèi)就能完成,并能馬上使用。頻率合成技術(shù)是現(xiàn)代通訊系統(tǒng)的重要組成部分,他將一個高穩(wěn)定和高準確度的基準頻率,經(jīng)過

5、四則運算,產(chǎn)生同樣穩(wěn)定度和基準度的頻率。分頻器是集成電路中最基礎(chǔ)也是最常用的電路。整數(shù)分頻器的實現(xiàn)比較簡單,可采用標準的計數(shù)器或可編程邏輯器件設(shè)計實現(xiàn)。但在某些場合下,時鐘源與所需的頻率不成整數(shù)倍關(guān)系,此時可采用小數(shù)分頻器進行分頻。本文利用veriloghdl硬件描述語言的設(shè)計方式,通過quartus進行仿真,設(shè)計基于fpga小數(shù)分頻器。本文采用一個整數(shù)分頻和一個半整數(shù)分頻來實現(xiàn)小數(shù)分頻。隨著超大規(guī)模集成電路的發(fā)展,利用fpga小數(shù)分頻為越來越多的設(shè)備如測量儀等提供更加精準的頻率源,從而使的在國防、民用、醫(yī)學、生物、物理、化學等方面有了更大進步空間。1 fpga及vhdl簡介1.1 什么是fp

6、gafpga(fieldprogrammable gate array),即現(xiàn)場可編程門陣列,它是在pal、gal、cpld等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物。它是作為專用集成電路(asic)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。目前以硬件描述語言(verilog 或 vhdl)所完成的電路設(shè)計,可以經(jīng)過簡單的綜合與布局,快速的燒錄至 fpga 上進行測試,是現(xiàn)代 ic 設(shè)計驗證的技術(shù)主流。這些可編輯元件可以被用來實現(xiàn)一些基本的邏輯門電路(比如and、or、xor、not)或者更復(fù)雜一些的組合功能比如解碼器或數(shù)學方程式。在大多數(shù)的f

7、pga里面,這些可編輯的元件里也包含記憶元件例如觸發(fā)器(flipflop)或者其他更加完整的記憶塊。 系統(tǒng)設(shè)計師可以根據(jù)需要通過可編輯的連接把fpga內(nèi)部的邏輯塊連接起來,就好像一個電路試驗板被放在了一個芯片里。一個出廠后的成品fpga的邏輯塊和連接可以按照設(shè)計者而改變,所以fpga可以完成所需要的邏輯功能。 fpga一般來說比asic(專用集成芯片)的速度要慢,無法完成復(fù)雜的設(shè)計,而且消耗更多的電能。但是他們也有很多的優(yōu)點比如可以快速成品,可以被修改來改正程序中的錯誤和更便宜的造價。廠商也可能會提供便宜的但是編輯能力差的fpga。因為這些芯片有比較差的可編輯能力,所以這些設(shè)計的開發(fā)是在普通的

8、fpga上完成的,然后將設(shè)計轉(zhuǎn)移到一個類似于asic的芯片上。另外一種方法是用cpld(復(fù)雜可編程邏輯器件備)。它的特點有:1) 采用fpga設(shè)計asic電路(特定用途集成電路),用戶不需要投片生產(chǎn),就能得到合用的芯片。 2)fpga可做其它全定制或半定制asic電路的中試樣片。 3)fpga內(nèi)部有豐富的觸發(fā)器和io引腳。 4)fpga是asic電路中設(shè)計周期最短、開發(fā)費用最低、風險最小的器件之一。 5) fpga采用高速chmos工藝,功耗低,可以與cmos、ttl電平兼容。1.2 fpga由什么構(gòu)成通常fpga由布線資源分隔的可編程邏輯單元構(gòu)成陳列,又由可編程i/o單元圍繞陳列構(gòu)成整個芯片

9、,排成陳列的邏輯單元由布線通道中的可編程內(nèi)斂線連接起來實現(xiàn)一定邏輯的功能。fpga 的內(nèi)部結(jié)構(gòu)大致分為5 個部分: 均勻分布的邏輯塊組成的邏輯陣列, 輸入i/o輸出塊( i/o塊) , 連線資源,全局網(wǎng)絡(luò), 嵌入式資源。fpga 器件的組合邏輯塊是查找表結(jié)構(gòu)。i/o 塊可以配置成各種輸入、輸出模式。連線資源用于將不同的邏輯塊連接起來。全局網(wǎng)絡(luò)是連線資源中的特殊連線, 其性能比普通連線要好得多, 它延伸到器件內(nèi)所有的資源位置。全局網(wǎng)絡(luò)一般分配給時鐘信號, 構(gòu)成時鐘樹。有時也可以分配給復(fù)位信號、使能信號或者其他特殊信號。目前我們使用的的可編程邏輯單元一般由查找表和觸發(fā)器構(gòu)成。下圖所示即為cyclo

10、ne系列的fpga芯片的邏輯單元(le)組成.圖1.1 fpga芯片的邏輯單元圖1.3 fpga設(shè)計步驟fpga 設(shè)計流程包括系統(tǒng)設(shè)計和設(shè)計實現(xiàn), 系統(tǒng)方案完成之后即進入設(shè)計實現(xiàn)階段的工作, 它以系統(tǒng)方案為輸入, 進行rtl 級描述、功能仿真(rtl 級仿真)、邏輯綜合、布線前門級仿真、適配(布局布線)、時序仿真(布線后門級仿真)、時序分析、器件編程、系統(tǒng)驗證一系列流程的處理才能完成fpga芯片的設(shè)計, 其設(shè)計流程如下圖 所示。需要說明的是, 如果仿真驗證不對或者到走某一步有錯, 就要返回修改。有必要檢查和修改的地方有rtl 級描述、系統(tǒng)方案、約束和測試激勵等。一般情況下, 對rtl 級的描述

11、即原理圖或者hdl 設(shè)計代碼的修改最多也最有效。修改后要重新走一遍流程。有時要反復(fù)修改, 經(jīng)過多次這樣的迭代才能完成最后的設(shè)計。圖1.2 fpga設(shè)計流程圖在理論上, 把vlsi(ultra large scale integration, 超大規(guī)模集成電路) 的設(shè)計描述為6個層次2 ,3 , 即系統(tǒng)級(系統(tǒng)功能、參數(shù)定義)、算法級(描述系統(tǒng)功能行為)、rtl 級、門級(邏輯門)、電路級(晶體管)、版圖級(物理工藝)。每一級又都分3 個側(cè)面來描述: 行為域描述、結(jié)構(gòu)域描述、物理域描述。但在實際情況中往往把算法級行為域描述或者rtl級行為域描述都稱為行為級描述。對于fpga 的設(shè)計而言, 我們不

12、需要關(guān)心電路級和版圖級, 只考慮系統(tǒng)級、算法級、rtl 級、門級4 個層次的行為域描述和結(jié)構(gòu)域描述即可。本文上述的fpga 系統(tǒng)設(shè)計中的系統(tǒng)實際上是指系統(tǒng)級和算法級, 而“rtl 級描述”主要是指rtl級行為域的描述。在門級, 由綜合工具產(chǎn)生的門級網(wǎng)表來描述。fpga 的設(shè)計流程和相關(guān)概念說明如下:庫: 指fpga 器件廠家提供的工藝庫和eda 工具提供的標準通用庫(如ieee 庫等)。工藝庫中有各種宏功能模塊和基本功能單元, 含有它們的行為級模型、門級模型、布線模型等信息。需要說明的是, 系統(tǒng)行為仿真和rtl 級功能仿真有時要用到某種功能模塊, 例如ram 模型。對于ram 模型的控制信號,

13、不同的廠家其規(guī)定不一定相同,如寫使能信號, 有的廠家規(guī)定高電平有效, 有的廠家規(guī)定低電平有效。其實,在廠家提供的工藝庫中,ram模型有行為級模型、門級模型、版圖級模型等。而行為級模型只是規(guī)定其功能,無延時信息,跟工藝無關(guān),但門級模型和版圖級模型跟工藝密切相關(guān)。解決的方法是系統(tǒng)行為仿真時可以使用高級語言自己建立一個模型或者調(diào)用廠家?guī)熘刑峁┑男袨榧壞P?功能仿真時調(diào)用行為級模型,時序仿真時調(diào)用門級模型。測試激勵: 指測試文件,它調(diào)用fpga設(shè)計的頂層模塊,同時產(chǎn)生頂層模塊需要的輸入信號,稱之為激勵信號,使用行為描述即可,不要求可綜合。仿真時它作為最頂層的文件,從而可以觀察fpga 的輸出是否正確。

14、所有的仿真都可使用同一個測試激勵。約束: 指對邏輯綜合和布局布線時的約束。包括器件型號、速度、面積、功耗、引腳分配、時鐘網(wǎng)絡(luò)資源的分配、模塊在器件中的定位等約束。一部分在軟件中設(shè)置,一部分以約束文件的形式存在。(1) 系統(tǒng)行為描述:是指使用硬件描述語言hdl(hard2w are description language) 語句的全集來描述算法, 模擬系統(tǒng)的行為和功能,不要求所有的語句都能夠綜合成電路。事實上,有的語句是專為描述行為而創(chuàng)建的,不能綜合(即不能用電路來實現(xiàn)其功能)。也可以使用高級語言如c 來進行描述,此時往往要配合專用的系統(tǒng)設(shè)計工具來進行描述與仿真,如spw 等。這種系統(tǒng)算法級行

15、為域的描述可以盡量使用最簡潔的語句而不必過多地考慮其硬件實現(xiàn)的諸因素,所以能較快建立系統(tǒng)行為模型,進行行為仿真。(2) 系統(tǒng)行為仿真: 主要用來驗證系統(tǒng)方案是否正確、是否有缺陷,并可根據(jù)仿真的結(jié)果來優(yōu)化系統(tǒng)方案和算法。它使用系統(tǒng)行為描述代碼、測試激勵、行為級模型庫等為輸入,利用專用的仿真工具或者系統(tǒng)設(shè)計軟件來進行功能仿真和優(yōu)化。(3) rtl級描述: 指原理圖(結(jié)構(gòu)描述) 或者使用可綜合的hdl 語句來描述的設(shè)計(一般是行為描述)。eda 綜合軟件只能將rtl 級描述綜合成邏輯電路。利用綜合軟件可以檢查出所寫的代碼是否是rtl 級代碼。對簡單的設(shè)計而言, 可以直接從rtl 級開始設(shè)計, 但對大

16、規(guī)模的設(shè)計, 最好先寫系統(tǒng)行為級代碼進行行為仿真。如果系統(tǒng)行為仿真正確, 就可以將行為級代碼轉(zhuǎn)化為rtl級代碼。這種轉(zhuǎn)化稱之為高層次綜合或者行為級綜合。轉(zhuǎn)化的方法有2 種: 一是使用高層次綜合工具自動轉(zhuǎn)化,例如syno psys 公司的behavior compiler3 ;二是使用手工方法轉(zhuǎn)化。手工方法使用很普遍, 原因是目前高層次綜合的理論和方法還不成熟,其工具難求或者其性能沒有手工方法好。(4) 功能仿真: 也叫rtl級仿真, 是指不考慮延時信息的一種仿真,只能驗證rtl 級的行為描述是否能達到所要求的功能。功能仿真需要的輸入是rtl級代碼、測試激勵和庫(有時要調(diào)用工藝庫中宏功能單元的行

17、為級模型)??衫脤S玫姆抡婀ぞ哌M行仿真,如modelsim,vcs 等工具。如果仿真不對,則需要檢查和修改rtl 級代碼或者測試激勵甚至系統(tǒng)方案。仿真的過程是先對源代碼進行編譯,檢查是否有語法錯誤。如果沒有錯誤,就將源代碼轉(zhuǎn)換為一種中間格式,便于仿真工具的內(nèi)部運算。編譯的結(jié)果自動存放在一個指定的工作目錄中,仿真的結(jié)果主要以波形文件的形式存放。(5) 邏輯綜合: 邏輯綜合是將rtl級的行為描述轉(zhuǎn)化為使用門級單元的結(jié)構(gòu)描述。門級的結(jié)構(gòu)描述稱之為網(wǎng)表。網(wǎng)表文件主要記錄的是所用工藝庫門級單元之間的互連關(guān)系(即門級結(jié)構(gòu))。綜合的輸入需要rtl 級描述、約束和工藝庫。綜合時所加的約束一般比較簡單,如時鐘

18、頻率、器件型號和其他綜合設(shè)置等。綜合的過程是translate (轉(zhuǎn)換) + map (映射) +optimize (優(yōu)化)。轉(zhuǎn)換是將rtl 級行為描述轉(zhuǎn)化為rtl 級結(jié)構(gòu)描述(使用與工藝無關(guān)的通用邏輯門符號表示)。映射是將轉(zhuǎn)換后的結(jié)果使用工藝庫門級單元的連接關(guān)系來表示,并根據(jù)需要進行優(yōu)化,形成網(wǎng)表文件。映射是對某種目標器件而言的一種資源分配和優(yōu)化操作。一般綜合工具能將轉(zhuǎn)換后的結(jié)果顯示為rtl級原理圖,也能將網(wǎng)表顯示為門級原理圖。網(wǎng)表文件中含門級單元的延時信息,對連線延時有預(yù)估值或者為零,不同的軟件處理的方法可能不同,暫稱之為網(wǎng)表文件1。網(wǎng)表文件的格式可以表示成標準格式(edif) ,也可以表

19、示成vhdl或者v erilog_ hdl格式(在綜合工具中設(shè)置)。綜合報告文件中含所用邏輯資源、預(yù)估出的時鐘最高頻率、關(guān)鍵路徑(延時最長的路徑, 可在軟件中顯示) 等信息。(6) 布線前門級仿真: 是門級功能仿真,一般不考慮延時。該仿真的輸入需要綜合后的門級網(wǎng)表、工藝庫和測試激勵。有的eda 工具不提供此仿真功能,可以不做。(7) 適配(布局布線) : 適配就是將網(wǎng)表文件映射到目標器件中的一種操作, 是對目標器件的第二次映射(第一次映射是綜合)。即對網(wǎng)表中的每一個門級單元在器件中定位(布局),并使用器件內(nèi)的連線資源按照網(wǎng)表中的連接關(guān)系連接起來(布線) 同時要滿足引腳分配、時鐘線的分配等約束條

20、件。適配的輸入需要網(wǎng)表文件1、工藝庫(要使用其中的布線模型等信息)和約束。適配所加的約束比較多, 如引腳分配、時鐘樹的分配、模塊在器件中的定位等。適配后產(chǎn)生的文件有網(wǎng)表文件2、反標文件和編程文件等。根據(jù)適配工具和適配設(shè)置的不同,產(chǎn)生的網(wǎng)表文件2可以具有不同的格式并可以設(shè)置為包含延時信息(包括門延時和線延時)。反標文件含延時信息,使用標準格式(sdf格式)表示。編程文件用于對器件編程下載。(8) 時序仿真: 是最接近真實情況的一種仿真, 因為該仿真含所有的延時信息和約束信息(約束信息包含在網(wǎng)表文件2中)。時序仿真的輸入需要測試激勵、工藝庫門級單元模型、網(wǎng)表文件2 和反標文件。如果網(wǎng)表文件2中含有

21、延時信息, 則不需要反標文件。時序仿真的結(jié)果跟延時關(guān)系極大。延時跟工藝有關(guān), 特別是深亞微米工藝,線延時大大超過門延時,所以總延時跟布局布線關(guān)系極大。如果仿真結(jié)果不對, 要從約束、綜合、布局布線、rtl級代碼等環(huán)節(jié)上找原因, 也可以借助時序分析工具找原因。(9) 時序分析: 使用eda軟件的時序分析功能能夠分析所有時鐘的頻率、周期、關(guān)鍵路徑和其他所有時鐘路徑上的延時信息,進行建立時間和保持時間分析和輸入到輸出、輸入到寄存器、寄存器到輸出的延時分析等,從而可以找出不滿足時序關(guān)系的原因所在。時序分析是一個輔助功能,有時可以不做。(10) 器件編程: 指將適配后產(chǎn)生的編程文件下載到fpga cpld

22、器件中。下載的過程就是一個改寫器件內(nèi)邏輯結(jié)構(gòu)的過程,故稱之為編程。下載使用專用的編程器或者下載電纜。器件的編程接口一般使用10針jta g插座。習慣上,對cpld器件的下載叫編程,對fpga 器件的下載叫配置。cpld 器件基于eeprom工藝或者fla sh 工藝,掉電后信息不丟失。而fpga器件基sram查找表工藝,掉電后編程信息會丟失,在下次上電后需要重新加載編程文件。配置方式有多種模式, 較常用的是ps 模式(調(diào)試時用)和使用配置器件模式(產(chǎn)品中使用),它是使用一個eprom 型的配置芯片,先將編程數(shù)據(jù)燒寫到配置芯片中,配置芯片跟fpga使用專用接口引腳相連。這樣,上電后配置芯片自動給

23、fpga 加載編程數(shù)據(jù)。也可使用單片機進行配置。 (11) 系統(tǒng)驗證: 先將fpga芯片在測試板上進行功能驗證,然后再到實際系統(tǒng)中驗證。系統(tǒng)驗證通過后就可以在產(chǎn)品中使用。至此,fpga芯片設(shè)計完成。1.4 硬件描述語言vhdlvhdl語言是一種用于電路設(shè)計的高級語言。它在80年代的后期出現(xiàn)。最初是由美國國防部開發(fā)出來供美軍用來提高設(shè)計的可靠性和縮減開發(fā)周期的一種使用范圍較小的設(shè)計語言 。vhdl的英文全寫是:vhsic(very high speed integrated circuit)hardware description language.翻譯成中文就是超高速集成電路硬件描述語言。因此

24、它的應(yīng)用主要是應(yīng)用在數(shù)字電路的設(shè)計中。目前它在中國的應(yīng)用多數(shù)是用在fpga/cpld/epld的設(shè)計中。當然在一些實力較為雄厚的單位,它也被用來設(shè)計asic.vhdl主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語句外,vhdl的語言形式、描述風格以及語法是十分類似于一般的計算機高級語言。vhdl的程序結(jié)構(gòu)特點是將一項工程設(shè)計,或稱設(shè)計實體(可以是一個元件,一個電路模塊或一個系統(tǒng))分成外部(或稱可視部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實體的內(nèi)部功能和算法完成部分。在對一個設(shè)計實體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計就可以直接調(diào)用這個實體。 底層

25、嵌入功能單元是指那些通用程度較高的嵌入式功能模塊,比如pll(phase locked loop)、dll(delay locked loop)、dsp、cpu等。本設(shè)計中用到了pll嵌入式單元,該模塊單元是通過開發(fā)平臺的ip核生成器自動生成的(內(nèi)嵌專用硬核里的內(nèi)嵌專用硬核是有別于底層嵌入功能單元的,主要是指那些通用性相對較弱、不是所有fpga器件都包括的硬核)。與其他硬件描述語言相比,vhdl具有以下特點: 功能強大、設(shè)計靈活。vhdl具有功能強大的語言結(jié)構(gòu),可以用簡潔明確的源代碼來描述復(fù)雜的邏輯控制。它具有多層次的設(shè)計描述功能,層層細化,最后可直接生成電路級描述。vhdl支持同步電路、異步

26、電路和隨機電路的設(shè)計,這是其他硬件描述語言所不能比擬的。vhdl還支持各種設(shè)計方法,既支持自底向上的設(shè)計,又支持自頂向下的設(shè)計;既支持模塊化設(shè)計,又支持層次化設(shè)計。 支持廣泛、易于修改。由于vhdl已經(jīng)成為ieee標準所規(guī)范的硬件描述語言,目前大多數(shù)eda工具幾乎都支持vhdl,這為vhdl的進一步推廣和廣泛應(yīng)用奠定了基礎(chǔ)。在硬件電路設(shè)計過程中,主要的設(shè)計文件是用vhdl編寫的源代碼,因為vhdl易讀和結(jié)構(gòu)化,所以易于修改設(shè)計。 強大的系統(tǒng)硬件描述能力。vhdl具有多層次的設(shè)計描述功能,既可以描述系統(tǒng)級電路,又可以描述門級電路。而描述既可以采用行為描述、寄存器傳輸描述或結(jié)構(gòu)描述,也可以采用三者

27、混合的混合級描述。另外,vhdl支持慣性延遲和傳輸延遲,還可以準確地建立硬件電路模型。vhdl支持預(yù)定義的和自定義的數(shù)據(jù)類型,給硬件描述帶來較大的自由度,使設(shè)計人員能夠方便地創(chuàng)建高層次的系統(tǒng)模型。 獨立于器件的設(shè)計、與工藝無關(guān)。設(shè)計人員用vhdl進行設(shè)計時,不需要首先考慮選擇完成設(shè)計的器件,就可以集中精力進行設(shè)計的優(yōu)化。當設(shè)計描述完成后,可以用多種不同的器件結(jié)構(gòu)來實現(xiàn)其功能。 很強的移植能力。vhdl是一種標準化的硬件描述語言,同一個設(shè)計描述可以被不同的工具所支持,使得設(shè)計描述的移植成為可能。 易于共享和復(fù)用。vhdl采用基于庫(library)的設(shè)計方法,可以建立各種可再次利用的模塊。這些模

28、塊可以預(yù)先設(shè)計或使用以前設(shè)計中的存檔模塊,將這些模塊存放到庫中,就可以在以后的設(shè)計中進行復(fù)用,可以使設(shè)計成果在設(shè)計人員之間進行交流和共享,減少硬件電路設(shè)計。 2 小數(shù)分頻分析及設(shè)計2.1 整數(shù)分頻與半整數(shù)分頻針對半整數(shù)分頻器的fpga的設(shè)計,目前市場上技術(shù)比較成熟,一般采用的設(shè)計方法如圖2.1所示。異或邏輯n計數(shù)器2分頻器clk clout 圖2.1 半整數(shù)分頻器 實現(xiàn)原理實在n的基礎(chǔ)上,扣除了半個未分頻時鐘周期,從而實現(xiàn)了n-0.5的分頻,實現(xiàn)扣除的電路是由2分頻器和異或邏輯組成。在實際的小數(shù)分頻器的設(shè)計過程中,需要一個半整數(shù)分頻器和一個整數(shù)分頻器,為了模塊數(shù)量的最少化,而且控制電路簡單,改

29、變占空比是利用上升沿觸發(fā)和下降沿觸發(fā)進行或來實現(xiàn)的。2.2 分頻的程序下降沿觸發(fā):library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity fen25 is port (clk:in std_logic; q1:buffer std_logic; q2:buffer std_logic; clkout:out std_logic ); end fen25; architecture behave of fen25 isconst

30、ant counter_len:integer:=3; -模3計數(shù)器 signal clk_tem:std_logic; begin q1=clk xor q2; process(q1) variable cnt:integer range 0 to counter_len-1; begin if q1event and q1=0 then if cnt=counter_len-1 then cnt:=0; clk_tem=1; clkout=1; else cnt:=cnt+1; clk_tem=0; clkout=0; end if; end if; end process; proces

31、s(clk_tem) variable tem:std_logic; begin if clk_temevent and clk_tem=1 then tem:=not tem; end if; q2=tem; end process; end behave;上升沿觸發(fā):library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity f25 is port (clk:in std_logic; qout1:buffer std_log

32、ic; qout2:buffer std_logic; clkout:out std_logic ); end f25; architecture behave of f25 is constant counter_len:integer:=3; -模3計數(shù)器 signal clk_tem:std_logic; begin qout1=clk xor qout2; process(qout1) variable cnt:integer range 0 to counter_len-1; begin if qout1event and qout1=1 then if cnt=counter_le

33、n-1 then cnt:=0; clk_tem=1; clkout=1; else cnt:=cnt+1; clk_tem=0; clkout=0; end if; end if; end process; process(clk_tem) variable tem:std_logic; begin if clk_temevent and clk_tem=1 then tem:=not tem; end if; qout2=tem; end process; end behave;2.3 頂層原理圖圖2.2 小數(shù)分頻頂層原理圖 原理圖中包括 2個2.5分頻模塊和一個或邏輯門?;蜻壿嬮T是為了改

34、變2.5分頻器的占空比。仿真波形如圖2.3圖2.3 小數(shù)分頻仿真圖 從2.3仿真圖中可以很看見當輸入時鐘周期clk是10hz,則輸出out是4hz。也就是輸入信號經(jīng)2.5分頻后得到輸出信號。而且通過波形仿真可以驗證設(shè)計是正確的。3 外圍及顯示電路設(shè)計3.1 頻率計 所謂頻率計就是將輸出結(jié)果用數(shù)字來顯示。從而能讓人們清楚地看見結(jié)果,不必通過波形來判斷頻率是多少。3.2 4位十進制頻率計的設(shè)計頻率記的頂層模塊圖如圖3.1圖3.1 4位十進制頻率計4位頻率計原理圖包括了測試模塊testcl和4個十進制計數(shù)器cnt10模塊、4個4位鎖存器模塊。testcl模塊產(chǎn)生復(fù)位信號、使能信號和鎖存信號,通過這些

35、信號是整個頂層模塊工作。鎖存器是把輸出結(jié)果鎖存輸出,使輸出結(jié)果保持靜態(tài)更容易觀察。cnt10模塊是把當前進來的信號進行10進制計數(shù)在把結(jié)果輸出。通過以上幾個模塊就構(gòu)成了完整的4位頻率計數(shù)器。3.3 4位十進制頻率計系統(tǒng)仿真及結(jié)果圖3.2 4位十進制頻率計波形仿真圖 從仿真波形文件看當輸入的信號fin為50hz,即是125hz經(jīng)2.5分頻后的信號。則輸出信號為500hz。這是信號測試時把測量周期擴大到10倍時的結(jié)果。所謂把時鐘周期擴大10倍就是把本應(yīng)1s測量的頻率,把它用10s來測量。又因為時鐘周期是1s,所以輸出信號是把輸入信號擴大10倍。即輸出信號500hz。3.4 testcl模塊的設(shè)計t

36、estcl程序: library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity testctl is port (clkk : in std_logic; cnt_en,rst_cnt,load : out std_logic); end entity testctl;architecture behav of testctl is signal countdiv : std_logic_vector(4 downto 0):=00000;begin p1: process( clkk ) be

37、gin if clkkevent and clkk = 1 then countdiv=countdiv+1; end if; if countdiv=10101 then countdiv=00000; end if; end process p1; p2: process (clkk, countdiv) begin if countdiv=10100 then rst_cnt= 1; else rst_cnt=0; end if; if countdiv=01001 then cnt_en=1;load=0; else cnt_en=0;load=1; end if; end process p2; end archite

溫馨提示

  • 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

提交評論