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

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

日志

除了dither,还能通过什么方式去抑制SDM的spur?

热度 1已有 53 次阅读| 2025-10-27 20:37 |个人分类:MMD|系统分类:芯片设计

之前的文章中写过sdm的dither有什么用,由于MASH 结构的SDM的序列是一个周期序列,这个会导致输出存在spur。这个时候,通常会使用dither打破这种周期,虽然有效,但dither的引入也会有一些坏处,会增加一些底噪。那还有什么其他方法去减小这个spur呢?

当然有,既然是SDM的周期导致的spur,那么我们是不是可以去通过一些设计,将SDM的序列变长,周期变长,谱线变得更密集,spur自然就下降了。

问题自然来了:

sdm的周期长度与什么有关呢?

首先,我们从一个最简单的一阶SDM分析,这里的一阶SDM指的是传统MASH的第一级。

用分子和分母表示SDM的小数输入,从1/10到9/10,这九个小数的周期是多少呢?

分数周期长度最简分数
1⁄10101⁄10
2⁄1051⁄5
3⁄10103⁄10
4⁄1052⁄5
5⁄1021⁄2
6⁄1053⁄5
7⁄10107⁄10
8⁄1054⁄5
9⁄10109⁄10

从中发现了什么,一阶SDM的周期长度,是输入的分数,约分后产生的最简分数,的分母值。

这个结论有什么用呢?

看起来好像并没有什么用,无论分母变为什么,1/4最终化简都会变为1/4,周期一直是4,但是,在系统允许的误差范围内呢?

假设系统的误差范围在0.0001内,那么意味着我可以选择[0.2499,0.2501]内任意小数,这个时候,我选择一个2499/10000,这是一个最简分数,但是他的周期变为了10000,远远大于2。

可以看一下simulink的仿真结果,采样频率是1kHz,2499/10000的spur强度会比1/4更低一些,虽然不是很多,但也下降了1.2dBc,不算特别显著的下降,聊胜于无。

这里得出我们第一个结论,SDM的周期长度与输入有关系,分数化简成最简分数后,一阶SDM的周期是分母

一阶的SDM分析完,自然会想到二阶的SDM有什么不一样,那二阶的SDM的序列周期跟什么有关?这里只分析MASH结构的二阶SDM,如果不清楚MASH结构怎么来的,欢迎看我的旧文为什么mash 结构的sdm能解决高阶sdm的稳定性问题?

二阶的SDM序列周期与什么有关?

在MASH SDM结构中,第二级的输入是第一级产生的量化噪声,也就是说,输入不是一个固定值,而是一个有周期的序列。

我们还是以分子分母为例,假设第一级输入的小数是2/10,那么第一级的量化噪声是(2/10,4/10,6/10,8/10,0)循环的序列。也就是第二级的输入是这样(2/10,4/10,6/10,8/10,0)周期为2的序列。

这个如何分析呢,其实我们可以把周期序列(2/10,4/10,6/10,8/10,0)看成一个不变的常数,这个常数是(2/10+4⁄10+6⁄10+8⁄10+0)=20/10,刚好能被分母整除,只需要一组这个周期序列就能完成循环,所以这组输入序列的周期是1*5=5,其中1指的就是多少组,5指的是这组序列有多少个元素。

下表给出1/10到9/10的二阶SDM周期数,其中第一级周期表示的是MASH第一级的周期;量化误差序列表示的是第一级剩余值,省略了分母,分母为10,举个例子,其中的1,表示量化误差为1/10;第二级周期表示的是MASH结构的第二级的周期。

分数第一级周期量化误差序列第二级周期最简分数
1⁄10101,2,3,4,5,6,7,8,9,0201⁄10
2⁄1052,4,6,8,051⁄5
3⁄10103,6,9,2,5,8,1,4,7,0203⁄10
4⁄1054,8,2,6,052⁄5
5⁄1025,041⁄2
6⁄1056,2,8,4,053⁄5
7⁄10107,4,1,8,5,2,9,6,3,0207⁄10
8⁄1058,6,4,2,054⁄5
9⁄10109,8,7,6,5,4,3,2,1,0209⁄10

从中得出什么结论

二阶的MASH SDM第二级的周期是,

把输入输出化为最简分数k/d(即gcd(k,d)=1,其中gdc(k,d)表示k和d的最大公约数)

  • 如果d为奇数,第二阶输出的周期=d

  • 如果d为偶数,第二阶输出的周期=2d

证明如下:


假设化简后输入为k/d (gcd(k,d)=1)。

第一阶的量化误差序列可以写成

第二阶的输出序列为


我们要找S[n]的最小周期T,实际上就是找最小的T,能保证S[n]是d的整数倍,用式子表示就是

由于k和d最小公约数是1,可以把k给消掉,那么式子①

另外,由于a[n]的周期是d,因此求的这个最小周期T一定是d的倍数,因此T还需要满足

因此,T=d,2d,3d….

当d为偶数时,T=2d满足式子①

当d为奇数时,(T+1)/2会抵消掉2,因此T=d即可满足式子①

因此结论为:

把输入输出化为最简分数k/d(即gcd(k,d)=1,其中gdc(k,d)表示k和d的最大公约数)

  • 如果d为奇数,第二阶输出的周期=d

  • 如果d为偶数,第二阶输出的周期=2d


那这个结论有什么用呢?

既然偶数的周期会更大,我们在第一阶的时候,选择了4999/10000,这个结果是比5000/10001好的。

还有什么呢,我们发现第二阶的输出周期主要是跟量化误差序列的求和相关,那我们是不是对求和做一些修改呢?

如何修改求和式子呢?

方法一,增加初始值

  1. 第一个方法是给第一级增加一个初始值,那么求最小周期的式子就会变成

这个式子对于最简分数来看,意义一样,但是,对于非最简分数,有可能会增加周期长度

举个例子,输入2/10,初始值为0的话,第二阶周期为5,如果初始值为1的话,第二阶周期为10。

也就是说,当有初始值的时候,增大分母其实是有意义的。


附:推导过程如下:

第一级增加了初始值后,量化误差序列变为

第二级的输出为

与未加初始值的推导一样,找S[n]的最小周期T,实际上就是找最小的T,能保证S[n]是d的整数倍,因此

同时需要满足


增加初始值导致的误差

但是,增加初始值其实是稍微改变了一些分频比,比如,原本分频是0.2,未加初始值时,k个0.2的平均值还是0.2;但是,当你加了一个初始值0.1后,k个0.2的平均值为0.2+0.1/k,只是说,当你的k足够大的时候,这个误差会非常小。而在PLL中的环路分频器时,k趋向于无穷大,所以这个误差会趋近于0。这个时候,误差也就不是什么大问题了。

可以看一下simulink的仿真结果,采样频率是1kHz,加了初始值1的分频2000/10000,相比于没有加初始值的分频,下降了大概2.5dBc。

方法二,修改SDM的结构

文献1中,修改了原本的结构,增加了一个反馈回路,如下图,第一个是原本的SDM结构,第二个是修改后的结构


这样的修改,让其在一阶的时候就不是一个固定的数累加,因此周期序列会很长。相比有dither的MASH结构,这个结构在硬件实现层面与MASH相当,但这个结构有一个优点是底噪会更好,缺点是实现更复杂了

那这样修改的原理是什么?反馈回路的系数应该如何抉择?先做个预告,将在下篇文章拆解。

文献

①TCAS Ⅰ 2007.Maximum Sequence Length MASH Digital Delta-Sigma Modulators


1

点赞

刚表态过的朋友 (1 人)

评论 (0 个评论)

facelist

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

  • 0

    周排名
  • 7

    月排名
  • 0

    总排名
  • 1

    关注
  • 12

    粉丝
  • 8

    好友
  • 48

    获赞
  • 9

    评论
  • 128

    访问数
关闭

站长推荐 上一条 /2 下一条


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

GMT+8, 2025-10-28 06:02 , Processed in 0.017118 second(s), 8 queries , Gzip On, Redis On.

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