论坛风格切换切换到宽版
  • 14761阅读
  • 49回复

整了个等精度的米哥8频率计 [复制链接]

上一主题 下一主题
离线bd1es
 
发帖
2096
只看楼主 倒序阅读 0楼 发表于: 2010-07-26
俺把上次取材于jesper hansen的tiny2313频率计改成了等精度的。等精度的东西真是米哥干的事,所以这次选用mega8,编译之后您就知道是为什么了。除了软硬件相对复杂外,等精度频率计也有明显的好处,那就是对于很低和很高的频率都能保证测量精度,不像一般频率计那样丢位或不得不在uhf段延长测量时间。

另外等精度频率计对闸门的准确度要求极低,这就降低了对单片机内部资源的需求,也减少了计数器链与单片机在逻辑上的耦合。有些成品甚至用555电路做连续可调的闸门,这完全没问题。当然还有一好处是测频和测周变成一回事,硬件上不再有任何区别。

这次还是软仿真项目,不打算实做。因为软仿真的速度难以忍受,所以使用了1mhz参考频率,也就是1秒获得6位的精度。如果把参考提升到10mhz,那就是1秒7位了。实际上这就是一般市售频率计的精度,除非它的内时基是100mhz的,或者是带内插的高端产品。有些普及型等精度频率计标8位,实际上是全时显示了外推的末位。

盲目外推影响测量的可信度,意义不大;而盲目不外推又过于保守,特别是会在测量类似10mhz这样信号的时候导致频繁换位,丢失精度。这里学习racal-dana 1992,在测量值首位为1的时候做末位外推,对精度几乎没有影响,是个不错的折中。

图片显示测量低频和uhf频率时的效果。附件中还包括仿真原理图和源代码等资料。欢迎朋友们把玩。特别是欢迎帮我修正程序,去除bug 。
离线BG7TBL
发帖
2963
只看该作者 1楼 发表于: 2010-07-26
能diy个出类似hp53131能出11位/秒的频率计吗!?
离线bd1es
发帖
2096
只看该作者 2楼 发表于: 2010-07-27
很难,需要特定的时间间隔测量芯片。其实逻辑上说,上面电路里u1-u8就是最简单的时间间隔测量芯片,可以用分立的集成块搭出来,也可以做到阵列器件里。不过还是有个天大的问题没解决,参考计数器的正负1误差问题。

在比较专业的机器里,用到的芯片是包括内插功能的,专门用来评估这个正负1的偏移程度,然后再把误差反过来补到测量值中,做好了能补偿2-3位,这就是racal-dana 1992里面两片40脚镀金集成块的作用。像hp的还要复杂些,所以位数更高。

关于内插,我们国家好像也只有南京一厂家在80年代做过,记得是9位/秒,后来就没再见到有国产的,也没见过卖时间间隔测量芯片的(好像time.ac.cn卖过类似芯片)。如果感兴趣可以自己用晶体管加阻容件制作简单的模拟内插电路玩玩,需要找找资料。俺没试过不敢多说 :d 。

还有就是提高精度后的软件算法问题。上面程序中的算法已经用到64-bit长整型四则运算了,最多也就支持到9位十进制,频率计数器和参考计数器的位数最高为32-bit。如果再高的话就需要启用多精度计算库,程序会更复杂一些。但也有好处,把多精度库做好了,编译之后的代码体积反而可能比unsigned long long更小,:)。
离线BG7TBL
发帖
2963
只看该作者 3楼 发表于: 2010-07-30
53131使用了一片xc3042 fpga来处理,53132则用了2片xc3042!
能否用maxii或者其他cpld代替呢!
现在连53131的原理都摸不着!
离线bd1es
发帖
2096
只看该作者 4楼 发表于: 2010-07-30
俺也没模着呢,反正hp的东西就不像racal的那么容易摸(当然摸了都没用,是定制芯片来的)。其它嘛,除了模拟内插法外,这些年也听说过什么数字游标法,多相时钟法,延迟线法之类的,只可惜俺哪种也没玩过,唉, ...
离线BG7IBQ
发帖
21159
只看该作者 5楼 发表于: 2010-07-30
用上cpld或是fpga的都是不好玩转的,你还是死了这条心吧
离线BG7IBQ
发帖
21159
只看该作者 6楼 发表于: 2010-07-30
'
俺把上次取材于jesper hansen的tiny2313频率计改成了等精度的。等精度的东西真是米哥干的事,所以这次选用mega8,编译之后您就知道是为什么了。除了软硬件相对复杂外,等精度频率计也有明显的好处,那就是对于很低和很高的频率都能保证测量精度,不像一般频率计那样丢位或不得不在uhf段延长测量时间。
另外等精度频率计对闸门的准确度要求极低,这就降低了对单片机内部资源的需求,也减少了计数器链与单片机在逻辑上的耦合。有些成品甚至用555电路做连续可调的闸门,这完全没问题。当然还有一好处是测频和测周变成一回事,硬件上不再有任何区别。
这次还是软仿真项目,不打算实做。因为软仿真的速度难以忍受,所以使用了1mhz参考频率,也就是1秒获得6位的精度。如果把参考提升到10mhz,那就是1秒7位了。实际上这就是一般市售频率计的精度,除非它的内时基是100mhz的,或者是带内插的高端产品。有些普及型等精度频率计标8位,实际上是全时显示了外推的末位。
盲目外推影响测量的可信度,意义不大;而盲目不外推又过于保守,特别是会在测量类似10mhz这样信号的时候导致频繁换位,丢失精度。这里学习racal-dana 1992,在测量值首位为1的时候做末位外推,对精度几乎没有影响,是个不错的折中。
图片显示测量低频和uhf频率时的效果。附件中还包括仿真原理图和源代码等资料。欢迎朋友们把玩。特别是欢迎帮我修正程序,去除bug 。 [表情]
'

不管是做什么样的频率计,基准还是最重要,基准跑了调,就谈不上精度和准确度了

等精度频率计好玩的地方,就是能保持显示的位数不变,如测量1hz时,在1s的闸门下,基本计数器方式的频率计,显示出是只有1位,就是1hz,而8位等精度的频率计能显示1.0000000hz 。
离线菠萝蜜
发帖
4727
只看该作者 7楼 发表于: 2010-07-30
求购成品8位等精度频率计,能到100mhz就可以了
离线BG7IBQ
发帖
21159
只看该作者 8楼 发表于: 2010-07-30
[quote=菠萝蜜]求购成品8位等精度频率计,能到100mhz就可以了[/quote]

我有部sc7201,在测低频率时有等精度,10m以上时就没有了
离线bd1es
发帖
2096
只看该作者 9楼 发表于: 2010-07-30
同意bg7ibq的观点,秒测7位跟一般基准的精度是匹配的,比如1ppm的温补或0.1ppm的恒温晶体,这些是最易搞到,也比较廉价的。当然只玩电台的话,恐怕连恒温的也不需要了,温补算顶配。

如果再追高就真要好基准,对有这种爱好的人,leapsecond给起了个外号,见这里:
http://www.leapsecond.com/time-nuts.htm

自己招,俺算半个,我买到的仪器能感知闰秒,比如天宝的驯服钟。但我自制的,不要外基准自己走的那些就还没达到, 。小声说,也不知啥时能达到,
离线bg6qbt
发帖
7248
只看该作者 10楼 发表于: 2010-07-31
路过学习的!
离线BG7TBL
发帖
2963
只看该作者 11楼 发表于: 2010-07-31
用cpld可以扩展,我目前只能做出8.5位/秒,还很不准确,离11位/秒差远了 !
离线BG7IBQ
发帖
21159
只看该作者 12楼 发表于: 2010-07-31
'
用cpld可以扩展,我目前只能做出8.5位/秒,还很不准确,离11位/秒差远了 !
'

用500mhz基准做倒数计数器的话,能做到多少位/秒?
离线BG7TBL
发帖
2963
只看该作者 13楼 发表于: 2010-07-31
ls:8.5位/秒
离线BG7IBQ
发帖
21159
只看该作者 14楼 发表于: 2010-07-31
'
ls:8.5位/秒
'


哦,明白了, 不过要找个500mhz的基准,然后用数字电路对500mhz进行计数真是不容易啊

ls,能跑500mhz的数字电路有什么介绍一下,门电路和分频器
离线bd1es
发帖
2096
只看该作者 15楼 发表于: 2010-07-31
至少用多相时钟是可以的。比如4相时钟推4路参考计数器,每相125mhz相当于500mhz参考频率,很多器件有内置pll,可以实现这个。
离线BG7TBL
发帖
2963
只看该作者 16楼 发表于: 2010-08-01
'
哦,明白了, 不过要找个500mhz的基准,然后用数字电路对500mhz进行计数真是不容易啊
ls,能跑500mhz的数字电路有什么介绍一下,门电路和分频器
'

用cpld或者fpga吧,很便宜,门电路只能找74g系列了!
离线BG7IBQ
发帖
21159
只看该作者 17楼 发表于: 2010-08-01
'
用cpld或者fpga吧,很便宜,门电路只能找74g系列了!
'

有跑以跑500mhz的cpld或是fpga? 看来又有东西可以学习了
离线BG7TBL
发帖
2963
只看该作者 18楼 发表于: 2010-08-01
一般都要超频才行!
离线BG7IBQ
发帖
21159
只看该作者 19楼 发表于: 2010-08-01
'
一般都要超频才行!
'
++起码端口要能输入这么高的频率才行啊!