頻率計系統(tǒng)vhdl語言設計_第1頁
頻率計系統(tǒng)vhdl語言設計_第2頁
頻率計系統(tǒng)vhdl語言設計_第3頁
頻率計系統(tǒng)vhdl語言設計_第4頁
頻率計系統(tǒng)vhdl語言設計_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、河南機電高等專科學校職業(yè)技能培訓結課大作業(yè)頻率計系統(tǒng)設計姓 名: 專業(yè)班級: 學 號: 任課教師: 時 間: 成 績: 頻率計系統(tǒng)設計醫(yī)電 08 級 1 班 孫鵬 任課老師:石新峰摘要:隨著電子信息產(chǎn)業(yè)的不斷發(fā)展,信號頻率的測量在科技研究和實際應用中的作用日益重要。傳統(tǒng)的頻率計通常是用很多的邏輯電路和時序電路來實現(xiàn)的,這種電路一般運行緩慢,而且測量頻率的范圍比較小??紤]到上述問題,本論文設計一個基于單片機技術的數(shù)字頻率計。首先,我們把待測信號經(jīng)過放大整形;然后把信號送入單片機的定時計數(shù)器里進行計數(shù),獲得頻率值;最后把測得的頻率數(shù)值送入顯示電路里進行顯示。本文從頻率計的原理出發(fā),介紹了基于單片機

2、的數(shù)字頻率計的設計方案,選擇了實現(xiàn)系統(tǒng)得各種電路元器件,并對硬件電路進行了仿真。關鍵詞:單片機,頻率計,測量目錄目錄1.概述.32.設計要求.33.總體構思.44.各單元電路的設計和實現(xiàn).55.功能仿真及其結果.76.編譯 下載及調(diào)試.87.總結與展望.17參考文獻.181.1. 概述概述隨著電子信息產(chǎn)業(yè)的發(fā)展,信號作為其最基礎的元素,其頻率的測量在科技研究和實際應用中的作用日益重要,而且需要測頻的范圍也越來越寬。傳統(tǒng)的頻率計通常采用組合電路和時序電路等大量的硬件電路構成,產(chǎn)品不但體積較大,運行速度慢,而且測量范圍低,精度低。因此,隨著對頻率測量的要求的提高,傳統(tǒng)的測頻的方法在實際應用中已不能

3、滿足要求。因此我們需要尋找一種新的測頻的方法。隨著單片機技術的發(fā)展和成熟,用單片機來做為一個電路系統(tǒng)的控制電路逐漸顯示出其無與倫比的優(yōu)越性。因此本論文采用單片機來做為電路的控制系統(tǒng),設計一個能測量高頻率的數(shù)字頻率計。用單片機來做控制電路的數(shù)字頻率計測量頻率精度高,測量頻率的范圍得到很大的提高。2.2. 設計要求設計要求測頻方法主要有以下幾種:脈沖數(shù)定時測頻法(M 法)、脈沖周期測頻法(T法)、脈沖數(shù)倍頻測頻法(AM 法)、脈沖數(shù)分頻測頻法(AT 法)、脈沖平均周期測頻法(M/T 法)、多周期同步測頻法。下面是幾種方案的具體方法介紹。脈沖數(shù)定時測頻法(M 法):此法是記錄在確定時間 Tc 內(nèi)待測

4、信號的脈沖個數(shù) Mx,則待測頻率為: Fx=Mx/Tc 脈沖周期測頻法(T 法):此法是在待測信號的一個周期 Tx 內(nèi),記錄標準頻率信號變化次數(shù) Mo。這種方法測出的頻率是: Fx=Mo/Tx 脈沖數(shù)倍頻測頻法(AM 法):此法是為克服 M 法在低頻測量時精度不高的缺陷發(fā)展起來的。通過 A 倍頻,把待測信號頻率放大 A 倍,以提高測量精度。其待測頻率為: Fx=Mx/ATo 脈沖數(shù)分頻測頻法(AT 法):此法是為了提高 T 法高頻測量時的精度形成的。由于 T 法測量時要求待測信號的周期不能太短,所以可通過 A 分頻使待測信號的周期擴大 A 倍,所測頻率為: Fx=AMo/Tx 脈沖平均周期測頻

5、法(M/T 法):此法是在閘門時間 Tc 內(nèi),同時用兩個計數(shù)器分別記錄待測信號的脈沖數(shù) Mx 和標準信號的脈沖數(shù) Mo。若標準信號的頻率為 Fo,則待測信號頻率為: Fx=FoMx/Mo 根據(jù)頻率的定義,頻率是單位時間內(nèi)信號波的個數(shù),因此采用上述各種方案都能實現(xiàn)頻率的測量。但是本次設計的是一個用單片機做為電路控制系統(tǒng)的數(shù)字式頻率計,采用脈沖定時測頻法,則在低頻率的測量時誤差會大一些。本次設計由于個人水平有限,因此,本次設計根據(jù)需要,采用脈沖定時測頻法。3.3. 總體構思總體構思為了得到一個高性能的數(shù)字頻率計,本次設計采用單片機來做為數(shù)字頻率計的核心控制電路,輔之于少數(shù)的外部控制電路。因此本此設

6、計的系統(tǒng)包括信號放大整形電路、分頻電路、單片機 AT89C51 和顯示電路等。本系統(tǒng)讓被測信號經(jīng)過放大整形后,進入單片機開始計數(shù),利用單片機內(nèi)部定時計數(shù)器定時,在把所記得的數(shù)經(jīng)過相關處理后送到顯示電路中顯示。其系統(tǒng)框圖如圖 3.1 所示。圖 3-1 系統(tǒng)框圖由上面的內(nèi)容可看到,本次設計的基于單片機的數(shù)字式頻率計包括波形整形電路、分頻電路、多路數(shù)據(jù)選擇器、單片機和顯示電路等幾個模塊。所以本次設計的數(shù)字式頻率計的電路由以下幾塊構成:由施密特觸發(fā)器構成的波形整形放大電路、由 74LS90 構成的分頻電路、由 74LS153 四選一電路構成的四選一電路、AT89C51 單片機以及由 74LS138 譯

7、碼電路、三極管上拉電路和八段數(shù)碼顯示電路構成的數(shù)碼顯示電路構。4.4. 各單元電路的設計和實現(xiàn)各單元電路的設計和實現(xiàn)4.14.1 信號放大整形電路信號放大整形電路因為在單片機計數(shù)中只能對脈沖波進行計數(shù),而實際中需要測量頻率的信號是多種多樣的,有脈沖波、還有可能有正弦波、三角波等,所以需要一個電路。把待測信號轉(zhuǎn)化為可以進行計數(shù)的脈沖波。 該部分由 LM358 和一級高頻信號放大電路以及由 74LS00 連接成的施密特觸發(fā)器組成。其電路如下圖所示。圖 4-1 電路圖4.24.2 分頻電路分頻電路本次設計采用的是脈沖定時測頻法,由于考慮到單片機的定時計數(shù)器得計數(shù)能力有限,無法對過高頻進行測量,所以我

8、們對待測信號進行了分頻,這樣能提高測量頻率的范圍,還能相應的提高頻率測量的精度。所以我們需要把待測信號進行分頻。在本次設計中,因為我們要進行的是十分頻、一百分頻,所以我們選用 74LS90 電路,經(jīng)過正確的連接后就可以進行十分頻,進行二次十分頻就可以得到分頻一百次的信號。信號經(jīng)過分頻電路 74LS90,其頻率將減小到原信號的十分之一和百分之一。其組成電路如下圖所示。圖 4-2 組成電路4.34.3 四選一電路四選一電路本次設計需要用到一個四選一電路,用來選擇輸入單片機進行計數(shù)的待測信號。數(shù)據(jù)選擇器有多個輸入,一個輸出。其功能類似于單刀多擲開關,故又稱為多路開關(MUX)。在控制端的作用下可從多

9、路并行數(shù)據(jù)中選擇一路送輸出端。 74LS153 是雙四選一數(shù)據(jù)選擇器,其中有兩個四選一數(shù)據(jù)選擇器,它們各有四個數(shù)據(jù)輸入端:1 C 3、1 C 2、1 C 1、1 C 0 和 2 C 3、2 C 2、2 C 1、2 C 0。一個輸出端 1Y、2Y 和一個控制許可端 G。系統(tǒng)控制端 G 為低電平有效。當控制許可端 G=1 時,傳輸通道被封鎖,芯片被禁止,Y=0,輸入的數(shù)據(jù)不能傳送出去;當控制許可端 G=0 時,傳輸通道打開,芯片被選中,處于工作狀態(tài),輸入的數(shù)據(jù)被傳送出去 A、B 是地址選擇端,兩路選擇器共用。4.4514.451 單片機部分單片機部分單片機作為控制系統(tǒng)和計數(shù)器,是本次設計的最重要的

10、部分,AT89C51 是一種帶 4K 字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能 CMOS8 位微處理器,俗稱單片機。該器件采用 ATMEL 高密度非易失存儲器制造技術制造,與工業(yè)標準的MCS-51 指令集和輸出管腳相兼容。由于將多功能 8 位 CPU 和閃爍存儲器組合在單個芯片中,ATMEL 的 AT89C51 是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。所以本次設計采用 AT89C51 單片機。4.54.5 顯示電路顯示電路這次設計中采用 LED

11、數(shù)碼管,采用一個 74LS138 譯碼器來控制各個數(shù)碼管,采用三極管來做上拉電路,使數(shù)碼顯示管有足夠的電壓進行顯示。顯示電路由數(shù)碼管和 74LS138 組成,在本次設計中,由 74LS138 連接數(shù)碼管的接地端,由此來控制數(shù)碼管的亮和滅。74LS138 譯碼器有三個地址輸入端 A、B、C 和八個譯碼輸出端 Y0Y7,當輸入為 000 時,Y0 輸出端為 0,其他輸出端都為 1;同理可推出其他輸出狀態(tài),即只有輸出變量下標對應的二進制代碼與輸入代碼相等的輸出端為 0,其他的輸出端都為 1。由于單片機輸出的顯示數(shù)據(jù)電壓不夠高,無法直接送到數(shù)碼管上直接顯示,因此需要用一個上拉電路來提高輸出數(shù)據(jù)的電壓值

12、,以便送到數(shù)碼管。圖 4-5LED 顯示電路5.5. 功能仿真及其結果功能仿真及其結果5.15.1 測頻軟件實現(xiàn)原理測頻軟件實現(xiàn)原理測頻軟件的實現(xiàn)是基于電路系統(tǒng)來進行設計的。本次設計采用的是脈沖定時測頻法,所以在軟件實現(xiàn)上基本遵照系統(tǒng)的設計原理,進行測頻軟件設計的基本思路是:1、把要用到的內(nèi)部存儲器的地址運用偽指令標號,方便后面設計中運用;2、跳轉(zhuǎn)到中斷程序進行初步數(shù)據(jù)采集;3、開始主程序,首先判斷是否有待測信號,無信號就等待信號,有信號則進行下一步;4、判斷是否定時到1S,若沒有到達 1S 定時,則執(zhí)行下面的 5 和 6 步得操作,若達到 1S,則執(zhí)行第 6 步以后的操作;5、判斷是否第一次

13、,若是,則判斷當前的檔位是否設置合適,若合適則直接跳轉(zhuǎn)到返回主程序,若不合適,則進入第 6 步;6、調(diào)整檔位,重新進入中斷開始初步計數(shù);7、判斷檔位是否合適,合適則把測得的數(shù)據(jù)轉(zhuǎn)換為十進制數(shù)據(jù),根據(jù)當前的檔位相應的調(diào)整數(shù)位,并取表找到相應的顯示數(shù)據(jù),然后執(zhí)行第 10 步操作;8、若上一步中判斷出檔位不合適,則根據(jù)頻率進行相應的檔位調(diào)整。9、恢復初值,重新開始計數(shù);10、返回主程序。5.25.2 軟件流程圖軟件流程圖根據(jù)上一節(jié)所敘述的電路設計的基本思路,我們可畫出系統(tǒng)流程圖如圖 5-1 所示。圖 5-1 系統(tǒng)框圖5.35.3 系統(tǒng)的仿真和調(diào)試系統(tǒng)的仿真和調(diào)試為了保證系統(tǒng)能正常工作,我們需要對電路

14、中關鍵的電路部分進行仿真,下面我們對波Proteus 是一款非常不錯的單片機模擬軟件。雖然電子模擬軟件不少,但是能很好的模擬單片機的只有 proteus 軟件。該軟件能模擬 51 單片機,avr單片機,pic 單片機,以及部分 arm 芯片。支持的外圍器件也很多包括A/d,LCD,LED 數(shù)碼管,溫度,時鐘等芯片。本次設計所有的電路都采用proteus 對電路進行仿真。5.45.4 系統(tǒng)的改善系統(tǒng)的改善本次設計由于本人知識的有限,所以設計的系統(tǒng)并不是最理想的。例如可以采用脈沖數(shù)定時測頻法和脈沖周期測頻法相結合,在高頻的時候采用脈沖數(shù)定時測頻法,在低頻率的時候采用周期測頻法。此法可保證測頻過程中

15、精度一直很高,但實現(xiàn)的電路和程序都將很復雜。還可以用外部計數(shù)器和單片機定時計數(shù)器共同計數(shù)來代替用單片機的定時計數(shù)器來進行定時,這樣測量的精度可以進一步提高,但相對的端口分配和控制會相對復雜一些。由于時間緊迫,還有部分元件沒有提供。所以很多應該完成的工作并沒有完成。使得系統(tǒng)的性能不能通過硬件電路來實際的顯示出來。而且,還有很多好的想法無法實現(xiàn),所以系統(tǒng)還有很大的改進空間。6.6. 編譯編譯 下載及調(diào)試下載及調(diào)試四選一選擇器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX41A ISPORT ( D3,D2,D1,D0,A1,A0:IN STD

16、_LOGIC; Y:OUT STD_LOGIC);END ENTITY MUX41A;ARCHITECTURE ONE OF MUX41A ISBEGINY = D0 WHEN A1 = 0 AND A0 = 0ELSE D1 WHEN A1 = 0 AND A0 = 1ELSE D2 WHEN A1 = 1 AND A0 = 0ELSE D3; END ARCHITECTURE ONE;3-8 譯碼器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DECODER38A ISPORT(A2,A1,A0,S1,S2,S3:IN STD_LOGIC;

17、 Y:OUT STD_LOGIC_VECTOR(7 downto 0);END ENTITY DECODER38A;ARCHITECTURE ONE OF DECODER38A ISBEGINY = 11111110 WHEN A2=0 AND A1=0 AND A0=0 AND S1=1 AND S2=0 AND S3=0ELSE 11111101 WHEN A2=0 AND A1=0 AND A0=1 AND S1=1 AND S2=0 AND S3=0ELSE 11111011 WHEN A2=0 AND A1=1 AND A0=0 AND S1=1 AND S2=0 AND S3=0E

18、LSE 11110111 WHEN A2=0 AND A1=1 AND A0=1 AND S1=1 AND S2=0 AND S3=0ELSE 11101111 WHEN A2=1 AND A1=0 AND A0=0 AND S1=1 AND S2=0 AND S3=0ELSE 11011111 WHEN A2=1 AND A1=0 AND A0=1 AND S1=1 AND S2=0 AND S3=0ELSE 10111111 WHEN A2=1 AND A1=1 AND A0=0 AND S1=1 AND S2=0 AND S3=0ELSE 01111111 ;END ARCHITECTU

19、RE ONE;D 觸發(fā)器library ieee;use ieee.std_logic_1164.all;entity dff1 is port(clk:in std_logic; d:in std_logic; clr:in std_logic; set:in std_logic; q:out std_logic);end dff1;architecture bhv of dff1 is begin process(clk,clr,set) begin if set=1 then q=1; elsif clkevent and clk =1 then if clr=0 then q=0; e

20、lse q=d; end if; end if; end process; end bhv;Jk 觸發(fā)器library IEEE;use IEEE.std_logic_1164.all;entity JK is port (Jk: in std_logic_vector (1 downto 0); Clock, Reset,Clear : in std_logic; Q, Qbar : out std_logic);end entity JK;architecture sig of JK is signal state : std_logic;beginp0: process (Clock,

21、Reset, Clear) is begin if Clear = 1 then state = 0; elsif Clockevent and clock =1 then if Reset=0 then state state state state null; end case; end if; end if; end process p0;Q = state;Qbar = not state;end architecture sig;RS 觸發(fā)器 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.AL

22、L;ENTITY RS_clk IS PORT( S,R,res :IN std_logic; Q,NOT_Q:out std_logic);END RS_clk;ARCHITECTURE behav OF RS_clk IS signal sel1,sel2: std_logic;BEGIN process(res,sel1,sel2) begin if res=0 then sel1=0; sel2=1; elsif (S=1 and R=0) then sel1=1; sel2=0; elsif (S=0 and R=1) then sel1=0; sel2=1; elsif (S=0

23、and R=0) then sel1=sel1; sel2=sel2; end if; Q=sel1;NOT_Q=sel2; end process; END behav;七段碼LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DISPLY_DECODER ISPORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0); DOUT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END ENTITY DISPLY_DECODER;ARCHITECTURE ONE OF DISPLY_DECODER ISBEGIN

24、DOUT 0); ELSIF CLKEVENT AND CLK=1 THENIF EN=1 and set=0 THEN IF CQI0);END IF;END IF;END IF;if cqi=9 then cout=1;else cout=0;END IF;CQ=CQI;END PROCESS;END BEHAV;end process;q=cout2&cout1;end aa;Q22 為高四位,Q11 為低四位76 進制library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cdu_7

25、6 isport(clk:in std_logic;q:out std_logic_vector(7 downto 0);end cdu_76;architecture aa of cdu_76 issignal cout2,cout1:std_logic_vector(3 downto 0);beginprocess(clk)beginif (clkevent and clk=1) thenif(cout2=7 and cout1=5) then cout2=0000;cout1=0000;else if (cout1=9) then cout2=cout2+1;cout1=0000;els

26、e cout2=cout2;cout1=cout1+1;end if;end if;end if;end process;q=cout2&cout1;end aa;Q22 為高四位,Q11 為低四位7 位左移移位寄存器 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SHFRT ISPORT(CLK,LOAD:IN STD_LOGIC; DIN:IN STD_LOGIC_VECTOR(6 DOWNTO 0); QB:OUT STD_LOGIC );END SHFRT;ARCHITECTURE behav OF SHFRT ISBEGINPROCESS(CLK,LOAD)VARIABLE REG7:STD_LOGIC_VECTOR(6 DOWNTO 0);BEGINIF CLKEVENT AND CLK=1 THENIF LOAD=1 THEN REG7:=DIN;ELSE REG7(6 DOWNTO 1):=REG7(5 DOWNTO 0);REG7(0):=1;END IF;END IF;QB=REG7(6);END PROCESS;END behav;8 位左移移位寄存器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SHFRT ISPORT(CLK,LOAD:IN STD

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論