FPGA中亚稳态的处理方式
亚稳态的原理这里不赘述,直接贴方法:
异步信号同步化
通过延迟两个周期,将信号进行多级寄存器边缘提取,
input sig_synq;
wire sig_synq_o;
reg[3:0] sig_synq_r;
always@(posedge clk or negedge rst_n)begin
if(~rst_n)
sig_synq_r <= 4'd0;
else
sig_synq_r <={sig_synq_r[2:0],sig_synq};
end
assign sig_synq_o = sig_synq_r[2] & ~sig_synq_r[3];
异步复位,同步释放
input rst_n
wire synq_rst_n;
reg[1:0] rst_n_r;
always@(posedge clk or negedge rst_n)begin
if(~rst_n) rst_n_r <= 2'd0;
else rst_n_r <= {rst_n_r[0],1'd1};
end
assign synq_rst_n = rst_n_r[1];
FIFO
异步处理万金油