提高器件工作的速度
摘自《Xilinx 可编程逻辑器件应用与系统设计》
提高器件工作的速度
1 评估逻辑设计的工作速度fmax=1/(Tco+Tsu+Tnet) (忽略了clock skew和clock jitter)
例如:器件的时钟频率要求达到50MHz,那么周期应为20ns
假设Tco+Tsu=1ns , 每级组合逻辑延时和线延时共Tpd+Tnet=5ns
那么允许增加的逻辑级数为:(20-1)/5=3(三级组合逻辑)
2 全局时钟缓冲器(BUFG)和第2全局时钟资源
使用BUFG来驱动时钟是为了让Tskew最小
3 流水线(pipeline)逻辑
4 并行逻辑与串行逻辑
采用并行逻辑后,可以减少逻辑的级数,从而改善设计的性能,提高器件的工作速度
并行逻辑和串行逻辑的典型HDL结构为“else”和“if…else”。如果需要提高器件的速度,在设计中就不要采用“if…else”
5 复制寄存器
多扇出网线会造成网络延时大,从而降低逻辑运行频率。
6 复制逻辑
原理同上
7 选择状态机类型
One-hot计数器由于始终只有一位变化,组合反馈资源少,具有最高的速度和较强的抗干扰性能,可以提高设计的工作速度。
8 clock uncertainty
如逻辑跑在200M以上,这个参数需要考虑,需检查是否可以减少输入始终抖动,去掉DCM,以及是否可以减少DCM,PLL抖动和phase error.
9 hold time error
大部分情况下,这个问题是因为clock skew大于data path delay 造成的。即两个寄存器的时钟端的时钟存在较大相位偏差,且因为数据路径的延时较小,导致了此问题。解决问题一般从时钟的角度出发,可能是没有时钟全局时钟线所致,很少情况也因为数据路径的延时很小造成,这时通过在数据通路上插入两级反相器来解决。
补充:
状态机最好选用三段式,经试验三段式比一段式速度快。