本帖最后由 晴天看云笑 于 2016-12-6 22:55 编辑
times New Roman"> 小弟入门学习FPGA,想实现一个简易频率计,FPGA芯片EP4CE6E22C8晶振50MHz,仿真没问题,但测试发现输入信号在10MHz以下计数正常,高于之后计数会不准确,难道这种方法有问题?想来想去也不知道是什么问题,以下为代码,望各位大神能解答。
module fcount(signal_in,clk,fout);
input signal_in; //待测信号
input clk; //50MHz晶振
output fout; //信号频率
reg[31:0] count=0;
reg[31:0] fout_temp=0;
reg[31:0] fout=0;
//获得时间闸门
always @(posedge clk)
begin
if(count >= 100_000_000)
count = 0;
else
count <= count+1;
end
//在1s内对输入信号上升沿计数,计数值fout即是频率
always @(posedge signal_in)
begin
if(count > 50000000)
fout_temp = 0;
else if(count == 50000000)
fout <= fout_temp;
else
fout_temp <= fout_temp+1;
end
endmodule
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
FPGA能处理高速信号,信号频率应该不止10MHz吧?可看到有人做的频率计能测到100MHz。
但32位计数器最大值远大于此,不是很明白。
一周热门 更多>