复位设计
一、异步复位与同步复位
FPGA设计中常见的复位方式即异步复位与同步复位。在没有关注亚稳态之前,很多人也是多也是对这个不太在意,只有在遇到了亚稳态的危害之后才会关注异步复位和同步复位的区别。在没有关注这个问题之前,相信很多人都是用的异步复位,所谓异步复位,指的是复位信号和系统时钟信号的触发可以在任何时刻,二者相互独立。
1、异步复位实例
下面给出异步复位的一段代码:
always @(posedge clk or negedge rst_n)
if(!rst_n) b <= 1'b0;
else b<= a;
上面的代码进行综合后得到下面的电路图。可以看到FPGA的寄存器都有一个异步的清零端口(CLR),在异步复位的设计中,这个端口一般接低电平的复位信号 rst_n ,即使设计中是高电平复位,实际综合后也会把复位信号反向后接到这个CLR端。
异步复位RTL视图
2、同步复位实例
下面给出同步复位的一段代码:
always @ (posedge clk)
if(!rst_n) b<= 1'b0;
else b<= a;
下图是上面代码综合后的RTL视图