版主: 51FPGA |
hardyyang
![]()
最后登陆时间:2014-11-18 14:21:22 |
以下为消除scl_in和sda_io毛刺的语句,可是在仿真时却看不到正确的输出,sda_sr和scl_sr这两个移位寄存器一直维持1111没有变化。而当把if(clr_in)(包含begin至end)这一段的删除,或在仿真时使clr_in一直为低电平,则sda_sr和scl_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 仿真 异步 置位 清零 问题 |
![]() 无知者无过。 |
|
hardyyang
![]()
最后登陆时间:2014-11-18 14:21:22 |
或则把异步复位改为同步复位也可以,请各位高手指教,为何异步复位不可仿真呢?
谢谢 |
![]() 无知者无过。 |
|
hardyyang
![]()
最后登陆时间:2014-11-18 14:21:22 |
或则改为两个always语句,在clr_in的always语句中进行复位则可以正常仿真,但这样不能综合,请问这是什么原因呢?是modelsim的bug吗? |
![]() 无知者无过。 |
|
共3条 1/1 1 |