尽管复位方案极其重要,可是却是最被忽视的部分之一,许多设计人员认为FPGA的全局复位资源将会完全解决问题,这是完全不正确的。至于为何说复位的重要性极高,是因为复位方案不好会引起不可重复的错误,而不可重复的错误也正是我们最不愿意遇到也最糟糕的错误。
下面简单介绍三种复位方案:
一、完全异步方案 这种方案,确立和释放寄存器都是异步的,值得重申一下,异步指的是复位信号与时钟无关。完全异步方案的结构图如下:
说明:假设复位是低有效的,那么上句话中“确立”指的是电平从高变低,而“释放”指的是电平从低变高,将输出由复位状态释放。
这种电路最大的问题就是释放的时候,复位信号可能不满足建立保持时间,从而导致输出亚稳态。
为了解决上面的问题,有人想出了完全同步方案,如下图所示:
可以看到,复位信号被时钟采了两次,这会出现什么问题呢?问题就是可能会出现不能有效复位的情况,如果时钟频率较低,而复位持续的时间又比较短,正好没有被时钟采到,则可能会导致不能有效复位。
那么有没有什么好办法呢?当然有啦,下面就要介绍在实际设计中常用的复位方案,即同步确立,异步释放方案:
这种方案确立时是瞬间同时对所有寄存器复位的,而释放时则要等待时钟沿到来。这就是所谓的同步确立,异步释放。
当然,由此也很容易想到,针对不同的时钟区域,我们需要用不同的时钟对释放进行采样,这就导致虽然不同时钟域复位确立是同时的,但释放可能是不同时的。
|