这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » Xilinx » I2c slave仿真,异步置位或清零问题

共3条 1/1 1 跳转至

I2c slave仿真,异步置位或清零问题

菜鸟
2010-08-05 16:25:07     打赏

以下为消除scl_insda_io毛刺的语句,可是在仿真时却看不到正确的输出,sda_srscl_sr这两个移位寄存器一直维持1111没有变化。而当把if(clr_in)(包含beginend)这一段的删除,或在仿真时使clr_in一直为低电平,则sda_srscl_sr开始起作用,输出正确的波形。此种感觉仿真时一直在执行if(clr_in)这一段的语句,而不执行else中的代码。请问这是什么原因呢?

期待各位大侠指教,感谢

 

// Debounce, then delay debounced signals for edge detection

always @ (posedge clk_in or posedge clr_in)

  if (clr_in)

    begin

      sda_sr <= 4'b1111; 

      sda <= 1;

      was_sda <= 0;

      scl_sr <= 4'b1111; 

      scl <= 1;

      was_scl <= 0;

    end

  else

    begin

      sda_sr <= {sda_sr[2:0], sda_io}; 

      if (sda_sr == 4'b0000) sda <= 0;

      else if (sda_sr == 4'b1111) sda <= 1;

      was_sda <= sda;

      scl_sr <= {scl_sr[2:0], scl_in};

      if (scl_sr == 4'b0000) scl <= 0;

      else if (scl_sr == 4'b1111) scl <= 1;

      was_scl <= scl;

    end




关键词: slave     仿真     异步     置位     清零     问题    

菜鸟
2010-08-05 17:57:41     打赏
2楼
或则把异步复位改为同步复位也可以,请各位高手指教,为何异步复位不可仿真呢?
谢谢

菜鸟
2010-08-06 11:12:04     打赏
3楼

或则改为两个always语句,在clr_in的always语句中进行复位则可以正常仿真,但这样不能综合,请问这是什么原因呢?是modelsim的bug吗?

请问有人知道吗?
期待回复!


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]