eda課程設計數(shù)字頻率計_第1頁
eda課程設計數(shù)字頻率計_第2頁
eda課程設計數(shù)字頻率計_第3頁
eda課程設計數(shù)字頻率計_第4頁
eda課程設計數(shù)字頻率計_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程設計說明書1 緒論eda技術是以大規(guī)??删幊踢壿嬈骷樵O計載體,以硬件語言為系統(tǒng)邏輯描述的主要方式,以計算機、大規(guī)??删幊踢壿嬈骷拈_發(fā)軟件及實驗開發(fā)系統(tǒng)為設計工具,通過有關的開發(fā)軟件,自動完成用軟件設計的電子系統(tǒng)到硬件系統(tǒng)的設計,最終形成集成電子系統(tǒng)或專用集成芯片的一門新技術。其設計的靈活性使得eda技術得以快速發(fā)展和廣泛應用。本文以quartus軟件為設計平臺,采用vhdl語言實現(xiàn)數(shù)字頻率計的整體設計。1.1 eda簡介eda是電子設計自動化(electronic design automation)縮寫,是90年代初從cad(計算機輔助設計)、cam(計算機輔助制造)、cat(計算機

2、輔助測試)和cae(計算機輔助工程)的概念發(fā)展而來的。eda技術是以計算機為工具,根據(jù)硬件描述語言hdl(hardware description language)完成的設計文件,自動地完成邏輯編譯、化簡、分割、綜合及優(yōu)化、布局布線、仿真以及對于特定目標芯片的適配編譯和編程下載等工作。典型的eda工具中必須包含兩個特殊的軟件包,即綜合器和適配器。綜合器的功能就是將設計者在eda平臺上完成的針對某個系統(tǒng)項目的vhdl、原理圖或狀態(tài)圖形描述,針對給定的硬件系統(tǒng)組件,進行編譯、優(yōu)化、轉換和綜合,最終獲得我們欲實現(xiàn)功能的描述文件。綜合器在工作前,必須給定所要實現(xiàn)的硬件結構參數(shù),它的功能就是將軟件描述

3、與給定的硬件結構用一定的方式聯(lián)系起來。也就是說,綜合器是軟件描述與硬件實現(xiàn)的一座橋梁。綜合過程就是將電路的高級語言描述轉換低級的、可與目標器件fpga/cpld相映射的網(wǎng)表文件。 適配器的功能是將由綜合器產(chǎn)生的王表文件配置與指定的目標器件中,產(chǎn)生最終的下載文件,如jed文件。適配所選定的目標器件(fpga/cpld芯片)必須屬于在綜合器中已指定的目標器件系列。 硬件描述語言hdl是相對于一般的計算機軟件語言,如:c、pascal而言的。hdl語言使用與設計硬件電子系統(tǒng)的計算機語言,它能描述電子系統(tǒng)的邏輯功能、電路結構和連接方式。設計者可利用hdl程序來描述所希望的電路系統(tǒng),規(guī)定器件結構特征和電

4、路的行為方式;然后利用綜合器和適配器將此程序編程能控制fpga和cpld內(nèi)部結構,并實現(xiàn)相應邏輯功能的的門級或更底層的結構網(wǎng)表文件或下載文件。目前,就fpga/cpld開發(fā)來說,比較常用和流行的hdl主要有abel-hdl、ahdl和vhdl。1.2 基于eda工具的fpga/cpld開發(fā)流程 1.文本/原理圖編輯與修改。首先利用eda工具的文本或圖形編輯器將設計者的設計意圖用文本(abel-hdl程序)或圖形方式(原理圖或狀態(tài)圖)表達出來2.編譯。完成設計描述后即可通過編譯器進行排錯編譯,變成特定的文本格式,為下一步的綜合做準備。 3.綜合。這是將軟件設計與硬件的可實現(xiàn)性掛鉤,是將軟件轉化為

5、硬件電路的關鍵步驟。綜合后hdl綜合器可生成enif、xnf或vhdl等格式的網(wǎng)表文件,他們從門級開始描述了最基本的門電路結構。 4.行為仿真和功能仿真。利用產(chǎn)生的網(wǎng)表文件進行功能仿真,以便了解設計描述與設計意圖的一致性。(該步驟可以略去) 5.適配。利用fpga/cpld布局布線適配器將綜合后的網(wǎng)表文件針對某一具體的目標器件進行邏輯映射操作,其中包括底層器件配置、邏輯分割、邏輯優(yōu)化、布局布線。該操作完成后,eda軟件將產(chǎn)生針對此項設計的適配報告和jed下載文件等多項結果。適配報告指明了芯片內(nèi)資源的分配與利用、引腳鎖定、設計的布爾方程描述情況。 6.功能仿真和時序仿真。該不妨真實接近真實器件運

6、行的方針,仿真過程已將器件的硬件特性考慮進去了,因此仿真精度要高的多。(該步驟也可略去) 7.下載。如果以上的所有過程都沒有發(fā)現(xiàn)問題,就可以將適配器產(chǎn)生的下載文件通過fpga/cpld下載電纜載入目標芯片fpga或cpld中。 8.硬件仿真與測試。2 數(shù)字頻率計的設計分析2.1 數(shù)字頻率計的工作原理數(shù)碼管顯示 計數(shù)器鎖存器譯碼驅動電路預測信號測頻控制信號發(fā)生器圖2-1 數(shù)字頻率計原理框圖眾所周知,頻率信號易于傳輸,抗干擾性強,可以獲得較好的測量精度。因此,頻率檢測是電子測量領域最基本的測量之一。頻率計的基本原理是用一個頻率穩(wěn)定度高的頻率源作為基準時鐘,對比測量其他信號的頻率。通常情況下計算每秒

7、內(nèi)待測信號的脈沖個數(shù),即閘門時間為1s。閘門時間可以根據(jù)需要取值,大于或小于1s都可以。閘門時間越長,得到的頻率值就越準確,但閘門時間越長,則每測一次頻率的間隔就越長。閘門時間越短,測得的頻率值刷新就越快,但測得的頻率精度就受影響。一般取1s作為閘門時間。數(shù)字頻率計的關鍵組成部分包括測頻控制信號發(fā)生器、計數(shù)器、鎖存器、譯碼驅動電路和顯示電路,其原理框圖如圖2-1所示。2.2 設計分析2.2.1 測頻控制信號發(fā)生器測頻控制信號發(fā)生器產(chǎn)生測量頻率的控制時序,是設計頻率計的關鍵。這里控制信號clk取為1hz,2分頻后就是一個脈寬為1s的使能信號en,用來作為計數(shù)閘門信號。測頻控制信號發(fā)生器封裝圖如圖

8、2-2所示。圖2-2 測頻控制信號發(fā)生器封裝圖測頻控制信號發(fā)生器程序源代碼如下:library ieee;use ieee.std_logic_1164.all;entity shineng isport(clk,rst:in std_logic;en:buffer std_logic);end shineng;architecture bhv of shineng isbeginprocess(clk,rst)beginif rst=1 thenen=0;elsif clkevent and clk=1 thenen=not en;end if;end process;end bhv;圖2-

9、3 測頻控制信號發(fā)生器測頻控制信號發(fā)生器仿真圖如圖2-3所示。以上為測頻控制信號發(fā)生器仿真圖,仿真圖中clk為基準信號,rst為復位端。復位端有效時,en輸出為零。en為使能端,當clk為1hz輸入信號時,輸出en為0.5hz的信號即1s高電平信號。2.2.2 計數(shù)器計數(shù)器以使能信號en作為時鐘,當en為高電平時開始計數(shù);在en的下降沿,產(chǎn)生一個鎖存信號,用來鎖存數(shù)據(jù),鎖存數(shù)據(jù)后,還要在下次en上升沿到來之前產(chǎn)生清零信號,為下次計數(shù)做準備,清零信號是en為低電平時有效。在清零信號到來時,異步清零;en為高電平時再次開始計數(shù)。本文設計的計數(shù)器計數(shù)最大值是9999999。由于計數(shù)器和鎖存器共同由測

10、頻器控制模塊控制因此可以將計數(shù)器和鎖存器看成一個環(huán)節(jié),因此計數(shù)器和鎖存器的仿真圖如圖2-5所示。2.2.3 鎖存器當鎖存信號即en下降沿到來時,將計數(shù)器的計數(shù)值鎖存,這樣可由外部的七段譯碼器譯碼并在數(shù)碼管上顯示。設置鎖存器的好處是使顯示的數(shù)據(jù)穩(wěn)定,不會由于周期性的清零信號而不斷閃爍。鎖存器的位數(shù)應跟計數(shù)器完全一樣,均是28位。計數(shù)器模塊和鎖存器模塊封裝圖如圖2-4所示。圖2-4 計數(shù)器模塊和鎖存器模塊封裝圖計數(shù)器模塊和鎖存器模塊程序源代碼如下所示。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;e

11、ntity count isport(rst,en,input:in std_logic;number1,number2,number3,number4,number5,number6,number7:out std_logic_vector(3 downto 0);ov:buffer std_logic);end count;architecture bhv of count isbeginprocess(input,rst,en)variable temp1,temp2,temp3,temp4,temp5,temp6,temp7:std_logic_vector(3 downto 0);b

12、eginif rst=1 then temp1:=0000;temp2:=0000;temp3:=0000;temp4:=0000;temp5:=0000;temp6:=0000;temp7:=0000;ov=0;elsif en=1 thenif inputevent and input=1 thentemp1:=temp1+1;if temp1=1010 thentemp1:=0000;temp2:=temp2+1;if temp2=1010 thentemp2:=0000;temp3:=temp3+1;if temp3=1010 thentemp3:=0000;temp4:=temp4+

13、1;if temp4=1010 thentemp4:=0000;temp5:=temp5+1;if temp5=1010 thentemp5:=0000;temp6:=temp6+1;if temp6=1010 thentemp6:=0000;temp7:=temp7+1;if temp7=1010 thentemp7:=0000;ov=1;end if;end if;end if;end if;end if;end if;end if;end if;else temp1:=0000;temp2:=0000;temp3:=0000;temp4:=0000;temp5:=0000;temp6:=

14、0000;temp7:=0000;ov=0;end if;number1=temp1;number2=temp2;number3=temp3;number4=temp4;number5=temp5;number6=temp6;number7=temp7;end process;end bhv;圖2-5 計數(shù)器模塊和鎖存器模塊仿真圖以上為計數(shù)器模塊和鎖存器模塊仿真圖。仿真圖中rst為復位端,當復位端有效時,計數(shù)值清零。input為輸入待測信號,en為使能端,當en=1且input上升沿時開始計數(shù),en=0時清零計數(shù)值,進程結束前鎖存數(shù)據(jù)。2.2.4 譯碼驅動和數(shù)碼管顯示電路本次課程設計采用實驗箱

15、模式5,模式5自帶譯碼驅動電路,譯碼輸出接數(shù)碼管顯示,即每一個數(shù)碼管的輸入分別接到譯碼驅動電路的輸出。本次課程設計采用4個共陰極數(shù)碼管來顯示待測頻率的數(shù)值,其顯示范圍從09999999。數(shù)碼管顯示電路封裝圖如圖2-6所示。圖2-6 數(shù)碼管顯示電路封裝圖以下是數(shù)碼管顯示的程序源代碼: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity show isport(en,rst:in std_logic;number1,number2,number3,number4,number5,number

16、6,number7:std_logic_vector(3 downto 0);show1,show2,show3,show4,flag:out std_logic_vector(3 downto 0);ov:buffer std_logic);end show;architecture bhv of show isbeginprocess(rst,en)beginif rst=1 thenshow1=0000;show2=0000;show3=0000;show4=0000;flag=0000;elsif enevent and en=0 thenif ov=1 thenshow1=1110;

17、show2=1010;show3=1010;show4=0000;flag0000thenshow1=number7;show2=number6;show3=number5;show4=number4;flag0000 thenshow1=number6;show2=number5;show3=number4;show4=number3;flag0000 thenshow1=number5;show2=number4;show3=number3;show4=number2;flag=0001;else show1=number4;show2=number3;show3=number2;show

18、4=number1;flag=0000;end if;end if;end process;end bhv;數(shù)碼管顯示模塊仿真圖如圖2-7所示。以下便是數(shù)碼管顯示模塊仿真圖,在仿真圖中number7number1為計數(shù)和鎖存環(huán)節(jié)的輸出。ov即作為輸入又作為輸出,當輸入待測信號的頻率足夠大,以至于超過測頻器的最大量程時,ov作為輸出且為1。當ov=1時,show4show1以及flag標志位共同顯示error。rst為復位端,當rst為1時,show輸出均為零。en為使能端,在前面幾個模塊中,en=1時開始計數(shù),en=0時清零記錄數(shù)值,而在en下降沿時將記錄的數(shù)值,送到輸出show。以此做到不斷

19、記錄數(shù)據(jù),保存數(shù)據(jù),刷新數(shù)據(jù)等,反復循環(huán)測量待測信號頻率的目的。圖2-7 數(shù)碼管顯示模塊仿真圖鑒于篇幅問題,總體設計仿真圖分析將在本章分析,望讀者諒解。總體設計仿真圖中,clk是基準信號,其二分頻得到en使能信號,input為輸入待測信號,rst為復位端,當rst=1時,en=0,輸出show均為零。en=1時,當待測輸入信號為上升沿開始計數(shù),倘若超過9999999,則ov=1,如果ov=1則show4show1以及flag標志位共同顯示error。計數(shù)進程結束前鎖存數(shù)據(jù)。將記錄數(shù)據(jù)鎖存到總體設計進程中的定義number1number7中,在en下降沿再將number1number7按照程序中

20、的要求,送到show4show1以及flag標志位。flag顯示自動調(diào)檔的檔次。綜上所述,本次eda設計利用vhdl語言詳盡準確的做到了測量待測信號頻率。本次設計可謂做到了,言簡意賅,程序流程簡明扼要,易于讀者分析,各個模塊化設計正是遵循了eda設計的自上而下,逐步細化的設計原理。并且本次設計的一大原理就是可以實時的根據(jù)現(xiàn)況,任意測量待測輸入信號的頻率,量程可以任意調(diào)整,鑒于本次要求,制作了最大量程為10mbhz的測頻器,稍加修改便可做到任意量程的測頻器。當然本次設計還有很多不足之處,望批評指正。3 總體設計以上模塊分別為測頻控制模塊,計數(shù)模塊,鎖存模塊,顯示模塊綜合以上模塊分析,予以分析綜合

21、如下,可得整體設計封裝圖如圖3-1所示。圖3-1 整體設計封裝圖總體設計程序源代碼如下所示:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity freq isport(clk,rst,input:in std_logic;show1,show2,show3,show4,flag:out std_logic_vector(3 downto 0);ov:buffer std_logic);end freq;architecture bhv of freq issignal en:std_lo

22、gic;signal number1,number2,number3,number4,number5,number6,number7:std_logic_vector(3 downto 0);beginshineng:process(clk,rst)beginif rst=1 thenen=0;elsif clkevent and clk=1 thenen=not en;end if;end process shineng;count:process(input,rst,en)variable temp1,temp2,temp3,temp4,temp5,temp6,temp7:std_logi

23、c_vector(3 downto 0);beginif rst=1 then temp1:=0000;temp2:=0000;temp3:=0000;temp4:=0000;temp5:=0000;temp6:=0000;temp7:=0000;ov=0;elsif en=1 thenif inputevent and input=1 thentemp1:=temp1+1;if temp1=1010 thentemp1:=0000;temp2:=temp2+1;if temp2=1010 thentemp2:=0000;temp3:=temp3+1;if temp3=1010 thentem

24、p3:=0000;temp4:=temp4+1;if temp4=1010 thentemp4:=0000;temp5:=temp5+1;if temp5=1010 thentemp5:=0000;temp6:=temp6+1;if temp6=1010 thentemp6:=0000;temp7:=temp7+1;if temp7=1010 thentemp7:=0000;ov=1;end if;end if;end if;end if;end if;end if;end if;end if;else temp1:=0000;temp2:=0000;temp3:=0000;temp4:=00

25、00;temp5:=0000;temp6:=0000;temp7:=0000;ov=0;end if;number1=temp1;number2=temp2;number3=temp3;number4=temp4;number5=temp5;number6=temp6;number7=temp7;end process count;show:process(rst,en)beginif rst=1 thenshow1=0000;show2=0000;show3=0000;show4=0000;flag=0000;elsif enevent and en=0 thenif ov=1 thensh

26、ow1=1110;show2=1010;show3=1010;show4=0000;flag0000thenshow1=number7;show2=number6;show3=number5;show4=number4;flag0000 thenshow1=number6;show2=number5;show3=number4;show4=number3;flag0000 thenshow1=number5;show2=number4;show3=number3;show4=number2;flag=0001;else show1=number4;show2=number3;show3=num

27、ber2;show4=number1;flag=0000;end if;end if;end process show;end bhv;圖3-2總體設計仿真圖總體設計仿真圖如圖3-2所示。經(jīng)過了分析軟件,查詢相關資料,編寫程序,編譯,綜合,適配,仿真,下一步便是下載的關鍵步驟即引腳鎖定。引腳鎖定的好壞直接影響下載的成功與否,更應符合讀者的觀看習慣。已達到一目了然,清晰理解的目的。鑒于此,先將總體設計的引腳設計安排如下:本次課程設計的引腳圖如圖3-3所示。圖3-3 總體設計的引腳鎖定clk信號利用clock2產(chǎn)生1hz基準信號,同理輸入待測信號input接clock0即可產(chǎn)生實驗箱上的部分信號,

28、也可直外接信號發(fā)生器。以便達到測量任意輸入信號的目的。溢出信號ov接二極管,由二極管的亮滅,來判斷是否溢出。此外由show4show1以及flag標志位共同顯示error。以致告訴使用者應減少輸入信號頻率,或者修改程序以便更大的增大待測信號的量程。使得適應性更加的廣泛。4 設計總結本次課程設計采用eda設計方法,把數(shù)字頻率計系統(tǒng)組建分解成若干個功能模塊進行設計描述,選用altera公司生產(chǎn)的fpga產(chǎn)品acex1k系列ep1k30tc144-3芯片,下載適配后,便可以在數(shù)碼管上顯示出待測頻率的數(shù)值。經(jīng)編譯,綜合,適配,下載到實驗箱,其軟件設計思想清晰,硬件電路簡單,具有一定的實用性。通過這次課程設計,我感受到了vhdl功能的強大,享受到了其中的樂趣。通過這次課程設計,使我感受到了什么是“紙上得來終覺淺,覺知此事要躬行”,平時不下一番苦功夫是學不好的。我們必須要養(yǎng)成嚴謹求學的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論