版主: 51FPGA

分享到:
共3条 1/1 1   

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

    [您是本帖的第2528位阅读者]
hardyyang
我是GG
高级会员

最后登陆时间:2014-11-18 14:21:22

直达楼层
1# 发表于 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    仿真    异步    置位    清零    问题    

无知者无过。

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

hardyyang
我是GG
高级会员

最后登陆时间:2014-11-18 14:21:22

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

无知者无过。

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

hardyyang
我是GG
高级会员

最后登陆时间:2014-11-18 14:21:22

3# 发表于 2010-08-06 11:12:04

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

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


无知者无过。

共3条 1/1 1   
快速回复主题
  • 匿名不能发帖!请先 [ 登陆 注册 ]