在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2268|回复: 1

ad0809转换调试2天没有结果大家帮忙

[复制链接]
发表于 2008-4-3 15:14:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
ad0809转换调试2天没有结果大家帮忙仿真可以的,但是下载后FPGA控制adc0809的信号ale和start都不能产生,是状态机的问题还是其他什么问题。大家帮忙
 ADC0809 工作时序分析
ADC0809 的工作时序START是转换启动信号,高电平有效; ALE是3 位通道选择地址(ADDC、ADDB、ADDA) 信号的锁存信号. 当模拟量送至某一输入端,由3 位地址信号选择,而地址信号由ALE锁存; EOC是转换情况状态信号,当启动转换约100μs后,EOC产生一个负脉冲,以示转换结束;在EOC的上升沿后,若使输出使能信号OE为高电平,则控制
打开三态缓冲器,把转换好的8 位数据结果输送至数据总线.至此ADC0809的一次转换结束了.


   状态机的程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity adc0809 is
port(
  reset    : in std_logic;
  clk   : in std_logic;
  eoc   : in std_logic;
  D    : in std_logic_vector(7 downto 0);
  lock  : out  std_logic;
  ale   : out std_logic;
  start  : out std_logic;
  oe    : out std_logic;
--  st   : out  integer range 7 downto 0;
  adda  : out std_logic;
  addb  : out std_logic;
  addc  : out std_logic;  
  data  : out std_logic_vector(7 downto 0)
);
end entity;
architecture func of adc0809 is
    type state_type is (st0, st1, st2, st3, st4, st5, st6);
signal current_state,next_state : state_type:=st0;
    signal lock1 : std_logic;
    signal reg : std_logic_vector(7 downto 0);
begin
adda<='1';
lock<=lock1;
process (current_state, eoc)
begin
   case current_state is
    when st0=>
        ale<='0';
        start<='0';
        oe<='0';
        lock1<='0';
        next_state<=st1;
    when st1=>
     ale<='1';
        start<='0';
        oe<='0';
        lock1<='0';
        next_state<=st2;
    when st2=>
     ale<='0';
        start<='1';
        oe<='0';
     lock1<='0';
        next_state<=st3;
    when st3=>
     ale<='0';
        start<='0';
        oe<='0';
     lock1<='0';
        if(eoc='0')then
        next_state<=st4;
        else
     next_state<=st3;
     end if;
    when st4=>
     ale<='0';
        start<='0';
        oe<='0';
     lock1<='0';
        if(eoc='1')then
        next_state<=st5;
        else
     next_state<=st4;
     end if;
    when st5=>
     ale<='0';
        start<='0';
        oe<='1';
        lock1<='0';
        next_state<=st6;
    when st6=>
     ale<='0';
        start<='0';
        oe<='1';
     lock1<='1';
        next_state<=st0;
    when others=>
        next_state<=st0;
   end case;
end process;
   
    process (clk,reset)
    begin
if(reset='1')then
     current_state<=st0;
elsif (clk'event and clk='1') then
  current_state<=next_state;
  end if;
end process;

process (lock1)
begin
  if (lock1='1' and lock1'event) then
     reg<=D;
  end if;
end process;
data<=reg;
end func;
发表于 2010-5-4 22:22:05 | 显示全部楼层
我也在做这个。。过不去- -
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-28 07:31 , Processed in 0.020713 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表