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