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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2684|回复: 4

[求助] 新人求助!!傻傻的ad转换控制程序

[复制链接]
发表于 2011-4-15 16:57:16 | 显示全部楼层 |阅读模式

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

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

x
人生的第一个实验:数字电压表,下面是我写的控制ad0809的程序,仿真是正确的,可是下载到版子上后ad0809输出一直是11111111,是程序的问题吗?
其中cs∩wr=START=ALE,cs∩rd=ENABLE
跪谢前辈们!!
module ad0809(clk,reset,eoc,data,cs,wr,rd,dout_h,dout_l);
   input        clk,reset,eoc;
   input[7:0]   data;
   output       cs,wr,rd;
   output[3:0]  dout_h,dout_l;
   reg        cs,wr,rd;
   reg[3:0]   state;
   reg[3:0]   dout_h,dout_l;
   
   parameter  IDLE     =  4'b0001,
              CLEAR    =  4'b0010,
              CONVERT  =  4'b0100,
              READ     =  4'b1000;
  

//----------------change states---------------------
              
   always @ (posedge clk or negedge reset)
      begin
      if(!reset)
         state <= IDLE;
      else
           case (state)
      IDLE:
               state <= CLEAR;
      CLEAR:
               state <= CONVERT;
      CONVERT:
      if(eoc)
               state <= READ;
      else
               state <= CONVERT;
      READ:
               state <= IDLE;
      default: state <= IDLE;      
      endcase
      end            
      
                             
      
//---------------output----------------------------

   always @ (state)
      begin
      case (state)
      IDLE:
             begin
             cs    <=   0;
             wr    <=   0;
             rd    <=   0;
             end
      CLEAR:      
             begin
             cs    <=   1;
             wr    <=   1;
             rd    <=   0;

             end
    CONVERT:      
             begin
             cs    <=   0;
             wr    <=   0;
             rd    <=   0;
             end
    READ:
             begin
             cs       <=   1;
             wr       <=   0;
             rd       <=   1;
             {dout_h,dout_l}   <=   data;
            end
      endcase
      end


endmodule
发表于 2011-4-15 20:23:25 | 显示全部楼层
你有检测到EOC信号吗?否则一直都没有read,当然没有输出data了。
另外,看到你rd和read data的采样在同一个cycle,AD的时序是这样的吗?是不是先rd,然后下一个周期再采样输入data的?
发表于 2011-4-16 12:15:45 | 显示全部楼层
READ:
             begin
             cs       <=   1;
             wr       <=   0;
             rd       <=   1;
             {dout_h,dout_l}   <=   data;
            end
我觉得是你的  {dout_h,dout_l}   <=   data;有问题,你只在最后一个状态赋值了,但是其他的状态却没有,这就相当于一个锁存器,将输如锁存起来,输入是什么输出就是什么,不变。
解决办法:在其他状态中加入{dout_h,dout_l} <=‘zzzzzz’;
发表于 2011-4-16 12:20:49 | 显示全部楼层
是{dout_h,dout_l} <=6'bzzzzzz;好久不用都忘了。
 楼主| 发表于 2011-4-16 15:57:31 | 显示全部楼层
回复 4# xmffsf


    谢谢谢谢,现在输出已经有了~唉,高手就是高手,虽然我现在还没太搞明白为什么…可是现在输出不稳定,一直在闪,闪得都看不大清楚~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-5-1 23:25 , Processed in 0.038172 second(s), 10 queries , Gzip On, Redis On.

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