數(shù)字頻率計(jì)的設(shè)計(jì)
一、 實(shí)驗(yàn)?zāi)康?/strong>1、 了解等精度測頻的方法和原理。
2、 掌握如何在FPGA內(nèi)部設(shè)計(jì)多種功能模塊。
3、 掌握VHDL在測量模塊設(shè)計(jì)方面的技巧。
二、 實(shí)驗(yàn)原理
所謂頻率就是周期性信號(hào)在單位時(shí)間(1s)內(nèi)變化的次數(shù)。若在一定時(shí)間間隔T(也稱閘門時(shí)間)內(nèi)測得這個(gè)周期性信號(hào)的重復(fù)變化次數(shù)為N,則其頻率可表示為
f=N/T
由上面的表示式可以看到,若時(shí)間間隔T取1s,則f=N。由于閘門的起始和結(jié)束的時(shí)刻對(duì)于信號(hào)來說是隨機(jī)的,將會(huì)有一個(gè)脈沖周期的量化誤差。進(jìn)一步分析測量準(zhǔn)確度:設(shè)待測信號(hào)脈沖周期為Tx,頻率為Fx,當(dāng)測量時(shí)間為T=1s時(shí),測量準(zhǔn)確度為δ=Tx/T=1/Fx。由此可知這種直接測頻法的測量準(zhǔn)確度與被測信號(hào)的頻率有關(guān),當(dāng)待測信號(hào)頻率較高時(shí),測量準(zhǔn)確度也較高,反之測量準(zhǔn)確度較低。因此,這種直接測頻法只適合測量頻率較高的信號(hào),不能滿足在整個(gè)測量頻段內(nèi)的測量精度保持不變的要求。若要得到在整個(gè)測量頻段內(nèi)的測量精度保持不變的要求,應(yīng)該考慮待精度頻率測量等其它方法。
等精度頻率測頻的實(shí)現(xiàn)方法,可以用圖4-19-1所示的框圖來實(shí)現(xiàn)。
圖4-19-1 等精度測頻實(shí)現(xiàn)框圖
所謂等精度是指該頻率計(jì)在所測量的整個(gè)頻段內(nèi)部,均可實(shí)現(xiàn)相同精度的測量,即測量精度與頻率無關(guān)。圖中預(yù)置門信號(hào)通常為1s。其內(nèi)部包括一個(gè)同步門電路,用來實(shí)現(xiàn)被測頻標(biāo)與被測頻率的同步,提高測量精度,減少基本誤差。該部分與清零脈沖協(xié)調(diào)工作用來控制兩個(gè)計(jì)數(shù)器的啟動(dòng)脈沖。計(jì)數(shù)器1和計(jì)數(shù)器2分別用來給頻標(biāo)和被測數(shù)字脈沖計(jì)數(shù),設(shè)在同步門控制結(jié)束時(shí)計(jì)數(shù)器1計(jì)數(shù)N1,計(jì)數(shù)器2計(jì)數(shù)N2,假設(shè)頻標(biāo)頻率為F1,被測頻率位Fx,則可寫出公式:
Fx/N2=F1/N1;…………………(1)
Fx=(F1/N1)* N2……………(2)
由公式可以看出,測量精度與預(yù)置門時(shí)間無關(guān),主要由F1的頻率穩(wěn)定度來確定,所以為了提高測量精度,主要是提高頻標(biāo)的頻率穩(wěn)定度,換句話說,測量精度基本上近似于頻標(biāo)的穩(wěn)定度,若頻標(biāo)的穩(wěn)定度位10-6,則測量誤差邊可達(dá)到10-6。在該電路中,為了確保頻標(biāo)計(jì)數(shù)與被測頻率完全同步(即被測頻率的上升沿開始計(jì)數(shù),1s以后,被測頻率的下跳沿停止計(jì)數(shù)),同步門必須由被測信號(hào)來控制,設(shè)計(jì)方法多種多樣,可由學(xué)生獨(dú)立完成。
本實(shí)驗(yàn)采用直接測頻法進(jìn)行頻率測量。閘門時(shí)間固定為1s,閘門信號(hào)是一個(gè)0.5Hz的方波,在閘門有效(高電平)期間,對(duì)輸入的脈沖進(jìn)行計(jì)數(shù),在閘門信號(hào)的下降沿時(shí)刻,所存當(dāng)前的計(jì)數(shù)值,并且清零所有的頻率計(jì)數(shù)器。由于閘門時(shí)間是1s(0.5Hz方波),所以顯示的頻率是1s鐘更新一次,且顯示的內(nèi)容是閘門下降沿時(shí)鎖存的值。
因?yàn)殚l門時(shí)間我們設(shè)定為1s,所以這種頻率計(jì)僅能測出頻率大于或者等于1Hz的情況,且頻率越高,精度也越高。實(shí)際應(yīng)用中,頻率計(jì)的閘門時(shí)間是個(gè)可變量,當(dāng)頻率小于1Hz是,閘門時(shí)間就要適當(dāng)放大。采用一個(gè)標(biāo)準(zhǔn)的時(shí)鐘,在單位時(shí)間內(nèi)如:0.1秒對(duì)被測信號(hào)的脈沖進(jìn)行計(jì)數(shù),即為信號(hào)的頻率。
在設(shè)計(jì)頻率計(jì)的時(shí)候,八個(gè)七段碼管最多可以顯示99,999,999Hz,因此在設(shè)計(jì)時(shí)候用八個(gè)4位二進(jìn)制碼(BCD碼)來表示,另外還必須有同樣的八個(gè)4位二進(jìn)制碼來對(duì)輸入的頻率進(jìn)行計(jì)數(shù),在閘門下降沿的時(shí)候,將后者的值鎖存到寄存器中。其信號(hào)的時(shí)序關(guān)系如下圖4-19-2所示:
圖4-19-2 控制信號(hào)時(shí)序關(guān)系
三、 實(shí)驗(yàn)內(nèi)容
本實(shí)驗(yàn)要完成的任務(wù)就是設(shè)計(jì)一個(gè)頻率計(jì),系統(tǒng)時(shí)鐘選擇24MHZ的時(shí)鐘,閘門時(shí)間為1s(通過對(duì)系統(tǒng)時(shí)鐘進(jìn)行分頻得到),在閘門為高電平期間,對(duì)輸入的頻率進(jìn)行計(jì)數(shù),當(dāng)閘門變低的時(shí)候,記錄當(dāng)前的頻率值,并將頻率計(jì)數(shù)器清零,頻率的顯示每過2秒刷新一次。其實(shí)現(xiàn)框圖如下圖4-19-3所示:
圖4-19-3 測頻實(shí)現(xiàn)框圖
四、 實(shí)驗(yàn)步驟
1、打開QUARTUSII軟件,新建一個(gè)工程。
2、建完工程之后,再新建一個(gè)VHDL File,打開VHDL編輯器對(duì)話框。
3、按照實(shí)驗(yàn)原理和自己的想法,在VHDL編輯窗口編寫VHDL程序,用戶可參照光盤中提供的示例程序。示例程序共提供6個(gè)VHDL源程序。每一個(gè)源程序完成一定的功能。其具體的功能如下表4-19-1:
文件名稱 | 完成功能 |
CLKOUT.VHD | 產(chǎn)生1HZ的閘門信號(hào)和顯示掃描信號(hào) |
TELTCL.VHD | 在時(shí)鐘的作用下生成測頻的控制信號(hào)。 |
CNT10.VHD | 十進(jìn)制計(jì)數(shù)器。在實(shí)驗(yàn)中使用8個(gè)來進(jìn)行計(jì)數(shù) |
SEG32B.VHD | 32位的鎖存器,在鎖存控制信號(hào)的作用下,將計(jì)數(shù)的值鎖存 |
DISPLAY.VHDL | 顯示譯碼,將鎖存的數(shù)據(jù)顯示出來。 |
4、編寫完VHDL程序后,保存起來。方法同實(shí)驗(yàn)一。
5、將自己編寫的VHDL程序進(jìn)行編譯并生成模塊符號(hào)文件,并對(duì)程序的錯(cuò)誤進(jìn)行修改,最終所有程序通過編譯并生成模塊符號(hào)文件。其具體方法請(qǐng)參照實(shí)驗(yàn)六。
6、新建一個(gè)圖形編輯文件,將已生成的模塊符號(hào)文件放入其中,并根據(jù)要求邊接起來。
7、將自己編輯好的的程序進(jìn)行編譯仿真,并對(duì)程序的錯(cuò)誤進(jìn)行修改,最終通過編譯。
8、編譯仿真無誤后,根據(jù)用戶自己的要求進(jìn)行管腳分配。分配完成后,再進(jìn)行全編譯一次,以使管腳分配生效。
9、根據(jù)實(shí)驗(yàn)內(nèi)容用實(shí)驗(yàn)導(dǎo)線將上面管腳分配的FPGA管腳與對(duì)應(yīng)的模塊連接起來。
如果是調(diào)用的本書提供的VHDL代碼,則實(shí)驗(yàn)連線如下:
CLK:FPGA時(shí)鐘,接數(shù)字時(shí)鐘CLOCK1,并將其設(shè)為24MHZ。
CLKIN:被測頻率輸入信號(hào),可以接時(shí)鐘源的其它時(shí)鐘。
LEDAG[6..0]:接數(shù)碼管的A、B、C、D、E、F、G。
SEL[2..0]:接數(shù)碼管的SEL2、SEL1、SEL0。
10、用下載電纜通過JTAG口將對(duì)應(yīng)的sof文件加載到FPGA中。觀察實(shí)驗(yàn)結(jié)果是否與自己的編程思想一致。
五、 實(shí)驗(yàn)結(jié)果與現(xiàn)象
以設(shè)計(jì)的參考示例為例,當(dāng)設(shè)計(jì)文件加載到目標(biāo)器件后,從被測頻率輸入端口輸入一個(gè)時(shí)鐘信號(hào),這時(shí)在數(shù)碼管上顯示這個(gè)時(shí)鐘信號(hào)的頻率值。。改變數(shù)字信號(hào)源的時(shí)鐘,看顯示的值是否與標(biāo)值一致。
六、 實(shí)驗(yàn)報(bào)告
1、 繪出仿真波形,并作說明。
2、 根據(jù)前面介紹的等精度頻率計(jì)的實(shí)現(xiàn)方法,寫出等精度頻率計(jì)的VHDL代碼。
3、 將實(shí)驗(yàn)原理、設(shè)計(jì)過程、編譯仿真波形和分析結(jié)果、硬件測試結(jié)果記錄下來。