頻率計設計報告_第1頁
頻率計設計報告_第2頁
頻率計設計報告_第3頁
頻率計設計報告_第4頁
頻率計設計報告_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、畢業(yè)設計論文 數(shù)字頻率計設計目錄緒論:緒論: .1 1第一章第一章 概述概述 .2 21.1 設計概述 .21.2 設計目的 .21.3 設計內(nèi)容 .21.4 設計原理 .31.5 設計功能 .3第二章第二章 數(shù)字頻率計的設計思路數(shù)字頻率計的設計思路 .4 42.1 時基的設計 .42.2 計數(shù)器的設計 .52.3 模塊的劃分 .5第三章第三章 數(shù)字頻率計各模塊的設計和實現(xiàn)數(shù)字頻率計各模塊的設計和實現(xiàn) .6 63.1 計數(shù)器的設計和實現(xiàn) .63.2 7 段譯碼器的設計.83.3 數(shù)字頻率計綜合設計 .9第四章第四章 數(shù)字頻率計波形仿真數(shù)字頻率計波形仿真 .15154.1 省略分頻進程 .154

2、.2 10KHZ、100KHZ和 1MHZ三擋仿真 .154.3 測周期擋仿真 .17第五章第五章 調(diào)試常見錯誤及解決辦法調(diào)試常見錯誤及解決辦法 .19195.1 常見錯誤與解決辦法 .19總結(jié)總結(jié) .2020致謝致謝 .2121附錄附錄 .2222附錄 A MAX+PLUS簡介.22附錄 B 軟件的安裝.23附錄 C 軟件組成.23附錄 D 設計流程.24參考文獻參考文獻 .2525畢業(yè)設計論文 數(shù)字頻率計設計緒論:緒論:隨著電子技術的發(fā)展,當前數(shù)字系統(tǒng)的設計正朝著速度快、容量大、體積小、重量輕的方向發(fā)展。推動該潮流迅猛發(fā)展的引擎就是日趨進步和完善的設計技術。目前數(shù)字頻率計的設計可以直接面向

3、用戶需求,根據(jù)系統(tǒng)的行為和功能要求,自上至下的逐層完成相應的描述、綜合、優(yōu)化、仿真與驗證,直到生成器件。上述設計過程除了系統(tǒng)行為和功能描述以外,其余所有的設計過程幾乎都可以用計算機來自動地完成,也就是說做到了電子設計自動化(EDA) 。這樣做可以大大地縮短系統(tǒng)的設計周期,以適應當今品種多、批量小的電子市場的需求,提高產(chǎn)品的競爭能力。電子設計自動化(EDA)的關鍵技術之一是要求用形式化方法來描述數(shù)字系統(tǒng)的硬件電路,即要用所謂硬件描述語言來描述硬件電路。所以硬件描述語言及相關的仿真、綜合等技術的研究是當今電子設計自動化領域的一個重要課題。硬件描述語言的發(fā)展至今已有幾十年的歷史,并已成功地應用到系統(tǒng)

4、的仿真、驗證和設計綜合等方面。到本世紀 80 年代后期,已出現(xiàn)了上百種的硬件描述語言,它們對設計自動化起到了促進和推動作用。但是,它們大多各自針對特定設計領域,沒有統(tǒng)一的標準,從而使一般用戶難以使用。廣大用戶所期盼的是一種面向設計的多層次、多領域且得到一致認同的標準的硬件描述語言。80 年代后期由美國國防部開發(fā)的 VHDL 語言(VHSIC HardwareDescription Language)恰好滿足了上述這樣的要求,并在 1987 年 12 月由 IEEE 標準化(定為 IEEE std 1076-1987 標準,1993年進一步修訂,被定為 ANSI/IEEE std 1076-19

5、93 標準) 。它的出現(xiàn)為電子設計自動化(EDA)的普及和推廣奠定了堅實的基礎。據(jù) 1991 年有關統(tǒng)計表明,VHDL 語言業(yè)已被廣大設計者所接受。另外,眾多的 CAD 廠商也紛紛使自己新開發(fā)的電子設計軟件與 VHDL 語言兼容。由此可見,使用 VHDL 語言來設計數(shù)字系統(tǒng)是電子設計技術的大勢所趨。第一章 概述 畢業(yè)設計論文第一章第一章 概述概述1.11.1 設計概述設計概述所謂頻率,就是周期性信號在單位時間(1s)里變化的次數(shù)。本數(shù)字頻率計的設計思路是:1.根據(jù)頻率計的測頻原理,可以選擇合適的時基信號即閘門時間,對輸入被測信號脈沖進行計數(shù),實現(xiàn)測頻的目的。2.根據(jù)數(shù)字頻率計的基本原理,本文設

6、計方案的基本思想是分為五個模塊來實現(xiàn)其功能,即整個數(shù)字頻率計系統(tǒng)分為分頻模塊、控制模塊、計數(shù)模塊、譯碼模塊和量程自動切換模塊等幾個單元,并且分別用 VHDL 對其進行編程,實現(xiàn)了閘門控制信號、計數(shù)電路、鎖存電路、顯示電路等。3.在進行設計之前,首先搞清楚在什么情況下是測頻率,在什么情況下是測周期,其實就是一個選擇合適的時基信號的問題。在這個設計中,要在頻率計提供的時基信號和輸入信號之間做出選擇,充當時基信號即閘門時間。當測頻率的時候,要以輸入信號作為時鐘信號,因為輸入信號的頻率大于頻率計提供的基準頻率,在頻率計提供的基準信號周期內(nèi),計算輸入信號的周期數(shù)目,再乘以頻率計基準頻率,就是輸入信號的頻

7、率值了。此時的時基信號為頻率計的基準信號。當測周期的時候,要以頻率計提供的基準信號作為時鐘信號,因為頻率計提供的時基頻率大于輸入信號的頻率,在輸入信號周期內(nèi),計算頻率計提供的基準信號的周期數(shù)目,再乘以基準信號頻率,就是輸入信號的周期值了。此時的時基信號為輸入信號。1.21.2 設計設計目的目的1.學會利用 MAX+PLUS進行層次化設計;2.練習混合設計設計輸入的方法;3.鞏固用試驗箱驗證設計的方法。1.31.3 設計內(nèi)容設計內(nèi)容分析數(shù)字頻率計的功能,完成功能模塊的劃分,分別用 VHDL 語言完成底層模塊的設計和以原理圖的方法完成頂層模塊的設計,分別對各個模塊以及頂層模塊進行仿真分析,最后在硬

8、件開發(fā)平臺上進行測試。畢業(yè)設計論文 數(shù)字頻率計設計1.41.4 設計原理設計原理眾所周知,頻率信號易于傳輸,抗干擾性強,可以獲得較好的測量精度。因此,頻率檢測是電子測量領域最基本的測量之一。頻率計的基本原理是用一個頻率穩(wěn)定度高的頻率源作為基準時鐘,對比測量其他信號的頻率。通常情況下計算每秒內(nèi)待測信號的脈沖個數(shù),即閘門時間為 1 s。閘門時間可以根據(jù)需要取值,大于或小于 1 s 都可以。閘門時間越長,得到的頻率值就越準確,但閘門時間越長,則每測一次頻率的間隔就越長。閘門時間越短,測得的頻率值刷新就越快,但測得的頻率精度就受影響。一般取 1 s 作為閘門時間。 數(shù)字頻率計的關鍵組成部分包括測頻控制

9、信號發(fā)生器、計數(shù)器、鎖存器、譯碼驅(qū)動電路和顯示電路,其原理框圖如圖 1 所示。1.51.5 設計功能設計功能3 位數(shù)字頻率計是用 3 個十進制數(shù)字顯示的數(shù)字式頻率計,其頻率測量范圍為1MHz。為了提高測量精度,量程分別為 10kHz、100kHz 和 1MHz 三擋,即最大讀數(shù)分別為 9.99kHz,99.9kHz 和 999kHz。要求量程自動換擋。具體功能如下:1.當讀數(shù)大于 999 時,頻率計處于超量程狀態(tài),下一次測量時,量程自動增大一擋。2.當讀數(shù)小雨 099 時,頻率計處于欠量程狀態(tài),下一次測量時,量程自動減少一擋。3.當超出頻率測量范圍時,顯示器顯示溢出。4.采用記憶顯示方法,即測

10、量過程中不顯示數(shù)據(jù),待測量過程結(jié)束以后,顯示測頻結(jié)果,并將此結(jié)果保持到下次測量結(jié)束。顯示時間不少于 1 秒。5.小數(shù)點位置隨量程變化自動移位。6.增加測周期功能,就是當時鐘頻率低于 0.99kHz 的時候,顯示的數(shù)值變成周期,以毫秒為單位。第二章 數(shù)字頻率計的設計思路 畢業(yè)設計論文第二章第二章 數(shù)字頻率計的設計思路數(shù)字頻率計的設計思路2.12.1 時基的設計時基的設計輸入信號是隨意的,沒法預知其頻率是多少,如何選取頻率計提供的基準信號是關鍵。設計要求量程分別為 10kHz,100kHz 和 1MHz 三擋。測頻率時,在某個擋進行測量的時候,就需要提供該擋的時基。在 10kHz 擋,該擋最大讀數(shù)

11、為 9.99kHz,同時也說明最小的讀數(shù)是 0.01kHz,所以提供的時基應該是頻率為 0.01kHz 的脈沖。同樣的道理 100kHz 擋提供的時基應該是 0.1kHz 的脈沖,1MHz 擋提供的時基應該是頻率為 1kHz 的脈沖。要產(chǎn)生這 3 種脈沖,就得從輸入的時鐘中提?。ㄟ@里假設輸入的是 20MHz 的脈沖) ,分別采用分頻的方法來產(chǎn)生這 3 種時基信號顯然不可取,太浪費資源,因為分別產(chǎn)生得用到 3 個分頻器,一個為 20kHz 分頻器,用于產(chǎn)生頻率為1kHz 的脈沖;一個 200kHz 分頻器,用于產(chǎn)生頻率為 0.1kHz 的脈沖;一個 2M 分頻器,用于產(chǎn)生頻率為 0.01kHz

12、的脈沖??梢钥紤]先用一個 20kHz 分頻器,產(chǎn)生頻率為 1kHz 的脈沖,再利用一個 10 倍分頻器對 1kHz 脈沖進行分頻,產(chǎn)生 0.1kHz 的脈沖,一個 100 倍分頻器對 1kHz 脈沖進行分頻,產(chǎn)生 0.01kHz 的脈沖。同樣用到了 3個分頻器,但是節(jié)約了資源。再考慮具體的實現(xiàn),在測頻率的時候,由于采用輸入信號作為時基,以輸入信號為時鐘,用一個計數(shù)器測量在一個時基周期里,輸入信號的周期數(shù)目,如此就可以得到輸入信號的頻率。但是一個時基信號,例如頻率為 0.01kHz(周期為 100ms)的脈沖信號,在整個 100ms 的周期里,根據(jù)占空比,有高電平也有低電平,這就給計數(shù)器計數(shù)的判

13、斷帶來了麻煩。最好是能夠產(chǎn)生一個高電平為 100ms 的脈沖信號作為時基,那么就能夠在程序中以“如果時基信號為 1”作為判斷條件,如果滿足條件則計數(shù)器計數(shù),方便了程序的書寫。同理,在這個設計中還要產(chǎn)生高電平為 10ms和 1ms 的脈沖信號作為時基??梢钥紤]使用狀態(tài)機來實現(xiàn)這 3 種時基,因為采用狀態(tài)機來控制時序很清楚,不容易出錯。狀態(tài)機用 1kHz(周期為 1ms)的脈沖信號觸發(fā),因為所要生產(chǎn)的時基中,頻率最大(周期最?。┑木褪?1kHz 的脈沖,要產(chǎn)生高電平為 10ms 和 1ms 的脈沖信號,可以采用 100 個狀態(tài)的狀態(tài)機,從狀態(tài) 1,狀態(tài) 2.到狀態(tài) 100.要產(chǎn)生高電平為 1ms

14、的脈沖信號,只要在狀態(tài) 99 的時候產(chǎn)生高電平,狀態(tài) 100 的時候回到低電平即可;要產(chǎn)生高電平為 10ms 的脈沖信號,則要在狀態(tài) 90 的時候產(chǎn)生高電平,在狀態(tài) 100 的時候回到低電平。需要產(chǎn)生哪個時基得根據(jù)此時頻率計所在的擋畢業(yè)設計論文 數(shù)字頻率計設計作為判斷條件進行控制。在 100 個狀態(tài)中,有很多狀態(tài)的功能相同的,可以將它們合并。2.22.2 計數(shù)器的設計計數(shù)器的設計各個擋之間的轉(zhuǎn)換應遵循設計要求,要根據(jù)在時基有效時間內(nèi)的計數(shù)值進行判斷。計數(shù)器可以直接定義成一個整型信號,這樣計數(shù)器計數(shù)(即加1)就十分方便,只要使用語句“計數(shù)器=計數(shù)器+1;”就可以。但是這個計數(shù)值要作為顯示輸出,就

15、要將這個計數(shù)器用個位、十位、百位分開表示,而且要遵循加法“逢十進一”的規(guī)則。這樣可以直接通過7段譯碼器進行顯示。因為在不同的擋位,小數(shù)點的位置是不同的,所以小數(shù)點的顯示以所在擋為判斷條件。2.32.3 模塊的劃分模塊的劃分計數(shù)器在各個擋被反復應用的,如果在各個擋分別設計計數(shù)器,就造成資源的浪費,而且在測周期和測頻率的時候,計數(shù)器的時候信號和輸入信號要進行調(diào)換,但是計數(shù)功能是一樣的,所以將計數(shù)器設計成單獨的模塊。7段譯碼器在個位、十位、百位中也都被利用到,因此也將其設計成單獨的模塊,重復引用就不需要在3個位顯示的時候重復書寫譯碼電路了。另外,計數(shù)器的輸入信號和時鐘信號要通過一個進程來提供。在測頻

16、率時,進程向計數(shù)器提供的時鐘信號是輸入頻率計的測量信號,計數(shù)器的輸入信號是頻率計提供的時基;在測周期時,進程向計數(shù)器提供的時鐘信號是頻率計提供的時基,計數(shù)器的輸入信號是輸入頻率計的測量信號。數(shù)字頻率計各模塊的設計和實現(xiàn) 畢業(yè)設計論文第三章第三章 數(shù)字頻率計各模塊的設計和實現(xiàn)數(shù)字頻率計各模塊的設計和實現(xiàn)3.13.1 計數(shù)器的設計和實現(xiàn)計數(shù)器的設計和實現(xiàn)-計數(shù)器模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity frequency

17、 isport(treset:in std_logic;-異步復位端口 tclk:in std_logic;-時鐘輸入 tsig:in std_logic;-信號輸入 tkeep1:out std_logic_vector(3 downto 0);-計數(shù)值個位 tkeep2:out std_logic_vector(3 downto 0);-計數(shù)值十位 tkeep3:out std_logic_vector(3 downto 0);-計數(shù)值百位end entity frequency;architecture one of frequency issignal tcou1:std_logic_

18、vector(3 downto 0);-內(nèi)部計數(shù)值個位signal tcou2:std_logic_vector(3 downto 0);-內(nèi)部計數(shù)值十位signal tcou3:std_logic_vector(3 downto 0);-內(nèi)部計數(shù)值百位 beginctrcou:process(treset,tclk)-控制計數(shù)功能的進程 begin if treset=1 then tcou1=0000;tcou2=0000;tcou3=0000;else if tclkevent and tclk=1 then if tsig=1 then-時基信號高電平為判斷條件有效的時候遇到時 -鐘上

19、升沿觸發(fā) if tcou3=1010 then tcou3=1010;-如果百位為 10,百位數(shù)值不變畢業(yè)設計論文 數(shù)字頻率計設計 else if tcou1=1001 and tcou2=1001 and tcou3=1001 then -如果計數(shù)值為 999 tcou1=0000;tcou2=0000;tcou3=1010; - 則計數(shù)值百位變成 10,十位、個位變成 0 elsif tcou1=1001 and tcou2=1001 then -如果百位小于 9,十位為 9 且個位為 9 的時候 tcou1=0000;tcou2=0000;tcou3=tcou3+1; -百位數(shù)值加 1,

20、十位、個位清零 elsif tcou1=1001 then -如果百位和十位都小于 9 且個位為 9 的時候 tcou1=0000;tcou2=tcou2+1; -個位清零,十位數(shù)值加 1 else tcou1=tcou1+1; -其他情況就是個位數(shù)值加 1 end if; end if; else 如果時基信號為 0,那么判斷條件無效 tcou1=0000;tcou2=0000;tcou3=0000; end if; end if; end if; end process ctrcou;oputctr:process(treset,tsig)-控制數(shù)值輸出的進程 begin if trese

21、t=1 then tkeep1=0000;tkeep2=0000;tkeep3=0000; else if tsigevent and tsig=0 then -時鐘下降沿觸發(fā)輸出各位數(shù)值 tkeep1=tcou1; tkeep2=tcou2; tkeep3=tcou3; end if; end if;數(shù)字頻率計各模塊的設計和實現(xiàn) 畢業(yè)設計論文 end process oputctr;end one;3.23.2 7 7 段譯碼器的設計段譯碼器的設計7 段譯碼器將輸入的 4 位 BCD 碼以 7 段譯碼的方式輸入??梢允褂靡粋€ 7 位向量來分別表示 7 段譯碼器中的 7 段。-譯碼器模塊lib

22、rary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity display isport(data_in:in std_logic_vector(3 downto 0);-輸入為 4 位二進制,范圍從 0 到 9 data_out:out std_logic_vector(0 to 3);-7 段譯碼輸出end entity display;architecture one of display issignal indata:std_logi

23、c_vector(3 downto 0);-內(nèi)部數(shù)值信號begin process(data_in)-輸入信號作為進程的敏感量觸發(fā)進程 begin indatadata_outdata_outdata_outdata_outdata_outdata_outdata_outdata_outdata_outdata_outdata_out=1111; end case; end process; end one;3.33.3 數(shù)字頻率計綜合設計數(shù)字頻率計綜合設計要設計的數(shù)字頻率計需要3個輸入端口,一個脈 沖 輸 入 端 口 clk (頻率為4.19MHz);一個異步復位端口 rest,用于使系統(tǒng)回

24、到初始狀態(tài);還有一個就是測試信號的輸入端口 testsignal,用于輸入待測試的信號。該頻率計需要7個輸出端口,要有一個表示是顯示頻率還是周期的輸出端口unit;還有3個顯示頻率值的7段譯碼輸出端口 display1,display2和 display3,以及3個小數(shù)點輸出端口 dot 向量。-頻率計源文件library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity dfre isport(reset:in std_logic; clk:

25、in std_logic;-時鐘信號testsignal:in std_logic;-測試信號輸入端display1:out std_logic_vector(0 to 3);display2:out std_logic_vector(0 to 3);display3:out std_logic_vector(0 to 3); -3 個 7 段譯碼器輸出unit:out std_logic;-表示是周期還是頻率的信號燈dot:out std_logic_vector(2 downto 0); -小數(shù)點end entity dfre;architecture one of dfre istype

26、 state is(start,judge,count1,count2to89,count90,count91to98,count99,count100);signal myfre:state;signal frecou:integer range 0 to 99;-用于狀態(tài)機中的計數(shù)器,計數(shù)值從 099signal clk1k:std_logic;-產(chǎn)生頻率為 1kHz 的脈沖信號數(shù)字頻率計各模塊的設計和實現(xiàn) 畢業(yè)設計論文signal cou1k:integer range 0 to 2094;-用于分頻的計數(shù)器signal enfre:std_logic;-代表時基的脈沖信號signal

27、flag:std_logic_vector(2 downto 0);-標志信號,1 表示 10kHz 測頻擋,2 表示 100kHz 測頻擋,3 表示 1MHz 測頻擋,0表示測周期擋,4 表示溢出signal keepcou1:std_logic_vector(3 downto 0);signal keepcou2:std_logic_vector(3 downto 0);signal keepcou3:std_logic_vector(3 downto 0);signal ttclk:std_logic;-輸入計數(shù)器的時鐘信號即時基signal ttsig:std_logic;-輸入計數(shù)器

28、的測試信號component display is -引用 7 段譯碼器port(data_in:in std_logic_vector(3 downto 0);data_out:out std_logic_vector(0 to 6);end component;component frequency is 引用計數(shù)器port(treset:in std_logic; tclk,tsig:in std_logic;tkeep1:out std_logic_vector(3 downto 0);tkeep2:out std_logic_vector(3 downto 0);tkeep3:out

29、 std_logic_vector(3 downto 0);end component;beginconstrclk1k:process(reset,clk)-用 4.19MHz 的脈沖產(chǎn)生頻率為 1kHz 脈沖進程begin if reset=1 then cou1k=0;clk1k=0; elseif clkevent and clk=1 then if cou1k=9999 then cou1k=0; clk1k=not clk1k;else畢業(yè)設計論文 數(shù)字頻率計設計 cou1kdotdotdotdotdot=111; end case;end process ctrdot;ctrfr

30、e:process(reset,clk1k)-用于產(chǎn)生時基的狀態(tài)機begin if reset=1 then frecou=0;enfre=0;flag=001;myfrefrecou=0;enfre=0;flag=011;myfre if flag=000 then-如果標志為 0,即頻率計處于測周期擋 if keepcou3=0000 and keepcou2=0000 and keepcou1=0000 thenflag=001;enfre=1; else flag=000; end if;elsif flag=100 then-如果標志為 4,即處于溢出擋 if keepcou3=10

31、10 then flag=100; else flag=011; end if;數(shù)字頻率計各模塊的設計和實現(xiàn) 畢業(yè)設計論文elsif flag=010 then-如果標志為 2,即處于 100kHz 擋 if keepcou30001 then flag=flag-1; enfre=1; elsif keepcou3=1010 then flag=flag+1; else flag=flag;end if;elsif flag=001 then-如果標志為 1,即處于 10kHz 擋 if keepcou30001 then flag=flag-1; elsif keepcou3=1010 t

32、hen flag=flag+1;else flag=flag; enfre=1;end if;else -如果標志為 3,即處于 1MHz 擋 if keepcou30001 thenflag=flag-1;elsif keepcou3=1010 thenflag=flag+1;else flag=flag;end if; end if;myfreif flag=001 or flag=000 thenenfre=1;else enfre=enfre;end if;frecou=1;myfre -處于計數(shù)狀態(tài) 289 的時候if frecou=88 then畢業(yè)設計論文 數(shù)字頻率計設計frec

33、ou=89;myfre=count90;else frecou=frecou+1;myfre -處于計數(shù)狀態(tài) 90 的時候if flag=010 thenenfre=1;else enfre=enfre; end if;frecou=90;myfre -處于計數(shù)狀態(tài) 9198 的時候if frecou=97 thenfrecou=98;myfre=count99;else frecou=frecou+1;myfre -處于計數(shù)狀態(tài) 99 的時候 if flag=011 or flag=100 thenenfre=1;else enfre=enfre;end if;frecou=99;myfre

34、 -處于計數(shù)狀態(tài) 100 的時候frecou=100;enfre=0;myfrenull;end case; end if; end if;數(shù)字頻率計各模塊的設計和實現(xiàn) 畢業(yè)設計論文 end process ctrfre; ctrtt:process(reset,flag)-用于控制計數(shù)器輸入的進程beginif reset=1 then ttclk=0;ttsig=0;unit=0; -異步置位使得輸入信號都為 0else if flag=0 then ttclk=clk1k;ttsig=testsignal;unit=1; -如果標志為 0 即頻率計處于測周期擋else ttclk=tes

35、tsignal;ttsig=enfre;unit=0; -如果標志不為 0 即頻率計處于測頻率擋end if; end if; end process ctrtt;c1: frequency port map(reset,ttclk,ttsig,keepcou1,keepcou2,keepcou3); -引用計數(shù)器dis1: display port map(keepcou1,display1);dis2: display port map(keepcou2,display2);dis3: display port map(keepcou3,display3);end one; 上圖中,sta

36、te 是用于產(chǎn)生時基的狀態(tài)機類型,共有開始狀態(tài)(start) 、判斷狀態(tài)(judge) 、計數(shù)狀態(tài) 1(count 1)、計數(shù)狀態(tài) 289(count 2 to 89) 、計數(shù)狀態(tài) 90(count 90) 、計數(shù)狀態(tài) 9198(count 91 to 98) 、計數(shù)狀態(tài) 99(count 99) 、計數(shù)狀態(tài) 100(count 100) 。這里,將計數(shù)狀態(tài) 2、計數(shù)狀態(tài) 3 一直到計數(shù)狀態(tài) 89進行了合并,將計數(shù)狀態(tài) 91 到計數(shù)狀態(tài) 98 進行了合并,因為這些狀態(tài)功能一致,所以合并。將計數(shù)狀態(tài) 1、計數(shù)狀態(tài) 90、計數(shù)狀態(tài) 99 和計數(shù)狀態(tài) 100 單獨提取出來的原因是時基信號都在狀態(tài) 1

37、00 清零,產(chǎn)生高電平為 100ms 的時基,需要在計數(shù)狀態(tài) 1 的時候?qū)r基信號置 1,由于從 199 只有 99ms,因此在計數(shù)狀態(tài) 1 之前的judge 狀態(tài)中,如果處于 10kHz 測頻擋,就要將時基信號置 1;產(chǎn)生高電平為 10ms的時基,需要在計數(shù)狀態(tài) 90 的時候?qū)r基信號置 1;產(chǎn)生高電平為 1ms 的時基,則需要在計數(shù)狀態(tài) 99 將時基信號置 1,所以計數(shù)狀態(tài) 1、計數(shù)狀態(tài) 90 和計數(shù)狀態(tài) 99要單獨提取。畢業(yè)設計論文 數(shù)字頻率計設計第四章第四章 數(shù)字頻率計波形仿真數(shù)字頻率計波形仿真4.14.1 省略分頻進程省略分頻進程由于設計輸入的脈沖信號為 4.19MHz,所以如果直接

38、采用上面的設計進行仿真,那么將很浪費時間。在能夠保證分頻不錯誤的情況下,可以在結(jié)構(gòu)體中省略分頻的進程,并且將實體設計作出如下改動:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity dfre isport(reset:in std_logic; clk1k:in std_logic; -1k 時鐘信號testsignal:in std_logic;-測試信號輸入端display1:out std_logic_vector(0 to

39、 3);display2:out std_logic_vector(0 to 3);display3:out std_logic_vector(0 to 3); -3 個 7 段譯碼器輸出unit:out std_logic;-表示是周期還是頻率的信號燈dot:out std_logic_vector(2 downto 0); -小數(shù)點end entity dfre;再次編譯以后,在仿真中就可以直接采用 clk1k 的脈沖作為觸發(fā),即采用頻率為 1kHz 的脈沖作為時鐘信號。這是一種明智的仿真方法,很多時候都可以借鑒。4.24.2 10kHz10kHz、100kHz100kHz 和和 1MHz

40、1MHz 三擋仿真三擋仿真第一次仿真采用測試信號的周期為 200us,即頻率為 5kHz,按照頻率計的設計,應該是自動換到 10kHz 測頻擋,顯示為 5.00,單位為 kHz。仿真波形如圖:數(shù)字頻率計波形仿真 畢業(yè)設計論文測試信號是頻率為測試信號是頻率為 5kHz5kHz 脈沖時的仿真波形圖脈沖時的仿真波形圖在波形圖中可以看到,開始的時候 flag 為 2,表示頻率計處于 100kHz 測頻擋,但是這個擋提供的時基不能滿足要求,時基太小,計數(shù)器在時基為高電平的時候計數(shù)次數(shù)太少,不能達到 100 次,所以要自動換擋。100kHz 測頻擋提供一個時基以后,馬上換到 10kHz 測頻擋??梢钥吹?

41、flag 變成 1 了,如下圖所示。此時的時基符合要求,因此最后就穩(wěn)定地顯示頻率數(shù)值。第一次仿真中的換擋情況第一次仿真中的換擋情況第二次仿真待用測試信號的周期為 40us,即頻率為 25kHz,按照頻率計的設計,應該自動換擋到 100kHz 測頻擋,顯示為 25.0,單位為 kHz。仿真波形如圖所示:測試信號是頻率為測試信號是頻率為 25kHz25kHz 脈沖時的仿真波形圖脈沖時的仿真波形圖第三次仿真采用測試信號的周期為 4us,即頻率為 250kHz,按照頻率計的設計,應該自動換擋到 1MHz 測頻擋,顯示為 250,單位為 kHz。仿真波形如圖所示:畢業(yè)設計論文 數(shù)字頻率計設計測試信號是頻

42、率為測試信號是頻率為 250kHz250kHz 脈沖時的仿真波形圖脈沖時的仿真波形圖在波形圖中可以看到,開始的時候 flag 為 2,表示頻率計處于 100kHz 測頻擋,但是這個擋提供的時基不能滿足要求,時基太小,計數(shù)器在時基為高電平的時候計數(shù)次數(shù)超過了要求的范圍,所以要自動換擋。100kHz 測頻擋一個時基以后,馬上換到 1MHz 測頻擋??梢钥吹?flag 變成 3 了,如上圖。此時的時基符合要求,因此最后就穩(wěn)定地顯示頻率數(shù)值。4.34.3 測周期擋仿真測周期擋仿真這次仿真采用測試信號的周期為 6ms,按照頻率計的設計,應該自動換擋到測周期擋,顯示為 006,單位為 ms。測周期的仿真如

43、圖:測試信號是周期為測試信號是周期為 6ms6ms 脈沖的仿真波形圖脈沖的仿真波形圖值得注意的是,測周期顯示的數(shù)值是真正周期的一半,造成這種顯示的原因和程序的設計有關,當測周期的時候,頻率計提供的時基作為計數(shù)器的觸發(fā)時鐘,而測試信號作為輸入信號,測試信號是占空比為 1 的信號,在計數(shù)器設計中,計數(shù)值加 1的判斷條件是輸入信號為 1,因此,在一個輸入信號周期里,只有半個周期計數(shù)器在計數(shù),所以顯示的周期只是真正周期的一半。為了解決這個問題,可以考慮將輸入信號鎖存,就是當在輸入信號上升沿的時候觸發(fā)鎖存器,并且將輸入信號的高電平鎖存一個周期。鎖存的程序:-鎖存源程序數(shù)字頻率計波形仿真 畢業(yè)設計論文li

44、brary ieee;use ieee.std_logic_1164,all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity lock isport(reset:in std_logic;lockin:in std_logic;lockout:out std_logic);end lock;architecture behave of lock issignal inlock:std_logic;beginprocess(reset,lockin)beginif reset=1 theninlock=0;e

45、lsif lockinevent and lockin=1 theninlock=not inlock;end if;end process;lockoutdata_out=”1111” ” ,然后再次編譯問題就能解決了。總結(jié) 畢業(yè)設計論文總結(jié)總結(jié) 09 年 10 月,我開始了我的畢業(yè)論文工作,時至今日,論文基本完成。從最初的茫然,到慢慢的進入狀態(tài),再到對思路逐漸的清晰,整個寫作過程難以用語言來表達。歷經(jīng)了幾個月的奮戰(zhàn),緊張而又充實的畢業(yè)設計終于落下了帷幕?;叵脒@段日子的經(jīng)歷和感受,我感慨萬千,在這次畢業(yè)設計的過程中,我擁有了無數(shù)難忘的回憶和收獲。 我在學校圖書館搜集資料,還在網(wǎng)上查找各類相關

46、資料,將這些寶貴的資料全部保存起來,盡量使我的資料完整、精確、數(shù)量多,這有利于論文的撰寫。當資料查找完畢了,我開始著手論文的寫作。在寫作過程中遇到困難我就及時和我的指導老師晏文靖老師聯(lián)系,在晏老師的幫助下,困難一個一個解決掉,論文也慢慢成型。這次畢業(yè)論文的制作過程是我的一次再學習,再提高的過程。我不會忘記這難忘的幾個月的時間,畢業(yè)論文的制作給了我難忘的回憶。在我徜徉書海查找資料的日子里,面對無數(shù)書本的羅列,最難忘的是每次找到資料時的激動和興奮;這段旅程看似荊棘密布,實則蘊藏著無盡的寶藏。腳踏實地,認真嚴謹,實事求是的學習態(tài)度,不怕困難、堅持不懈、吃苦耐勞的精神是我在這次設計中最大的收益。我想這

47、是一次意志的磨練,是對我實際能力的一次提升,也會對我未來的學習和工作有很大的幫助。 在這次畢業(yè)設計中也使我們的同學關系更進一步了,同學之間互相幫助,有什么不懂的大家在一起商量,聽聽不同的看法對我們更好的理解知識,所以在這里非常感謝幫助我的同學。 在此更要感謝我的指導老師晏文靖老師,是你的細心指導和關懷,使我能夠順利的完成畢業(yè)設計及畢業(yè)論文。老師的嚴謹治學態(tài)度、淵博的知識、無私的奉獻精神使我深受啟迪。從尊敬的導師身上,我不僅學到了扎實、寬廣的專業(yè)知識,也學到了做人的道理。在此我要向我的導師致以最衷心的感謝和深深的敬意。畢業(yè)設計論文 數(shù)字頻率計設計致謝致謝三年寒窗,所收獲的不僅僅是愈加豐厚的知識,

48、更重要的是在閱讀、實踐中所培養(yǎng)的思維方式、表達能力和廣闊視野。很慶幸這些年來我遇到了許多恩師益友,無論在學習上、生活上還是工作上都給予了我無私的幫助和熱心的照顧,讓我在諸多方面都有所成長。感恩之情難以用語言量度,謹以最樸實的話語致以最崇高的敬意。感謝我的導師晏文靖老師。本論文能夠順利完成,離不開晏老師的悉心指導和嚴格要求,晏老師在論文的選題、研究理論、框架結(jié)構(gòu)、數(shù)據(jù)整理,直至撰寫、修改和定稿等各個環(huán)節(jié)均嚴格把關,并投入了大量的時間和精力。晏老師治學嚴謹,學識淵博,為我營造了一種良好的研究氛圍。在跟隨晏老師學習的過程中,我不僅掌握了全新而實用的學術思想和研究方法,也領會了許多待人接物與為人處世的

49、道理。老師嚴以律己、寬以待人的崇高風范,平易近人的人格魅力,令人如沐春風,倍感溫馨。感謝 2007 級微電子技術專業(yè)的同窗好友。在同大家的交往中我學到很多,也非??鞓罚驗橛写蠹椅以谏淘旱纳畈拍苋绱素S富而充實。三年時光轉(zhuǎn)瞬即逝,然而這段短暫時光的點點滴滴都將是我生命中的美好回憶。因而在今后新的征程中,無論面臨多大的困難,我也將懷抱著感激、懷抱著情誼、懷抱著責任、懷抱著期望和夢想,堅定、自信地走下去。感謝我最親愛的父母。你們數(shù)十年含辛茹苦、無私的關愛和奉獻,讓我在漫長的求學道路上不感到孤單,讓我在拼搏和奮斗的歷程中不感到疲倦,你們是我永遠的牽掛和眷念最后,我要向在百忙之中抽時間對本文進行審閱

50、、評議和參加本人論文答辯的各位師長表示感謝!附錄 畢業(yè)設計論文附錄附錄附錄附錄 A A MAX+PLUSMAX+PLUS簡介簡介MAX+PLUS(Multiple Array and Programming Logic User System)開發(fā)工具是 Altera 公司推出的一種 EDA 工具,具有靈活高效、使用便捷和易學易用等特點。Altera 公司在推出各種 CPLD 的同時,也在不斷地升級相應的開發(fā)工具軟件,已從早起的第一代 A+PLUS、第二代 MAX+PLUS 發(fā)展到第三代 MAX+PLUS和第四代Quartus。使用 MAX+PLUS軟件,設計者無需精通器件內(nèi)部的復雜結(jié)構(gòu),只需

51、用業(yè)已熟悉的設計輸入工具,如硬件描述語言、原理圖等進行輸入即可,MAX+PLUS就會自動將設計轉(zhuǎn)換成目標文件下載到器件中去。MAX+PLUS開發(fā)系統(tǒng)具有以下特點。(1) 多平臺。MAX+PLUS軟件可以在基于 PC 機的操作系統(tǒng)如Windows95、Windows98、Windows2000、Windows NT 下運行,也可以在 Sun SPAC station 等工作站上運行。(2) 開放的界面。MAX+PLUS提供了與其他設計輸入、綜合和校驗工具的接口,借口符合 EDIF 200/300、LPM、VHDL、Verilog-HDL 等標準。目前MAX+PLUS所支持的主流第三方 EDA 工

52、具主要有Synopsys、Viewlogic、Mentor、Graphics、Cadence、OrCAD、Xilinx 等公司提供的工具。(3) 模塊組合式工具軟件。MAX+PLUS具有一個完整的可編程邏輯設計環(huán)境,包括設計輸入、設計處理、設計校驗和下載編程 4 個模塊,設計者可以按設計流程選擇工作模塊。(4) 與結(jié)構(gòu)無關。MAX+PLUS開發(fā)系統(tǒng)的核心Compiler(編譯器)能夠自動完成邏輯綜合和優(yōu)化,它支持 Altera 的 Classic、MAX7000、FLEX8000 和FLEX10K 等可編程器件系列,提供一個與結(jié)構(gòu)無關的 PLD 開發(fā)環(huán)境。(5) 支持硬件描述語言。MAX+PL

53、US支持各種 HDL 設計輸入語言,包括VHDL、Verilog-HDL 和 Altera 的硬件描述語言 AHDL。(6) 豐富的設計庫。MAX+PLUS提供豐富的庫單元供設計者調(diào)用,其中包括一些基本的邏輯單元,74 系列的器件和多種特定功能的宏功能模塊以及參數(shù)化的兆功能模塊。調(diào)用庫單元進行設計,可以大大減輕設計人員的工作量,縮短設計周期。畢業(yè)設計論文 數(shù)字頻率計設計附錄附錄 B B 軟件的安裝軟件的安裝MAX+PLUS軟件按使用平臺可以分為 PC 機版和工作站版;按使用的對象可以分為商業(yè)版、基本版和學生版。商業(yè)版:支持全部輸入方式和版本發(fā)行時間的除 APEX 系列外的所有 Altera CPLD 器件。商業(yè)版運行時需要一個授權(quán)碼和一個附加的并口硬件狗。基本版:在商業(yè)版的基礎上作了一些限制,如不支持 VHDL,不能進行功能仿真和時序仿真,不支持某些器件等?;景娌恍?/p>

溫馨提示

  • 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

提交評論