这是输入方波信号的情况下,示波器测量的输入输出信号。可以看到,黄色的输出信号与青色的输入信号之间存在着一个延迟,为什么会有这个延迟时间?它是由什么决定的呢?另外,在测量CODEC输出的的信号上,出现了振铃现象。使用过示波器的人看到这个振铃现象,既熟悉又陌生。在下降沿之后的振铃波形是比较容易理解的。但是,在下降沿前面的振铃,在现实生活中是永远不会出现的。这是因为任何现实中的系统都必须满足一个基本的原理,那就是符合因果性。系统的输出不会预测前面即将到来的下降沿,而产生这样的一个振铃。那么问题来了,输出信号中的这个振铃波形是如何产生的呢?
▲ 图1.1.1 实验电路板输入的方波信号以及TLV320AIC23B输出的DAC信号
首先,输出波形中的振铃波动,不应该来自于外部输入信号中的波动。虽然,输出信号的数据,是在 I2S 中断中,对输入信号的ADC转换,但是,从示波器对输入信号采集到的波形上来看,输入信号中是没有波动的。为了彻底排除输入信号对输出信号的影响,在中断中,直接周期性的输出 0x7fff以及0x8000。这样,TLV320AIC23中转换数据中就不存在这波动。
但是,在输出波形中,仍然能够看到在上升沿和下降沿的前后都存在着振铃,同样,根据现在示波器与电路板的连接情况,也快吃排除是测量线路中的震荡波形。
下面,修改程序输出序列,每隔一端时间,发送给TLV320AIC23B的数据为一个尖脉冲,也就是只存在一个周期的高电平,其余都是低电平。
发送数据通过电路板上的 LED的高电平来指示,下面测量此时 TLV320的输出信号。是到了解开谜底的时候了。可以看到,此时 TLV320的输出是一个延迟后的 SINC 函数。它对应着 一个理想低通滤波器的单位冲激响应。因此,我们可以知道,在TLV320AIC 输出信号之前,它内部有一个数字低通滤波器,先对输出数据中高于采样频率 一半的频率滤除,然后再进行DAC转换。由此就会带来输出信号的延迟和振铃。我们看到的信号比起实际输出数据流实际上延迟了滤波器对应时长的一半。
▲ 图1.2.1 实数冲激序列对应的模拟输出
使用示波器采集输出的波形,读取该波形,进行傅里叶变换,便可以得到 TLV320AIC23B 内部低通滤波器的幅频特性。这是 FFT 计算后的频谱图,可以看到,低通滤波器的截止频率对应 10kHz。这正是 TLV320IAC输出的DAC转换频率频率的一半。
▲ 图1.2.2 读取示波器中的波形数据
在 TVL320AIC数据手册中,给出了在输入数据到DAC之间,的确存在着一颗数字滤波器。输出数据首先经过低通滤波之后,才发送到后面的DAC,数字滤波器的截止频率,等于采样频率的一半。因此,前面实验中,应该是设置了信号采样频率为20kHz,所以,对应的低通滤波器的截止频率为 10kHz。
本文通过实验测试了音频CODEC中的数字滤波器的特性。由于存在着低通数字滤波器,在输出信号中突变处,会出现振铃现象。
正弦波采集与回放:AI8051U和TLV320AIC23B: https://zhuoqing.blog.csdn.net/article/details/144828259