mouseliu的个人空间 https://blog.eetop.cn/848664 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

AD DA FFT分析

热度 6已有 3088 次阅读| 2013-4-2 16:18

怎么给AD DA的结果做fft(快速傅立叶变换)是初学AD DA的人常问的一个问题。这也难怪,一般的模拟书上不怎么提这个事情,我只记得baker的第二册上有一部分内容讲这个。其实要理解了这里的道理,就发现这也不是太神秘的一件事情。
fft其实就是对一个信号做傅立叶分析,但是与傅立叶分析不同,一是它是将信号离散化,二是加了快速算法。通常的傅立叶分析用的是一个信号的全部时间信息,但是离散傅立叶变换(DFT)就只用了一些时间间隔上的信号信息。这样做可以适应计算机,但是也有一个问题就是有混叠效应(alias)。要避免混叠,就必须满足采样频率大于二倍最大信号频率。但在实践中,这个也只能改成尽可能大于(为什么)。如果对DFT在计算过程中运用一些技巧,就能使速度提高很多,这就被成为快速傅立叶变换。而这些技巧也不是随便能用的,这就引入了我们下面提出的一个约束。
对AD做fft,其实比较直观。AD本身就是对输入信号采样的,所以只需要把输出的数字信号做成数组,去做fft。某些做模拟的似乎对离散信号没有感觉,非要把这个数字信号再用DAC传成模拟量,然后做分析,这就等于又绕了一圈。如果是仿真,等于多加了一个仿真器件拖累。当然在实践中我也可以理解,因为如果用caculator做fft分析,就只能这样。但是如果用matlab做分析,就没这个必要了。对于实际测试,如果没有逻辑分析仪,只有频谱分析仪,也只能这么绕一圈测试,这属于没有办法,但是在具体测试中得注意DAC的引入实际对AD的结果是有影响的,所以这种比较适合精度不高的AD。还有些人概念如果不清,没有注意到DAC的结果并不完全是ADC的结果的复制,那就有可能把DA的问题认为是AD的问题。
要做好fft,第一个要求是采样的点数必须是2^N。其实这条如果违反了也并不是罪不可赎。因为这是为了使得fft能够实现快速算法的一个约束。如果违反了,第一,现在电脑速度这么快,第二,fft算法本身在进步,2^N是最优,但也有一些次优的选择,第三,有时候我们分析的点数并不多,所以违反了也不是犯了天条。不过建议还是用这个最优的约束条件,有时候能把30s的分析时间缩短到1s(假如分析的点数很多,又不是那么优化)。
第二个要求,是在分析的时间内有M个被分析信号周期,M应该与2^N互质。这个要求我认为基本上应该算是天条,特别是如果要考虑谐波之类。为什么?首先说必须要有整数个周期,根据fft的性质,被分析信号的能量就会集中在第M个bin上。如果违反了这个,能量就会分散在多个相邻的bin上,形成频谱泄漏,大家可以看看那时fft的结果,信号就像一个大斜坡,一直向两边延伸,淹没了其他bin上的信号。其次,这个M必须和2^N互质。如果不这样,M的整数倍信号就会落在几个固有的bin上。对于AD,其量化噪声实际并不是真正的噪声,而是和信号同周期的。所以一般我们只有用互质的做法,才能将量化噪声打散,显现出真正的谐波。当然也有例外,有时为了突显量化噪声,专门不采用互质的做法,这也是有实例的。所以关键还是了解背后的原因。
前面说的在仿真中很容易满足。但在测试中却未必容易,主要是由于第二条中对信号频率有严格要求,而且这个频率一定要与ADC的采样频率同步。所以就有一个加窗的概念。加窗实际是信号与系统里的一个概念,主要目的就是当信号不在一个bin上时,让这个信号的主要能量占据的bin尽可能少。但是这里也有一个矛盾,不同的窗,如果信号主要能量占据的bin比较少,信号在这几个bin外的的能量就比较大。反之信号主要能量占据的bin比较多,信号在这几个bin外的能量就比较小。所以需要根据需要加不同的窗。
在仿真中也碰到信号频率算的很严格,但仿真后依然有频谱泄漏,这个应该是仿真器有计算误差造成的,那时还是要加窗。
上面说的是AD的仿真,测试结果做fft。对于DA,有另外一个特性。DA的结果是个连续量,切换过程也是有意义的,这和AD不同。因此在DA的一个时钟内必须采足够多的点才行,如果一个周期只猜一个点那是远远不行的。
2

点赞

刚表态过的朋友 (2 人)

发表评论 评论 (8 个评论)

回复 纵横 2020-3-25 22:52
请问一下文中的bin是什么意思
回复 纵横 2020-3-25 23:10
另外M与2的指数互质的条件是不是意味着M是奇数
回复 mouseliu 2021-1-14 10:43
DFT图形是离散的,bin的意思就是离散的频率点。
M确实是奇数
回复 Klenex 2021-9-8 11:49
请问,如果是对于理想的正弦波信号,是不是不取质数也没有影响?
回复 mouseliu 2021-9-12 18:26
取质数只是为了提高仿真效率
回复 省委兰陵王 2022-5-21 23:30
mouseliu: 取质数只是为了提高仿真效率
兄弟,你理解错了,互质本身就是为了防止加窗后出现频谱泄露,加窗就是为了防止高频混叠到低频,所以需要做加窗filter,互质就是集中落到几个bin上,或者一个bin上,这也是fft的算法要求
回复 省委兰陵王 2022-5-21 23:32
Klenex: 请问,如果是对于理想的正弦波信号,是不是不取质数也没有影响?
仿真时候尽可能用互质,给的信号肯定是理想的sine波啊
回复 liki799 2022-7-16 06:41
FFT是做在芯片里的一个模块,还是外部信号的处理?

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 2

    关注
  • 26

    粉丝
  • 8

    好友
  • 12

    获赞
  • 11

    评论
  • 881

    访问数

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-5 09:13 , Processed in 0.010222 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部