已回答假定已回答

AD1939采样信号失真问题

武帅兵 在 2015-11-17 詢問的問題
最後回覆由hpkamen於2015-11-26提供

ADI工程师:

      你好,我在使用AD1939进行数据采集时碰到了采样的数据失真的问题,再次将问题列出,请相关人员或者论坛上的朋友解答。

      我设计的工程中,AD1939与FPGA连接见附件"AD1939+FPGA",通过SPI接口FPGA为AD1939配置寄存器,寄存器配置为

register_CLK0 <= AD1939_ADDR_W & CLKCTRL0 & ( ENA_ADC_DAC or PLL_IN_MCLK or MCLK_OUT_XTAL or INPUT256 or PLL_PWR_UP );
register_ADC0 <= AD1939_ADDR_W & ADCCTRL0 & ( ADC_SR_192K or ADC_R2_UNMUTE or ADC_L2_UNMUTE or ADC_R1_UNMUTE or ADC_L1_UNMUTE or ADC_HP_FILT_OFF or ADC_PWR_UP );
register_ADC2 <= AD1939_ADDR_W & ADCCTRL2 & ( ADC_BCLK_SRC_PIN or ADC_BCLK_SLAVE or ADC_CHANNELS_2 or ADC_LRCLK_SLAVE or ADC_LRCLK_POL_NORM or ADC_LRCLK_FMT_50_50 );
register_DAC0 <= AD1939_ADDR_W & DACCTRL0 & ( DAC_FMT_I2S or DAC_BCLK_DLY_1 or DAC_SR_192K or DAC_PWR_UP );
register_DAC1 <= AD1939_ADDR_W & DACCTRL1 & ( DAC_BCLK_POL_NORM or DAC_BCLK_SRC_PIN or DAC_BCLK_SLAVE or DAC_LRCLK_SLAVE or DAC_LRCLK_POL_NORM or DAC_CHANNELS_2 or DAC_LATCH_MID );
register_DAC2 <= AD1939_ADDR_W & DACCTRL2 & ( DAC_OUT_POL_NORM or DAC_WIDTH_24 or DAC_DEEMPH_FLAT or DAC_UNMUTE_ALL );
register_DACVOL_R4 <= AD1939_ADDR_W & DACVOL_R4 & X"00";

其中工程仅使用了ADC1的左右声道。

从测试结果来看,ADC1左右声道引脚上的模拟信号都十分正常,没有任何失真。但是转换完的数字信号就会出现失真。其情况是,有时候上电后采集信号失真,多说情况下不失真。利用quartus ii的signaltap组件测得的失真和不失真的数字域信号波形分别见附件"测试结果.pdf"中的图1和图2. 测试中也发现,右声道比左声道失真的概率高,通过不断的开关机实验,左声道的失真概率大约是1%,而右声道的失真概率为10%。硬件方面,AD1939的温升挺快,当AD1939温度升高后,失真概率非常高。

 

我的问题就是,是什么原因导致AD1939采集信号失真,改如何解决。

 

谢谢

結果