总结一下PDM信号与PCM信号:
PDM
PDM:脉冲密度调制,模拟信号的幅值使用输出脉冲对应区域的密度表示。PWM波是PDM波转换频率固定的一种特例,在实际输出的一位数据流中,只存在“1”和“0”,1的密度越大,代表该区域对应的模拟信号幅值越大,反之,0的密度越大,代表该区域的模拟信号幅值越小。1和0连续转换的区域对应中间幅值。使用低通滤波器将PDM信号滤波后,可以恢复连续的模拟信号波形。
已知signal array,求output PDM array。
// x[s]: signal array
// y[s]: output PDM array
// qe : running error
void PDM(double x[s], double y[s], double qe = 0,) // initial running error is zero
{
for(int n = 0, n < s, ++n)
{
if(x[n] >= qe)
y[n] = 1;
else
y[n] = -1;
qe = y[n] - x[n] + qe; // calculate the error to feedback
}
}
PCM
PCM:脉冲编码调制,脉冲编码调制就是把一个时间连续,取值连续的模拟信号变换成时间离散,取值离散的数字信号后在信道中传输。脉冲编码调制就是对模拟信号先抽样,再对样值幅度量化,编码的ADC量化过程。