




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、數(shù)字頻率計簡易設計 課程名稱_現(xiàn)代電子系統(tǒng)設計_學生學院_ 自動化學院 _專業(yè)班級_ 電機與電器 _學 號 2111004002 學生姓名_ 梁國榮 _指導教師_謝云_ 教授 _2011 年 5 月 25 日摘 要頻率計是常用的測量儀器,它的測量原理大致分直接測頻法和測量周期法兩類。直接測頻法是測量單位時間內(nèi)被測信號的周期數(shù),通常采用計數(shù)器、數(shù)據(jù)鎖存器及控制電路實現(xiàn),本文就是采取直接測頻法,通過使用vhdl語言來設計數(shù)字頻率計,對單位時間內(nèi)的信號脈沖進行計數(shù)測量出信號的頻率。本文給出了vhdl源程序、原理圖和仿真圖形,所設計的電路通過硬件仿真,下載到目標器件上運行,能夠滿足測量頻率的要求,具有
2、理論與實踐意義,實現(xiàn)了電子電路自動化(eda)的過程。關鍵詞:數(shù)字頻率計 vhdl 直接測量法 仿真 eda目 錄1 前言1 1.1 eda發(fā)展概括11.2 課題背景的意義12 設計方案22.1 設計任務與要求22.2 總體方案設計思路和原理框圖23 vhdl語言44 測頻控制電路ftctrl54.1 測頻控制電路程序54.2 程序分析65 四位十進制計數(shù)器cnt485.1 四位十進制計數(shù)器電路程序85.2 程序分析106 四位鎖存器電路reg4b126.1 四位鎖存器電路程序126.2 程序分析137 頂層文件147.1 頂層文件程序147.2 程序分析178 不足原因與改進19參考文獻 2
3、01 前言1.1 eda發(fā)展概括eda技術是以大規(guī)模可編程邏輯器件為設計載體,以硬件語言為系統(tǒng)邏輯描述的主要方式,以計算機、大規(guī)模可編程邏輯器件的開發(fā)軟件及實驗開發(fā)系統(tǒng)為設計工具,通過有關的開發(fā)軟件,自動完成用軟件設計的電子系統(tǒng)到硬件系統(tǒng)的設計,最終形成集成電子系統(tǒng)或專用集成芯片的一門新技術。1.2 課題背景的意義數(shù)字頻率計是電子設計、儀器儀表、資源勘測等應用領域不可缺少的測量儀器,不少物理量的測量,如振動、轉速等的測量都涉及到或可以轉化為頻率的測量。傳統(tǒng)的數(shù)字頻率計一般由分立原件組合而成,其測量范圍、測量精度和測量速度均受到較大的限制。單片機的發(fā)展與應用改善了這種情況,但由于單片機本身也受到
4、工作頻率及內(nèi)部計數(shù)器位數(shù)等因素的限制,所以無法在此領域取得突破性的發(fā)展。隨著大規(guī)模可編程邏輯器件技術的發(fā)展,能夠將大量的邏輯功能集成于單個芯片中,根據(jù)不同的需要所提供的邏輯門數(shù)目可以從幾百至上百萬之多,從根本上解決了單片機的先天性限制問題。在基準頻率及精度等外部條件的允許下,根據(jù)不同場合的精度要求,對硬件描述語言作進一步的改動,可以較容易的使系統(tǒng)在性能上得到升級,從而降低系統(tǒng)的整體造價。quartus ii是altera公司推出的一款功能強大,兼容性最好的eda工具軟件。該軟件界面友好、使用便捷、功能強大,是一個完全集成化的可編程邏輯設計環(huán)境,具有開放性、與結構無關,多平臺、完全集成化、豐富的
5、設計庫、模塊化工具、支持多種硬件描述語言及有多種高級編程語言接口等特點。本文在quartus ii開發(fā)環(huán)境下,運用vhdl輸入設計方法對數(shù)字頻率計進行設計,并下載到eda實驗平臺上。經(jīng)仿真測試,其測頻范圍可達1hz1999hz,用4位數(shù)碼管顯示,可靠性好。2 設計方案2.1 設計任務與要求設計一個具有如下功能的簡易頻率計,具體要求如下:1) 被測信號的頻率范圍為11999hz,用4位數(shù)碼管顯示數(shù)據(jù)。2) 測量結果直接用十進制數(shù)值顯示。3) 具有超量程警告??梢杂冒l(fā)光二極管表示,也可以用喇叭報警。4) 采用層次化的設計方法完成任務。5) 利用quartus ii軟件,用vhdl輸入方法,通過編譯
6、、仿真、綜合,并分析其中不足與解決方案。2.2 總體方案設計思路和原理框圖(一)設計思路頻率的概念是單位時間里脈沖的個數(shù)。數(shù)字式頻率計的測量原理大致分直接測頻法和測量周期法兩類。直接測頻法是測量單位時間內(nèi)被測信號的周期數(shù),通常采用計數(shù)器、數(shù)據(jù)鎖存器及控制電路實現(xiàn),并通過改變計數(shù)器開門時間長短來達到不同的測量精度。本電路設計可以采用直接測頻法,原理框圖如圖21所示。它包括測量控制電路、計數(shù)器和鎖存器組成。將被測信號作為計數(shù)器的時鐘脈沖,計數(shù)器開始計數(shù),再將數(shù)據(jù)送到數(shù)據(jù)鎖存器鎖存計數(shù)結果,計數(shù)結果經(jīng)七段譯碼后,直接驅動外部數(shù)碼顯示。測量控制電路分別產(chǎn)生鎖存信號、清零信號和使能信號。(二)原理框圖簡
7、易數(shù)字頻率計原理框圖如圖21所示。圖2-1 數(shù)字頻率計原理框圖(三)頻率計設計原理步驟頻率計工作原理:數(shù)字頻率計是直接用十進制數(shù)字來顯示被測信號頻率的一種測量裝置。所謂頻率,就是周期性信號在單位時間(1s)里變化的次數(shù)。若在一定時間間隔t內(nèi)測得的這個周期性信號的重復變化次數(shù)n,則其頻率可表示為f=n/t。由于本文是基于簡易頻率計的基礎上設計的,這里取t為1秒,如果測量控制信號產(chǎn)生器ftctrl能產(chǎn)生1秒的門閘信號cnt_en,使得十進制計數(shù)器cnt4在這段時間內(nèi)記錄被測信號脈沖個數(shù),記錄結果為n,則該信號頻率fn。此時,ftctrl關閉門閘信號,并且產(chǎn)生鎖存信號load給4位數(shù)據(jù)鎖存器reg4
8、b,將計數(shù)器所記錄的結果鎖存并且發(fā)給七段譯碼器譯碼,將結果輸出給4位數(shù)碼管顯示數(shù)據(jù)。再下一秒門閘信號置“1”時,ftctrl發(fā)出清零信號rst_cnt,將cnt4內(nèi)數(shù)據(jù)清零,以便測量變化的被測信號頻率。根據(jù)以上分析,文本將數(shù)字頻率計設計步驟安排如下:1. 設計測量控制信號產(chǎn)生器ftctrl:輸入標準時鐘情況下,產(chǎn)生周期為2秒的門閘信號cnt_en,其中高電平1秒時計數(shù)器計數(shù),低電平1秒時發(fā)出鎖存信號load(在計數(shù)結束時馬上鎖存,提高響應時間)和清零信號rst_cnt(滯后于鎖存信號幾個標準時鐘,讓鎖存器穩(wěn)定鎖存數(shù)據(jù))。2. 設計十進制計數(shù)器模板cnt4:當收到ftctrl發(fā)來的門閘信號時,計
9、數(shù)被測信號脈沖。門閘信號為低電平是,不計數(shù)。清零信號來時置“0”。3. 設計鎖存器模板reg4b:當收到ftctrl發(fā)來的鎖存信號時,將計數(shù)器記錄數(shù)據(jù)鎖存。關于信號發(fā)生器模板ftctrl、十進制計數(shù)器模板cnt4、鎖存器模板reg4b詳細設計及源程序在4到5節(jié)中詳細說明。3 vhdl語言本節(jié)當中,主要簡單介紹vhdl最基本的語法、結構以及設計流程。以幫助閱讀第四至五節(jié)vhdl編程。alibrary ieee; 打開ieee庫buse ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;調(diào)用庫里相關的程序包,使程序編寫更方便,更容易且易
10、讀centity * isport()end *;對實體作表述,定義各種端口din std_logic;定義輸入的標準邏輯數(shù)據(jù)類型out std_logic;定義輸出的標準邏輯數(shù)據(jù)類型std_logic_vector(3 downto 0);定義標準邏輯位矢量數(shù)據(jù)類型bit;定義數(shù)據(jù)類型為bitsignal;定義內(nèi)部節(jié)點信號e architecture * of 實體 isend *;對實體結構作的表述f process(clkk)end process;對clkk信號作敏感處理g if fin'event and fin='1'thenend if;對ifthen語句
11、判斷,如果為“1”執(zhí)行then后面語句“event”為非信號,fin信號有變化,且變?yōu)椤?”,就是上升沿來h. a<=b; 賦值語句,把b值賦給aicomponent 實體port()end component;調(diào)用實體聲明語句ju1:實體 port map (a=>b,c=>d);例化語句,將實體內(nèi)的a端口與b連接,c端口與d連接,b、d端口可以是另外一個實體的輸入端,也可以是內(nèi)部信號節(jié)點端4 測頻控制電路ftctrl4.1 測頻控制電路程序:(配詳細說明)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic
12、_unsigned.all;entity ftctrl isport(clkk:in std_logic;-輸入周期為0.125s的時鐘 cnt_en:out std_logic;-使能 rst_cnt:out std_logic;-清零 load:out std_logic);-鎖存end ftctrl;architecture behav of ftctrl issignal j:std_logic_vector(3 downto 0);-內(nèi)部信號節(jié)點j,作分頻之用signal en,clr,lo:std_logic;-內(nèi)部相關端口信號節(jié)點beginprocess(clkk)beginif
13、(clkk'event and clkk='1')thenif j="1111" then-將16個時鐘作為一周期j<="0000"else j<=j+1;end if;if j="0000" then-計數(shù)使能端占用8個時鐘,當en<='1'輸入時鐘周期為0.125s時,使elsif j="1000" then en<='0' 能端置“1”時間為1send if;if j="1000" then-鎖存信號在計數(shù)使能
14、信號結lo<='1'束時馬上響應elsif j="1001" then lo<='0'end if;if j="1101" then -清零信號滯后鎖存信號3個clr<='1'時鐘,在下個大周期之前,即使elsif j="1110" then clr<='0' 能端重置“1”之前清零, end if; 為下次計數(shù)作準備end if;-結束16個標準時鐘周期end process; load<=lo;cnt_en<=en;rst_cnt&
15、lt;=clr;end behav;4.2 程序分析通過以上程序在quartus ii軟件里面仿真,可以得到圖4-1仿真結果圖,從圖上可以看出,輸入標準時鐘clkk的周期是0.125s,它為計數(shù)器產(chǎn)生的使能信號cnt_en產(chǎn)生了周期為2s的時鐘信號,其中高低電平時間各占用1s,這樣的好處是計數(shù)器在1秒內(nèi)計數(shù)了多少脈沖,以十進制顯示就是多少頻率,減除了換算的麻煩,使操作員更容易讀數(shù)據(jù)。在使能信號結束的時候,鎖存信號load馬上置“1”,把數(shù)據(jù)鎖存起來,讓鎖存器立刻讀數(shù)據(jù)并輸出,使響應更加快速。在計數(shù)使能信號cnt_en準備重置“1”前,輸入給計數(shù)器的清零信號res_cnt置高,讓計數(shù)器清零,達到
16、可以自動檢測變化的輸入信號頻率的功能。圖4-2為測頻控制電路在quartus ii中生成的原件符號圖。圖4-1 測頻控制電路仿真結果圖圖4-2 測頻控制電路原件符號圖5 四位十進制計數(shù)器cnt45.1 四位十進制計數(shù)器電路程序:(配詳細說明)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt4 isport (fin:in std_logic;-檢測頻率輸入端 clr:in std_logic;-清零信號 enabl:in std_logic;-使能信號 warn:out std
17、_logic;-警報信號 o_ge:out std_logic_vector(3 downto 0);-個位輸出 o_shi:out std_logic_vector(3 downto 0);-十位輸出 o_bai:out std_logic_vector(3 downto 0);-百位輸出 o_qian:out std_logic_vector(3 downto 0);-千位輸出end cnt4;architecture behav of cnt4 issignal ge,shi,bai,qian:std_logic_vector(3 downto 0);-定義個、十、百、千位內(nèi)部節(jié)點sig
18、nal w:bit;-定義警報內(nèi)部節(jié)點beginprocess(fin,clr,enabl)-敏感信號為頻率輸入信號、清零begin 信號、使能端信號if clr='1' then -如果有清零信號,則4位輸出“0”ge<=(others=>'0'); shi<=(others=>'0');bai<=(others=>'0');qian<=(others=>'0');elsif enabl='1' then-否則,在沒有清零信號的情況下, 看使能端是否
19、有效if fin'event and fin='1'then-信號有上升沿來的時候,按以下 程序計數(shù)if ge="1001" then-個位已經(jīng)是“9”的時候,再ge<="0000" 有一個信號來時,重置為“0”,else ge<=ge+1; 否則累加end if;if ge="1001" then-個位是“9”,信號再來時,先if shi="1001" then 判斷十位是否為“9”,是則重shi<="0000" 置“0”,否則個位向十位進位else
20、shi<=shi+1;end if; end if;if shi="1001" and ge="1001" then-個位、十位均為“9”時,向if bai="1001" then 百位進位bai<="0000"else bai<=bai+1;end if;end if;if bai="1001" and shi="1001" and ge="1001" thenif qian="0001" and bai="
21、;1001" and shi="1001" and ge="1001" then-個位、十位、百位均為“9”時,w<='1' 判斷是否達到檢測上限“1999hz”,else qian<=qian+1; 是則內(nèi)部警報節(jié)點置“1”,否則 end if; 向千位進位end if;end if;end if;end process;process(w)-判斷內(nèi)部警報節(jié)點是否開啟beginif w='0' then-如果沒有報警,則輸出有效數(shù)據(jù)且警報輸o_ge<=ge; 端為“0”o_shi<=sh
22、i;o_bai<=bai;o_qian<=qian;warn<='0'else-否則,4位均顯示“h”且警報信號置1o_ge<="1111"o_shi<="1111"o_bai<="1111"o_qian<="1111"warn<='1'end if;end process;end behav;5.2 程序分析通過以上程序在quartus ii軟件里面仿真,這里設定輸入信號fin周期為2.5ms,使能信號enabl周期為2s,得到圖5-
23、1仿真結果圖。從圖上第二個清零信號clr置高位時,計數(shù)器能清零,使能端enabl置低位時,計數(shù)器不計數(shù),使能端置高位時間是1s,能計數(shù)400個脈沖,與設定fin周期為2.5ms相符,當計數(shù)器累計到1999時,警報信號置“1”且4位顯示15,即顯示器會顯示“h”表示超出量程。圖5-2為計數(shù)器電路在quartus ii中生成的原件符號圖。圖5-1 四位十進制計數(shù)器模板仿真結果圖圖5-2 四位十進制計數(shù)器原件符號圖6 四位鎖存器電路reg4b6.1 四位鎖存器電路程序:(配詳細說明)library ieee;use ieee.std_logic_1164.all;entity reg4b ispor
24、t (lk:in std_logic;-鎖存信號din_ge:in std_logic_vector(3 downto 0);-個、十、百、千din_shi:in std_logic_vector(3 downto 0); 輸入輸出端口din_bai:in std_logic_vector(3 downto 0);din_qian:in std_logic_vector(3 downto 0);dout_ge:out std_logic_vector(3 downto 0);dout_shi:out std_logic_vector(3 downto 0);dout_bai:out std_l
25、ogic_vector(3 downto 0);dout_qian:out std_logic_vector(3 downto 0);end reg4b;architecture behav of reg4b isbeginprocess(lk,din_ge,din_shi,din_bai,din_qian)beginif lk'event and lk='1' then -鎖存信號一來,dout_ge<=din_ge; 記錄當前數(shù)據(jù)dout_shi<=din_shi;dout_bai<=din_bai;dout_qian<=din_qian;e
26、nd if;end process;end behav;圖6-1 四位鎖存器仿真結果圖圖6-2 四位鎖存器原件符號圖6.2 程序分析通過以上程序在quartus ii軟件里面仿真,得到圖6-1仿真結果圖。從圖中可以看出,當鎖存信號置高位時,鎖存器能將這時輸入的個、十、百、千位數(shù)“1263”正確輸出。圖6-2為計數(shù)器電路在quartus ii中生成的原件符號圖。7 頂層文件程序7.1 頂層文件程序:(配詳細說明)library ieee;-頻率計頂層文件use ieee.std_logic_1164.all;entity freqtest isport (clk1hz:in std_logic;
27、-整個頂層文件只有1個標準 fsin:in std_logic;時鐘輸入端、顯示個、十、百、 warn:out std_logic;千4個10進制輸出端和一個警 o_ge:out std_logic_vector(3 downto 0); 報輸出端 o_shi:out std_logic_vector(3 downto 0); o_bai:out std_logic_vector(3 downto 0); o_qian:out std_logic_vector(3 downto 0); end freqtest;architecture struc of freqtest iscomponen
28、t ftctrlport(clkk:in std_logic;-輸入標準時鐘 cnt_en:out std_logic;-計算器時鐘使能 rst_cnt:out std_logic;-計算器清零 load:out std_logic);-輸出鎖存信號end component;component cnt4port(fin:in std_logic;-時鐘信號 clr:in std_logic;-清零信號 enabl:in std_logic;-計數(shù)使能信號 warn:out std_logic;-警報信號 o_ge:out std_logic_vector(3 downto 0); o_shi
29、:out std_logic_vector(3 downto 0); o_bai:out std_logic_vector(3 downto 0); o_qian:out std_logic_vector(3 downto 0);-計數(shù)結果end component;component reg4bport(lk:in std_logic; din_ge:in std_logic_vector(3 downto 0); din_shi:in std_logic_vector(3 downto 0); din_bai:in std_logic_vector(3 downto 0); din_qia
30、n:in std_logic_vector(3 downto 0); dout_ge:out std_logic_vector(3 downto 0); dout_shi:out std_logic_vector(3 downto 0); dout_bai:out std_logic_vector(3 downto 0); dout_qian:out std_logic_vector(3 downto 0);end component;signal tsten1:std_logic;-定義內(nèi)部公共節(jié)點signal clr_cnt1:std_logic;signal load1:std_logi
31、c;signal dto_ge:std_logic_vector(3 downto 0);signal dto_shi:std_logic_vector(3 downto 0);signal dto_bai:std_logic_vector(3 downto 0);signal dto_qian:std_logic_vector(3 downto 0);beginu1:ftctrl port map(clkk=>clk1hz,cnt_en=>tsten1, rst_cnt=>clr_cnt1,load=>load1);u2:reg4b port map (lk=>
32、load1,din_ge=>dto_ge,din_shi=>dto_shi, din_bai=>dto_bai,din_qian=>dto_qian, dout_ge=>o_ge,dout_shi=>o_shi, dout_bai=>o_bai,dout_qian=>o_qian);u3:cnt4 port map(fin=>fsin,clr=>clr_cnt1,warn=>warn, enabl=>tsten1,o_ge=>dto_ge,o_shi=>dto_shi,o_bai=>dto_bai,o_q
33、ian=>dto_qian);end struc;圖7-1 頂層文件仿真圖輸入頻率fsin第一次頻率改變點圖7-2 頂層文件仿真圖輸入頻率fsin第二次頻率改變點圖7-3 頂層文件仿真圖輸入頻率fsin前10秒圖7.2 程序分析通過以上程序在quartus ii軟件里面仿真,得到圖7-1、7-2、7-3仿真結果圖。圖7-3是整個系統(tǒng)前15秒仿真結果,圖7-1和圖7-2是其局部時間截圖。這里設定系統(tǒng)前2.68435s附近,輸入信號從周期為0.2s改變?yōu)?ms(可隨機選擇時間點改變頻率),在6.71s附近由周期2ms改變?yōu)?.1ms。從圖7-1 頂層文件仿真圖輸入頻率fsin第一次頻率改變點可以看出,在頻率改變前,能正確顯示輸入信號的頻率為5hz。從圖7-2 頂層文件仿真圖輸入頻率fsin第二次頻率改變點可以看出,在頻率改變前,能正確顯示輸入信號的頻率為500hz。表明系統(tǒng)能夠自動清零并且鎖存新的數(shù)據(jù),表示出頻率計能自動檢測輸入信號頻率。從圖7-3 頂層文件仿真圖輸入
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于深度學習的疾病相關miRNAs預測方法研究
- 2025年中國智能電子震動探頭市場調(diào)查研究報告
- 輕戶外服結合光纖的設計研究
- 2025年中國新型消聲卷門市場調(diào)查研究報告
- 2025年中國收角玻璃磚市場調(diào)查研究報告
- 面向多消防機器人的協(xié)同控制方法研究
- 生態(tài)題材紀錄片《綠色江河》的敘事建構與視聽呈現(xiàn)
- 人羧酸酯酶抑制劑篩選及對緩解肝細胞脂肪蓄積作用的研究
- 不同成泡方式多孔混凝土的熱傳輸特性與相關物理性能研究
- 柔性采摘機械臂的運動學分析與運動規(guī)劃研究
- 高中英語教學設計案例高中英語教學設計一等獎(四篇)
- 高中英語課外閱讀:STRANGE CASE OF DR.化身博士
- 《一起長大的玩具》閱讀測試題及答案
- 2023年四川省公務員考試行測真題
- 肱骨外上髁炎-課件
- 空氣動力學基礎
- 新外研版(一起)四年級英語下冊(全冊)同步練習隨堂練習一課一練
- 《馬克思主義政治經(jīng)濟學概論(第二版)》第八章 資本主義經(jīng)濟危機和歷史趨勢
- 勞動教育《蒸饅頭》課件
- 英語四線三格A4空白紙
- 分娩舍母豬分娩管理
評論
0/150
提交評論