數(shù)字頻率計測頻系統(tǒng)畢業(yè)設(shè)計論文_第1頁
數(shù)字頻率計測頻系統(tǒng)畢業(yè)設(shè)計論文_第2頁
數(shù)字頻率計測頻系統(tǒng)畢業(yè)設(shè)計論文_第3頁
數(shù)字頻率計測頻系統(tǒng)畢業(yè)設(shè)計論文_第4頁
數(shù)字頻率計測頻系統(tǒng)畢業(yè)設(shè)計論文_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 摘 要 100Hz頻率計數(shù)器主要功能是在一定時間內(nèi)對頻率的計算,本篇論文主要介紹了頻率計數(shù)器的實現(xiàn):系統(tǒng)以MAX+PULSLL II為開發(fā)環(huán)境,通過VHDL語言作為硬件描述語言實現(xiàn)對電路結(jié)構(gòu)的描述。在VHDL語言中采用了一系列的語句,例如:元件例化,if 語句 case when語句等。并對程序中的輸入輸出端口進(jìn)行了解釋,給出實現(xiàn)代碼和仿真波形。 關(guān)鍵詞: 100Hz; 頻率計;MAX+PULSLL II; VHDL; 元件例化; 仿真 前 言 VHDL(Very High Speed Integrated Circuit Hardware Description Language,超高速集

2、成電路硬件描述語言)誕生于1982年,是由美國國防部開發(fā)的一種快速設(shè)計電路的工具,目前已經(jīng)成為IEEE(The Institute of Electrical and Electronics Engineers)的一種工業(yè)標(biāo)準(zhǔn)硬件描述語言。相比傳統(tǒng)的電路系統(tǒng)的設(shè)計方法,VHDL具有多層次描述系統(tǒng)硬件功能的能力,支持自頂向下(Top to Down)和基于庫(LibraryBased)的設(shè)計的特點,因此設(shè)計者可以不必了解硬件結(jié)構(gòu)。從系統(tǒng)設(shè)計入手,在頂層進(jìn)行系統(tǒng)方框圖的劃分和結(jié)構(gòu)設(shè)計,在方框圖一級用VHDL對電路的行為進(jìn)行描述,并進(jìn)行仿真和糾錯,然后在系統(tǒng)一級進(jìn)行驗證,最后再用邏輯綜合優(yōu)化工具生成

3、具體的門級邏輯電路的網(wǎng)表,下載到具體的CPLD器件中去,從而實現(xiàn)可編程的專用集成電路(ASIC)的設(shè)計。 數(shù)字頻率計是數(shù)字電路中的一個典型應(yīng)用,實際的硬件設(shè)計用到的器件較多,連線比較復(fù)雜,而且會產(chǎn)生比較大的延時,造成測量誤差、可靠性差。隨著復(fù)雜可編程邏輯器件(CPLD)的廣泛應(yīng)用,以EDA工具作為開發(fā)手段,運用VHDL語言。將使整個系統(tǒng)大大簡化。提高整體的性能和可靠性。 本文用VHDL在CPLD器件上實現(xiàn)一種2b數(shù)字頻率計測頻系統(tǒng),能夠用十進(jìn)制數(shù)碼顯示被測信號的頻率,不僅能夠測量正弦波、方波和三角波等信號的頻率,而且還能對其他多種物理量進(jìn)行測量。具有體積小、可靠性高、功耗低的特點。 目 錄摘要

4、1 前言 2目錄 3第一章 設(shè)計目的 5 5 5第二章 設(shè)計方案 6第三章 產(chǎn)生子模塊 7 7 7 3.3 仿真及波形圖 8第四章 計數(shù)模塊 9 4.1計數(shù)模塊分析 9 4.2計數(shù)模塊源代碼 9 11第五章 顯示模塊 11 5.1 七段數(shù)碼管的描述 12 5.2 八進(jìn)制計數(shù)器count8的描述 12 5.3 七段顯示譯碼電路的描述 13 15 16 17第六章 頂層文件 17 6.1 頂層文件設(shè)計源程序 17 18 結(jié)語 19 參考文獻(xiàn) 20致謝 21 附件 22 第一章 設(shè)計目的1.1 設(shè)計要求1.2 設(shè)計意義 a.進(jìn)一步學(xué)習(xí)VHDL硬件描述語言的編程方法和步驟。 c.熟悉并掌握元件例化語句

5、的使用方法 d.熟悉數(shù)字式頻率的基本工作原理。 f.熟悉掌握MAX+PLUS軟件的基本使用方法。第二章 設(shè)計方案 在這個100赫茲頻率計的設(shè)計中一共分為3大模塊:產(chǎn)生子模塊、計數(shù)模塊、顯示模塊。當(dāng)系統(tǒng)正常工作時,脈沖發(fā)生器提供的1 Hz的輸入信號,進(jìn)行信號的變換,產(chǎn)生計數(shù)信號,被測信號通過信號整形電路產(chǎn)生同頻率的矩形波,送入計數(shù)模塊,計數(shù)模塊對輸入的矩形波進(jìn)行計數(shù),將計數(shù)結(jié)果送入鎖存器中,保證系統(tǒng)可以穩(wěn)定顯示數(shù)據(jù),顯示譯碼驅(qū)動電路將二進(jìn)制表示的計數(shù)結(jié)果轉(zhuǎn)換成相應(yīng)的能夠在七段數(shù)碼顯示管上可以顯示的十進(jìn)制結(jié)果。在數(shù)碼顯示管上可以看到計數(shù)結(jié)果 產(chǎn)生子模塊是為此100赫茲頻率計提供1Hz的時鐘脈沖信號

6、,為了實現(xiàn)嚴(yán)格的同步,在這個模塊中采用了同步計數(shù)電路。計數(shù)模塊是實現(xiàn)從0到99的計數(shù)。顯示模塊是將計數(shù)模塊程序中產(chǎn)生的數(shù)值通過2個七段數(shù)碼管表達(dá)出來,使大家對此頻率計有一個更直觀的認(rèn)識。此100赫茲頻率計的設(shè)計中,這3個大的模塊是核心部分,這個3個大的模塊會在后面的分析設(shè)計中給出詳細(xì)的介紹。 頻率計的工作原理是通過在一定時間內(nèi)對外部信號進(jìn)行計數(shù),計算計數(shù)值對時間的比值,從而得到輸入信號的頻率,通過二個數(shù)碼管作為頻率值的輸出。對系統(tǒng)進(jìn)行分析后,確定采用模塊設(shè)計,基本框架圖如CLK 計數(shù)系統(tǒng)顯示系統(tǒng)圖1 第三章 產(chǎn)生子模塊3.1 分頻模塊 分頻模塊的功能是將輸入的外部信號clk進(jìn)行分頻,分頻成計數(shù)

7、器所需要的計數(shù)信號, 使計數(shù)器在計數(shù)信號有效的時間對外部信號進(jìn)行計數(shù)。根據(jù)頻率計測量的范圍,確定了分頻至1Hz,從而得到頻率值. 圖2555定時器(如圖2)是一種模擬電路與數(shù)字電路相結(jié)合的中規(guī)模集成電路,它在信號產(chǎn)生、整形、延時(定時)、控制等方面獲得了廣泛的應(yīng)用。雖說555定時器應(yīng)用領(lǐng)域十分廣泛,但其電路結(jié)構(gòu)歸納起來有三種基本形式,即多諧振蕩器、單穩(wěn)態(tài)觸發(fā)器、施密特觸發(fā)器由于雙極型555和CMOS型555的制作工藝和流程不同,生產(chǎn)出的555集成電路的性能指標(biāo)是有差異的。 CMOS型555的功耗僅為雙極型的幾十分之一,靜態(tài)電流僅為300uA左右,為微功耗電路。CMOS型555的輸出脈沖的上升沿

8、和下降沿比雙極型的要陡,轉(zhuǎn)換時間短。CMOS型555的在傳輸過度時間里產(chǎn)生的尖峰電流小,僅為23mA,而雙極型555的尖峰電流高達(dá)300400mA。3.2分頻程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY clk_div1000 ISPORT(clk:IN STD_LOGIC; clk_div:out STD_LOGIC);END clk_div1000;ARCHITECTURE rt1 OF clk_div1000 ISSIGNAL q_tmp:integer range

9、 0 to 999;BEGINprocess(clk)beginIF(clkevent and clk=1)then if(q_tmp=999)then q_tmp=0; else q_tmp=q_tmp+1; end if;end if;end process;process(clk)beginIF(clkevent and clk=1)then if(q_tmp=999)then clk_div=1; else clk_div=0; end if;end if;end process;end rt1;在程序3.2中我們將外部信號clk進(jìn)行10次分頻輸入信號為clk,輸出信號為clk_div

10、. 3.3 仿真及波形圖圖3圖4圖4 第四章 計數(shù)模塊4.1計數(shù)模塊分析經(jīng)分析可知,此頻率計計數(shù)模塊分為2個子模塊,即個位顯示模塊、十位顯示模塊。詳細(xì)分析如下:計數(shù)模塊的個位可以用1個十進(jìn)制計數(shù)器表示。計數(shù)模塊的十位可以用1個十進(jìn)制計數(shù)器表示。頻率計的計數(shù)模塊主要來實現(xiàn)頻率計數(shù)器內(nèi)部的計數(shù)功能,計數(shù)器的內(nèi)部計數(shù)信號clk和頻率計數(shù)器的使能信號enable. 頻率計數(shù)器的計數(shù)模塊的輸出信號就是個位sec,十位sec10電路圖如下: 圖5十進(jìn)制計數(shù)器,它的輸入端口主要包括使能端口enable計數(shù)輸入端口clk, 輸出端口主要包括計數(shù)輸出端口q和進(jìn)位輸出端口cout.4.2計數(shù)模塊的程序如下:LIB

11、RARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count10 ISPORT( enable:IN STD_LOGIC; clk:IN STD_LOGIC; cout:out STD_LOGIC; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END count10;ARCHITECTURE rt1 OF count10 ISSIGNAL q_tmp:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINprocess(clk)beginIF(clke

12、vent and clk=1)then if(enable=1)then if(q_tmp=1001)then q_tmp=0000; else q_tmp=q_tmp+1; end if; end if;end if;q=q_tmp;end process;cout=1when q_tmp=1001and enable=1 else0;-cout=1when q_tmp=1001 else0;end rt1;,程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY time_counter ISPORT( enable:IN STD_LOGI

13、C; clk0:IN STD_LOGIC; sec10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); sec:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END time_counter;ARCHITECTURE rt1 OF time_counter ISCOMPONENT count10PORT( enable:IN STD_LOGIC; clk:IN STD_LOGIC; cout:out STD_LOGIC; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);end COMPONENT;SIGNAL co1,co2:STD

14、_LOGIC;BEGINU1:count10 PORT MAP(enable,clk0,co1,sec);U2:count10 PORT MAP(co1,clk0,co2,sec10);end rt1;圖6圖7第五章 顯示模塊有了計數(shù)模塊還不能滿足設(shè)計的要求,任何一個設(shè)計都是需要一定的硬件設(shè)備來表達(dá)。否則,只有一個理論的程序是不足以來證明一個設(shè)計的完整性。在參考一些資料和根據(jù)實驗提供的條件,我在這個設(shè)計中采用2個七段數(shù)碼管來對這個頻率計進(jìn)行實際的表達(dá)。頻率計數(shù)器要將計數(shù)的結(jié)果顯示出來,就必需設(shè)計一個計數(shù)顯示模塊來完成該顯示功能.頻頻計數(shù)器的顯示模塊的輸入信號主要來自于頻頻計數(shù)器計數(shù)模塊的計數(shù)信

15、息,它的輸出信號是choose和segment,以用來驅(qū)動計數(shù)顯示的8個LED七段顯示數(shù)碼管,在輸出信號中,為了節(jié)省資源,我們采用循環(huán)點亮LED七段顯示數(shù)碼管的方法來顯示頻率計數(shù)器的計數(shù)輸出.我們通過信號choose(7downto0)來進(jìn)行8個LED七段顯示數(shù)碼管的選擇,從而將輸出信號segment(6downto0)送到相應(yīng)的LED七段顯示數(shù)碼管上以完成頻率計數(shù)的顯示.計數(shù)顯示模塊的結(jié)構(gòu)框圖如圖8所示: 圖8從圖4以看出,計數(shù)顯示模塊可由三個部分組成:八進(jìn)制計數(shù)器,計數(shù)位選擇電路,七段顯示譯碼電路.下面描述一下計數(shù)顯示模塊的工作過程:在外部計數(shù)信號clk的作用下,八進(jìn)制計數(shù)器的輸出從000

16、到111按順序循環(huán)變化,輸出信號為sel.信號sel 作為計數(shù)位選擇電路的選擇信號,用來選擇對應(yīng)位的數(shù)據(jù)并將其轉(zhuǎn)換為四位位矢量.最后將計數(shù)位選擇電路的輸出信號q送到七段顯示譯碼電路的輸入端口,將其轉(zhuǎn)化成用來點燃LED七段顯示數(shù)碼管的segment信號.5.1 七段數(shù)碼管的描述我們所使用實驗箱中的8個七段數(shù)碼管有這樣一個特點,8個數(shù)碼管中每一個數(shù)碼管中相同的段都是連在一根線上的。如圖所示: 圖9故只要有一個數(shù)碼管的一段亮,則8個數(shù)碼管中相同的段都會亮。則,在選用了數(shù)碼管后就我們需要考慮一個問題了,就是如何在每個數(shù)碼管上正確的顯示程序中每一位要顯示的數(shù)據(jù)呢?也就是如何將前面的計數(shù)模塊中要顯示的數(shù)字

17、準(zhǔn)確的表達(dá)在數(shù)碼管上。在這里就運用了人體生理學(xué)的一個結(jié)論,人的眼睛能分辨的時間是1/16秒,即頻率為25Hz左右。有了這個結(jié)論后,我們就可以解決正確顯示的問題了,應(yīng)用動態(tài)掃描的方法,只要我們在顯示模塊中所使用的頻率大于25Hz就可以讓每個數(shù)碼管正確的顯示程序中所要求的數(shù)字了。因此,在顯示模塊中首先要設(shè)計一個分頻器,實驗提供的脈沖是1KHz,我們只要設(shè)計的分頻器所分出來的頻率大于25Hz即可,在此我選擇一個8分頻器。8分頻器的輸入信號為clk,輸出信號為sel(2 DOWNTO 0).5.2 八進(jìn)制計數(shù)器count8的描述我們來描述下三個子電路,然后再描述顯示模塊的總體功能.先來討論下八進(jìn)制計數(shù)

18、器count8,這個八進(jìn)制計數(shù)器除了沒有使能端enable和進(jìn)位輸出端口cout之外,它的描述結(jié)構(gòu)與前面描述的計數(shù)器的結(jié)構(gòu)完全相同,用VHDL描述如下: 8分頻器模塊設(shè)計程序如下: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count8 ISPORT( clk:IN STD_LOGIC; sel:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END count8;ARCHITECTURE rt1 OF count8 ISSIGNAL sel_tmp:STD_

19、LOGIC_VECTOR(2 DOWNTO 0);BEGINprocess(clk)beginIF(clkevent and clk=1)then if(sel_tmp=111)then sel_tmp0); else sel_tmp=sel_tmp+1; end if;end if;selsegmentsegmentsegmentsegmentsegmentsegmentsegmentsegmentsegmentsegmentsegmentqqqchoosechoosechoosechoosechoosechoosechoosechoosechoose=XXXXXXXX;-END CASE;

20、-END PROCESS;-END rt1; 對計數(shù)器的顯示模塊的四個子電路描述以后,我們就可以進(jìn)行計數(shù)器的總體功能描述了.在計數(shù)器顯示模塊的VHDL描述中,我們引用元件的形式來調(diào)用上面描述過的四個子電路,秒表顯示模塊的VHDL描述如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY display ISPORT( clk:IN STD_LOGIC; sec10:IN STD_LOGIC_VECTOR(3 DOWNTO 0); sec:IN STD_LOGIC_VECTOR(3 DOWNTO 0); sel:OUT STD_LOGIC_VECTO

21、R(2 DOWNTO 0); -choose:out STD_LOGIC_VECTOR(7 DOWNTO 0); segment:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END display;ARCHITECTURE rt1 OF display ISCOMPONENT count8PORT(clk:IN STD_LOGIC; sel:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END COMPONENT;-COMPONENT choose_decoder-PORT(sel:IN STD_LOGIC_VECTOR(2 DOWNTO 0);- c

22、hoose:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-END COMPONENT;COMPONENT time_choosePORT(sel:IN STD_LOGIC_VECTOR(2 DOWNTO 0); sec10:IN STD_LOGIC_VECTOR(3 DOWNTO 0); sec:IN STD_LOGIC_VECTOR(3 DOWNTO 0); q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT;COMPONENT seg7PORT(q:IN STD_LOGIC_VECTOR(3 DOWNTO 0); segm

23、ent:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END COMPONENT;SIGNAL sel_tmp:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL q:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL segment_tmp:STD_LOGIC_VECTOR(6 DOWNTO 0);BEGINU0:count8 PORT MAP(clk,sel_tmp);sel=sel_tmp;U2:time_choose PORT MAP(sel_tmp,sec10,sec,q);U3:seg7 PORT MAP(q,segmen

24、t_tmp);segment=segment_tmp;END rt1;圖11圖12第六章 頂層文件前三節(jié)就是整個設(shè)計的3個核心模塊,當(dāng)這3個模塊設(shè)計完成后,100赫茲的頻率計的設(shè)計就接近尾聲了。剩下的工作也就好做了,我們就想連模擬電路中元件一樣,將這3個模塊對應(yīng)的端口連接起來進(jìn)行調(diào)試即可。整個設(shè)計我們都是用的VHDL硬件描述語言來完成的,所以到了最后也不例外,對于最后的級連同運用元件例化的格式來“組裝”整個設(shè)計。6.1 頂層文件設(shè)計程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTI

25、TY clock ISPORT( clk:IN STD_LOGIC; enable:IN STD_LOGIC; sel:OUT STD_LOGIC_VECTOR(2 DOWNTO 0); segment:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END clock;ARCHITECTURE rt1 OF clock ISCOMPONENT clk_div1000PORT(clk:IN STD_LOGIC; clk_div:out STD_LOGIC);end component;component time_counterPORT( enable:IN STD_LOGI

26、C; clk0:IN STD_LOGIC; sec10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); sec:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);end component; component displayPORT( clk:IN STD_LOGIC; sec10:IN STD_LOGIC_VECTOR(3 DOWNTO 0); sec:IN STD_LOGIC_VECTOR(3 DOWNTO 0); sel:out STD_LOGIC_VECTOR(2 DOWNTO 0); segment:OUT STD_LOGIC_VECTOR(6

27、DOWNTO 0);end component; signal sec10: STD_LOGIC_VECTOR(3 DOWNTO 0); signal sec: STD_LOGIC_VECTOR(3 DOWNTO 0); signal clk0:STD_LOGIC;beginu0:clk_div1000 PORT MAP(clk,clk0);u1:time_counter PORT MAP(enable,clk0,sec10,sec);u2:display PORT MAP(clk,sec10,sec,sel,segment);end rt1; 圖13圖14結(jié)束語這次做論文的經(jīng)歷也會使我終身受益,我感受到做論文是要真真正正用心去做的一件事情,是真正的自己學(xué)習(xí)的過程和研究的過程,沒有學(xué)習(xí)就不可能有研究的能力,沒有自己的研究,就不會有所突破,那也就不叫論文了。希望這次的經(jīng)歷能讓我在以后學(xué)習(xí)中激勵我繼續(xù)進(jìn)步。在設(shè)計中,使我看到了什么能,也看到了自己什么不能。雖然能夠清晰的把整個電路原理看懂,但是在某些細(xì)節(jié)方面還不是很明白。這就說明了,對于整體方案我能夠做出正確的判斷,但是遇到細(xì)節(jié)就輕視了,所以最后在實驗箱上看現(xiàn)象的時候出現(xiàn)顯示亂碼的問題。再就是,基本功還不是很扎實,表面上看似什么都懂,但是碰到了實質(zhì)性的問題就出毛病,會卡住,做不出來。這很嚴(yán)重的

溫馨提示

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

評論

0/150

提交評論