亚稳态及跨时钟域的处理办法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了亚稳态及跨时钟域的处理办法相关的知识,希望对你有一定的参考价值。

参考技术A 亚稳态产生原因

在数字系统中,数据传输过程中在时钟有效沿到来前,输入数据必须保持一段时间(setup time:建立时间),在有效沿到来后数据仍需要保持一段时间(hold time:保持时间)以保证数据被采到。对于复位信号或置零信号,其移除时间(removal time)和恢复时间(recovery time)也类似如此。否则触发器输出端在有效时钟沿之后的一段时间处于不确定的状态[1]。

亚稳态常见于异步电路。异步复位电路是常见例子,由于复位信号与时钟信号不同步,所以无法保证复位信号的移除时间和恢复时间满足要求,可能导致复位失败。跨时钟域数据传输时,由于两个时钟域信号变化不同步,也可能产生亚稳态。

一般情况下,设计过程中需要尽量使用同步电路,避免异步电路和跨时钟域的情况。在无法避免的情况下,也因采取一些措施去尽量减少亚稳态的产生几率。

多级缓存处理

多级缓存处理俗称“打几拍”,打两拍意味着使用二级缓存,这种方法常见于单比特数据异步电路,比如复位电路中常见的异步复位同步释放。时钟同步之脉冲检测法[2]也是一种多级缓存处理手段。

异步双口器件

对于多bit数据的跨时钟域传输,一般采用异步双口RAM [3]或异步FIFO[4]。异步双口RAM支持同时进行读写操作,且读操作和写操作的时钟是异步的。异步FIFO本质上也是一个RAM,不同的是需要一个写指针和一个读指针。数据写入时写指针依次+1,到底部时返回起始位置。数据读出时读指针依次+1,到底部时返回起始位置。除此之外,异步FIFO需要判断“读空”和“写满”,分别对应已经读取所有写入数据和RAM写满且没有读取数据的情况。异步FIFO的设计电路比异步双口RAM复杂,但不需要额外的地址控制线,使用简单。

参考链接

【1】FPGA中亚稳态——让你无处可逃

http://www.cnblogs.com/linjie-swust/archive/2012/01/07/ywt.html

【2】时钟同步之脉冲检测法  https://zhuanlan.zhihu.com/p/31796813

【3】verilog实现(infer)一个异步(双口)RAM

https://blog.csdn.net/fucong59/article/details/83040110

【4】异步fifo的设计(FPGA)  https://www.cnblogs.com/aslmer/p/6114216.html

以上是关于亚稳态及跨时钟域的处理办法的主要内容,如果未能解决你的问题,请参考以下文章

时钟上的65分下面两个空格怎么填?

亚稳态与多时钟切换

多时钟域设计——数据信号传输

数字IC设计——跨时钟域篇1(时钟域)

数字IC设计——跨时钟域篇1(时钟域)

数字IC设计——跨时钟域篇1(时钟域)