本帖最后由 GoldSunMonkey 于 2011-12-27 21:39 编辑
如果a_clk的频率比b_clk频率高,将可能会出现因为dat变化太快而使b_clk无法采到的问题。即在信号
从快时钟域向慢时钟域过渡的时候,如果信号变化太快,慢时钟将可能无法对该信号进行正确采样,如
下图所示。所以在使用双锁存器法的时候,应该使原始信号保持足够长的时间,以便另一个时钟域的锁
存器可以正确的对其进行采样
“结绳法”适合任何时钟域的过渡(clk1和clk2的频率和相位关系可以任意选定),所以没有表明两个
时钟坐标。其中标明_clk1的信号表示该信号属于clk1时钟域,同理标明_clk2的信号表示该信号属于
clk2时钟域。在两次src_req_clk1之间被src_vld_clk1“结绳”(pluse2toggle),在将src_vld_clk1用双
锁存器同步以后,将该信号转换为dst_req_clk2(toggle2pluse)。同理,用dst_vld_clk2将dst_req_clk2
“结绳”,dst_vld_clk2表明在clk2时钟域中,src_dat_clk1已经可以进行正确采样了。最后将dst_vld_clk2
转换为dst_ack_clk1(synchronizer and toggle2pluse), dst_ack_clk1表明src_dat_clk1已经被clk2正确采样了
,此后clk1时钟域就可以安全地传输下一个数据了。可以看出,“结绳法”关键是将信号结绳以后,使其
保持了足够长的时间,以便另一个时钟可以正确地采样。
|