简而言之,我正在重新创建一个程序,该程序通过 ADC 读取 3 个正弦信号,执行一些操作,然后通过 DAC 再现这些信号。为了重现这些信号,我需要这些操作之一的瞬时相位。所以我在软件中重新创建了一个电荷泵过零 pll。
我不明白你为什么要费心计算模拟环路滤波器传递函数,将其转换为 z 域,而在软件中,当我可以实现一个读取零之间样本数量的程序时,以及瞬时相正。
(当前样本#-最后一个零样本#)/(pi*(零之间的样本数))
现在我显然错过了一些东西,但我不知道用谷歌搜索什么。
简而言之,我正在重新创建一个程序,该程序通过 ADC 读取 3 个正弦信号,执行一些操作,然后通过 DAC 再现这些信号。为了重现这些信号,我需要这些操作之一的瞬时相位。所以我在软件中重新创建了一个电荷泵过零 pll。
我不明白你为什么要费心计算模拟环路滤波器传递函数,将其转换为 z 域,而在软件中,当我可以实现一个读取零之间样本数量的程序时,以及瞬时相正。
(当前样本#-最后一个零样本#)/(pi*(零之间的样本数))
现在我显然错过了一些东西,但我不知道用谷歌搜索什么。
对于非常高的 SNR 信号,定位零交叉点将非常有效。当信号不具有高 SNR 时,您可以使用 PLL,如下所示。

正如您通过检查所看到的,过零算法不会希望处理此信号。另一方面,PLL 可以做得很好。也就是说,顺便说一下,SNR 为 8 dB 的音调。