3939|12

51

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

用FPGA做频率为50hz的电压采集 [复制链接]


用FPGA做频率为50hz的电压采集,刚开始能显示采集到电压值和采集的电压频率为50hz,上电一段时间(几个小时)后,电压值正常,但是频率采集不到了,变为了0,请问大侠们这是什么原因啊?急用!!!
此帖出自FPGA/CPLD论坛

最新回复

测过这个方波标准不?  详情 回复 发表于 2014-4-17 13:28
点赞 关注(1)
 

回复
举报

5979

帖子

8

TA的资源

版主

沙发
 
频率的处理算法是否有问题啊
此帖出自FPGA/CPLD论坛

点评

频率算法是: module freq( input f_in, input f_start, // output reg f_end, output reg [15:0] freq_datah16, output reg [7:0] freq_datal8, output reg freq2_rate_state, //adde  详情 回复 发表于 2014-4-17 09:15
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 

回复

6423

帖子

16

TA的资源

版主

板凳
 
说说你的频率是怎样采集的?
此帖出自FPGA/CPLD论坛
个人签名training
 
 
 

回复

1万

帖子

140

TA的资源

版主

4
 
这个显然是设计问题,但具体是哪里的问题就无法从楼主的描述中获知了。
此帖出自FPGA/CPLD论坛

点评

硬件问题,还是软件啊?我的采集频率是10Mhz,下面是我的频率计算方法: module freq( input f_in, input f_start, // output reg f_end, output reg [15:0] freq_datah16, output reg [7:0]  详情 回复 发表于 2014-4-17 09:15
个人签名上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
 
 
 

回复

51

帖子

0

TA的资源

一粒金砂(中级)

5
 
chunyang 发表于 2014-4-16 16:26
这个显然是设计问题,但具体是哪里的问题就无法从楼主的描述中获知了。

硬件问题,还是软件啊?我的采集频率是10Mhz,下面是我的频率计算方法:
module freq(
    input f_in,
    input f_start,
//    output reg f_end,
    output reg [15:0] freq_datah16,
         output reg [7:0] freq_datal8,
         output reg  freq2_rate_state,   //added 101015
    input clk_f   //100623: clock : 10Mhz
    );


   //-----------------freq_measure fsm------------------------------
   reg [23:0] freqcount = 0;

        parameter st0 = 0;
   parameter st1 = 1;
   parameter st2 = 2;
   parameter st3 = 3;
   parameter st4 = 4;
        parameter st5 = 5;
   parameter st6 = 6;
        parameter st7 = 7;
   parameter st8 = 8;


   reg [3:0] state = st0;
        //added 101019
        reg [23:0] f_mea_cnt;

       
   always@( posedge clk_f )
    begin
        case (state)
            st0 : begin                                      //idle
                                      if(f_start)
                                                state <= st1;
                                                else
                                                state <= st0;
                                               
                  freqcount <= 0;
                            freq_datah16 <= 0;
                                                freq_datal8 <= 0;
                                                freq2_rate_state <= 0;
                  end
             st1 : begin                                         
                                      if(!f_in)
                                                state <= st2;
                                                else if (f_mea_cnt >= 300000)
                                                state <= st6;
                                                else
                                                state <= st1;
                               
                                           freqcount <= 0;
                                           f_mea_cnt <= f_mea_cnt + 1;
                  end
                                st2 : begin                    
                                           if( f_in )
                  state <= st3;
                                                else if (f_mea_cnt >= 300000)
                                                state <= st6;
                                                else
                                      state <= st2;
                                                 
                                                freqcount <= freqcount +1;
                  f_mea_cnt <= f_mea_cnt + 1;
                                               
                                                end
                                st3 : begin     
                  if(!f_in)                               
                                      state <= st4;
                                                else if (f_mea_cnt >= 300000)
                                                state <= st6;
                                                else
                                                state <= st3;
                                               
                                                freqcount <= freqcount + 1;
                  f_mea_cnt <= f_mea_cnt + 1;
                                                end                               
                                st4 : begin
                                                state <= st1;
                                               
                                                if(freq2_rate_state == 1)
                                                freq2_rate_state <= 0;
                                                else
                                                freq2_rate_state <= 1;
                                               
                                                freq_datah16 <= freqcount[23:8];
                                                freq_datal8 <= freqcount[7:0];
                                 f_mea_cnt <= 0;
                                                end

                          st5 : begin     
                                
                  state <= st1;
                                               
                                                freqcount <= 0;
                  end
                          st6 : begin     
                                
                  state <= st1;
                                               
                                                freqcount <= 0;
                                                freq_datah16 <= 0;
                                                freq_datal8 <= 0;
                                                f_mea_cnt <= 0;
                                                freq2_rate_state <= 1;
                  end
                          
       default: begin  // Fault Recovery
               state <= st0;
                                       
                 freqcount <= 0;
                           freq_datah16 <= 0;
                                          freq_datal8 <= 0;                               
        end
         endcase

   end
          
          
          

endmodule

此帖出自FPGA/CPLD论坛
 
 
 

回复

51

帖子

0

TA的资源

一粒金砂(中级)

6
 
chenzhufly 发表于 2014-4-16 12:51
频率的处理算法是否有问题啊

频率算法是:
module freq(
    input f_in,
    input f_start,
//    output reg f_end,
    output reg [15:0] freq_datah16,
         output reg [7:0] freq_datal8,
         output reg  freq2_rate_state,   //added 101015
    input clk_f   //100623: clock : 10Mhz
    );


   //-----------------freq_measure fsm------------------------------
   reg [23:0] freqcount = 0;

        parameter st0 = 0;
   parameter st1 = 1;
   parameter st2 = 2;
   parameter st3 = 3;
   parameter st4 = 4;
        parameter st5 = 5;
   parameter st6 = 6;
        parameter st7 = 7;
   parameter st8 = 8;


   reg [3:0] state = st0;
        //added 101019
        reg [23:0] f_mea_cnt;

       
   always@( posedge clk_f )
    begin
        case (state)
            st0 : begin                                      //idle
                                      if(f_start)
                                                state <= st1;
                                                else
                                                state <= st0;
                                               
                  freqcount <= 0;
                            freq_datah16 <= 0;
                                                freq_datal8 <= 0;
                                                freq2_rate_state <= 0;
                  end
             st1 : begin                                         
                                      if(!f_in)
                                                state <= st2;
                                                else if (f_mea_cnt >= 300000)
                                                state <= st6;
                                                else
                                                state <= st1;
                               
                                           freqcount <= 0;
                                           f_mea_cnt <= f_mea_cnt + 1;
                  end
                                st2 : begin                    
                                           if( f_in )
                  state <= st3;
                                                else if (f_mea_cnt >= 300000)
                                                state <= st6;
                                                else
                                      state <= st2;
                                                 
                                                freqcount <= freqcount +1;
                  f_mea_cnt <= f_mea_cnt + 1;
                                               
                                                end
                                st3 : begin     
                  if(!f_in)                               
                                      state <= st4;
                                                else if (f_mea_cnt >= 300000)
                                                state <= st6;
                                                else
                                                state <= st3;
                                               
                                                freqcount <= freqcount + 1;
                  f_mea_cnt <= f_mea_cnt + 1;
                                                end                               
                                st4 : begin
                                                state <= st1;
                                               
                                                if(freq2_rate_state == 1)
                                                freq2_rate_state <= 0;
                                                else
                                                freq2_rate_state <= 1;
                                               
                                                freq_datah16 <= freqcount[23:8];
                                                freq_datal8 <= freqcount[7:0];
                                 f_mea_cnt <= 0;
                                                end

                          st5 : begin     
                                
                  state <= st1;
                                               
                                                freqcount <= 0;
                  end
                          st6 : begin     
                                
                  state <= st1;
                                               
                                                freqcount <= 0;
                                                freq_datah16 <= 0;
                                                freq_datal8 <= 0;
                                                f_mea_cnt <= 0;
                                                freq2_rate_state <= 1;
                  end
                          
       default: begin  // Fault Recovery
               state <= st0;
                                       
                 freqcount <= 0;
                           freq_datah16 <= 0;
                                          freq_datal8 <= 0;                               
        end
         endcase

   end
          
          
          

endmodule

此帖出自FPGA/CPLD论坛

点评

采集进来的电压信号已经转换成方波信号了!  详情 回复 发表于 2014-4-17 10:01
 
 
 

回复

51

帖子

0

TA的资源

一粒金砂(中级)

7
 
yuechenping 发表于 2014-4-17 09:15
频率算法是:
module freq(
    input f_in,

采集进来的电压信号已经转换成方波信号了!
此帖出自FPGA/CPLD论坛
 
 
 

回复

5979

帖子

8

TA的资源

版主

8
 
关键是 零点检测

你描述一下你的 零点检测 怎么做的
此帖出自FPGA/CPLD论坛

点评

这个硬件和FPGA程序都是前人所做的,我现在接手修改,很多方面都不是很懂!你说的零点检测是指电压的零点检测还是程序里面啊?  详情 回复 发表于 2014-4-17 11:50
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 
 

回复

51

帖子

0

TA的资源

一粒金砂(中级)

9
 
chenzhufly 发表于 2014-4-17 11:41
关键是 零点检测

你描述一下你的 零点检测 怎么做的

这个硬件和FPGA程序都是前人所做的,我现在接手修改,很多方面都不是很懂!你说的零点检测是指电压的零点检测还是程序里面啊?
此帖出自FPGA/CPLD论坛
 
 
 

回复

5979

帖子

8

TA的资源

版主

10
 
指电压的零点检测

你如何转成方波的
此帖出自FPGA/CPLD论坛

点评

这个就是电压转换的电路,转换成方波的电路  详情 回复 发表于 2014-4-17 11:56
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 
 

回复

51

帖子

0

TA的资源

一粒金砂(中级)

11
 
chenzhufly 发表于 2014-4-17 11:51
指电压的零点检测

你如何转成方波的

这个就是电压转换的电路,转换成方波的电路

11.png (15.06 KB, 下载次数: 0)

11.png
此帖出自FPGA/CPLD论坛
 
 
 

回复

5979

帖子

8

TA的资源

版主

12
 
测过这个方波标准不?
此帖出自FPGA/CPLD论坛

点评

这个板子以前用过,能测出来的,所以是方波没问题的  详情 回复 发表于 2014-4-17 14:32
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 
 

回复

51

帖子

0

TA的资源

一粒金砂(中级)

13
 
chenzhufly 发表于 2014-4-17 13:28
测过这个方波标准不?

这个板子以前用过,能测出来的,所以是方波没问题的
此帖出自FPGA/CPLD论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表