怎么读AD7714的数据?

[复制链接]
9404|68
 楼主| anqi0126 发表于 2010-11-22 12:44 | 显示全部楼层
file:///C:/DOCUME~1/lenovo/LOCALS~1/Temp/FD%602UE8%7DLA5()ITLL7%6040%60N.jpg
 楼主| anqi0126 发表于 2010-11-22 12:44 | 显示全部楼层
file:///C:/DOCUME~1/lenovo/LOCALS~1/Temp/FD%602UE8%7DLA5()ITLL7%6040%60N.jpg
 楼主| anqi0126 发表于 2010-11-22 12:47 | 显示全部楼层
仿真图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| anqi0126 发表于 2010-11-22 12:59 | 显示全部楼层
if clk='1' and clk'event then

   --if initial='0' then          --初始化,并转串输出
      serial<=o1(n);
       if n=3 then
        n<=0;
        i<=i+1;
       else
        n<=n+1;
       end if;      --初始化完成
   -- else serial<='1';
      --end if;            --从这里开始写控制代码了--
   end if;
end process main;
把initial='0'注释掉
 楼主| anqi0126 发表于 2010-11-22 13:00 | 显示全部楼层
file:///C:/DOCUME~1/lenovo/LOCALS~1/Temp/HB~FJ)6]2K]F)_C%25JULF~~1.jpg
 楼主| anqi0126 发表于 2010-11-22 13:01 | 显示全部楼层
仿真波形

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| anqi0126 发表于 2010-11-22 13:05 | 显示全部楼层
i一直取到7,程序设定范围是到3
serial输出都是一个数,也不对
 楼主| anqi0126 发表于 2010-11-22 13:41 | 显示全部楼层
嘻嘻嘻我把你的程序弄好使了:)谢谢你哦
 楼主| anqi0126 发表于 2010-11-23 09:26 | 显示全部楼层
我想让AD7714din输出一位, AD7714sclk就变化一次,输出前为0,输出后为1。可是都提示我负值只能执行最后一个
SuperX-man 发表于 2010-11-23 18:11 | 显示全部楼层
把din放在SCLK下如何,然后SCLK接时钟,呵呵
SCLK<=clk;

Process (sclk)
if sclk='1' and sclk'event then
   din<=................
    ...............

其实还有很多其他方法来实现,关键是你要考虑好的时序
 楼主| anqi0126 发表于 2010-11-23 20:56 | 显示全部楼层
这个电路以前我测过,sclk平时是高电平的,几乎测的时候都是高电平,后来看说明知道他是会像我说的那样变化。你说的方法之前也有人让我试过,但没编译过去,我在试试,看看是不是我自己没编好,这块就差这里了
 楼主| anqi0126 发表于 2010-11-24 10:25 | 显示全部楼层
可以保证和其他部分一样都是用CLK的上升沿控制,保持一致性
但仿真时序图有点乱
估计得延时什么的吧?
 楼主| anqi0126 发表于 2010-11-24 10:26 | 显示全部楼层
我把AD7714sclk<=NOT clk
    ADsclk<=NOT clk
然后用IF ADsclk'EVENT and ADsclk='0' THEN来做主函数,这样可以保证和其他部分一样都是用CLK的上升沿控制,保持一致性
但仿真时序图有点乱
估计得延时什么的吧?
 楼主| anqi0126 发表于 2010-11-24 10:28 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| anqi0126 发表于 2010-11-24 10:35 | 显示全部楼层
应该是在CLK为高电平和SCLK为低时DIN有数据输出,如图中的高电平。但图里好像不对哦
SuperX-man 发表于 2010-11-24 11:32 | 显示全部楼层
在AD7714的DATA SHEET有完整时序图阿,你按照那个来,实现DATA SHEET里的时序就可以了阿.
你这样写是有点乱.
 楼主| anqi0126 发表于 2010-11-24 13:43 | 显示全部楼层


时序就是我说的那样AD7714din输出一位, AD7714sclk就变化一次,输出前为0,输出后为1。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
SuperX-man 发表于 2010-11-24 16:00 | 显示全部楼层
....汗..应该是一个SCLK一个DIN输出.只是SCLK是反时钟而已.

写了简单的,你自己参考下吧.

entity clk_test is
port(
clk: in std_logic;
din_out : out std_logic_vector(0 to 1)
);
end clk_test;
architecture Behavioral of clk_test is
signal sclk :std_logic;
signal i : integer range 0 to 3;
signal c : integer range 0 to 4;
begin
din: process(sclk) is
begin
if sclk='0' and sclk'event then
   case i is
when 0 =>din_out<="01";
when 1 =>din_out<="10";
when others => null;
end case;
i<=i+1;
end if;
if i=2 then
i<=0;
end if;
end process din;
clk1: process(clk) is
begin
if clk='1' and clk'event then
    case c is
  when 0 =>sclk<='0';
  when 2 =>sclk<='1';
  when 4 =>sclk<='0';
  when others => null;
  end case;
  c<=c+1;
end if;
if c=4 then
c<=0;
end if;
end process clk1;
   
end Behavioral;

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| anqi0126 发表于 2010-11-24 16:17 | 显示全部楼层
他们原来的程序SCLK平时的时候是高电平,几乎测的时候都是高电平,后来看说明知道他是会像我说的那样变化
 楼主| anqi0126 发表于 2010-11-25 15:49 | 显示全部楼层
晕,为什么你的波形这么好啊?仿真的时候为什么输入时钟CLK的周期不同,得出的输出ADsclk有的时候是均匀脉冲,有时是不均匀的脉冲啊?file:///C:/Program%20Files/腾讯QQ/Users/63331556/Image/%60XH)8S]V%25I5AN85E]MEGQAK.jpg
clk输入为20ns,SCLK输出的高电平明显比低电平持续的时间短而且也不是在clk上升沿变化
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部