搜索
bottom↓
回复: 16

fpga制作频率计问题

[复制链接]

出0入0汤圆

发表于 2017-3-28 18:17:17 | 显示全部楼层 |阅读模式
注册论坛很久了,第一次发帖,FPGA新手,手头有一个项目,是一个做一个显示高度的系统,但是高度传感器出来的是频率信号,如下图所示。

x轴是高度,Y轴是频率信号,只能通过频率信号来估算高度,频率信号范围在10M-10.6Mhz左右,随着高度变化,信号频率变化,现在难点主要在频率测量这块,要求响应在1ms,出来的是有点瑕疵的正弦波信号,手头买了一块fpga开发板带ad模块,就是不知道如何测量频率,fft估计不可能,因为采样2048点,频率分辨率为20M/2048,这个估计不符合要求,感觉分辨不出来频率,不知道我对fft理解是否有问题,如果用计数器的话,因为有点点谐波,就是担心会不会影响判断上升下降沿,导致错误计数,求高手指点下





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2017-3-28 19:02:23 | 显示全部楼层
拍照看看你的信号波形

出0入442汤圆

发表于 2017-3-28 19:04:29 | 显示全部楼层
根据一些运放的手册,以350KHz采样100KHz然后通过FFT是可以求得100KHz的峰值的。因此估计你得用至少35M以上的采样率了——这个档次的ADC价格还是挺高的,不划算。

另外一种方法,你用PLL去锁相,这样PLL会给你做好时钟滤波,你只要在片内做俩计数器,比如计算500us,倍频10倍,则最低为100000对100000,最高为106000对100000,还是比较容易实现的。PLL的典型带宽是1MHz~4MHz,而你这种频率变化基本可以认为是spread spectrum,可以放心用。

出0入0汤圆

发表于 2017-3-28 19:21:52 | 显示全部楼层
FPGA测频率很直接啊为什么用ADC;输入buffer配置成schmidt trigger,用100M clk采样,做个带滤波的输入同步模块 输出进计数器,每1ms重置;±1kHz;

出0入0汤圆

 楼主| 发表于 2017-3-28 20:18:26 | 显示全部楼层
NJ8888 发表于 2017-3-28 19:02
拍照看看你的信号波形

照片明天去拍

出0入0汤圆

 楼主| 发表于 2017-3-28 20:19:22 | 显示全部楼层
本帖最后由 sunsun1 于 2017-3-28 20:41 编辑
一天的蓝 发表于 2017-3-28 19:21
FPGA测频率很直接啊为什么用ADC;输入buffer配置成schmidt trigger,用100M clk采样,做个带滤波的输入同步 ...


这个也是想用计数器做,但是担心后半段信号比较窄,但是长度却变化非常大

出0入0汤圆

 楼主| 发表于 2017-3-28 20:25:20 | 显示全部楼层
wye11083 发表于 2017-3-28 19:04
根据一些运放的手册,以350KHz采样100KHz然后通过FFT是可以求得100KHz的峰值的。因此估计你得用至少35M以上 ...

你说的对,这个ad模块200多,不过这个项目唯一难点就是硬件测频率,我是接手别人的项目,他这个频率只在一个非常窄范围变换,如果测出超过这个范围一般就是传感器碰到了底部,或者抬太高了。我本身就是想用fft测频率峰值,但是担心在5mm-10mm这个范围能够测出频率峰值吗

出0入442汤圆

发表于 2017-3-28 20:47:29 来自手机 | 显示全部楼层
sunsun1 发表于 2017-3-28 20:25
你说的对,这个ad模块200多,不过这个项目唯一难点就是硬件测频率,我是接手别人的项目,他这个频率只在 ...

那你直接pll锁相吧。那玩意会自动跟踪传感器输出时钟。计数时记得倍10倍频,能大幅提高精度。

出0入0汤圆

发表于 2017-3-29 08:47:46 | 显示全部楼层
直接数边沿就可以了,1ms内有多少个时钟边沿,这样计算结果很准。把fpga工作频率调高点,200MHz, 1ms有0.2M工作时钟,你输入频率20MHz,1ms内才0.02M,这个分辨率应该可以接受吧。甚至可以再调高fpga工作频率,这样分辨率会更高

出0入0汤圆

 楼主| 发表于 2017-3-29 09:11:57 | 显示全部楼层
7802848 发表于 2017-3-29 08:47
直接数边沿就可以了,1ms内有多少个时钟边沿,这样计算结果很准。把fpga工作频率调高点,200MHz, 1ms有0.2 ...

因为是+-1v信号,调理电路出来是+3 +5v信号,就是应该不能直接接fpga引脚吧

出0入0汤圆

 楼主| 发表于 2017-3-29 10:28:53 | 显示全部楼层
7802848 发表于 2017-3-29 08:47
直接数边沿就可以了,1ms内有多少个时钟边沿,这样计算结果很准。把fpga工作频率调高点,200MHz, 1ms有0.2 ...

想问下fpga引脚 能够直接对+-1v信号进行施密特触发器电平变换吗

出0入0汤圆

 楼主| 发表于 2017-3-29 10:29:34 | 显示全部楼层
一天的蓝 发表于 2017-3-28 19:21
FPGA测频率很直接啊为什么用ADC;输入buffer配置成schmidt trigger,用100M clk采样,做个带滤波的输入同步 ...

输入buffer配置成斯密特是什么意思?不太懂

出10入23汤圆

发表于 2017-3-29 10:36:09 来自手机 | 显示全部楼层
sunsun1 发表于 2017-3-29 10:29
输入buffer配置成斯密特是什么意思?不太懂

cpld在配置引脚时有这个选项

出0入0汤圆

 楼主| 发表于 2017-3-29 10:41:37 | 显示全部楼层
zouzhichao 发表于 2017-3-29 10:36
cpld在配置引脚时有这个选项

这个fpga 有这个功能吗,可以吧+-1v转成方波吗

出0入0汤圆

发表于 2017-3-29 11:15:01 | 显示全部楼层
sunsun1 发表于 2017-3-29 10:28
想问下fpga引脚 能够直接对+-1v信号进行施密特触发器电平变换吗

电平问题,你完全可以对波形进行放大到fpga io电压范围。
是不是施密特触发我认为无所谓,对数字电路来说,就是0和1,没有中间值。

直接进行双采样,甚至3采样,消除亚稳态概率,对上升沿或者下降沿进行判断并计数即可

出0入0汤圆

 楼主| 发表于 2017-3-29 11:54:34 | 显示全部楼层
本帖最后由 sunsun1 于 2017-3-29 11:55 编辑
7802848 发表于 2017-3-29 11:15
电平问题,你完全可以对波形进行放大到fpga io电压范围。
是不是施密特触发我认为无所谓,对数字电路来说 ...


这个因为是接的别人一个烂手项目,我本身是搞linxu+qt 开发的,结果新近公司没人搞硬件,只好搞这个,其他做MFC的,前面的是 将+- 1v的sin 信号将其通过比较器放大 转化 +3v~ +5v 的方波信号,然后方波信号脉冲通过芯片74HCT4020 计2048个数,与此同时,有一个芯片接40m晶振开始计数,
74HCT4020 计2048个数完成后发送一个结束信号给那个接40m晶振的芯片,通过接40m晶振的芯片的计数个数可以知道方波信号计2048个对应的时间,求出频率,本身硬件基础不太好,在没确定方案前不好叫别人帮忙,另外那个硬件工程师也只懂stm32和画板,就是不知道fpga输入电平标准是多少,
需要接个转换模块吗

出0入0汤圆

发表于 2017-3-29 13:01:54 | 显示全部楼层
io 通常3.3,其实输入5V也未尝不可
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 20:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表