量程自動轉(zhuǎn)換數(shù)字式頻率計的設(shè)計_第1頁
量程自動轉(zhuǎn)換數(shù)字式頻率計的設(shè)計_第2頁
量程自動轉(zhuǎn)換數(shù)字式頻率計的設(shè)計_第3頁
量程自動轉(zhuǎn)換數(shù)字式頻率計的設(shè)計_第4頁
量程自動轉(zhuǎn)換數(shù)字式頻率計的設(shè)計_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、EDA課 程 設(shè) 計 (量程自動轉(zhuǎn)換數(shù)字式頻率的設(shè)計)題 目: 數(shù)字頻率計的設(shè)計 學 院: 班 級: 學 號: 姓 名: 指導老師: 提交時間: 目錄 一 設(shè)計要求二 設(shè)計方案 1,頻率計的工作原理 2,頻率計的系統(tǒng)框圖三 詳細設(shè)計 1, 4位十進制計數(shù)模塊 (1)十進制計數(shù)器元件cnt10v的設(shè)計 (2)計數(shù)器的頂層設(shè)計(3)分頻模塊的設(shè)計 2. 閘門控制模的設(shè)計 3可自動換擋基準時鐘模塊的設(shè)計 4.鎖存模塊的設(shè)計 5.譯碼顯示模塊的設(shè)計與實現(xiàn) 七段數(shù)碼顯示譯碼管的VHDL設(shè)計 6.頻率計電路頂層原理圖的設(shè)計 7實驗數(shù)據(jù)和誤差分析四總結(jié)五參考文獻數(shù)字頻率計的設(shè)計摘要: 數(shù)字頻率計是一種能夠測

2、量被測信號頻率的數(shù)字測量儀器。它被廣泛應用于航天、航空、電子、自動化測量、測控等領(lǐng)域。本文利用測頻原理,設(shè)計一個量程自動轉(zhuǎn)換數(shù)字式頻率計,主要硬件電路由Altera公司生產(chǎn)的復雜可編程邏輯(CPLD)EPM7128構(gòu)成。復雜可編程邏輯器件CPLD芯片EPM7128SLC84-15完成各種時序邏輯控制、計數(shù)功能。在QUARTUS II平臺上,用VHDL語言編程完成了CPLD的軟件設(shè)計、編譯、調(diào)試、仿真和下載。由于本系統(tǒng)采用了先進的EDA技術(shù),不但大大縮短了開發(fā)研制周期,而且使本系統(tǒng)具有結(jié)構(gòu)緊湊、體積小,可靠性高,測頻范圍寬、精度高等優(yōu)點。關(guān)鍵詞:頻率計;可編程邏輯器件;VHDL一、設(shè)計要求1.

3、頻率計的測量范圍為1,量程分10、100和1000三檔(最大讀數(shù)分別為9.99、99.9、999)。2. 要求量程可根據(jù)被測量的大小自動轉(zhuǎn)換。即當計數(shù)器溢出時,產(chǎn)生一個換檔信號,讓整個計數(shù)時間減少為原來的1/10,從而實現(xiàn)換檔功能。3. 要求實現(xiàn)溢出報警功能。即當頻率高于999時,產(chǎn)生一報警信號,點亮LED燈,從而實現(xiàn)溢出報警功能。二、設(shè)計方案1、頻率計的工作原理常用的測量頻率的方法有兩種,一個是測周期法,一個是測頻率法。測周期法需要有基準系統(tǒng)時鐘頻率,在待測信號一個周期內(nèi),記錄基準時鐘頻率的周期數(shù),則被測頻率可表示為:=/ 測頻率法就是在一定的時間間隔內(nèi)內(nèi),得到這個周期信號重復變化的次數(shù),則

4、被測頻率可表示為=/ 本設(shè)計采用的是直接測頻率的方法。2、頻率計的系統(tǒng)框圖頻率計的系統(tǒng)設(shè)計可以分為4位10進制計數(shù)模塊、閘門控制模塊、鎖存器模塊、譯碼顯示模塊和可自動換檔基準時鐘模塊,其系統(tǒng)框圖如圖2.1所示??勺詣訐Q檔基準時鐘模塊閘門控制模塊4位10進制計數(shù)模塊譯碼顯示模塊鎖存模 塊圖2.1:頻率計的系統(tǒng)框圖其中,可自動換檔模塊為閘門控制模塊提供3個檔也就是3個測量范圍的基準時鐘信號,通過計數(shù)器的最高位溢出情況來判定工作在第幾檔。閘門控制模塊根據(jù)基準時鐘信號產(chǎn)生基準時鐘信號周期2倍的周期使能信號,隨后為鎖存器產(chǎn)生一周期性地鎖存信號,再然后為計數(shù)模塊產(chǎn)生一周期性地清零信號。4位10進制計數(shù)模塊

5、在使能信號和清零信號的控制下對被測信號的波形變化進行計數(shù),若產(chǎn)生溢出則為自動換檔模塊輸出一換檔信號。譯碼顯示模塊負責不閃爍的顯示被測信號的頻率以及數(shù)字頻率計目前工作的檔位。三、詳細設(shè)計1、4位十進制計數(shù)器模塊4位十進制計數(shù)器模塊包含4個級聯(lián)十進制計數(shù)器,用來對施加到時鐘脈沖輸入端的待測信號產(chǎn)生的脈沖進行計數(shù),十進制計數(shù)器具有計數(shù)使能、清零控制和進位擴展輸出。用于計數(shù)的時間間隔(計數(shù)允許周期T)由閘門控制模塊的控制信號發(fā)生器所產(chǎn)生的使能信號來控制,使能十進制計數(shù)器的計數(shù)允許周期T可由閘門控制模塊中的量程選擇輸入來決定。這樣允許用戶選擇所希望的被測頻率范圍,并有效地確定讀出數(shù)據(jù)中十進制小數(shù)點的位置

6、。(1)、十進制計數(shù)器元件cnt10的設(shè)計十進制計數(shù)器既可采用QuartusII的宏元件74160,也可用VHDL語言設(shè)計,本設(shè)計采用VHDL編寫,其源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt10v ISPORT(clr:IN STD_LOGIC; clk:IN STD_LOGIC; cout:OUT STD_LOGIC; en:IN STD_LOGIC; cq:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END cnt10v;ARCHI

7、TECTURE example1 OF cnt10v ISBEGIN PROCESS(clr,clk,en)VARIABLE cqi:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF clr='1' THEN cqi:=(OTHERS=>'0');ELSIF CLK'EVENT AND clk='1' THENIF EN='1' THENIF cqi<9 then cqi:=cqi+1;ELSE cqi:=(OTHERS=>'0');END IF;END IF;EN

8、D IF;IF cqi=9 THEN cout<='1'ELSE cout<='0'END IF;cq<=cqi;END PROCESS;END ;在源程序中cout是計數(shù)器進位輸出;cq3.0是計數(shù)器的狀態(tài)輸出;clk是時鐘輸入端;clr是復位控制輸入端,當clr=1時,cq3.0=0;en是使能控制輸入端,當en=1時,計數(shù)器計數(shù),當en=0時,計數(shù)器保持狀態(tài)不變。 在項目編譯仿真成功后,將設(shè)計的十進制計數(shù)器電路設(shè)置成可調(diào)用的元件cnt10.bsf,用于以下的4位十進制計數(shù)器的頂層設(shè)計。(2)、計數(shù)器的頂層設(shè)計該頂層設(shè)計可以用原理圖輸入的方

9、法完成。在QUartusII中,新建一個原理圖編輯窗,從當前的工程目錄中調(diào)出4片十進制計數(shù)器元件cnt10,并按圖所示的4位十進制計數(shù)器的頂層原理圖完成電路連接,如圖3.2所示。圖3.2:計數(shù)模塊電路圖(3) 分頻模塊的設(shè)計根據(jù)設(shè)計要求,最小一檔的周期是10ms,即100Hz。選用10MHz的晶振作為EPM7128的時針,為得到1000Hz的信號需要100分頻,可知用2個cnt10級聯(lián)就可以實現(xiàn),圖3.3是其電路圖。圖3.3:分頻模塊電路圖 2、閘門控制模的設(shè)計閘門控制模塊主要根據(jù)輸入的控制時鐘脈沖,首先要產(chǎn)生一個鎖存信號LOAD,用其上升沿控制鎖存器將之前的計數(shù)結(jié)果存入鎖存器中,并由顯示模塊

10、將其顯示出來,設(shè)置鎖存器是為了讓顯示穩(wěn)定,不會因為周期性清零信號使得顯示的數(shù)值不斷閃爍。鎖存之后須有一清零信號CLR_CNT將計數(shù)器清零,為了下一秒的計數(shù)操作做準備。閘門控制模塊的VHDL源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TESTCTL ISPORT(clk,fin:IN STD_LOGIC; clr_cnt:OUT STD_LOGIC; tsten:OUT STD_LOGIC; load:OUT STD_LOGIC);END;ARCHITECTURE on

11、e OF TESTCTL IS SIGNAL a:STD_LOGIC; SIGNAL count:STD_LOGIC_VECTOR (1 downto 0); BEGIN PROCESS(clk) BEGIN IF clk'EVENT AND clk='1' THEN a<=not a; END IF; END PROCESS;PROCESS(fin) BEGIN IF fin'EVENT AND fin='1' THEN IF a='0' then IF count="11" then load<

12、='0'clr_cnt<='1' ELSE load<='1'count<=count+1;clr_cnt<='0' END IF; ELSE count<="00"load<='0'clr_cnt<='0' END IF; END IF; END PROCESS; tsten<=a;END; 閘門控制模塊的仿真波形如圖3.4所示,圖中clk是輸入的時針信號,tesen是clk的二分頻。圖中還有fin時針,它的頻率要遠小于clk,作

13、用是作為一個計數(shù)器的時針,當tsten為低電平且計數(shù)器值不為3時,load等于1。而當tsten為低電平且計數(shù)值為3時,產(chǎn)生一個清零信號CLR_CNT。3、可自動換擋基準時鐘模塊的設(shè)計本設(shè)計通過控制基準時鐘信號來時現(xiàn)量程的自動轉(zhuǎn)換。如果一個周期為0.1s的信號作為時鐘信號通過一個進制計數(shù)器,從十進制計數(shù)器的進位輸出端將會得到一個周期為1s的信號。因此,頻率計的三檔位可以通過計數(shù)器相級聯(lián)來實現(xiàn),如圖3.5所示:CLK1KO4EN 圖3.5 :可自動換擋基準計時模塊圖:圖中3選1的選擇器可以根據(jù)十進制計數(shù)器模塊的溢出情況來作為選擇標準。先使可自動變換檔的基準計時模塊工作在0擋,若被測頻率高于0擋的

14、范圍。則會使4位十進制計數(shù)器模塊產(chǎn)生溢出,用這個溢出信號來使自動換擋基準時鐘模塊工作在一檔;同理,如果被測頻率還是高出一擋的測量范圍,就在自動換為二檔。若被測頻率任高于二檔的測量范圍,則輸出一報警信號。可自動換擋基準計時模塊的VHDL源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux3 ISPORT(a:IN STD_LOGIC_VECTOR(3 DOWNTO 0); y:OUT STD_LOGIC; o:OUT STD_LOGIC; input0:in STD_LOGIC;input1:in STD_LOGIC;input2:i

15、n STD_LOGIC);END mux3;ARCHITECTURE example5 OF mux3 ISBEGIN PROCESS(input0,input1,input2,a)BEGIN CASE a IS WHEN"0000"=>y<=input0;o<='0' WHEN"0001"=>y<=input1;o<='0' WHEN"0010"=>y<=input2;o<='0' WHEN"0011"=>

16、y<='0'o<='1' WHEN OTHERS=>null;END CASE;END PROCESS;END;圖中將所有計數(shù)器的清零信號接地,因為清零信號為高電平有效,接地信號一直保持低電平,這樣保證計數(shù)器不會被清零,一直正常工作。所有計數(shù)器的使能端需要一個高電平信號EN使其一直保持正常工作。最后一個計數(shù)器并不屬于實現(xiàn)基準信號換擋功能的計數(shù)器組,它直接為三選一選擇器mux3服務(wù),統(tǒng)計來自4位十進制計數(shù)器模塊的最高位進位信號的個數(shù)。Y輸出端輸出已經(jīng)調(diào)整了的適合于被測頻率的基準時鐘信號。4、鎖存模塊的設(shè)計鎖存模塊的功能是將4個十進制計數(shù)器的數(shù)據(jù),

17、在LOAD信號有效時(LOAD=1)鎖存到寄存器中,其VHDL源程序如圖所示:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG16 ISPORT(DIN0:IN STD_LOGIC_VECTOR(3 DOWNTO 0); DIN1:IN STD_LOGIC_VECTOR(3 DOWNTO 0); DIN2:IN STD_LOGIC_VECTOR(3 DOWNTO 0); DIN3:IN STD_LOGIC_VECTOR(3 DOWNTO 0); LOAD:IN STD_LOGIC; DOUT0:OUT STD_LOGIC_VECTOR(3

18、DOWNTO 0); DOUT1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); DOUT2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); DOUT3:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END REG16;ARCHITECTURE one OF REG16 ISBEGINPROCESS(LOAD) BEGIN IF LOAD'event and LOAD='1'THEN DOUT0<=DIN0; DOUT1<=DIN1; DOUT2<=DIN2; DOUT3<=DIN3;

19、END IF; END PROCESS;END one;5、 譯碼顯示模塊的設(shè)計與實現(xiàn) 數(shù)字邏輯系統(tǒng)中常用的顯示器件是數(shù)碼管,半導體是數(shù)碼管的外形和等效電路如圖6-27所示,其每一個字段都是一個發(fā)光二級管(Light Emitting Diode,LED), 因而也稱之為LED數(shù)碼管或LED顯示器。LED數(shù)碼管用7段發(fā)光二極管(帶小數(shù)點時為8段)來顯示數(shù)字,每一段都是一個發(fā)光二極管,一般把所有段的相同一端相連,連接到地(共陰極接法)或者是連接到電源(共陽極接法)。共陰級LED數(shù)碼管的公共端連接到地,另一端分別接一個限流電阻后再接到控制電路的信號端,當信號端為高電平時,該段即被點亮,否則不亮。共

20、陽極接法則相反,公共端連接到電源,另一端分別接一個限流電阻后再接到控制電路的信號端,只有信號端為低電平時才被點亮,否則不亮。數(shù)碼管的掃描方式有兩種:靜態(tài)掃描和動態(tài)掃描。靜態(tài)掃描方式簡單,動態(tài)掃描方式節(jié)約資源。從資源角度出發(fā),這里采用動態(tài)掃描方式。采用掃描方式來實現(xiàn)LED數(shù)碼管動態(tài)顯示,控制好數(shù)碼管之間的延時是相當重要。根據(jù)人眼視覺暫留原理,LED數(shù)碼管每秒的導通16次以上,人眼就無法分辨LED數(shù)碼管短暫的不亮,認為是一直點亮的(其實LED數(shù)碼管是以一定頻率在閃動的)。但是,延時(導通頻率)也不是越小越好,因為LED數(shù)碼管達到一定亮度需要一定時間。如果延時控制的不好則會出現(xiàn)閃動,或者亮度不夠。據(jù)

21、經(jīng)驗,延時0.005秒可以達到滿意的效果。另外,顯示的字符有變化時,可在延時到達后送一個低電平(共陰極數(shù)碼管)讓LED數(shù)碼管先短暫熄滅,再顯示下一個字符,可使在視覺上字符的變化更清晰。 7段數(shù)碼顯示譯碼器的VHDL設(shè)計該模塊將顯示寄存器的四位BCD數(shù)字符譯成7段碼,其VHDL源程序如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity dec7s isport(din:in bit_vector(3 downto 0); dout:out bit_vector(6 downto 0);end;architecture example2 of dec

22、7s isbegin process(din) begin case din is when"0000"=>dout<="0111111" when"0001"=>dout<="0000110" when"0010"=>dout<="1011011" when"0011"=>dout<="1001111" when"0100"=>dout<="11

23、00110" when"0101"=>dout<="1111101" when"0110"=>dout<="0111111" when"0111"=>dout<="0000111" when"1000"=>dout<="1111111" when"1001"=>dout<="1101111" when"1010&quo

24、t;=>dout<="1110111" when"1011"=>dout<="1111100" when"1100"=>dout<="0111001" when"1101"=>dout<="1011110" when"1110"=>dout<="1111001" when"1111"=>dout<="1100001&

25、quot; when others=>null; end case; end process;end example2;程序中,din是09的BCD碼輸入,dout為譯碼后的7段數(shù)據(jù)信號,SEL是數(shù)碼管的位選信號。 一位進制的源程序如下:library IEEE;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt16v isport(clk:in std_logic;-cout:out std_logic;-en:in std_logic;cq:out std_logic_vector(1 down

26、to 0);end cnt16v;ARCHITECTURE examplel of cnt16v isbegin process(clk)variable cqi:std_logic_vector(1 downto 0);beginif clk 'event and clk='1' thenif cqi<3 then cqi:=cqi+1;else cqi:=(others=>'0');end if;end if;-if cqi=15 then cout<='1'-else cout<='0'-en

27、d if;cq<=cqi;end process;end examplel ;:四選一選擇器的的源程序如下LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux41 ISPORT(a:IN STD_LOGIC_VECTOR(1 DOWNTO 0); y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); input0:in STD_LOGIC_VECTOR(3 DOWNTO 0);input1:in STD_LOGIC_VECTOR(3 DOWNTO 0);input2:in STD_LOGIC_VECTOR(3 DOWNT

28、O 0);input3:in STD_LOGIC_VECTOR(3 DOWNTO 0);END mux41;ARCHITECTURE example6 OF mux41 ISBEGIN PROCESS(input0,input1,input2,input3,a)BEGIN CASE a IS WHEN"00"=>y<=input0; WHEN"01"=>y<=input1; WHEN"10"=>y<=input2; WHEN"11"=>y<=input3; WHEN

29、OTHERS=>null;END CASE;END PROCESS;END example6;library ieee;use ieee.std_logic_1164.all;entity choose_decoder isport(sel:in std_logic_vector(1 downto 0); choose:out std_logic_vector(3 downto 0);end choose_decoder;architecture rtl of choose_decoder isbeginprocess(sel)begincase sel iswhen "00&

30、quot;=>choose<="0001"when "01"=>choose<="0010"when "10"=>choose<="0100"when "11"=>choose<="1000"when others=>choose<="ZZZZ"end case;end process;end rtl;由于實驗時沒有的量程,所以我們選用的量程用分頻器實現(xiàn)實驗的要求,且分頻器的的

31、源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity div isport(clk:in std_logic; rst:in std_logic; divclk:out std_logic);end div;architecture behavioral of div issignal divcounter:std_logic_vector(20 downto 0);signal div_clk:std_logic;be

32、ginprocess(clk,rst)beginif (rst='1') thendivcounter<="000000000000000000000"div_clk<='0'elsif(rising_edge(clk) thendivcounter<="000000000000000000000"div_clk<=not div_clk;elsedivcounter<=divcounter+1;end if;end if;end process;divclk<=div_clk;end behavioral;6、 頻率計電路頂層原理圖的設(shè)計(1)、頻率計主體電路頂層原理圖設(shè)計在成功完成低層單元電路模塊設(shè)計仿真后,可根據(jù)測頻原理框圖,可完成圖3.7所示的頻率計電路頂層原理圖的設(shè)計文件。該電路中定時信號模塊、控制信號發(fā)生器模塊、4位十進制計數(shù)器模塊、寄存顯示模塊為前面設(shè)計低層單元電路模塊。clk為系

溫馨提示

  • 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

提交評論