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

下載本文檔

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

文檔簡介

1、【標題】基于VHDL的數(shù)字頻率計設(shè)計 【作者】冉合高 【關(guān)鍵詞】VHDL  硬件描述語言  數(shù)字頻率計  設(shè)計  仿真  硬件測試 【指導(dǎo)老師】李金田 【專業(yè)】電子信息科學(xué)與技術(shù) 【正文】1 緒論1.1 數(shù)字頻率計設(shè)計現(xiàn)狀隨著電子技術(shù)的飛速開展,各類分立電子元件及其所構(gòu)成的相關(guān)功能單元,已逐步被功能更強大、性能更穩(wěn)定、使用更方便的集成芯片所取代。由集成芯片和一些外圍電路構(gòu)成的各種自動控制、自動測量、自動顯示電路普及各種電子產(chǎn)品和設(shè)備。數(shù)字系統(tǒng)和數(shù)字設(shè)備已廣泛應(yīng)用于各個領(lǐng)域,更

2、新?lián)Q代速度可謂日新月異。 在電子系統(tǒng)非常廣泛的應(yīng)用領(lǐng)域內(nèi),到處可以見到處理離散信息的數(shù)字電路。供消費用的微波爐和電視、先進的工業(yè)控制系統(tǒng)、空間通訊系統(tǒng)、交通控制雷達系統(tǒng)、醫(yī)院急救系統(tǒng)等在設(shè)計過程中無一不用到數(shù)字技術(shù)1。數(shù)字電路制造工業(yè)的進步,使得系統(tǒng)設(shè)計人員能在更小的空間內(nèi)實現(xiàn)更多的功能,從而提高系統(tǒng)可靠性和速度。數(shù)字頻率計是數(shù)字電路中的一個典型應(yīng)用2,實際的硬件設(shè)計用到的器件較多,連線比較復(fù)雜,而且會產(chǎn)生比較大的延時,造成測量誤差、可靠性差。隨著復(fù)雜可編程邏輯器件CPLD的廣泛應(yīng)用,以EDA工具作為開發(fā)手段,運用VHDL語言,將使整個系統(tǒng)大大簡化,提高整體的性能和可靠性。數(shù)字頻率計

3、是現(xiàn)代通信測量設(shè)備系統(tǒng)中不可缺少的測量儀器,不但要求電路能產(chǎn)生頻率準確及穩(wěn)定度高的信號,而且還能方便的改變頻率。 數(shù)字頻率計主要實現(xiàn)方法有直接式、鎖相式、直接數(shù)字式3和混合式四種。直接式的優(yōu)點是速度快、相位噪聲低,但結(jié)構(gòu)復(fù)雜、雜散多,一般只應(yīng)用在地面雷達中;鎖相式的優(yōu)點是實現(xiàn)相位同步的自動控制,制作頻率高,功耗低,容易實現(xiàn)系列化、小型化、模塊化和工程化;直接數(shù)字式的優(yōu)點是電路穩(wěn)定、精度高、容易實現(xiàn)系列化、小型化、模塊化和工程化。隨著單片鎖相式數(shù)字頻率計的開展,鎖相式和數(shù)字式容易實現(xiàn)系列化、小型化、模塊化和工程化,性能也越來越好,已逐步成為兩種最為典型,用處最為廣泛的數(shù)字頻率計。1.2

4、  硬件描述語言綜述1.2.1 硬件描述語言的簡述硬件描述語言是一種用形式化方法描述數(shù)字電路和系統(tǒng)的語言4。利用這種語言,數(shù)字電路系統(tǒng)的設(shè)計可以從上層到下層從抽象到具體逐層描述自己的設(shè)計思想,用一系列分層次的模塊來表示極其復(fù)雜的數(shù)字系統(tǒng)。以電子設(shè)計自動化EDA工具,逐層進行仿真驗證,再把其中需要變?yōu)閷嶋H電路的模塊組合,經(jīng)過自動綜合工具轉(zhuǎn)換到門級電路網(wǎng)表,再用專用集成電路ASIC或現(xiàn)場可編程門陣列FPGA自動布局布線工具,把網(wǎng)表轉(zhuǎn)換為要實現(xiàn)的具體電路布線結(jié)構(gòu)。目前,這種高層次(high-level-design)的方法已被廣泛采用。據(jù)統(tǒng)計,目前在美國硅谷約有90%以

5、上的ASIC和FPGA采用硬件描述語言進行設(shè)計。 硬件描述語言的開展至今已有近30年的歷史了,并成功地應(yīng)用于設(shè)計的各個階段:建模、仿真、驗證和綜合等。到20世紀80年代,已出現(xiàn)了上百種硬件描述語言,對設(shè)計自動化曾起到了極大的促進和推動作用。但是,這些語言一般各自面向特定的設(shè)計領(lǐng)域和層次,而且眾多的語言使用戶無所適從。因此,急需一種面向設(shè)計的多領(lǐng)域、多層次并得到普遍認同的標準硬件描述語言。20世紀80年代后期,VHDL和Verilog HDL語言適應(yīng)了這種趨勢的要求,先后成為IEEE標準。 現(xiàn)在,隨著系統(tǒng)級FPGA以及系統(tǒng)芯片的出現(xiàn),軟硬件協(xié)調(diào)設(shè)計和系統(tǒng)設(shè)計變得越來越重要。傳

6、統(tǒng)意義上的硬件設(shè)計越來越傾向于與系統(tǒng)設(shè)計和軟件設(shè)計結(jié)合。硬件描述語言為適應(yīng)新的情況迅速開展,出現(xiàn)了很多新的硬件描述語言,像Superlog、SystemC、Cynlib C+等等。究竟選擇哪種語言進行設(shè)計,整個業(yè)界正在進行劇烈的討論。因此,完全有必要在這方面作一些比較研究,為EDA設(shè)計做一些有意義的工作,也為開展我們未來的芯片設(shè)計技術(shù)打好根底。1.2.2 硬件描述語言的開展歷程VHDL 早在1980年,由于美國軍事工業(yè)需要描述電子系統(tǒng)的方法,美國國防部開始進行VHDL的開發(fā)。1987年,由IEEEInstitute of Electrical and Electro- ni

7、cs Engineers將VHDL制定為標準。參考手冊為IEEE VHDL語言參考手冊標準草案1076/B版,于1987年批準,稱為IEEE 1076-1987。應(yīng)當(dāng)注意,起初VHDL只是作為系統(tǒng)標準的一個標準,而不是為設(shè)計而制定的。第二個版本是在1993年制定的,稱為VHDL-93,增加了一些新的命令和屬性。 雖然有“VHDL是一個4億美元的錯誤這樣的說法,但VHDL畢竟是1995年以前唯一制訂為標準的硬件描述語言,這是它不爭的事實和優(yōu)勢。同時它確實比較麻煩,而且其綜合庫至今也沒有標準化,不具有晶體管開關(guān)級的描述能力和模擬設(shè)計的描述能力。目前的看法是,對于特大型的系統(tǒng)級數(shù)字電路設(shè)計

8、,VHDL是較為適宜的。 實質(zhì)上,在底層的VHDL設(shè)計環(huán)境是由Verilog HDL描述的器件庫支持的5,因此,它們之間的互操作性十分重要。目前,Verilog和VDHL的兩個國際組織OVI、VI正在籌劃這一工作,準備成立專門的工作組來協(xié)調(diào)VHDL和Verilog HDL語言的互操作性。OVI也支持不需要翻譯,由VHDL到Verilog的自由表達。Verilog HDL是在1983年,由GDAGateWay Design Automation公司的Phil Moorby首創(chuàng)的。Phil Moorby后來成為Verilog-XL的主要設(shè)計者和Cadence公司的第一合伙人。在19841

9、985年,Phil Moorby設(shè)計出了第一個名為Verilog-XL的仿真器。1986年,他對Verilog HDL的開展又作出了另一個巨大的奉獻:提出了用于快速門級仿真的XL算法。隨著Verilog-XL算法的成功,Verilog HDL語言得到迅速開展。1989年,Cadence公司收購了GDA公司,Verilog HDL語言成為Cadence公司的私有財產(chǎn)。1990年,Cadence公司決定公開Verilog HDL語言,于是成立了OVIOpen Verilog International組織,負責(zé)促進Verilog HDL語言的開展。基于Verilog HDL的優(yōu)越性,IEEE于19

10、95年制定了Verilog HDL的IEEE標準,即Verilog HDL 1364-1995。2001年發(fā)布了Verilog HDL 1364-2001標準。在這個標準中,參加了Verilog HDL-A標準,使Verilog有了模擬設(shè)計描述的能力。Superlog 開發(fā)一種新的硬件設(shè)計語言,總是有些冒險,而且未必能夠利用原來對硬件開發(fā)的經(jīng)驗。能不能在原有硬件描述語言的根底上,結(jié)合高級語言C、C+甚至Java等語言的特點,進行擴展,到達一種新的系統(tǒng)級設(shè)計語言標準呢? Superlog就是在這樣的背景下研制開發(fā)的系統(tǒng)級硬件描述語言6。Verilog語言的首創(chuàng)者Phil Moorby和

11、Peter Flake等硬件描述語言專家,在一家叫Co-Design Automation的EDA公司進行合作,開始對Verilog進行擴展研究。1999年,Co-Design公司發(fā)布了SUPERLOGTM系統(tǒng)設(shè)計語言,同時發(fā)布了兩個開發(fā)工具:SYSTEMSIMTM和SYSTEMEXTM。一個用于系統(tǒng)級開發(fā),一個用于高級驗證。2001年,Co-Design公司向電子產(chǎn)業(yè)標準化組織Accellera發(fā)布了SUPERLOG擴展綜合子集ESS,這樣它就可以在今天Verilog語言的RTL級綜合子集的根底上,提供更多級別的硬件綜合抽象級,為各種系統(tǒng)級的EDA軟件工具所利用。至今為止,已超過15家芯片設(shè)

12、計公司用Superlog來進行芯片設(shè)計和硬件開發(fā)。Superlog是一種具有良好前景的系統(tǒng)級硬件描述語言。但是不久前,由于整個IT產(chǎn)業(yè)的滑坡,EDA公司進行大的整合,Co-Design公司被Synopsys公司兼并,形勢又變得撲朔迷離。 SystemC 隨著半導(dǎo)體技術(shù)的迅猛開展,SoC已經(jīng)成為當(dāng)今集成電路設(shè)計的開展方向7。在系統(tǒng)芯片的各個設(shè)計中,像系統(tǒng)定義、軟硬件劃分、設(shè)計實現(xiàn)等,集成電路設(shè)計界一直在考慮如何滿足SoC的設(shè)計要求,一直在尋找一種能同時實現(xiàn)較高層次的軟件和硬件描述的系統(tǒng)級設(shè)計語言。 SystemC正是在這種情況下,由Synopsys公司和CoWare公司積極響

13、應(yīng)目前各方對系統(tǒng)級設(shè)計語言的需求而合作開發(fā)的。1999年9月27日,40多家世界著名的EDA公司、IP公司、半導(dǎo)體公司和嵌入式軟件公司宣布成立“開放式SystemC聯(lián)盟。著名公司Cadence也于2001年參加了SystemC聯(lián)盟。SystemC從1999年9月聯(lián)盟建立初期的0.9版本開始更新,從1.0版到1.1版,一直到2001年10月推出了最新的2.0版。1.3 研究背景及意義 數(shù)字頻率計是計算機、通訊設(shè)備、音頻視頻等科研生產(chǎn)領(lǐng)域不可缺少的測量儀器,并且與許多電參量的測量方案、測量結(jié)果都有十分密切的關(guān)系,因此,頻率的測量就顯得更為重要。在數(shù)字電路中,頻率計屬于時序電路,

14、它主要由具有記憶功能的觸發(fā)器構(gòu)成。在計算機及各種數(shù)字儀表中,都得到了廣泛的應(yīng)用。在CMOS電路系列產(chǎn)品中,頻率計是用量最大、品種很多的產(chǎn)品。 本文采用的是一種8 b數(shù)字頻率計測頻系統(tǒng),能夠用十進制數(shù)碼顯示被測信號的頻率的數(shù)字式頻率計,其設(shè)計原理簡單,電路實現(xiàn)方便,電路穩(wěn)定、精度高,大大的縮短了生產(chǎn)周期,具有體積小、可靠性高、功耗低等特點。1.4 研究內(nèi)容 本文以VHDL語言通過Quartus II軟件設(shè)計的一個能測量方波信號頻率的數(shù)字頻率計,測量結(jié)果通過計數(shù)器計數(shù),由鎖存器保存計數(shù)結(jié)果,用數(shù)碼現(xiàn)實管顯示其結(jié)果。頻率測量范圍為1HZ16MHZ,輸入信號電壓為50mv

15、5v,測量精度為10 Hz。 1.5 本章小結(jié) 本章主要簡述了數(shù)字頻率計的開展現(xiàn)狀,硬件描述語言的開展過程和數(shù)字頻率計的研究背景及其研究意義,最后簡述了本文的設(shè)計指標。2 數(shù)字頻率計的設(shè)計2.1設(shè)計框圖數(shù)字頻率計主要由五局部組成:分頻模塊、測頻控制模塊、鎖存模塊以及計數(shù)模塊、譯碼顯示模塊。原理框圖如圖2-1: 圖2-1 原理框圖信號整型電路:對被測信號進行放大整形處理; 分頻模塊: 把標準時基信號分頻得到閘門信號;測頻控制信號模塊:將閘門信號信號整形后,產(chǎn)生標準矩形波,送入計數(shù)器;計數(shù)模塊:對輸入的矩形波進行計數(shù),

16、并將結(jié)果送到鎖存器中;鎖存模塊:保存計數(shù)器輸出結(jié)果,保證系統(tǒng)穩(wěn)定顯示數(shù)據(jù);譯碼顯示模塊:將鎖存器輸出的二進制計數(shù)結(jié)果轉(zhuǎn)換成相應(yīng)能夠在七段數(shù)碼顯示管顯示的十進制結(jié)果,在數(shù)碼顯示管上可以看到頻率測量結(jié)果。2.2 方案選擇和論證2.2.1 整形放大電路被測信號經(jīng)過LM3900組成的兩級運算放大放大信號清晰無雜波,然后再經(jīng)過兩級由CD40106 組成的施密特電路整形,可以得到幅度為5V 的標準方波信號,然后送入計數(shù)器。此設(shè)計做到了既可以輸入微弱到30mV 的弱信號,又可以輸入50V 強信號;既可以輸入低到1Hz 的低頻信號,又可以輸

17、入高頻信號,這是很多數(shù)字頻率計很難做到的。如圖2.2所示 圖2.2 整形放大電路2.2.2 頻率測量方案方案一:采用測周期法。需要有標準信號的頻率fs,在待測信號的一個周期Tx內(nèi),記錄標準信號的周期數(shù)Ns,那么被測信號的頻率為:fx=fs/Ns 。這種方法的計數(shù)值會產(chǎn)生 1個脈沖誤差,并且測試精度與計數(shù)器中記錄的數(shù)值Ns有關(guān)。為了保證測試精度,測周期法僅適用于低頻信號的測量。 圖2.3 測周期法原理圖方案二:采用測頻法。測頻法8就是在確定的閘門時間Tw內(nèi),記錄被測信號的變化周期數(shù)或脈沖個數(shù)Nx,那么被測信號的頻率為:fx=Nx/Tw。

18、這種方法會產(chǎn)生 1個誤差,并且測試精度與計數(shù)器中記錄的數(shù)值Nx有關(guān),雖然精度降低,但能測量的最大頻率較高,且不會產(chǎn)生溢出。 圖2.4 測頻法原理圖本文要求測量頻率不是很高,精度也不是很高,所以采用方案二測頻法。2.2.3 周期測量方案方案一 直接周期測量法:用被測信號經(jīng)放大整形后形成的方波信號直接控制計數(shù)門控電路,使主門開放時間等于信號周期Tx,時標為Ts的脈沖在主門開放時間進入計數(shù)器。設(shè)在Tx期間計數(shù)值為N,可以根據(jù)以下公式來算得被測信號周期:Tx=N*Ts經(jīng)誤差分析,可得結(jié)論:用該測量法測量時,被測信號的頻率越高,測量誤差越大。采用對多個周期進行計數(shù)

19、取平均值的方法雖可提高精度,但如果用它測量0.1Hz信號時,每測一次至少要等待1000s,顯然是不可取的。方案二 等精度周期測量法:該方法在測量電路和測量精度上與直接周期測量完全相同,只是在進行計算時公式不同,在周期1/T代換頻率f即可,其計算公式為Tx=Ts*Ns/Nx從降低電路的復(fù)雜度及提高精度特別是高頻上考慮,適用范圍更廣泛。顯然,方案二遠好于方案一。因此,選用第二種方案等精度周期測量法。2.2.4 脈寬測量方案在進行脈沖寬度測量9時,首先經(jīng)信號處理電路進行處理,限制只有信號的50%幅度及其以上局部才能輸入數(shù)字測量局部。脈沖邊沿被處理得非常陡峭,然后送入測量計數(shù)器進行

20、測量。測量電路在檢測到脈沖信號的上升沿時翻開計數(shù)器,在下降沿是關(guān)閉計數(shù)器,設(shè)脈沖寬度為Twx,計算公式為Twx=Nx/fs。2.2.5 占空比測量方案測一次脈沖信號的脈寬,記錄其值為Twx1,然后將信號反相,再測一次脈寬并記錄其值為Twx1,然后將信號反相,再測一次脈寬并記錄起值為Twx2,通過下式計算占空比:占空比=Twx1/Twx1+Twx2*100%2.3 本章小結(jié)本章主要介紹了數(shù)字頻率計的原理框圖,以及各種測量方案的選擇與論證,加強了對電路知識的掌握。明確了設(shè)計思路,為軟件設(shè)計奠定了根底。3軟件設(shè)計3.1 工作原理工作原理是:當(dāng)系統(tǒng)正常工作時,脈沖發(fā)生器提

21、供標準的1HZ輸入信號,經(jīng)過測頻控制信號發(fā)生器進行信號的變換,產(chǎn)生計數(shù)信號。測量信號時,將標準信號經(jīng)分頻所得的閘門信號通過信號整形電路,產(chǎn)生矩形波送入計數(shù)模塊。計數(shù)模塊對輸入的矩形波進行計數(shù),并將計數(shù)結(jié)果送入鎖存器中,鎖存器的作用主要是為了保持計數(shù)結(jié)果及其穩(wěn)定顯示數(shù)據(jù)。顯示譯碼驅(qū)動電路將鎖存器輸出的二進制計數(shù)結(jié)果轉(zhuǎn)換成相應(yīng)的能夠在七段數(shù)碼顯示管顯示頻率測量結(jié)果。3.2 設(shè)計流程Altera公司的QuartusII軟件是一個完全集成化,易學(xué)易用的可編程邏輯器件設(shè)計和開發(fā)系統(tǒng),它提供一種真正與結(jié)構(gòu)無關(guān)的可編程邏輯設(shè)計環(huán)境。它所提供的靈活性和高效性是無可比較定,其豐富的圖形界面,輔之以完整

22、的可即時訪問的在線文檔,使設(shè)計人員能夠輕松愉快地掌握和使用該軟件。該軟件支持靈活多樣的輸入方式:原理圖輸入,硬件描述語言輸入,波形輸入以及層次設(shè)計輸入。QuartusII的設(shè)計輸入處理和校驗功能全部集成在統(tǒng)一的開發(fā)環(huán)境下,這樣可以加快動態(tài)調(diào)試進程。它提供豐富的庫單元供設(shè)計者使用,包括74系列的全部器件,多種特殊的邏輯宏功能macro-function和參數(shù)化功能模塊library of paramerterized module,LPM,但更為重要的是quartusII 還提供多種編輯輸入法,包括圖形輸入法,VHDL,VerilogHDL和AHDL的文本輸入法,符號編輯輸入法,以及內(nèi)

23、存編輯輸入法等。Quartus II的設(shè)計流程如圖4.1所示:    圖4.1  quartus II設(shè)計流程此外,Quartus II 軟件為設(shè)計流程的每個階段提供Quartus II 圖形用戶界面、EDA 工具界面以及命令行界面??梢栽谡麄€流程中只使用這些界面中的一個,也可以在設(shè)計流程的不同階段使用不同界面。顯示首次啟動Quartus II 軟件時出現(xiàn)的Quartus II 圖形用戶界面。Quartus II 圖形用戶界面如圖4.2所示 圖4.2  Quartu

24、s II 圖形用戶界面3.3 設(shè)計方法和規(guī)劃在建立新設(shè)計時,應(yīng)重視考慮Quartus II軟件提供的設(shè)計方法,包括自上而下或自下而上的漸進式設(shè)計流程以及基于模塊的設(shè)計流程。不管是否使用EDA設(shè)計輸入和綜合工具,都可以使用這些設(shè)計流程。Quartus II 軟件同時支持自上而下和自下而上的編譯流程10。在自上而下的編譯過程中,一個設(shè)計人員或者工程負責(zé)人在軟件中對整個設(shè)計進行編譯。不同的設(shè)計人員或者IP 提供者設(shè)計并驗證設(shè)計的不同局部,工程負責(zé)人在設(shè)計實體完成后將其參加到工程中。工程負責(zé)人從整體上編譯并優(yōu)化頂層工程。設(shè)計中完成的局部得到適配結(jié)果,當(dāng)設(shè)計的其他

25、局部改動時,其性能保持不變。自下而上的設(shè)計流程中,每個設(shè)計人員在各自的工程中對其設(shè)計進行優(yōu)化后,將每一個底層工程集成到一個頂層工程中。漸進式編譯提供導(dǎo)出和導(dǎo)入功能來實現(xiàn)這種設(shè)計方法。作為底層模塊設(shè)計人員,您可以針對他們的設(shè)計,導(dǎo)出優(yōu)化后的網(wǎng)表和一組分配( 例如LogicLock 區(qū)域)。然后,工程負責(zé)人將每一個設(shè)計模塊作為設(shè)計分區(qū)導(dǎo)入到頂層工程中。在這種情況下,工程負責(zé)人必須指導(dǎo)底層模塊設(shè)計人員,保證每一分區(qū)使用適當(dāng)?shù)钠骷Y源。在完整的漸進式編譯流程中,您應(yīng)該認識到,如果以前出于保持性能不變的原因而采用自下而上的方法,那么現(xiàn)在可以采用自上而下方法來到達同樣的目的。這一功能之

26、所以重要是出于兩方面的原因。第一,自上而下流程要比對應(yīng)的自下而上流程執(zhí)行起來簡單一些。例如,不需要導(dǎo)入和導(dǎo)出底層設(shè)計。第二,自上而下的方法為設(shè)計軟件提供整個設(shè)計的信息,因此,可以進行全局優(yōu)化。在自下而上的設(shè)計方法中,軟件在編譯每一個底層分區(qū)時,并不知道頂層設(shè)計其他分區(qū)的情況,因此,必須進行資源均衡和時序預(yù)算。自上而下漸進式編譯設(shè)計流程重新使用以前的編譯結(jié)果,確保只對修改正的設(shè)計重新編譯,因此能夠保持設(shè)計性能不變,節(jié)省編譯時間。自上而下的漸進式編譯流程在處理其他設(shè)計分區(qū)時,可以只修改設(shè)計中關(guān)鍵單元的布局,也可以只對設(shè)計的指定局部限定布局,使編譯器能夠自動優(yōu)化設(shè)計的其余局部,從而改良了時序。在編譯

27、過程中,編譯器將綜合和適配結(jié)果保存在工程數(shù)據(jù)庫中。第一次編譯之后,如果對設(shè)計做進一步的修改,只有改動過的分區(qū)需要重新編譯。完成設(shè)計修改后,您可以只進行漸進式綜合,節(jié)省編譯時間,也可以進行完整的漸進式編譯,不但能夠顯著節(jié)省編譯時間,而且還可以保持性能不變。在這兩種情況中,Quartus II 軟件為所選的任務(wù)合并所有的分區(qū)。由于漸進式編譯流程能夠防止編譯器跨分區(qū)邊界進行優(yōu)化,因此編譯器不會象常規(guī)編譯那樣對面積和時序進行大量優(yōu)化。為獲得最正確的面積和時序結(jié)果,建議您記錄設(shè)計分區(qū)的輸入和輸出,盡量將設(shè)計分區(qū)數(shù)量控制在合理范圍內(nèi),防止跨分區(qū)邊界建立過多的關(guān)鍵路徑,不要建立太小的分區(qū),如數(shù)量少

28、于1000的邏輯單元和自適應(yīng)邏輯模塊(ALM)分區(qū)。3.4 模塊電路程序設(shè)計3.4.1 分頻模塊程序設(shè)計LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FRE_DIVEDE IS   PORT(CLK_1K:IN STD_LOGIC;      CLK_1HZ:OUT STD_LOGIC);END FRE_DIVEDE;ARCHITECTURE RTL OF FRE_DIVEDE IS 

29、;  SIGNAL CNT1:INTEGER RANGE 0 TO 2048;BEGIN    PROCESS(CLK_1K)BEGIN   IF CLK_1K 'EVENT AND CLK_1K='1' THEN     IF CNT1=2047 THEN       CNT1<=0;       CLK_1HZ<='1&

30、#39;     ELSE       CNT1<=CNT1+1;       CLK_1HZ<='0'     END IF;   END IF;END PROCESS;END RTL;由源程序仿真,得到仿真波形,如圖3.1所示:其中 CLK_1K為外接輸入信號,經(jīng)分頻所的CLK_1HZ的輸出信號。    &

31、#160;                  圖3.1  分頻模塊仿真波形3.4.2 測頻控制信號模塊程序設(shè)計LIBRARY IEEE;-測頻控制信號模塊ZPKZHUSE IEEE.STD_LOGIC_1164.ALL USE IEEE.STD_LOGIC_UNSIGNED.ALL ENTITY ZPKZH ISPORT (CLK: IN STD_LOGIC

32、;-1HZJSEN: OUT STD_LOGIC;      -計數(shù)器時鐘使能CLR_JSH:OUT STD_LOGIC;   -計數(shù)器清零SCXH:OUT STD_LOGIC)      -輸出鎖存信號END ZPKZH;ARCHITECTURE BEHAV OF ZPKZH ISSIGNAL DIV2CLK:STD_LOGIC;BEGINPROCESS(CLK)BEGINIF CLK'EVENT AND CLK= '

33、1'THEN   -1HZ時鐘2分頻DIV2CLK<=NOT DIV2CLK;END IF;END PROCESS;PROCESS(CLK,DIV2CLK)BEGINIF CLK='1' AND DIV2CLK='1' THENCLR_JSH<='1'                     

34、; -產(chǎn)生計數(shù)器清零信號ELSE CLR_JSH<='0'END IF;END PROCESS;SCXH<= NOT DIV2CLK; JSEN<= DIV2CLK;END BEHAV;經(jīng)源程序仿真波形,得到如3.1圖所示波形:(整個仿真時間區(qū)域設(shè)為2us,時間軸周期為100ns)  其中控制信號時鐘CLK的頻率取1 Hz,而信號JSEN的脈寬恰好為1 s,可以用作閘門信號。此時,根據(jù)測頻的時序要求,可得出信號SCXH和CLR_JSH的邏輯描述。在計數(shù)完成后,即計數(shù)使能信號JSEN在1 s的高電平后,利用其反相值的上跳沿

35、產(chǎn)生一個鎖存信號SCXH,0.5 s后,CLR_JSH產(chǎn)生一個清零信號上跳沿。 圖3.2  測頻控制信號模塊波形仿真圖3.4.3 十進制計數(shù)模塊程序設(shè)計LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10B ISPORT (CLK : IN STD_LOGIC;      -定義計數(shù)信號RST: IN STD_LOGIC;  &#

36、160;          -定義復(fù)位信號EN: IN STD_LOGIC;              -定義使能信號CQ:OUT STD_LOGIC_VECTOR(31 DOWNTO 0);   -定義計數(shù)輸出信號END CNT10B;ARCHITECTURE BEHAV OF CNT10B IS  

37、60;        -結(jié)構(gòu)體SIGNAL CQI :STD_LOGIC_VECTOR(31 DOWNTO 0) BEGINPROCESS (CLK, RST, EN )BEGINIF RST ='1' THEN CQI<=(OTHERS=>'0');           -計數(shù)器復(fù)位ELSIF CLK'E

38、VENT AND CLK='1' THEN            -檢測時鐘上升沿IF EN ='1' THEN  CQI<=CQI+1;                   -允許計數(shù)END IF;END IF;END PROCE

39、SS;CQ<=CQI;END BEHAV;經(jīng)源程序仿真,得到以下的仿真波形,如3.3圖所示:其中此十進制計數(shù)器的特殊之處是,有一時鐘使能輸入端EN,用于鎖定計數(shù)值。當(dāng)高電平時計數(shù)允許,低電平時禁止計數(shù)。 圖3.3  八位十進制計數(shù)模塊波形仿真圖3.4.4 32位鎖存模塊程序設(shè)計LIBRARY IEEE;USE IEEE. STD_LOGIC_1164. ALL ENTITY SCQ32B ISPORT(SCXH: IN STD_LOGIC;DIN: IN STD_LOGIC_VECTOR(31 DOWNTO 0) DOUT:OUT STD

40、_LOGIC_VECTOR(31 DOWNTO 0) ) END SCQ32B ARCHITECTURE BEHAV OF SCQ32B ISBEGINPROCESS(SCXH ,DIN)BEGINIF SCXH' EVENT AND SCXH ='1' THEN DOUT<=DIN;END IF;END PROCESS;END BEHAV;由鎖存模塊源程序得到仿真波形如圖3.4所示:其中設(shè)置鎖存器的好處是,顯示的數(shù)據(jù)穩(wěn)定,不會由于周期性的清零信號而不斷閃爍。假設(shè)已有32位BCD碼存在于此模塊的輸入口,在信號SCX

41、H的上升沿后即被鎖存到存放器REG32B的內(nèi)部,并由REG32B的輸出端輸出,然后由實驗板上的7段譯碼器譯成能在數(shù)碼管上顯示輸出的相對應(yīng)的數(shù)值。 圖3.4  鎖存模塊仿真波形3.4.5 譯碼顯示模塊程序設(shè)計LIBRARY IEEE; -7 段顯示譯碼器LED7USE IEEE. STD_LOGIC_1164. ALL USE IEEE. STD_LOGIC_UNSIGNED. ALL ENTITY LED7 ISPORT(SIN: IN STD_LOGIC_VECTOR(3 DOWNTO 0) D:OUT

42、 STD_LOGIC_VECTOR(3 DOWNTO 0) ) END LED7;ARCHITECTURE  BEHAV  OF  LED7  ISBEGINPROCESS (SIN)BEGINCASE SIN ISWHEN"0000"=> D<="0000"WHEN"0001"=> D<="0001"WHEN"0010"=> D<="0010"WHEN"001

43、1"=> D<="0011"WHEN"0100"=> D<="0100"WHEN"0101"=> D<="0101"WHEN"0110"=> D<="0110"WHEN"0111"=> D<="0111"WHEN"1000"=> D<="1000"WHEN"1001"=>

44、 D<="1001"WHEN"1010"=> D<="1010"WHEN"1011"=> D<="1011"WHEN"1100"=> D<="1100"WHEN"1101"=> D<="1101"WHEN"1110"=> D<="1110"WHEN"1111"=> D<="

45、;1111"WHEN OTHERS => D<="0000"END CASE;END PROCESS;END BEHAV;經(jīng)源程序仿真,得到波形仿真如圖3.4所示:其中sin為輸入信號,把鎖存器中結(jié)果送入顯示電路中,由DOUT輸出結(jié)果并顯示出來。 圖3.4   7段顯示譯碼模塊仿真波形圖3.4.6 數(shù)字頻率計頂層源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY FREQTEST ISPORT (CLK1kHZ:IN STD_LOGIC;FSI

46、N:IN STD_LOGIC;DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0);AA:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) BB:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) CC:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) DD:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) EE:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) FF:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) 

47、GG:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) HH:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) END FREQTEST;ARCHITECTURE STRUC OF FREQTEST ISCOMPONENT ZPKZHPORT(CLK:IN STD_LOGIC;-1hzJSEN: OUT STD_LOGIC;-計數(shù)器時鐘使能CLR_JSH:OUT STD_LOGIC;-計數(shù)器清零SCXH:OUT STD_LOGIC) -輸出鎖存信號END COMPONENT COMPONENT FRE_DIV

48、EDEPORT(CLK_1K:IN STD_LOGIC;    CLK_1HZ:OUT STD_LOGIC);END COMPONENT;COMPONENT CNT10BPORT (CLK : IN STD_LOGIC;-定義計數(shù)信號RST: IN STD_LOGIC; -定義復(fù)位信號EN: IN STD_LOGIC; -定義使能信號CQ:OUT STD_LOGIC_VECTOR(31 DOWNTO 0);-定義計數(shù)輸出信號END COMPONENT COMPONENT SCQ32BPORT(SCXH: IN ST

49、D_LOGIC;DIN: IN STD_LOGIC_VECTOR(31 DOWNTO 0) DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0) ) END COMPONENT COMPONENT LED7PORT(SIN: IN STD_LOGIC_VECTOR(3 DOWNTO 0) D:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) END COMPONENT;SIGNAL TSTEN1:STD_LOGIC;SIGNAL CLR_CNT1:STD_LOGIC;SIGNAL

50、LOAD1:STD_LOGIC;SIGNAL CLOCK5:STD_LOGIC;SIGNAL DTO1:STD_LOGIC_VECTOR(31 DOWNTO 0);SIGNAL CARRY_OUT1:STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL DIN:STD_LOGIC_VECTOR(31 DOWNTO 0) SIGNAL DOUT1 :STD_LOGIC_VECTOR(31 DOWNTO 0) BEGINU1:ZPKZH PORT MAP (CLK=>clock5,JSEN=>TSTEN1,CLR_JSH=>

51、;CLR_CNT1,SCXH=>LOAD1);U2:SCQ32B PORT MAP (SCXH=>LOAD1,DIN=>DTO1,DOUT=>DOUT1);U3:CNT10B PORT MAP (CLK=>fsin,RST=>CLR_CNT1,EN=>TSTEN1,CQ=>DTO1);U4:FRE_DIVEDE PORT MAP(CLK_1K=>CLK1KHZ,CLK_1HZ=>CLOCK5);U5 :LED7 PORT MAP(SIN=> DOUT1(31 DOWNTO 28) ,D=&

52、gt; AA) U6 :LED7 PORT MAP(SIN=> DOUT1(27 DOWNTO 24) ,D=> BB) U7 :LED7 PORT MAP(SIN=> DOUT1(23 DOWNTO 20) ,D=> CC)  U8 :LED7 PORT MAP(SIN=> DOUT1(19 DOWNTO 16) ,D=> DD) U9 :LED7 PORT MAP(SIN=> DOUT1(15 DOWNTO 12) ,D

53、=> EE) U10 :LED7 PORT MAP(SIN=> DOUT1(11 DOWNTO 8) ,D=> FF) U11 :LED7 PORT MAP(SIN=> DOUT1(7 DOWNTO 4) ,D=> GG) U12 :LED7 PORT MAP(SIN=> DOUT1(3 DOWNTO 0) ,D=> HH) END STRUC;由頂層源程序仿真,得到仿真波形如圖3.5所示:測量頻率結(jié)果為1024HZ,其中CLK為1HZ輸入信號,F(xiàn)SIN

54、為計數(shù)脈沖,AA,BB,CC,DD,EE,F(xiàn)F,GG,HH為八位數(shù)字頻率計顯示信號,HH為最低位,AA位最高位。該波形能顯示1HZ16MHZ頻率。 圖3.5  頻率計頂層文件波形由頂層源程序生成的RTL電路圖如圖3.6所示: 圖3.3  數(shù)字頻率計頂層電路圖3.5 本章小結(jié)本章主要介紹了用軟件編寫程序?qū)?shù)字頻率計進行設(shè)計。首先介紹了應(yīng)用QuartusII軟件的設(shè)計流程及其設(shè)計方法,其次用VHDL語言編寫數(shù)字頻率計各模塊程序及其波形仿真,得出最終設(shè)計電路圖。通過本章的學(xué)習(xí)對VHDL編程有了深入的了解,對學(xué)習(xí)一門語言有了一定的根

55、底。4 電路仿真4.1  設(shè)計輸入一個Quartus II的工程由所有設(shè)計文件和設(shè)計有關(guān)的設(shè)置組成。設(shè)計者可以使用Quartus II的 Block Editor,Text Editor,MegaWizard Plug-InManager(Tools菜單)和EDA設(shè)計輸入工具建立包括Altera宏功能模塊,參數(shù)化模塊庫PLM函數(shù)和知識產(chǎn)權(quán)IP函數(shù)在內(nèi)設(shè)計。其步驟如下:1編輯設(shè)計文件建立工作庫目錄文件夾為D:/200414012123/sheji/,以便設(shè)計工程工程的儲存,任何一項設(shè)計都是一項工程PROJECT,都必須首先為此工程建立一個放置與此工程相關(guān)的所有文件的

56、文件夾,此文件夾D:/200414012123/sheji/將被EDA軟件默認為工作庫Word library,不同的設(shè)計工程最好放在不同的文件夾中,同一工程的所有文件都必須放在同一個文件夾中。輸入源程序。翻開Quartus II,選擇File|New命令。在New窗口中的Device design file中選擇硬件設(shè)計文件類型為VHDL FILE,然后在VHDL文本編輯窗口輸入頻率計頂層VHDL源程序sheji,如圖4.3所示。 圖4.3  VHDL文本編輯窗口文件存盤。選擇File|Save as命令,找到已設(shè)立的文件夾D:/200414012123/sheji/,存

57、盤文件名應(yīng)與實體名一致。2建立工程工程使用New project wizardFile菜單建立新工程。編輯新工程時,可以為工程指定工作目錄,指定工程名稱以及指定頂層設(shè)計實體的名稱。還可以指定要在工程中使用設(shè)計文件,其他源文件,用戶庫和EDA工具,以及目標器件或者讓Quartus II軟件自動選擇。其步驟如下:選擇File|New project wizard命令,在對話框中輸入存盤路徑,再按Next;將設(shè)計文件參加工程中,單擊下方的NEXT按鈕,在彈出的對話框中單擊File中的文件,將與工程相關(guān)的所有VHDL文件參加工程中,再單擊Next;選擇仿真器和綜合器。在彈出的對話框中選擇仿真器和綜合類

58、型,如果都選None,表示選Quartus II 中自帶的仿真器和綜合器,在單擊Next;選擇目標芯片。再單擊Next;彈出“工程設(shè)置統(tǒng)計對話框。最后單擊Finish,設(shè)置結(jié)束。4.2 編譯綜合QUARTUS II編譯器是由一系列處理模塊構(gòu)成,這些模塊負責(zé)對設(shè)計工程檢錯,邏輯綜合,結(jié)構(gòu)綜合,輸出結(jié)果的編譯配置,以及時序分析。在這一過程中將設(shè)計工程適配到CPLD/FPGA器件中,同時產(chǎn)生多種用途的輸出文件,如功能能夠和時序仿真,器件編譯的目標文件等。編譯器首先從工程設(shè)計文件間的層次描述中提取信息,每個低層次文件中的錯誤信息工設(shè)計者排除。而后將這些層次構(gòu)建一個結(jié)構(gòu)化的,以網(wǎng)表文

59、件表達的電路原理圖文件,并把各層次中所有文件結(jié)合成一個數(shù)據(jù)包,以便更有效地處理。編譯前,設(shè)計者可以通過各種不同的設(shè)置,告訴編譯器使用各種不同的綜合和適配技術(shù),以便提高設(shè)計工程的工作速度。在編譯過程中以及編譯完成后,設(shè)計者可從編譯報告窗中獲取詳細的編譯結(jié)果,以便及時調(diào)整設(shè)計方案。上面工作做好后,執(zhí)行Quartus II主窗口的Processing菜單的Start compilation選項,啟動全程編譯,編譯成功后的工程管理窗口如圖4.4 所示。 圖4.4   VHDL的全編譯界面編譯過程中應(yīng)注意工程管理窗下方的Processing欄中的編譯信息。如果編譯

60、成功,可得到上圖所示的界面,此界面左上角是工程管理窗口,顯示了此工程的結(jié)構(gòu)和使用的邏輯宏單元數(shù),最下方是編譯處理信息,中間Compilation report欄是編譯報告工程選擇菜單,單擊其中各項可了解編譯和分析結(jié)果,例如最右邊的Flow summary欄,那么顯示硬件耗用統(tǒng)計報告。4.3 仿真測試該工程編譯通過后,必須對其功能和時序性能進行仿真測試,以驗證設(shè)計結(jié)果是否滿足設(shè)計要求。整個時序仿真測試流程一般有建立波形文件,輸入信號節(jié)點,設(shè)置波形參數(shù),編輯輸入信號,波形文件存盤,波形仿真器和分析仿真波形等步驟?,F(xiàn)給出.VWF文件方式的仿真測試流程。1建立仿真測試波形文件選擇Quartu

61、s II 主窗口的File菜單的New選項,在彈出的文件類型編輯對話框中,選擇Other files中的Vector weaveform file項,單擊ok按鈕,即出現(xiàn)如圖4.5所示的波形文件編輯窗口。  圖4.5  波形文件編輯窗口2設(shè)置仿真時間區(qū)域?qū)τ跁r序仿真測試來說,將仿真時間設(shè)置在一個合理的時間區(qū)域內(nèi)的十分必要的,通常設(shè)置時間區(qū)域?qū)⒁暰唧w的設(shè)計工程而定。本例設(shè)計中整個仿真區(qū)域設(shè)為10S,時間軸為500MS,其設(shè)置步驟是在EDIT菜單中選擇end time,在彈出窗口中time處填入10,單位選擇S,同理在gride size中tmie period輸入500MS,單擊OK按鈕,設(shè)置結(jié)束。(3)輸入工

溫馨提示

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

評論

0/150

提交評論