打印

如何在50us的时间内测量800khz的频率?

[复制链接]
4092|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dywr1937|  楼主 | 2012-2-10 17:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的是C8051F的单片机,想在50us的时间内测量800khz的频率,怎样才能让其精度达到0.1hz?

我用等精度频法,时间闸门为25us,待测频率的计数器采用系统时钟频率25MHZ,10MHZ作为的标频,理论上精度误差能有3.2khz。
用计数侧频法的话,精度更低。

精度低的主要原因是测量时间很短。
测量时间限制在100us的前提下(100us频率更新变化一次,所以要在100us内测完),不知道有什么好的方法能解决这样的测频问题?

哪位知道,帮帮忙。

相关帖子

沙发
hyhmh| | 2012-2-10 17:45 | 只看该作者
800K/0.1
那么, 测频时 采样率必须 大于等于 8000K即 8M。

使用特权

评论回复
板凳
dywr1937|  楼主 | 2012-2-10 17:50 | 只看该作者
2# hyhmh

您说的是那种测频的方法?FFT数字测频?

使用特权

评论回复
地板
zjp8683463| | 2012-2-10 18:42 | 只看该作者
等精度测频的误差为+/-1标准计数值的时间.
用10M计数,最后就会差+/-0.1us.
+/-0.1us相对于25us就是0.4%,即3.2k.
100us要达到0.1hz要8000M
FFT更不行了.单片机算个FFT够你受的.

使用特权

评论回复
5
dywr1937|  楼主 | 2012-2-10 19:08 | 只看该作者
4# zjp8683463

说的对。所以我想知道有没有其什么方法或方案,可以测出这种条件下的频率,且能达到满意的精度?或者就是说C8051F这样的单片机根本不能再这么短的时间内达到这样的频率测量精度要求,没有办法,只能考虑换fpga来通过数字测频来做?

使用特权

评论回复
6
zjp8683463| | 2012-2-10 19:16 | 只看该作者
本帖最后由 zjp8683463 于 2012-2-10 19:17 编辑

8000M的主频......都不好找.
800K的频率有必要做到0,1hz吗?
我觉得做到0.01%就可以了,就做到100hz

使用特权

评论回复
7
dywr1937|  楼主 | 2012-2-10 19:24 | 只看该作者
6# zjp8683463

测量时间太苛刻了,让您看的话,是不是用单片机是无解的方案?真的没有其他办法了吗?我自己是想不出来了,除非用数字快速测频,但是单片机的系统频率有限制了这种方法,且这种数字快速测频方法的精度我现在还不清楚能达到多少。。。。FPGA我仅仅是有一些了解,不怎么会。。时间上不允许我学习用fpga。。。

使用特权

评论回复
8
zjp8683463| | 2012-2-10 20:08 | 只看该作者
即使用数字方法测频,可能也无法达到这么高精度,小数点后7个0.AD采集的SNR达不到要求.

使用特权

评论回复
9
NE5532| | 2012-2-10 21:03 | 只看该作者
首先这个被测量的抖动要小,不然你再怎么测都测不准。

使用特权

评论回复
10
gx_huang| | 2012-2-10 21:39 | 只看该作者
无解,采用100US闸门,输入的计数频率太高了,需要8MHz×1000000/100=80000MHz=80GHz
不知道我上面的公式是否算错了0的位数。

使用特权

评论回复
11
nongfuxu| | 2012-2-10 23:51 | 只看该作者
不管用什么方法,测频精度与测量时间成正比. 50us下测量到800kHz到0.1Hz没有可能.

使用特权

评论回复
12
谈的元| | 2012-2-11 07:48 | 只看该作者
频率范围呢?

说说具体的运用也许有其他解

不要一个胡同走到底

使用特权

评论回复
13
airwill| | 2012-2-11 09:27 | 只看该作者
C8051F的单片机,25Mhz 的晶振, 我想对于单周期的单片机, 定时计数器最高测量频率可达 12.5Mhz, 凭这个精度, 测量800khz的频率,是可以实现的.
那么: 想在50us的时间内测量800khz的频率,能达到多少精度? 假设 50uS 绝对准确. 那么这个时间段里, 可以采样到 40K 个脉冲.  如果多了一个脉冲. 那么算出来的频率就是 800020Hz. 因此误差至少 ±20Hz.
那么怎样才能让其精度达到0.1hz? 很简单, 测量时间不低于 10S.

使用特权

评论回复
14
zjp8683463| | 2012-2-11 15:06 | 只看该作者
ls算错了吧,50us能采集40K个脉冲?是40个脉冲

使用特权

评论回复
15
drentsi| | 2012-2-11 19:53 | 只看该作者
使用一片TDC,再用单片机读数据,小CASE啦

使用特权

评论回复
16
drentsi| | 2012-2-11 19:54 | 只看该作者
TDC(Time-to-Digital Converter)时间数字转换器

使用特权

评论回复
17
nongfuxu| | 2012-2-12 08:48 | 只看该作者
使用一片TDC,再用单片机读数据,小CASE啦

大CASE,小CASE,核心是算法! LZ的提问用什么芯片都没有可能解决!

使用特权

评论回复
18
drentsi| | 2012-2-12 09:29 | 只看该作者
既然不明白TDC,那就再讲一下
800K的信号,对应周期为1.25us
频率为800,000.1的信号,周期是1.24999984375us,误差0.15625ps
频率为799,999.1的信号,周期是1.25000140625us,误差1.40625ps
100us,可以测量80次取平均,将上面的误差乘以80
得出累计误差为12.5ps,112.5ps,使用时间分辨率在12.5ps以下的TDC即可测出。
专用的TDC,时间分辨率可达到2ps
FPGA做的TDC,最高可以达到10ps级别,一般也可以达到20ps级别
如果把时间放宽到1ms,那用一片最便宜的FPGA即可搞定

使用特权

评论回复
19
zjp8683463| | 2012-2-12 14:26 | 只看该作者
TDC使用普通fpga只能实现分辨率,不能实现精度.
要实现精度还是靠专用高速时间芯片

使用特权

评论回复
20
GavinZ| | 2012-2-12 22:17 | 只看该作者
TDC(Time-to-Digital Converter)时间数字转换器
drentsi 发表于 2012-2-11 19:54

我支持楼主的问题需要TDC解决。
请问,示波器里的TDC是怎么实现的?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

40

帖子

1

粉丝