← 数字电路笔试题目总结

推荐答案 测试一下

FPGA设计中如何实现同步时序电路的延时?

编程题 中等 笔试真题

参考答案

在FPGA设计中,实现同步时序电路的延时主要采用基于时钟边沿触发的寄存器(Flip-Flop)链,即通过串联多个D触发器构成移位寄存器。每个寄存器在时钟上升沿将数据传递至下一级,总的延时等于寄存器级数乘以时钟周期。此外,还可以使用计数器加存储的方式:用计数器产生地址,将数据写入RAM或FIFO,经过固定时钟周期后再读出,适用于较大深度延时。对于已知的固定延时,可直接例化FPGA内部的移位寄存器原语(如SRL16、SRL32),其利用查找表(LUT)资源实现可变长度延时,效率高于寄存器链。在选择实现方式时需权衡资源占用和延时精度:寄存器链延时精确且无额外地址开销,但占用SLICE资源随级数线性增长,适合短延时(几十级以内);FIFO或RAM适合大深度延时(数千级及以上),但需考虑读写控制与空满标志;SRL原语介于两者之间,节省LUT资源但无法提供中间抽头。同步时序电路要求所有延时单元在同一时钟域下工作,并满足建立时间与保持时间约束,避免异步问题。综合工具会自动对寄存器链进行优化,但需注意防止综合工具因优化等效逻辑而缩短延时路径,必要时可通过综合属性(如KEEP、DONT_TOUCH)保护。

涉及知识点

  • 寄存器链实现同步延时
  • 移位寄存器与SRL原语
  • 基于RAM/FIFO的大深度延时
  • 时钟域与同步设计
  • 资源与延时深度权衡
← 上一题
登录后反馈错题