凡亿教育-迪丽热巴
凡事用心,一起进步
打开APP
公司名片
凡亿专栏 | 计数器仿真正常,综合后多等一个周期
计数器仿真正常,综合后多等一个周期

FPGA设计里经常遇到反常情况,写的计数器在仿真里时序完全符合预期,上板综合后莫名其妙多延迟一个时钟周期,反复核对代码逻辑也找不到问题。核心不是代码写错,是仿真和实际硬件的时序模型存在隐性差异。

24.png

1. 仿真忽略了IO输入延迟

仿真时直接把激励信号对齐时钟沿输入,没有考虑FPGA引脚的实际建立时间要求。

真实硬件中,外部输入信号到达寄存器的时间存在走线延迟,会被默认同步寄存器多打一拍,自然多出一个周期的延迟。

2. 综合工具自动插入了流水线

当计数器的位宽超过8位时,综合工具为了优化最高运行频率,会自动在计数进位链中间插入一级流水线寄存器。

这个自动插入的寄存器不会在仿真波形里体现,上板运行时就会多出一个周期的延迟。

3. 异步复位的同步释放问题

如果计数器用的是异步复位,复位信号释放时没有做同步处理。

复位释放的时刻刚好落在时钟沿附近,寄存器进入亚稳态,相当于计数器晚一个周期才开始正常计数,看起来就像多了一个周期。

4. 快速定位修复

在代码里显式标注计数器的keep属性,禁止综合工具自动插入额外寄存器。

给所有外部输入信号加一级手动同步寄存器,让仿真和硬件的时序完全对齐,就能消除这个额外的周期延迟。


本文凡亿教育原创文章,转载请注明来源!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
相关阅读
进入分区查看更多精彩内容>
精彩评论

暂无评论