VHDL八位數(shù)碼管頻率計課程設計_第1頁
VHDL八位數(shù)碼管頻率計課程設計_第2頁
VHDL八位數(shù)碼管頻率計課程設計_第3頁
VHDL八位數(shù)碼管頻率計課程設計_第4頁
VHDL八位數(shù)碼管頻率計課程設計_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、一、課程設計要求設計一個8位數(shù)碼管顯示的頻率計(頻率分辨率為1Hz)。二、總體結構框圖圖1 總體結構框圖三、課程設計原理在電子技術中,頻率是最基本的參數(shù)之一,并且與許多點參量的測量方案、測量結果都有十分密切的關系,因此,頻率的測量就顯得尤為重要。測量頻率的方法有很多種,其中電子計數(shù)器測量頻率具有精度高、使用方便、測量迅速,以及便于實現(xiàn)測量過程自動化等優(yōu)點,是頻率測量的重要手段之一。數(shù)字式頻率計的測量原理有兩類:一是直接測頻法,即在一定的閘門時間內測量被測信號的脈沖個數(shù);二是間接測頻法即周期法,如周期測頻法。直接測頻法適用于高頻信號的頻率測量,通常采用計數(shù)器、數(shù)據(jù)鎖存器及控制電路實現(xiàn),并通過改變

2、計數(shù)閥門的時間長短以達到不同的測量精度;間接測頻法適用于低頻信號的頻率測量。本次課程設計中使用的是直接測頻法,即用計數(shù)器在計算機1s內輸入信號周期的個數(shù),其測頻范圍為0Hz-99999999Hz。四、器件的選擇1、裝有QuartusII軟件的計算機一臺。2、芯片:本實驗板中為EP芯片。3、EDA實驗箱一個。4、下載接口是數(shù)字芯片的下載接口(JTAG)主要用于FPGA芯片的數(shù)據(jù)下載。5、時鐘源。五、功能模塊和信號仿真圖以及源程序(1) 系統(tǒng)時鐘分頻及控制的功能模塊圖及其源程序 圖2 功能模塊圖作用:將試驗箱上的50MHz的晶振分頻,輸出CLOCK為數(shù)碼管提供1kHz的動態(tài)掃描頻率。CNT_EN輸

3、出為0.05s的信號,對頻率計中的32位十進制計數(shù)器CNT10的ENA使能端進行同步控制,當TSTEN高電平時允許計數(shù),低電平時停止計數(shù),并保持其所計的脈沖數(shù)。在停止計數(shù)期間,首先需要一個鎖存信號LOAD的上跳沿將計數(shù)器在前一秒的計數(shù)值鎖存進鎖存器REG32B中,并由外部的十進制7段數(shù)碼管顯示計數(shù)值。設置鎖存器的好處是數(shù)據(jù)顯示穩(wěn)定,不會由于周期性的清零信號而不斷閃爍。鎖存信號后,必須有一個清零信號RST_CNT對計數(shù)器進行清零,為下一秒的計數(shù)操作做準備。該模塊的信號仿真圖如下:圖3 仿真波形圖源程序如下:-分頻library ieee;use ieee.std_logic_1164.all;e

4、ntity fdivwangzheng isport(clk0:in std_logic; -輸入系統(tǒng)時鐘 clk1:out std_logic; -輸出1hz時鐘信號 clk2:out std_logic); -輸出顯示掃描時鐘信號 end fdivwangzheng;architecture a of fdivwangzheng isbegin p1:process(clk0)variable cnt:integer range 0 to 49999999; -分頻系數(shù)為24999999variable ff:std_logic;beginif clk0'event and clk

5、0='1' thenif cnt<49999999 thencnt:=cnt+1;elsecnt:=0;ff:=not ff; -反向end if;end if;clk1<=ff;end process p1;p2:process(clk0) variable cnn:integer range 0 to 999; -分頻系數(shù)為499variable dd:std_logic;beginif clk0'event and clk0='1' thenif cnn<999 thencnn:=cnn+1;elsecnn:=0;dd:=not

6、dd; -反向end if;end if;clk2<=dd;end process p2;end a;-測頻控制器(testctl.vhd)LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TESTCTLwanzheng IS PORT ( CLKK : IN STD_LOGIC; - 1Hz CNT_EN,RST_CNT,LOAD : OUT STD_LOGIC); END TESTCTLwanzheng;ARCHITECTURE behav OF TESTCTLwanzhe

7、ng IS SIGNAL DIV2CLK : STD_LOGIC;BEGIN PROCESS( CLKK ) BEGIN IF CLKK'EVENT AND CLKK = '1' THEN DIV2CLK <= NOT DIV2CLK; END IF; END PROCESS; PROCESS (CLKK, DIV2CLK) BEGIN IF CLKK='0' AND Div2CLK='0' THEN RST_CNT <= '1' ELSE RST_CNT <= '0' END IF; E

8、ND PROCESS; LOAD <= NOT DIV2CLK ; CNT_EN <= DIV2CLK;END behav;(2) 十進制計數(shù)器的功能模塊圖及其源程序圖4 功能模塊圖作用:當使能端為高電平,清零端為低電平時,實現(xiàn)十進制計數(shù)功能。第一個CNT10計數(shù)輸出CQ=9時,下一秒時鐘上升沿到來時,將產生一個CARRY_OUT信號作為下一個CNT10的時鐘信號,同時CQ清零,依次遞推到8個CNT10。當清零端為低電平,使能端為低電平時停止計數(shù)。當清零端為高電平時,計數(shù)器清零。該模塊的信號仿真圖如下:圖5 仿真波形圖源程序如下:LIBRARY IEEE;USE IEEE.STD_

9、LOGIC_1164.ALL;ENTITY CNT10 ISPORT(CLK: IN STD_LOGIC; CLR: IN STD_LOGIC; ENA: IN STD_LOGIC; CQ : OUT INTEGER RANGE 0 TO 9; CARRY_OUT: OUT STD_LOGIC);END CNT10;ARCHITECTURE behav OF CNT10 ISSIGNAL CQI: INTEGER RANGE 0 TO 9;BEGINPROCESS(CLR,CLK,ENA)BEGINIF(CLR='1') THEN CQI<=0;ELSIF(CLK'

10、;EVENT AND CLK='1') THEN IF(ENA='1') THEN IF(CQI=9) THEN CQI<=0; CARRY_OUT<='1' ELSE CQI<=CQI+1; CARRY_OUT<='0' END IF; END IF;END IF;END PROCESS;CQ<=CQI;END behav;(3) 32位鎖存器的功能模塊圖及其源程序圖6 功能模塊圖實現(xiàn)方式:LOAD信號上升沿到來時將對輸入到內部的CNT10計數(shù)信號進行鎖存。作用:鎖存信號,并將結果輸出給SELTIM

11、E。該模塊的信號仿真圖如下:圖7 仿真波形圖源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG32B IS PORT(LOAD: IN STD_LOGIC;DIN: IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT: OUT STD_LOGIC_VECTOR(31 DOWNTO 0 );END ENTITY REG32B;ARCHITECTURE behav OF REG32B ISBEGIN PROCESS(LOAD,DIN) ISBEGIN IF LOAD'EVENT AND LOAD=

12、9;1' THEN DOUT<=DIN; END IF;END PROCESS;END ARCHITECTURE behav;(4) 數(shù)碼管掃描的功能模塊圖及其源程序圖8 功能模塊圖作用:鎖存信號輸出DIN31.0,然后由SELTIME進行掃描輸出,當SEL為”000”時選通第一個CNT10,輸出到LED7進行譯碼輸出。依次類推。該模塊的信號仿真圖如下:圖9 仿真波形圖源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SELTIME ISPORT( CLK :

13、 IN STD_LOGIC; DIN : IN STD_LOGIC_VECTOR(31 DOWNTO 0); DAOUT: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SEL : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END SELTIME;ARCHITECTURE behav OF SELTIME ISSIGNAL SEC : STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINPROCESS(CLK)BEGIN IF(CLK'EVENT AND CLK='1') THEN IF(SEC="

14、111") THEN SEC<="000" ELSE SEC<=SEC+1; END IF; END IF;END PROCESS;PROCESS(SEC,DIN(31 DOWNTO 0)BEGINCASE SEC ISWHEN "000"=>DAOUT<=DIN(3 DOWNTO 0);WHEN "001"=>DAOUT<=DIN(7 DOWNTO 4);WHEN "010"=>DAOUT<=DIN(11 DOWNTO 8);WHEN "011&

15、quot;=>DAOUT<=DIN(15 DOWNTO 12);WHEN "100"=>DAOUT<=DIN(19 DOWNTO 16);WHEN "101"=>DAOUT<=DIN(23 DOWNTO 20);WHEN "110"=>DAOUT<=DIN(27 DOWNTO 24);WHEN "111"=>DAOUT<=DIN(31 DOWNTO 28);WHEN OTHERS=>NULL;END CASE;END PROCESS;SEL<=

16、SEC;END behav;(5) 七段數(shù)碼管譯碼顯示的功能模塊圖及其源程序圖10 功能模塊圖作用:將實驗結果使用數(shù)碼管直觀的顯示出來。該模塊的信號仿真圖如下:圖11 仿真波形圖源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY LED7 ISPORT(DIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);DOUT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END LED7;ARCHITECTURE behav OF LED7 IS-

17、SIGNAL LED7:STD_LOGIC_VECTOR(6 DOWNTO 0);BEGINPROCESS(DIN)BEGINCASE DIN ISWHEN "0000"=>DOUT<="0111111"WHEN "0001"=>DOUT<="0000110"WHEN "0010"=>DOUT<="1011011"WHEN "0011"=>DOUT<="1001111"WHEN "

18、;0100"=>DOUT<="1100110"WHEN "0101"=>DOUT<="1101101"WHEN "0110"=>DOUT<="1111101"WHEN "0111"=>DOUT<="0000111"WHEN "1000"=>DOUT<="1111111"WHEN "1001"=>DOUT<="

19、;1101111"WHEN "1010"=>DOUT<="1110111"WHEN "1011"=>DOUT<="1111100"WHEN "1100"=>DOUT<="0111001"WHEN "1101"=>DOUT<="1011110"WHEN "1110"=>DOUT<="1111001"WHEN "1111&

20、quot;=>DOUT<="1110001"WHEN OTHERS=>NULL;END CASE;END PROCESS;END ARCHITECTURE behav;(6) 3-8譯碼器的功能模塊圖及其源程序圖12 功能模塊圖作用:利用3-8譯碼器將數(shù)碼管的位選信號選通。該模塊的信號仿真圖如下:圖13 仿真波形圖源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LS138 IS PORT(Q: IN STD_LOGIC_VECTOR(2 DOWNTO 0); D: OUT STD_LOGIC_VE

21、CTOR(7 DOWNTO 0); dp:OUT STD_LOGIC);END LS138;ARCHITECTURE behav OF LS138 ISBEGIN WITH Q SELECT D<="11111110" WHEN "000","11111101" WHEN "001","11111011" WHEN "010","11110111" WHEN "011","11101111" WHEN &quo

22、t;100","11011111" WHEN "101","10111111" WHEN "110","01111111" wHEN "111","11111111" WHEN OTHERS;WITH Q SELECT dp<='1' WHEN "001",'0' WHEN OTHERS;END behav;6、 頂層模塊圖圖14 總體設計頂層模塊圖其中8個十進制計數(shù)器模塊JSQ的底層模塊

23、圖如圖15所示:圖15 計數(shù)器模塊原理圖 本次課程設計的時鐘信號由試驗箱上面的5MHz的晶振提供,經(jīng)過系統(tǒng)時鐘和控制模塊后分別產生0.05Hz和10kHz的脈沖信號0.05Hz的脈沖信號十進制計數(shù)器的使能信號,使計數(shù)器統(tǒng)計出待測信號在1s脈寬之間的脈沖數(shù)目。再由計數(shù)模塊將測得的信號傳送給數(shù)碼管顯示部分,通過譯碼模塊產生可以在數(shù)碼管上顯示的BCD碼。而1kHz是作為數(shù)碼管動態(tài)掃描的頻率,由于人的視覺暫留現(xiàn)象,頻率較高時,數(shù)碼管看起來就是連續(xù)發(fā)光。本設計中使個位顯示為數(shù)碼管的小數(shù)點后面一位,由此實現(xiàn)了頻率分辨率為1Hz的頻率計設計。結論EDA技術是電子設計的發(fā)展趨勢,利用EDA工具可以代替設計者完成電子系統(tǒng)設計中的大部分工作。EDA工具從數(shù)字系統(tǒng)設計的單一領域,發(fā)展到今天,應用范圍己涉及

溫馨提示

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

評論

0/150

提交評論