名稱:數(shù)字頻率計(jì)Verilog代碼Quartus??DE1-SoC開發(fā)板
軟件:Quartus
語(yǔ)言:Verilog
代碼功能:
數(shù)字頻率計(jì)
采用一個(gè)標(biāo)準(zhǔn)的基準(zhǔn)時(shí)鐘,在1s里對(duì)被測(cè)信號(hào)的脈沖數(shù)進(jìn)行計(jì)數(shù),即為信號(hào)頻率利用等精度測(cè)量法可以測(cè)量1hz至99999999Hz信號(hào)頻率,七段碼管顯示測(cè)量值。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在DE1-SoC開發(fā)板驗(yàn)證,DE1-SoC開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
設(shè)計(jì)文檔:
1. 工程文件
2. 程序文件
3. 程序編譯
4. 程序RTL圖(結(jié)構(gòu)圖)
5. 管腳分配
6. Testbench
7. 仿真圖
整體仿真圖
計(jì)數(shù)模塊
顯示模塊
閘門信號(hào)產(chǎn)生模塊
單位選擇模塊
鎖存模塊
超量程模塊
部分代碼展示:
//頂層模塊 module?frequency_detect( input?clk_in,//輸入50M基準(zhǔn)時(shí)鐘 input?reset_p,//復(fù)位信號(hào),低電平復(fù)位 input?[7:0]?SW,//頻率調(diào)節(jié)開關(guān) input?signal_in,//待測(cè)頻率輸入--GPIO_0_0 output?gear_led,//單位指示燈 output?over_load_led,//超量程指示燈 output?[7:0]HEX0,//數(shù)碼管段選 output?[7:0]HEX1,//數(shù)碼管段選 output?[7:0]HEX2,//數(shù)碼管段選 output?[7:0]HEX3,//數(shù)碼管段選 output?[7:0]HEX4,//數(shù)碼管段選 output?[7:0]HEX5//數(shù)碼管段選 ); wire?doors_open; wire?[31:0]?total_frequency; wire?[31:0]?CNT1_buf;//基準(zhǔn)時(shí)鐘計(jì)數(shù)器寄存器 wire?[31:0]?CNT2_buf;//待測(cè)頻率計(jì)數(shù)器寄存器 wire?[31:0]?display_frequency;//顯示數(shù)值 wire?clk_out; //分頻模塊,產(chǎn)生自測(cè)頻率 clk_div?i_clk_div( .?clk_in(clk_in),//輸入50M基準(zhǔn)時(shí)鐘 .?SW(SW),//頻率調(diào)節(jié)開關(guān) .?clk_out(clk_out)//待測(cè)頻率 ); ////分頻模塊,產(chǎn)生閘門信號(hào) div_doors?i_div_doors( .?clk_in(clk_in),//輸入50M基準(zhǔn)時(shí)鐘 .?reset_p(reset_p),//復(fù)位信號(hào) .?signal_in(clk_out), .?doors_open(doors_open)//閘門信號(hào) ); //計(jì)數(shù)模塊 count_cal?i_count_cal( .?clk_in(clk_in),//輸入50M基準(zhǔn)時(shí)鐘 .?signal_in(clk_out),//待測(cè)頻率輸入 .?doors_open(doors_open), .?CNT1_buf(CNT1_buf),//輸出基準(zhǔn)時(shí)鐘計(jì)數(shù)器 .?CNT2_buf(CNT2_buf)//輸出待測(cè)頻率計(jì)數(shù)器 ); //鎖存模塊 latch_buf?i_latch_buf( .?clk_in(clk_in),//輸入50M基準(zhǔn)時(shí)鐘 .?doors_open(doors_open), .?total_frequency(total_frequency),//輸出頻率 .?CNT1_buf(CNT1_buf),//輸出基準(zhǔn)時(shí)鐘計(jì)數(shù)器 .?CNT2_buf(CNT2_buf)//輸出待測(cè)頻率計(jì)數(shù)器 ); //單位選擇模塊 gear_position?i_gear_position( .?clk(clk_in), .?total_frequency(total_frequency),//頻率 .?gear_led(gear_led),//單位指示燈 .?display_frequency(display_frequency)//顯示數(shù)值 ); //超量程指示模塊 over_load?i_over_load( .?clk(clk_in), .?total_frequency(total_frequency),//頻率 .?over_load_led(over_load_led)//超量程指示燈 ); //數(shù)碼管顯示模塊 display?i_display( .?clk(clk_in), .?display_frequency(display_frequency),//輸出頻率 .?HEX0(HEX0), .?HEX1(HEX1), .?HEX2(HEX2), .?HEX3(HEX3), .?HEX4(HEX4), .?HEX5(HEX5) ); endmodule
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=489