Xilinx 复位白皮书读后感
reset白皮书
1.从功能上来看,全局复位很香。
2.但是实际上,全局复位不一定work,这一点是由复位网络的传递延时决定的。
3.先不讨论同步复位,因为它可以被STA约束。全局异步复位,可能会导致不同的FF在解复位时工作在不同的状态或亚稳态。
4.但是异步复位还是需要的,毕竟同步复位消耗的性能也不少,而且同步复位没有办法有效地跨时钟域工作。在讨论怎么解决亚稳态问题以前,首先我们应该思考,设计到底要不要复位?
5.答案是,在FPGA上不需要,因为自带power on reset。如果子模块实在需要单独的外部复位,推荐使用高电平复位,可以在每个复位端口出口处节省一个反相器。之所以很多IP使用低电平复位,是因为要尽量避免毛刺对复位的影响,以及出于功耗的考虑。
6.那么什么样的设计需要复位呢?单纯流水线不需要每一级都复位,带反馈的流水线需要每一级都复位(截止到反馈那一级),这是最简洁的结论。
7.举个例子就是移位寄存独热编码的复位,如果出现亚稳态,可能导致热编码永久消失。
8.最后再来考虑如何对这样的流水线进行有效复位?答案是异步复位同步释放电路,而且是通过级联寄存器来实现可控复位时长的,也可以分析sta。
9.值得注意的是,SRL16E移位寄存器是没有复位的,但是如果声明了带复位的移位寄存器,就用不到这一资源了,造成浪费。
多路选择器白皮书
1.为了避免使用与门—或门结构的情况,可以用异步复位寄存器作为或门输入,但是不可避免会造成输入延迟一拍。
2.另一种有意思的多选器结构是基于进位链的多选器,进位链在FPGA的结构上分布靠近中心,容易在PR中取得比较好的性能。缺点是只能实现优先选择器(倒也没有关系)。
3.关于加法进位链carry4,有计算和输入,任意一个加数输入,以及进位输入。在和为1的时候令进位数向上进位,在和为0的时候令加数向上进位,符合基本加法的输入分布。在计算和为1111的情况,低位进位会直接进入高位。
如果用不满4位也不影响正常工作。