跨时钟域信号处理方法有有如下几种
单信号 :
1 双寄存器打拍 ;
目的不是获得正确的值,而是阻止亚稳态的传播。如果发生了时许违规,输出有可能在阈值附近疯狂摆动,后面的assign逻辑则全部会跟着疯狂翻转
2 结绳法:
快时钟域信号 到 慢时钟域 信号传输时,单拍信号容易被漏掉,所以将信号多打几排 拉长到大于一个慢时钟,则必然能采集到
多信号:
3 借助 fifo存储到双口ram中
4 握手法:
多位宽保持数据不动,传递信号打两拍表示准备好了,然后多位宽数据直接取走
将要传送数据存储到双口ram中,存储完成的触发信号用双寄存器法传送到目标时钟域,读取完成后,结束信号再用双寄存器法返回,以便清除busy标志
6 多信号混合成单信号:例如将clk和某一个信号混合,混合后的信号用pll重新恢复,作为clk,重新采集混合信号,如果混合信号出现连续的三个低电平则是要采集的触发信号
参考https://blog.csdn.net/cigarliang1/article/details/110535503
所有的一分多 时钟buffer 实际上都是内部pll重新生成的,例如5V49EE502
所以重新生成的 clk 在晶振的基础上有额外的 clock jitter(时钟抖动,即时钟每个clk长短不一) 和 clock skew(时钟偏斜,即时钟不是同时到达各个reg)
关于jitter 和 skew 的介绍: https://blog.csdn.net/weixin_43274923/article/details/107800714, 另外还有 频率误差(ppm/ part per million)的概念,1ppm 即为跳动 1百万次 误差 一次。
不论 5V49EE502 是 lvds(500M) 输出还是 TTL (200M) 输出,附加的 jitter 和 skew 几乎一样。
锁相环pll工作原理: https://blog.csdn.net/weixin_38071135/article/details/90003814
https://blog.csdn.net/leoufung/article/details/50268031
数字锁相环 DPLL的实现https://blog.csdn.net/DBLLLLLLLL/article/details/84395583
倍频器 三极管倍频器 https://www.sohu.com/a/310756528_120133954 cmos脉冲倍频器 http://m.elecfans.com/article/784840.html 锁相环倍频器:
分频器 https://blog.csdn.net/qq_18268761/article/details/101172043
乘法器 模拟乘法器http://www.doc88.com/p-2159644804836.html 数字乘法器https://blog.csdn.net/k331922164/article/details/76283462 https://zhuanlan.zhihu.com/p/92596935
带通滤波器 https://blog.csdn.net/weixin_40877615/article/details/98949614