TI论坛
直播中

周必镜

7年用户 942经验值
私信 关注
[问答]

用C写了一个CIFF结构的ΣΔ调制器遇到的疑问求解答


  •   我用C写了一个CIFF结构的ΣΔ调制器,8阶调制,代码步骤如下:
    1.产生输入信号 我用的是1KHz的正弦波,double精度产生,采样率44.1K*64,增益0.5,每个量化周期产生一次,这样就不用进行原始的插值了。
    2.进行软件调制,对8个积分器分别求和,至于这部分实现,我是参考了书籍:《understanding oversamping data converters》中的内容
    3.加权求和8个积分器中的结果,进行判断,这个判断是模拟最后一级比较器的动作,正则输出1,负则输出0
    4.反馈到第一个积分器中,与输入信号相减(0时,反馈的是-1)。因为正弦波产生的范围就是-1至1,还衰减到了0.5,应该不存在溢出问题
    现在的问题是,输出的结果,经过解码器出来看,动态是很低的,不能达到音频的需求,我看在树上面所说,调制器的阶数越高,则噪声整形的程度越好。与一阶调制器对比起来提升很小。我现在不是很清楚那个地方出现了问题。

回帖(1)

Petc

2024-10-28 11:41:20
您好!您的问题似乎是关于CIFF(Cascaded Integrator-Filter-Feedback)结构的ΣΔ调制器在C语言实现中的一些疑问。以下是对您代码步骤的一些建议和解答:

1. 产生输入信号:您已经选择了1KHz的正弦波作为输入信号,采样率为44.1K*64,增益为0.5。这是一个合理的选择,可以确保信号在量化过程中有足够的分辨率。

2. 进行软件调制:在这一步,您需要对8个积分器分别求和。您可以参考《understanding oversamping data converters》这本书中的内容来实现这一部分。确保您的积分器实现正确,并且能够正确地累加输入信号。

3. 加权求和8个积分器中的结果:这一步是模拟最后一级比较器的动作。您需要对8个积分器的输出进行加权求和,然后根据结果判断输出1或0。正则输出1,负则输出0。

4. 反馈到第一个积分器中:这一步是将上一步得到的输出值反馈到第一个积分器中,并与输入信号相减。当输出为0时,反馈的是-1。这一步是ΣΔ调制器的关键,因为它确保了调制器能够跟踪输入信号的变化。

关于您的疑问,我建议您检查以下几个方面:

1. 确保您的积分器实现正确,并且能够正确地累加输入信号。

2. 检查您的加权求和实现是否正确,确保权重设置合理。

3. 检查您的反馈实现是否正确,确保反馈值能够正确地影响第一个积分器的输出。

4. 如果您的调制器输出不稳定或者有噪声,您可以尝试调整积分器的增益或者反馈系数,以改善调制器的性能。

希望这些建议对您有所帮助!如果您有其他问题,请随时提问。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分