【正文】
電子技術(shù)綜合試驗(yàn)實(shí)驗(yàn)報(bào)告 班級(jí):測(cè)控一班 學(xué)號(hào):2907101002 姓名:李大帥 指導(dǎo)老師:李穎基于FPGA的數(shù)字頻率計(jì)設(shè)計(jì)報(bào)告一、 系統(tǒng)整體設(shè)計(jì)設(shè)計(jì)要求: 被測(cè)輸入信號(hào):方波 測(cè)試頻率范圍為:10Hz~100MHz 量程分為三檔:第一檔:閘門時(shí)間為1S時(shí), 第二檔:, 第三檔:。顯示工作方式:a、用六位BCD七段數(shù)碼管顯示讀數(shù)。 b、采用記憶顯示方法 c、實(shí)現(xiàn)對(duì)高位無意義零的消隱。 系統(tǒng)設(shè)計(jì)原理: 所謂“頻率”,就是周期性信號(hào)在單位時(shí)間(1秒)內(nèi)變化的次數(shù)。若在一定的時(shí)間間隔T內(nèi)計(jì)數(shù),計(jì)得某周期性信號(hào)的重復(fù)變化次數(shù)為N,則該信號(hào)的頻率可表達(dá)為:f = N / T .基于這一原理我們可以使用單位時(shí)間內(nèi)對(duì)被測(cè)信號(hào)進(jìn)行計(jì)數(shù)的方法求得對(duì)該信號(hào)的頻率測(cè)量,具體實(shí)現(xiàn)過程簡(jiǎn)述如下: 首先,將被測(cè)信號(hào)①(方波)加到閘門的輸入端。由一個(gè)高穩(wěn)定的石英振蕩器和一系列數(shù)字分頻器組成了時(shí)基信號(hào)發(fā)生器,它輸出時(shí)間基準(zhǔn)(或頻率基準(zhǔn))信號(hào)③去控制門控電路形成門控信號(hào)④,門控信號(hào)的作用時(shí)間T是非常準(zhǔn)確的(由石英振蕩器決定)。門控信號(hào)控制閘門的開與閉,只有在閘門開通的時(shí)間內(nèi),方波脈沖②才能通過閘門成為被計(jì)數(shù)的脈沖⑤由計(jì)數(shù)器計(jì)數(shù)。閘門開通的時(shí)間稱為閘門時(shí)間,其長(zhǎng)度等于門控信號(hào)作用時(shí)間T。比如,時(shí)間基準(zhǔn)信號(hào)的重復(fù)周期為1S,加到閘門的門控信號(hào)作用時(shí)間T亦準(zhǔn)確地等于1S,即閘門的開通時(shí)間——“閘門時(shí)間”為1S。在這一段時(shí)間內(nèi),若計(jì)數(shù)器計(jì)得N=100000個(gè)數(shù),根據(jù)公式f = N / T,那么被測(cè)頻率就是100000Hz。如果計(jì)數(shù)式頻率計(jì)的顯示器單位為“KHz”,即小數(shù)點(diǎn)定位在第三位。不難設(shè)想,若將閘門時(shí)間設(shè)為T=,則計(jì)數(shù)值為10000,這時(shí),顯示器的小數(shù)點(diǎn)只要根據(jù)閘門時(shí)間T的改變也隨之自動(dòng)往右移動(dòng)一位(自動(dòng)定位),那么。在計(jì)數(shù)式數(shù)字頻率計(jì)中,通過選擇不同的閘門時(shí)間,可以改變頻率計(jì)的測(cè)量范圍和測(cè)量精度。 系統(tǒng)單元模塊劃分:1)分頻器,將產(chǎn)生用于計(jì)數(shù)控制的時(shí)鐘分別為1HZ,10HZ,100HZ脈沖和1KHZ的用于七段顯示數(shù)碼管掃描顯示的掃描信號(hào)。2)閘門選擇器,用于選擇不同的閘門時(shí)間以及產(chǎn)生后續(xù)的小數(shù)點(diǎn)的顯示位置。3)門控電路,產(chǎn)生用于計(jì)數(shù)的使能控制信號(hào),清零信號(hào)以及鎖存器鎖存信號(hào)。4)計(jì)數(shù)器,用于對(duì)輸入的待測(cè)信號(hào)進(jìn)行脈沖計(jì)數(shù),計(jì)數(shù)輸出。5)鎖存器,用于對(duì)計(jì)數(shù)器輸出數(shù)據(jù)的鎖存,便于后續(xù)譯碼顯示電路的對(duì)數(shù)據(jù)進(jìn)行記憶顯示,同時(shí)避免計(jì)數(shù)器清零信號(hào)對(duì)數(shù)據(jù)產(chǎn)生影響。6)譯碼顯示,用于產(chǎn)生使七段顯示數(shù)碼管的掃描數(shù)字顯示,小數(shù)點(diǎn)顯示的輸出信號(hào),同時(shí)對(duì)高位的無意義零進(jìn)行消隱。二、 單元電路設(shè)計(jì) 分頻器:該電路將產(chǎn)生四個(gè)不同頻率的信號(hào)輸出,因?yàn)殡娐钒迳辖o出了一個(gè)48MHZ的晶振,所以我們只需要對(duì)48MHZ的信號(hào)進(jìn)行適當(dāng)分頻即可得到我們所需的四個(gè)不同頻率的信號(hào)輸出,我們?cè)O(shè)計(jì)一個(gè)輸入為48MHZ,有四個(gè)輸出端分別為1HZ,10HZ和100HZ,1KHZ的分頻器,原程序如下: library IEEE。use 。use 。use 。entity fenpinqi is Port ( clk : in STD_LOGIC。 clkout1 : out STD_LOGIC。 clkout10 : out STD_LOGIC。 clkout100 : out STD_LOGIC。clkout1K : out STD_LOGIC)。end fenpinqi。 architecture Behavioral of fenpinqi issignal t1:integer range 1 to 24000000。signal t10:integer range 1 to 2400000。signal t100:integer range 1 to 240000。signal t1K:integer range 1 to 24000。signal c1:std_logic。signal c2:std_logic。signal c3:std_logic。signal c4:std_logic。beginprocess(clk)is begin if clk39。event and clk=39。139。 then if t124000000 then 對(duì)t1進(jìn)行計(jì)數(shù),當(dāng)t1未計(jì)滿后對(duì)其進(jìn)行加1 t1=t1+1。 elsif t1=24000000 then t1計(jì)滿后對(duì)其進(jìn)行賦一,并且令c1進(jìn)行翻轉(zhuǎn),然后將c1的值賦給clkout1 c1=not c1。 由于48MHZ的的信號(hào),前一半的時(shí)候c1為0,則后一半是為1,就完成了對(duì)信號(hào)進(jìn)行分頻,產(chǎn)生了1HZ的信號(hào) t1=1。 end if。 end if。end process。process(clk)is begin if clk39。event and clk=39。139。 then 方法同上 if t102400000 then t10=t10+1。 elsif t10=2400000 then c2=not c2。 t10=1。 end if。 end if。end process。 process(clk)is begin if clk39。event and clk=39。139。 then 方法同上 if t100240000 then t100=t100+1。 elsif t100=240000 then c3=not c3。 t100=1。 end if。 end if。end process。process(clk)is begin if clk39。event and clk=39。139。 then 方法同上 if t1K24000000 then t1K=t1K+1。 elsif t1=24000 then c4=not c4。 t1K=1。 end if。 end if。end process。clkout1=c1。clkout10=c2。clkout100=c3。clkout1K=c4。end Behavioral。源文件編寫成功后編譯并生成圖形文件符號(hào)如圖:仿真文件編寫如下:LIBRARY ieee。USE 。USE 。USE 。ENTITY tbb_vhd ISEND tbb_vhd。ARCHITECTURE behavior OF tbb_vhd IS COMPONENT fenpinqi PORT(clk : IN std_logic。 clkout1 : OUT std_logic。 clkout10 : OUT std_logic。 clkout100 : OUT std_logic。 clkout1K : OUT std_logic)。 END COMPONENT。 SIGNAL clk : std_logic := 39。039。 SIGNAL clkout1 : std_logic。 SIGNAL clkout10 : std_logic。 SIGNAL clkout100 : std_logic。 SIGNAL clkout1K : std_logic。BEGIN uut: fenpinqi PORT MAP(clk = clk, clkout1 = clkout1, clkout10 = clkout10, clkout100 = c