RTL设计基础(二)
来源:互联网 发布:淘宝客商品采集软件 编辑:程序博客网 时间:2024/05/22 11:39
这篇文章主要讲一下RTL设计中多时钟域的处理,之前在异步FIFO设计中已经讲到这个问题,这篇更全面详细的介绍一下多时钟域的处理。
多时钟域之所以难以处理,是因为在两个时钟域之间传递信号时,不可避免地会出现建立时间/保持时间违例的问题。寄存器会锁存错误的数据,引起功能错误。
现考虑在两个时钟域间传递1位信号的情况。如下图是多时钟域传递一位信号的示例:
在这个例子中,aclk与bclk是两个异步时钟。由aclk时钟域产生的数据adat要送到bclk的时钟域。由于bclk与aclk不同步,所以会出现这种情形:在一定时刻,adat的变化沿距离bclk的采样沿非常接近,不能满足建立时间和保持时间的要求。 这样, 寄存器可能会进入亚稳态。下图是这种情况下的波形图:
bdat1的值会传递给其他模块。在实际芯片中,在bdat1处于亚微态的时候,有些模块会认为自己收到的是“1”, 有些会认为是“0”,这种不一致会导致功能错误,如下图所示:
这种情形需要采用下图所示的同步器来避免:
采用同步器之后,其波形如下图所示:
下面看一下相关的多位信号的传递,同步器适用于在多时钟域间传递1位信号,但是对于相关的多位信号,采用这种技术仍然会出现问题。如下图所示,在多时钟域间传递两位信号:
在这个例子中,有两个信号b-load和b-en由bclk时钟域传递到aclk时钟域。这两个信号相关。 我们假设在某个时钟周期内, b-load与b-en同时有效,那么这两个信号分别经过同步器后,得到的波形如下所示:
由于b-load信号与b-en信号的延迟不同,两者的上升沿之间有一些偏移。如果同步器的采样时钟正好也位于两个信号变化沿之间, 则采样后的信号有可能会相差一个周期。这种情况下,可以将两个信号进行逻辑与操作变成一个信号送到同步器。但是很多时候,无法对传递信号进行简单的合并。这个时候就可以考虑先将这些信号变成格雷码,然后通过同步器来传递。由于格雷码在一个周期内仅有一位发生变化,这样经过同步器之后就可以得到正确的结果。
上述方案都是基于同步器的,依据的原理是降低寄存器处于亚稳态的概率。另外一种方案是用多组寄存器来存储信号,过一段时间再进行读操作。在开始读操作的时候,数据早已经稳定下来,就不会出现建立时间/保持时间违例的情况。这也就是基于异步fifo在多时钟减传递信号的基本原理。关于异步FIFO的设计,已经讲过,在此不再赘述。
下面讲一下时钟切换电路,有些设计中需要进行时钟切换。动态地将始终从高频切换到低频或者由低频切换到高频,切换过程中会出现毛刺。时钟上的毛刺是非常致命的,可能会导致功能错误。要避免这种问题可以采取两种方法,一种是在时钟切换时,进入复位,当切换完成后,复位结束;另一种方法是采用时钟切换电路,如下图所示,这种切换电路跟锁存器的设计有异曲同工之妙。
- RTL设计基础(二)
- RTL设计基础(一)
- 集成电路 RTL 设计
- RTL设计指南---verilog
- IC设计基础系列之低功耗篇5:(数字IC)低功耗设计入门(五)——RTL级低功耗设计(续)
- IC设计基础系列之低功耗篇4:(数字IC)低功耗设计入门(四)——RTL级低功耗设计
- RTL中文版(zz)
- DNN交互设计-基础设置(二)
- [Android基础系列]设计模式(二)
- 基础笔记(二):设计模式摘录
- Android AbsoluteLayout(绝对)、RelativeLayout(相对)、RTL(RightToLeth)(布局小结二)
- 使用RTL-SDR和Matlab Simulink玩转软件无线电(二)
- 使用RTL-SDR和Matlab Simulink玩转软件无线电(二十)
- 使用RTL-SDR和Matlab Simulink玩转软件无线电(二十一)
- 使用RTL-SDR和Matlab Simulink玩转软件无线电(二十二)
- 使用RTL-SDR和Matlab Simulink玩转软件无线电(二十三)
- 使用RTL-SDR和Matlab Simulink玩转软件无线电(二十四)
- 数字电路设计之RTL编码指导原则
- 【tomcat】Tomcat以debug模式启动
- Angular管道设置 :
- JAVA零基础自学笔记-JDBC篇 附带的小Demo 理解功能
- MySQL的lock tables和unlock tables的用法(转载)
- Python编码异常处理
- RTL设计基础(二)
- centos 7 开源软件开机启动配置
- 今天被分配的重启服务器的任务
- 异常
- HDU 4540 威威猫系列故事——打地鼠
- 白话经典算法系列之四 直接选择排序及交换两个数据的正确实现
- [角谷猜想 || 冰雹猜想]的一些瞎想
- CC2640R2F BLE5.0 蓝牙协议栈GATTServApp模块
- Mali GPU OpenGL ES 应用性能优化--测试+定位+优化流程