大家用Xilinx FPGA时一般用什么复位方式?
时间:10-02
整理:3721RD
点击:
本人在一个比较大的工程中,采用同步复位,但是复位信号不是从外部全局管脚接入的,所以直接在工程中采用计数器计数到某一数值时释放复位,在这之前一直拉高复位。布局布线后发现时序报告不满足要求,通过查看报告,发现全部是复位信号不满足要求,这个复位信号的扇出很大,大概有20000多。不知道怎么改善复位以满足时序要求,求各位大侠指导!
同步复位
接bufg 或者手动复制减少扇出
请问具体是如何手动复制呢?我只知道在综合策略中可以设置最大扇出数。
手动复制就是把你的复位输出,分到两个flop的输入,打一拍后输出变成2个复位,分别各接一半左右的模块。这里有个难点是,如何保证这俩复位的同步,或者同时到达每个flop。
试试看能否接一个bufg,这个可能更好一些。 还有,你是否可以把global的PLL的输出的lock信号作为复位呢,同步复位很容易发生没有时钟(比如PLL没有lock)的情况下reset被release的情况,导致实际上所有的flop并没有正确的被复位。
多谢小编的解答!复位后的信号我是接了bufg的,现在的问题是我想要板子跑到200M,但时序报告里复位信号不满足时序要求,只能跑到150几M,因为只有复位信号不满足要求,看有没有什么复位方式使系统时钟跑得到200M?
xilinx官方推荐,同步复位异步释放,有相关的文档可以看
wp272.pdf
wp275.pdf
同步复位、异步释放?为什么我之前看到的是异步复位、同步释放?这样有什么优势呢?
复位在绝大多数情况设为false path都没问题,这样可以过时序。
复位应该在开始阶段从异步转换到同步,每个时域都有自己的同步复位信号。
高扇出的复位应该在扇出的位置加bufg,不然没用。不想用可以手动多复制点。
代码中尽量减少无必要的复位信号,pipeline的可以不用。
其实复位也是触发器的一个输入信号,对于xilinx的器件,官方推荐触发器的所有输入信号都是同步的,这样时序容易处理。
