名稱:多功能頻率計(jì)周期、脈寬、占空比、頻率測(cè)量verilog(代碼在文末付費(fèi)下載)
軟件:Quartus
語(yǔ)言:Verilog
代碼功能:
多功能頻率計(jì),可測(cè)量信號(hào)的周期、脈沖寬度、占空比、頻率,語(yǔ)言為verilog,quartus軟件設(shè)計(jì)仿真。
演示視頻:
部分代碼展示
module?signal_detect( input?clk_in,//輸入100M基準(zhǔn)時(shí)鐘 input?reset_p,//復(fù)位信號(hào) input?signal_in,//待測(cè)頻率輸入 output?[31:0]total_frequency,//輸出頻率 output?[31:0]total_cycle,//輸出周期 output?[31:0]pulse_width,//輸出脈寬 output?[31:0]duty_cycle//輸出占空比 ); frequency_detect?i_frequency_detect( .?clk_in(clk_in),//輸入100M基準(zhǔn)時(shí)鐘 .?reset_p(reset_p),//復(fù)位信號(hào) .?signal_in(signal_in),//待測(cè)頻率輸入 .?total_frequency(total_frequency),//輸出頻率 .?total_cycle(total_cycle)//輸出周期 ); pulse_detect?i_pulse_detect( .?clk_in(clk_in),//輸入100M基準(zhǔn)時(shí)鐘 .?reset_p(reset_p),//復(fù)位信號(hào) .?signal_in(signal_in),//待測(cè)頻率輸入 .?pulse_width(pulse_width),//輸出脈寬 .?duty_cycle(duty_cycle)//輸出占空比 ); endmodule module?frequency_detect( input?clk_in,//輸入100M基準(zhǔn)時(shí)鐘 input?reset_p,//復(fù)位信號(hào) input?signal_in,//待測(cè)頻率輸入 output?[31:0]total_frequency,//輸出頻率 output?[31:0]total_cycle//輸出周期 ); //parameter?count_1s=32'd100_000_000;//1s所需計(jì)數(shù)周期數(shù)(仿真時(shí)用下一句) parameter?count_1s=32'd1000;//仿真時(shí)用該句,實(shí)際應(yīng)為上一句(仿真時(shí)為減小仿真時(shí)間,將閘門開(kāi)啟時(shí)間減小為10us) reg?[31:0]?door_1s_cnt=32'd0;//閘門信號(hào)1s開(kāi)啟一次 always@(posedge?clk_in) if(reset_p==1) door_1s_cnt<=32'd0; else if(door_1s_cnt==count_1s) door_1s_cnt<=32'd0; else door_1s_cnt<=door_1s_cnt+32'd1; reg?door_1s=0; always@(posedge?clk_in) if(door_1s_cnt==count_1s) door_1s<=~door_1s;//閘門信號(hào)1s開(kāi)啟一次 reg?[31:0]?CNT1=32'd0;//基準(zhǔn)時(shí)鐘計(jì)數(shù)器 reg?[31:0]?CNT2=32'd0;//待測(cè)頻率計(jì)數(shù)器 reg?[31:0]?CNT1_buf=32'd0;//基準(zhǔn)時(shí)鐘計(jì)數(shù)器寄存器 reg?[31:0]?CNT2_buf=32'd0;//待測(cè)頻率計(jì)數(shù)器寄存器
設(shè)計(jì)文檔(文檔點(diǎn)擊可下載):
1. 工程文件
2. 程序文件
3. 原理圖文件
4. 程序編譯
5. Testbench
6. 仿真圖
6.1整體仿真圖
仿真圖可看出測(cè)得占空比duty_cycle=20%;脈寬pulse_width=200ns,周期total_cycle=1001ns,頻率total_frequency=999000Hz,其中頻率誤差較大(實(shí)際應(yīng)為1000000Hz,誤差999Hz)這是因?yàn)榉抡鏁r(shí)為減小仿真時(shí)間,使用的閘門信號(hào)為10us,閘門實(shí)際應(yīng)為1s,減小了100000倍。
6.2局部細(xì)節(jié),被測(cè)信號(hào)脈寬200ns,測(cè)試結(jié)果為200,正確
6.3局部細(xì)節(jié),被測(cè)信號(hào)周期1000ns,測(cè)試結(jié)果為1001ns,誤差1ns。(誤差與頻率一樣,可以通過(guò)增大閘門減小誤差)
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=187