




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、EDA課 程 設 計 (量程自動轉換數字式頻率的設計)題 目: 數字頻率計的設計 學 院: 班 級: 學 號: 姓 名: 指導老師: 提交時間: 目錄 一 設計要求二 設計方案 1,頻率計的工作原理 2,頻率計的系統框圖三 詳細設計 1, 4位十進制計數模塊 (1)十進制計數器元件cnt10v的設計 (2)計數器的頂層設計(3)分頻模塊的設計 2. 閘門控制模的設計 3可自動換擋基準時鐘模塊的設計 4.鎖存模塊的設計 5.譯碼顯示模塊的設計與實現 七段數碼顯示譯碼管的VHDL設計 6.頻率計電路頂層原理圖的設計 7實驗數據和誤差分析四總結五參考文獻數字頻率計的設計摘要: 數字頻率計是一種能夠測
2、量被測信號頻率的數字測量儀器。它被廣泛應用于航天、航空、電子、自動化測量、測控等領域。本文利用測頻原理,設計一個量程自動轉換數字式頻率計,主要硬件電路由Altera公司生產的復雜可編程邏輯(CPLD)EPM7128構成。復雜可編程邏輯器件CPLD芯片EPM7128SLC84-15完成各種時序邏輯控制、計數功能。在QUARTUS II平臺上,用VHDL語言編程完成了CPLD的軟件設計、編譯、調試、仿真和下載。由于本系統采用了先進的EDA技術,不但大大縮短了開發研制周期,而且使本系統具有結構緊湊、體積小,可靠性高,測頻范圍寬、精度高等優點。關鍵詞:頻率計;可編程邏輯器件;VHDL一、設計要求1.
3、頻率計的測量范圍為1,量程分10、100和1000三檔(最大讀數分別為9.99、99.9、999)。2. 要求量程可根據被測量的大小自動轉換。即當計數器溢出時,產生一個換檔信號,讓整個計數時間減少為原來的1/10,從而實現換檔功能。3. 要求實現溢出報警功能。即當頻率高于999時,產生一報警信號,點亮LED燈,從而實現溢出報警功能。二、設計方案1、頻率計的工作原理常用的測量頻率的方法有兩種,一個是測周期法,一個是測頻率法。測周期法需要有基準系統時鐘頻率,在待測信號一個周期內,記錄基準時鐘頻率的周期數,則被測頻率可表示為:=/ 測頻率法就是在一定的時間間隔內內,得到這個周期信號重復變化的次數,則
4、被測頻率可表示為=/ 本設計采用的是直接測頻率的方法。2、頻率計的系統框圖頻率計的系統設計可以分為4位10進制計數模塊、閘門控制模塊、鎖存器模塊、譯碼顯示模塊和可自動換檔基準時鐘模塊,其系統框圖如圖2.1所示。可自動換檔基準時鐘模塊閘門控制模塊4位10進制計數模塊譯碼顯示模塊鎖存模 塊圖2.1:頻率計的系統框圖其中,可自動換檔模塊為閘門控制模塊提供3個檔也就是3個測量范圍的基準時鐘信號,通過計數器的最高位溢出情況來判定工作在第幾檔。閘門控制模塊根據基準時鐘信號產生基準時鐘信號周期2倍的周期使能信號,隨后為鎖存器產生一周期性地鎖存信號,再然后為計數模塊產生一周期性地清零信號。4位10進制計數模塊
5、在使能信號和清零信號的控制下對被測信號的波形變化進行計數,若產生溢出則為自動換檔模塊輸出一換檔信號。譯碼顯示模塊負責不閃爍的顯示被測信號的頻率以及數字頻率計目前工作的檔位。三、詳細設計1、4位十進制計數器模塊4位十進制計數器模塊包含4個級聯十進制計數器,用來對施加到時鐘脈沖輸入端的待測信號產生的脈沖進行計數,十進制計數器具有計數使能、清零控制和進位擴展輸出。用于計數的時間間隔(計數允許周期T)由閘門控制模塊的控制信號發生器所產生的使能信號來控制,使能十進制計數器的計數允許周期T可由閘門控制模塊中的量程選擇輸入來決定。這樣允許用戶選擇所希望的被測頻率范圍,并有效地確定讀出數據中十進制小數點的位置
6、。(1)、十進制計數器元件cnt10的設計十進制計數器既可采用QuartusII的宏元件74160,也可用VHDL語言設計,本設計采用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是計數器進位輸出;cq3.0是計數器的狀態輸出;clk是時鐘輸入端;clr是復位控制輸入端,當clr=1時,cq3.0=0;en是使能控制輸入端,當en=1時,計數器計數,當en=0時,計數器保持狀態不變。 在項目編譯仿真成功后,將設計的十進制計數器電路設置成可調用的元件cnt10.bsf,用于以下的4位十進制計數器的頂層設計。(2)、計數器的頂層設計該頂層設計可以用原理圖輸入的方
9、法完成。在QUartusII中,新建一個原理圖編輯窗,從當前的工程目錄中調出4片十進制計數器元件cnt10,并按圖所示的4位十進制計數器的頂層原理圖完成電路連接,如圖3.2所示。圖3.2:計數模塊電路圖(3) 分頻模塊的設計根據設計要求,最小一檔的周期是10ms,即100Hz。選用10MHz的晶振作為EPM7128的時針,為得到1000Hz的信號需要100分頻,可知用2個cnt10級聯就可以實現,圖3.3是其電路圖。圖3.3:分頻模塊電路圖 2、閘門控制模的設計閘門控制模塊主要根據輸入的控制時鐘脈沖,首先要產生一個鎖存信號LOAD,用其上升沿控制鎖存器將之前的計數結果存入鎖存器中,并由顯示模塊
10、將其顯示出來,設置鎖存器是為了讓顯示穩定,不會因為周期性清零信號使得顯示的數值不斷閃爍。鎖存之后須有一清零信號CLR_CNT將計數器清零,為了下一秒的計數操作做準備。閘門控制模塊的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、用是作為一個計數器的時針,當tsten為低電平且計數器值不為3時,load等于1。而當tsten為低電平且計數值為3時,產生一個清零信號CLR_CNT。3、可自動換擋基準時鐘模塊的設計本設計通過控制基準時鐘信號來時現量程的自動轉換。如果一個周期為0.1s的信號作為時鐘信號通過一個進制計數器,從十進制計數器的進位輸出端將會得到一個周期為1s的信號。因此,頻率計的三檔位可以通過計數器相級聯來實現,如圖3.5所示:CLK1KO4EN 圖3.5 :可自動換擋基準計時模塊圖:圖中3選1的選擇器可以根據十進制計數器模塊的溢出情況來作為選擇標準。先使可自動變換檔的基準計時模塊工作在0擋,若被測頻率高于0擋的
14、范圍。則會使4位十進制計數器模塊產生溢出,用這個溢出信號來使自動換擋基準時鐘模塊工作在一檔;同理,如果被測頻率還是高出一擋的測量范圍,就在自動換為二檔。若被測頻率任高于二檔的測量范圍,則輸出一報警信號。可自動換擋基準計時模塊的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;圖中將所有計數器的清零信號接地,因為清零信號為高電平有效,接地信號一直保持低電平,這樣保證計數器不會被清零,一直正常工作。所有計數器的使能端需要一個高電平信號EN使其一直保持正常工作。最后一個計數器并不屬于實現基準信號換擋功能的計數器組,它直接為三選一選擇器mux3服務,統計來自4位十進制計數器模塊的最高位進位信號的個數。Y輸出端輸出已經調整了的適合于被測頻率的基準時鐘信號。4、鎖存模塊的設計鎖存模塊的功能是將4個十進制計數器的數據,
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、 譯碼顯示模塊的設計與實現 數字邏輯系統中常用的顯示器件是數碼管,半導體是數碼管的外形和等效電路如圖6-27所示,其每一個字段都是一個發光二級管(Light Emitting Diode,LED), 因而也稱之為LED數碼管或LED顯示器。LED數碼管用7段發光二極管(帶小數點時為8段)來顯示數字,每一段都是一個發光二極管,一般把所有段的相同一端相連,連接到地(共陰極接法)或者是連接到電源(共陽極接法)。共陰級LED數碼管的公共端連接到地,另一端分別接一個限流電阻后再接到控制電路的信號端,當信號端為高電平時,該段即被點亮,否則不亮。共
20、陽極接法則相反,公共端連接到電源,另一端分別接一個限流電阻后再接到控制電路的信號端,只有信號端為低電平時才被點亮,否則不亮。數碼管的掃描方式有兩種:靜態掃描和動態掃描。靜態掃描方式簡單,動態掃描方式節約資源。從資源角度出發,這里采用動態掃描方式。采用掃描方式來實現LED數碼管動態顯示,控制好數碼管之間的延時是相當重要。根據人眼視覺暫留原理,LED數碼管每秒的導通16次以上,人眼就無法分辨LED數碼管短暫的不亮,認為是一直點亮的(其實LED數碼管是以一定頻率在閃動的)。但是,延時(導通頻率)也不是越小越好,因為LED數碼管達到一定亮度需要一定時間。如果延時控制的不好則會出現閃動,或者亮度不夠。據
21、經驗,延時0.005秒可以達到滿意的效果。另外,顯示的字符有變化時,可在延時到達后送一個低電平(共陰極數碼管)讓LED數碼管先短暫熄滅,再顯示下一個字符,可使在視覺上字符的變化更清晰。 7段數碼顯示譯碼器的VHDL設計該模塊將顯示寄存器的四位BCD數字符譯成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段數據信號,SEL是數碼管的位選信號。 一位進制的源程序如下: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;由于實驗時沒有的量程,所以我們選用的量程用分頻器實現實驗的要求,且分頻器的的
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、 頻率計電路頂層原理圖的設計(1)、頻率計主體電路頂層原理圖設計在成功完成低層單元電路模塊設計仿真后,可根據測頻原理框圖,可完成圖3.7所示的頻率計電路頂層原理圖的設計文件。該電路中定時信號模塊、控制信號發生器模塊、4位十進制計數器模塊、寄存顯示模塊為前面設計低層單元電路模塊。clk為系
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《唐代詩歌鑒賞方法與技巧的教學教案》
- 《物理力學基礎概念:初二物理力學入門教案》
- 《中華文學經典:《紅樓夢》文學賞析教學》
- 值得七年級作文600字7篇范文
- 青春詞與古文風:高中文言文教學對比教案
- 攝影比賽活動方案
- 以核心素養為導向的初中歷史故事講解教案
- 公交公司籌款活動方案
- 鉆孔樁勞務分包合同
- 公眾號開業活動方案
- 高職汽修專業《汽車電氣設備維修》說課課件
- 香港(2024年-2025年小學二年級語文)統編版能力評測試卷(含答案)
- 陳述句與反問句互改(課件)-2022-2023學年三年級語文公開課
- 2025屆浙江省鎮海市鎮海中學高考歷史四模試卷含解析
- 《積極心理學(第3版)》 課件 第2章 心理流暢體驗
- 轉租授權委托書及注意事項
- FURUNO 電子海圖 完整題庫
- 2024年上海市中考地理試卷(含答案解析)
- 2024年上海市中考數學試題 (原卷版)
- 上海市2023年高中學業水平考試生物試卷真題(含答案詳解)
- 《幾種常見的天線》課件
評論
0/150
提交評論