11771|4

372

帖子

0

TA的资源

一粒金砂(高级)

【Altera SoC体验之旅】对ADC采样数据进行FFT处理 [复制链接]

本帖最后由 coyoo 于 2015-4-17 11:06 编辑

前面看了柱斑的3篇有关ADC采样的帖子,我的板子没有ADC,所以我也只能从同事的DAQ采集得到的数据进行FFT处理,当然只是进行仿真。学校学习的FFT的原理老早就丢给了老师,最近一段时间花了点时间复习了FFT的物理意义,这些信息大家都可以通过度娘得到



FFT的作用有很多种,那么我们做FFT的意义非常简单,就是分析信号源中的频率分量,并精确得到每个频率分量的幅度,相位信息我们不关注。对了,fft我们没有能力自行设计代码,所以啦,只能使用Altera的IP核。



在例化FFT使用之前,先简单描述下我们的系统。信号源来自光电探测器,为了提取出微弱的信号,信号在光域进行了声光调制,所以最终电信号在频率分析可以获得最大的动态范围。信号调制的频率应该KHz级别,所以我们的ADC采样速率不是很高,20MHz左右即可。只是信号调制时间长度一般是1ms,要求采样时间长度达到秒级,所以虽然采样率不高,但是每次处理的数据量还是比较大,比如一帧(1ms)数据采样后得到20000个样本。



根据上述分析,那么在例化FFT的时候初步确定选用Streaming模式(个人感觉应该可以使用缓冲突发模式),fft转换长度选为2048.这样最小分辨出的频率是20000KHz/2048大致等于9KHz。



由于事先不知道信号调制的频率,所以选择了上述FFT的参数,结果悲剧发生了,FFT转换的结果始终是只有DC分量,询问同事得知信号调制在10KHz左右

5.jpg




上图没有放大,我仔细放大查看过,确实没有其他频率分量(我查的是输出实部,虚部是底噪的响应);后来发现问题所在之后,重新例化了FFT,使用了32768点转换,这样最小可以分辨到610Hz。仿真结果如下图所示:

1.JPG



从上图我们可以看到信号频谱出现在了第18个点上,该点大致频率等于610*18=10.98KHz。



大致仿真过程就是这样了,最后也学柱斑来几个总结:

1、是FFT给ADC采样数据进行转换的时候,ADC的数据从FFT的实部输入,虚部输入端口接0。这个为何这么做我也是不太清楚,看到有人这么做就这么做,给Altera提了SR,人家回复说可以这么做,至于具体虚部要不要接数据,人家说要根据自己的算法来决定

2、FFT的结果从上面仿真的结果来看,是不是我采用实部输出就可以呢?这个问题我也在SR里咨询了,答复也是可以的。但是FFT的用户手册说了,由于FFT核采用但是块浮点实现的,所以为了不丢失精度,最终结果是需要与EXP(指数)输出进行缩放处理,上图的src_value就是我缩放处理后实部的平方加上虚部的平方再开发得到的,这样得到的结果应该是FFT转换后的幅度吧。由于项目需要获取信号的精确幅度,所以我的疑问是直接从实部得到幅度值还是需要进行上述转换得到?


3、最后一个问题是图中明显看到出现了频率分量的镜像,那么32768点fft是不是只能分辨出一半的频率分量呢?比如20MHz的话只能分辨出610Hz到10MHz而不是610Hz到20MHz呢?因为后半部分都是前半部分的镜像啊。






此帖出自FPGA/CPLD论坛

最新回复

建议你看看这篇文章,里边有很详细的介绍。 http://www.xuebuyuan.com/539160.html   详情 回复 发表于 2015-4-20 10:51

回复
举报

9808

帖子

24

TA的资源

版主

第三个问题,根据奈奎斯特定理,…采样率至少为被测频率的二倍,所以能分辨出的最大频率为 fn=(N/2-1)*Fs/N。 第二个问题,幅度为该点的模(实数与虚数的平方和开方)/N/2 第一个问题个人认为ADC采集到的数据为实数(虚部为0)
此帖出自FPGA/CPLD论坛

点评

多谢回复! 1、第三个问题确实应该是这样的;不过问题又来:1)最小频率大致为Fs/N应该没有错吧?2)、FFT结果中从第一个点到最后一个点分布对应什么频率点呢?我同时使用Origin软件对相同的数据做FFT得出的结果  详情 回复 发表于 2015-4-20 09:22

回复

372

帖子

0

TA的资源

一粒金砂(高级)

littleshrimp 发表于 2015-4-17 22:24
第三个问题,根据奈奎斯特定理,…采样率至少为被测频率的二倍,所以能分辨出的最大频率为 fn=(N/2-1)*Fs/N。 第二个问题,幅度为该点的模(实数与虚数的平方和开方)/N/2 第一个问题个人认为ADC采集到的数据为实数(虚部为0)

多谢回复!

1、第三个问题确实应该是这样的;不过问题又来:1)最小频率大致为Fs/N应该没有错吧?2)、FFT结果中从第一个点到最后一个点分布对应什么频率点呢?我同时使用Origin软件对相同的数据做FFT得出的结果和Altera的FFT核的结果不太一样。Altera的FFT核算出的结果如图1楼的图所示,第一个点位DC,第二点就是最小频率到N/2点后产生镜像;而软件做的FFT是从中间点(大致N/2)开始为DC...最小频率点这样分布并向两侧对称(或镜像)分布。



2、第二个问题,你的意思如果要取幅度,就不能单单取FFT输出的实部,应该与虚部一同考虑(尽管虚部输入接的0)?
此帖出自FPGA/CPLD论坛

点评

建议你看看这篇文章,里边有很详细的介绍。 http://www.xuebuyuan.com/539160.html  详情 回复 发表于 2015-4-20 10:51

回复

9808

帖子

24

TA的资源

版主

coyoo 发表于 2015-4-20 09:22
多谢回复!

1、第三个问题确实应该是这样的;不过问题又来:1)最小频率大致为Fs/N应该没有错吧?2)、FFT结果中从第一个点到最后一个点分布对应什么频率点呢?我同时使用Origin软件对相同的数据做FFT得出的结果和Altera的FFT核的结果不太一样。Altera的FFT核算出的结果如图1楼的图所示,第一个点位DC,第二点就是最小频率到N/2点后产生镜像;而软件做的FFT是从中间点(大致N/2)开始为DC...最小频率点这样分布并向两侧对称(或镜像)分布。



2、第二个问题,你的意思如果要取幅度,就不能单单取FFT输出的实部,应该与虚部一同考虑(尽管虚部输入接的0)?

建议你看看这篇文章,里边有很详细的介绍。


http://www.xuebuyuan.com/539160.html

此帖出自FPGA/CPLD论坛

点评

多谢,这篇文章的最后一段,好像在度娘里找到过,只是前面一大段还是第一次看到。  详情 回复 发表于 2015-4-21 08:46
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复

372

帖子

0

TA的资源

一粒金砂(高级)

littleshrimp 发表于 2015-4-20 10:51
建议你看看这篇文章,里边有很详细的介绍。


http://www.xuebuyuan.com/539160.html

多谢,这篇文章的最后一段,好像在度娘里找到过,只是前面一大段还是第一次看到。
此帖出自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-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表