利用FPGA实现频率测量,测量不准确,求助!!多谢各位大侠~

2019-07-15 22:08发布

本帖最后由 晴天看云笑 于 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


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
chenwei6991627
1楼-- · 2019-07-16 17:25
你用的50M,400M是一个概念吗?
asadad
2楼-- · 2019-07-16 22:08
采用-8的这么简单的时序没有问题,但是你最好是采用内部时钟才输入信号,避免输入信号当做时钟
asadad
3楼-- · 2019-07-17 00:49
asadad 发表于 2016-12-8 17:21
采用-8的这么简单的时序没有问题,但是你最好是采用内部时钟才输入信号,避免输入信号当做时钟

或者在线仿真试试,看看你输入的信号每一个沿你的计数器加没有
牛哥哥要炸天
4楼-- · 2019-07-17 06:19
 精彩回答 2  元偷偷看……
牛哥哥要炸天
5楼-- · 2019-07-17 08:49
always @(*) begin
       if(pos_signal_in)
        fout<=count;
end
牛哥哥要炸天
6楼-- · 2019-07-17 11:53
这样再试试行不行,就是不用用posedge触发来采集

一周热门 更多>