建立/保持时间对FPGA实现的影响及使能采样方案选型咨询
优先选择时钟下降沿采样SR_SHIFT_ENABLE的方案,尤其是在FPGA实现场景下,具体分析如下:
保持时间违规的实际风险
FPGA里的寄存器用上升沿采样时,要求输入信号(这里就是SR_SHIFT_ENABLE)在时钟上升沿前后的setup/hold窗口内保持稳定。你仿真里看到采样时刻接近脉冲末尾,意味着SR_SHIFT_ENABLE的有效电平可能刚过上升沿就开始消失——仿真只是理想模型,实际布局布线后,不同路径的延迟差异会让这个问题放大,大概率触发hold time violation,导致实际芯片运行出错。下降沿采样的核心优势
用时钟下降沿采样的话,相当于把采样时刻和状态机生成信号的上升沿错开了半个周期:状态机在上升沿生成SR_SHIFT_ENABLE,信号经过组合逻辑延迟后,到下降沿时已经稳定了足够久,完全覆盖setup/hold窗口,从根源上避免了时序违规的可能。而且FPGA的寄存器基本都支持下降沿触发,不会额外消耗资源。上升沿采样的硬伤
虽然仿真能跑通,但实际实现时你得加严格的时序约束,强迫综合工具优先保证这条路径的时序,这会增加布局布线的难度,甚至可能需要插入缓冲器来调整延迟,反而浪费资源。后续如果修改模块,路径延迟变化后,之前的约束可能失效,埋下时序隐患。补充建议
要是你非得用上升沿采样,一定要给SR_SHIFT_ENABLE配置精准的时序约束(比如set_input_delay或set_max_delay),但这种方案的鲁棒性远不如下降沿采样,不推荐。
内容的提问来源于stack exchange,提问作者RatbaldMeyer11235

