在异步设计中,为了防止亚稳态,信号的同步是必须要进行的
单bit信号的同步通常是用时钟锁存的方法
从异步的时钟频率来看,还可以细分为两小类
第一类
被同步的信号时钟域的频率比本时钟域的频率低
这时候可以直接通过双锁存的方法来进行同步
对于 被同步的信号时钟域的频率比本时钟域的频率高的情况 可以采用如下方法:
代码
reg
flag1,flag2,flag3;
wire clr;
assign clr = flag3 && ( ! flag);
always @( posedge flag or poesdge clr) // 注意和 always @(posedge flag or clr) 区别
if (clr)
flag1 <= 0 ;
else flag1 <= 1 ;
always @( posedge clk)
begin
flag2 <= flag1;
flag3 <= flag2;
end
wire clr;
assign clr = flag3 && ( ! flag);
always @( posedge flag or poesdge clr) // 注意和 always @(posedge flag or clr) 区别
if (clr)
flag1 <= 0 ;
else flag1 <= 1 ;
always @( posedge clk)
begin
flag2 <= flag1;
flag3 <= flag2;
end