微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 求指导,ADS1204使用的问题

求指导,ADS1204使用的问题

时间:10-02 整理:3721RD 点击:

哪位大神用过,求指导,希望可以联系我939969820@qq.com 必有重谢

不要这样提问.

最起码你把遇到的问题描述清楚.

这里是授之于渔, 而不是授之于鱼 的地方.

上图是我根据网上找的方法弄的,我对ads1204的输出数据滤波模块,图中ADS1204_OUT_A  代表芯片的数据输出口,ADS1204_CLKOUT 代表芯片输出时钟,fredivn表示256分频即起到OSR=256的作用,sinc_1表示sinc3滤波。请问设计思路是否正确?我测试的结果是经过滤波后输出数据变化非常大,不知道问题出在哪里,请指导,另外,我也试过CNR用外部时钟输入,依旧不行,您能指导下吗?

ADS1204是没有时钟输出的! 需要外部提供时钟给调制器和滤波器。

OSR = 256 与 256分频不是同一个概念吧!

你现在滤波后的结果波动范围大概为多少?在ADS1204输入短接的时候

按照手册上说的,只要将CLKSEL设置为高电平就可以选用内部时钟,所以会有CLKOUT的周期为100ns,我将CLKOUT作为数字滤波器的时钟输入,再通过分频得到MCLK的输入,见下图的SINC3滤波器设计:(按照application note SBAA094中的思路设计滤波器,这是在ADS1204手册中提到的)

SINC3滤波器程序为:

library IEEE;

use IEEE.std_logic_1164.all;

use IEEE.std_logic_unsigned.all;

entity FLT is

port(RESN, MOUT, MCLK, CNR : in std_logic;

CN5 : out std_logic_vector(24 downto 0));

end FLT;

architecture RTL of FLT is

signal DN0, DN1, DN3, DN5 : std_logic_vector(24 downto 0);

signal CN1, CN2, CN3, CN4 : std_logic_vector(24 downto 0);

signal DELTA1 : std_logic_vector(24 downto 0);

begin

process(MCLK, RESn)

begin

if RESN = '0' then

DELTA1 <= (others => '0');

elsif MCLK'event and MCLK = '1' then

if MOUT = '1' then

DELTA1 <= DELTA1 + 1;

end if;

end if;

end process;

process(RESN, MCLK)

begin

if RESN = '0' then

CN1 <= (others => '0');

CN2 <= (others => '0');

elsif MCLK'event and MCLK = '1' then

CN1 <= CN1 + DELTA1;

CN2 <= CN2 + CN1;

end if;

end process;

process(RESN, CNR)

begin

if RESN = '0' then

DN0 <= (others => '0');

DN1 <= (others => '0');

DN3 <= (others => '0');

DN5 <= (others => '0');

elsif CNR'event and CNR = '1' then

DN0 <= CN2;

DN1 <= DN0;

DN3 <= CN3;

DN5 <= CN4;

end if;

end process;

CN3 <= DN0 - DN1;

CN4 <= CN3 - DN3;

CN5 <= CN4 - DN5;

end RTL;

可以看到输出为25位的数据,如果我输入为0V,那么输出的变化范围为几百,十分不稳定(按照10进制),照理应该是一个定值,希望您能够指导一下!

没有人做过这个吗?求指导

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top