動(dòng)態(tài)輸出4位十進(jìn)制頻率計(jì)的設(shè)計(jì)_第1頁
動(dòng)態(tài)輸出4位十進(jìn)制頻率計(jì)的設(shè)計(jì)_第2頁
動(dòng)態(tài)輸出4位十進(jìn)制頻率計(jì)的設(shè)計(jì)_第3頁
動(dòng)態(tài)輸出4位十進(jìn)制頻率計(jì)的設(shè)計(jì)_第4頁
動(dòng)態(tài)輸出4位十進(jìn)制頻率計(jì)的設(shè)計(jì)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、武漢職業(yè)技術(shù)學(xué)院課程結(jié)業(yè)論文論文題目: 動(dòng)態(tài)輸出4位十進(jìn)制頻率計(jì)的設(shè)計(jì) 姓 名: 彭華平 所在院系: 電子信息工程學(xué)院 班 級(jí): 通信12303 學(xué) 號(hào): 12011193 指導(dǎo)教師: 虞 滄 武漢職業(yè)技術(shù)學(xué)院二一三年十二月目 錄一、概述.2二、設(shè)計(jì)正文. 3(一)設(shè)計(jì)目的.3(二)設(shè)計(jì)實(shí)現(xiàn).41、端口說明.42、Cnt10模塊說明.53、Tctl模塊說明.64、鎖存器reg16模塊說明.85、scan_led模塊說明.96、頂層文件仿真.97、硬件實(shí)現(xiàn).11三、總結(jié).13四、感言.14五、參考獻(xiàn).14摘要此次設(shè)計(jì)的主要目的是學(xué)習(xí)掌握頻率計(jì)的設(shè)計(jì)方法;掌握動(dòng)態(tài)掃描輸出電路的實(shí)現(xiàn)方法;學(xué)習(xí)較復(fù)雜

2、的數(shù)字系統(tǒng)設(shè)計(jì)方法。通過單位時(shí)間(1秒)內(nèi)頻率的計(jì)數(shù)來實(shí)現(xiàn)頻率計(jì)的設(shè)計(jì)。此設(shè)計(jì)主要用四位十進(jìn)制計(jì)數(shù)器,所以頻率計(jì)數(shù)范圍為1009999Hz。然后鎖存防止閃爍顯示,最后由譯碼掃描顯示電路輸出到數(shù)碼管進(jìn)行顯示輸出。并且下載后會(huì)有一秒鐘的延時(shí)后才會(huì)顯示輸出所計(jì)頻率輸出。設(shè)計(jì)下載后能夠進(jìn)行仿真頻率的計(jì)數(shù)和靜態(tài)顯示,但是分頻的設(shè)計(jì)程序有所缺陷導(dǎo)致長時(shí)間顯示后會(huì)有1Hz的抖動(dòng)。通過這次的設(shè)計(jì)能夠更清楚的理解VHDL程序的描述語言,進(jìn)行簡單程序的編寫和仿真。動(dòng)態(tài)輸出4位十進(jìn)制頻率計(jì)的設(shè)計(jì)一、目的1. 學(xué)習(xí)掌握頻率計(jì)的設(shè)計(jì)方法。2. 掌握動(dòng)態(tài)掃描輸出電路的實(shí)現(xiàn)方法。3. 學(xué)習(xí)較復(fù)雜的數(shù)字系統(tǒng)設(shè)計(jì)方法二、設(shè)計(jì)實(shí)

3、現(xiàn)4位十進(jìn)制頻率計(jì)外部接口如圖1所示,頂層文件如圖2所示,包含4中模塊;Tctl、reg16、scan_led和4個(gè)cnt10。(1)端口說明F1Hz:給Tctl模塊提供1Hz的頻率輸入。Fin:被測頻率輸入。scan_led:給scan_led模塊提供掃描輸入頻率輸入。bt1.0:片選信號(hào)輸出。sg6.0:譯碼信號(hào)輸出。cout:進(jìn)位輸出。圖一 四位十進(jìn)制頻率計(jì)的外部接口圖二 四位十進(jìn)制頻率計(jì)頂層文件(2)cnt10模塊說明cnt10為含異步清零和同步時(shí)鐘使能的十進(jìn)制計(jì)數(shù)器,采用級(jí)聯(lián)的方法進(jìn)行計(jì)數(shù),計(jì)數(shù)范圍與所用cnt10級(jí)聯(lián)個(gè)數(shù)有關(guān),本次設(shè)計(jì)采用的是四個(gè)cnt10的級(jí)聯(lián),所以測頻范圍為09

4、999Hz。計(jì)數(shù)模塊cnt10的源代碼如下所示:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt10 ISPORT(rst,en,clk:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);cout:OUT STD_LOGIC);END cnt10;ARCHITECTURE BEHAV OF cnt10 ISSIGNAL cnt:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(rst,en,clk)

5、BEGINIF rst='1'THEN cnt<="0000"ELSIF(clk'EVENT AND clk='1')AND en='1'THENIF cnt="1001"THENcnt<="0000"cout<='1'ELSEcnt<=cnt+1;cout<='0'END IF;END IF;END PROCESS;Q<=cnt;END BEHAV;(3)Tctl模塊說明根據(jù)頻率的定義和測量的基本原理,測定信號(hào)

6、的頻率必須有一個(gè)脈寬為1秒的對(duì)輸入信號(hào)脈沖計(jì)數(shù)允許的信號(hào);1秒計(jì)數(shù)結(jié)束后,計(jì)數(shù)值鎖入鎖存器的鎖存信號(hào)和為下一測頻計(jì)數(shù)周期做準(zhǔn)備的計(jì)數(shù)器清0信號(hào)。這三個(gè)信號(hào)可以由一個(gè)測頻控制信號(hào)發(fā)生器Tctl產(chǎn)生,其設(shè)計(jì)要求是Tctl的計(jì)數(shù)使能信號(hào)en能產(chǎn)生一個(gè)1秒脈寬的周期信號(hào),并對(duì)頻率計(jì)的每一計(jì)數(shù)器cnt10的en使能進(jìn)行同步控制、當(dāng)en高電平時(shí),允許計(jì)數(shù);低電平時(shí)停止計(jì)數(shù),并保持其所計(jì)的脈沖數(shù)。在停止計(jì)數(shù)期間,首先需要一個(gè)鎖存信號(hào)load的上升沿將計(jì)數(shù)器前1秒鐘的計(jì)數(shù)值鎖存進(jìn)各鎖存器reg16中,并由外部的譯碼器譯出并顯示計(jì)數(shù)值。鎖存信號(hào)之后,必須有一清零信號(hào)rst對(duì)計(jì)數(shù)器進(jìn)行清零,為下1秒鐘的技術(shù)操作做

7、準(zhǔn)備??刂颇KTctl源代碼如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY Tctl ISPORT ( clkk: IN STD_LOGIC;en,rst,load: OUT STD_LOGIC);END;ARCHITECTURE behav OF Tctl ISSIGNAL div2clk: STD_LOGIC;BEGINPROCESS(clkk)BEGINIF clkk'EVENT AND clkk='1'THEN div2clk <= NOT

8、 div2clk; END IF;END PROCESS;PROCESS (clkk, div2clk)BEGINIF clkk='0' AND div2clk='0' THENrst<='1'ELSE rst<= '0'END IF;END PROCESS;load<= NOT div2clk;en<=div2clk;END behav;Tctl工作時(shí)序波形圖如圖三所示:圖三 頻率計(jì)測頻控制器Tctl側(cè)可控時(shí)序圖圖中clkk的頻率為1Hz,en的高電平持續(xù)時(shí)間為1秒,此時(shí)計(jì)數(shù)器開始工作,當(dāng)en低電平的時(shí)候

9、停止計(jì)數(shù),并將計(jì)數(shù)值經(jīng)過load鎖存的reg16中最后通過scan_led譯碼顯示輸入。en的計(jì)時(shí)長度為1秒,即en的周期為2秒。計(jì)數(shù)器在en高電平計(jì)數(shù)完成即en從高電平跳躍到低電平時(shí)將計(jì)數(shù)結(jié)果鎖存的reg16中。rst在滿足clkk和en均為低電平的時(shí)候?qū)σ焰i存入鎖存器的計(jì)數(shù)信號(hào)進(jìn)行清零工作,為下一個(gè)技術(shù)周期做準(zhǔn)備。(4)鎖存器reg16模塊說明設(shè)置鎖存器的目的是使顯示的數(shù)據(jù)穩(wěn)定,不會(huì)不會(huì)由于周期性的清零信號(hào)而不斷閃爍。每次顯示數(shù)據(jù)位上一計(jì)數(shù)周期鎖存的計(jì)數(shù)值。16鎖存器源代碼如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY reg16 IS

10、PORT ( load: IN STD_LOGIC;din: IN STD_LOGIC_VECTOR(15 DOWNTO 0);Dout: OUT STD_LOGIC_VECTOR(15 DOWNTO 0);END ;ARCHITECTURE behav OF reg16 ISBEGINPROCESS(load,din)BEGINIF load'EVENT AND load='1' THENDout<=DIN;END IF;END PROCESS;END behav;(5)scan_led模塊說明動(dòng)態(tài)顯示是把所有的LED管的輸入信號(hào)連在一起,這種連接方式有兩個(gè)優(yōu)點(diǎn)

11、:一,節(jié)約器件的I/O端口;二,降低功耗。每次向LED寫數(shù)據(jù)時(shí),通過片選信號(hào)選通其中一個(gè)LED管并把數(shù)據(jù)寫入,因此每一個(gè)時(shí)刻只有一個(gè)LED是亮的。為了能持續(xù)看到LED上面的顯示類容,必須對(duì)LED管進(jìn)行掃描,即一次循環(huán)點(diǎn)亮各個(gè)LED管。利用人眼的視覺暫留,加上發(fā)光器件的余輝效應(yīng),在一定的掃描頻率下,人眼就會(huì)看到多個(gè)LED一起點(diǎn)亮。掃描的大小必須合適才能達(dá)到很好的效果。如果掃描頻率太低,就會(huì)產(chǎn)生閃爍;而掃描頻率太高會(huì)造成LED的頻繁開啟和關(guān)斷,增加LED的功耗。通常掃描頻率選擇50Hz比較合適。本次設(shè)計(jì)為四位LED動(dòng)態(tài)掃描輸出,clk為掃描掃描時(shí)鐘,考慮到cnt8的分頻作用,此次設(shè)計(jì)采用的頻率為2

12、00Hz;sg6.0為當(dāng)前正在顯示的LED地址的已譯碼數(shù)據(jù);bt1.0為輸出的片選信號(hào),決定某LED在某時(shí)刻顯示數(shù)據(jù);Din15.0為4位一組的BCD碼,共四位供顯示輸出的數(shù)據(jù)輸入。Scan_led的內(nèi)部以下三個(gè)進(jìn)程:計(jì)數(shù)模塊掃描時(shí)鐘發(fā)生器、多路選通器模塊和譯碼模塊。4位LED動(dòng)態(tài)掃描輸出scan_led源代碼如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY scan_led ISPORT (clk: IN STD_LOGIC;Din: in STD_LOGIC_VECTOR(1

13、5 DOWNTO 0);sg: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);bt: OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END;ARCHITECTURE behav OF scan_led ISSIGNAL cnt8: STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL q: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINp1: PROCESS(cnt8)BEGINcase cnt8 iswhen "00" =>bt<="00"q<=Din(3

14、 downto 0);when "01" =>bt<="01"q<=Din(7 downto 4);when "10" =>bt<="10"q<=Din(11 downto 8);when "11" =>bt<="11"q<=Din(15 downto 12);when others =>null;end case;END PROCESS p1;p2: process(clk)beginif clk'even

15、t and clk='1' then cnt8<=cnt8+1;end if;end process p2;p3: process(q)begincase q iswhen "0000" =>sg<="0111111"when "0001" =>sg<="0000110"when "0010" =>sg<="1011011"when "0011" =>sg<="1001111&

16、quot;when "0100" =>sg<="1100110"when "0101" =>sg<="1101101"when "0110" =>sg<="1111101"when "0111" =>sg<="0000111"when "1000" =>sg<="1111111"when "1001" =>sg&

17、lt;="1101111"when others =>null;end case;END PROCESS p3;END behav;(6)頂層文件仿真將各模塊按照?qǐng)D二頂層文件連接編譯通過后進(jìn)行波形仿真。波形仿真如圖四所示:圖四 四位十進(jìn)制頻率計(jì)仿真波形圖F1Hz輸入周期為1Hz;Fin為測量頻率,頻率范圍可謂1009999Hz,此次波形仿真設(shè)計(jì)時(shí)間為1KHz;clk為掃描時(shí)鐘,周期為200Hz;sg為輸出LED七段顯示譯碼結(jié)果,bt為輸出片選信號(hào),由波形仿真圖克看出片選0(00)時(shí)LED顯示為0,片選為1(01)時(shí)LED顯示為0,片選為2(10)時(shí)LED顯示為0,片選

18、為3(11)時(shí)LED顯示為1;即此時(shí)頻率計(jì)計(jì)數(shù)頻率為1000Hz,與實(shí)際輸入頻率相同。(7)硬件下載實(shí)現(xiàn)DE2沒有提供動(dòng)態(tài)輸出方式,所以選擇在WZ上實(shí)現(xiàn)。F1Hz的 1Hz輸入頻率通過DE2內(nèi)部CLOCK_50的50M晶振分頻來實(shí)現(xiàn)。輸入頻率信號(hào)和掃描頻率也由50M晶振分頻得到。又由于仿真設(shè)計(jì)中采用的是一個(gè)LED現(xiàn)實(shí)動(dòng)態(tài)數(shù)據(jù),所以下載到DE2板上是還要進(jìn)行動(dòng)態(tài)顯示電路的設(shè)計(jì)。分頻的主要原程序?yàn)椋篖IBRARY ieee;USE ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY count ISPORT( clk50:

19、IN STD_LOGIC ;q1khz: OUT STD_LOGIC);END count;ARCHITECTURE bhv OF count ISBEGINHZ:PROCESS(clk50)VARIABLE cout:INTEGER:=0;BEGINIF clk50'EVENT AND clk50='1' THENcout:=cout+1;IF cout<=24999 THEN q1khz<='0'ELSIF cout<=49999 THEN q1khz<='1'ELSE cout:=0;END IF;END I

20、F;END PROCESS;END bhv;(可以通過改變不同的cout值來進(jìn)行不同的分頻)動(dòng)態(tài)顯示源程序?yàn)椋簂ibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity export isport(q200hz:in std_logic;bt:in std_logic_vector(1 downto 0);sg:in std_logic_vector(6 downto 0);led0,led1,led2,led3:out std_logic_vector(6 downto 0);end;arch

21、itecture behav of export isbeginprocess(q200hz)beginif q200hz'event and q200hz='1' thencase bt iswhen "00" => led0<=sg(6 downto 0);when "01" => led1<=sg(6 downto 0);when "10" => led2<=sg(6 downto 0);when "11" => led3<=sg(6 d

22、ownto 0);when others=>null;end case;end if;end process;end behav;編譯仿真完成后,定義輸入/輸出腳(cout輸出定義為SW1,七段數(shù)碼管顯示為HEX0、HEX1、HEX2、HEX3,輸入頻率為clock_50),再次編譯將定義引腳鎖存到頂層文件后下載到DE2板上實(shí)現(xiàn)頻率計(jì)的測試。設(shè)計(jì)下載過程中輸入頻率也可由DE2板上的50MHz、27MHz經(jīng)過各種分頻的到最后的輸出計(jì)數(shù)頻率,或者定義EXT_CLOCK由外部時(shí)鐘來定義輸出也可以。但是在此設(shè)計(jì)中沒有外接電路,所以只能通過分頻來得到相應(yīng)的頻率計(jì)數(shù)結(jié)果。所以設(shè)計(jì)電路加上分頻和顯示電路后的頂層文件圖如圖五所示:圖五 靜態(tài)顯示實(shí)際電路三、總結(jié)通過這次的EDA設(shè)計(jì)是我更加的了解VHDL語言的應(yīng)用,尤其是在設(shè)計(jì)最后的靜態(tài)輸出的過程當(dāng)中,由于書上設(shè)計(jì)的是由單個(gè)七段

溫馨提示

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

評(píng)論

0/150

提交評(píng)論