首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

影响FPGA设计中时钟因素的探讨(4)

影响FPGA设计中时钟因素的探讨(4)

 两个时钟域之间传输的数据根据不同的位宽通常采用不同的同步的方法。
  1、单bit之间的同步且发送的每个pulse至少有1个周期宽度的情况
  这类同步主要是用于一些控制信号自己的同步。通常的采用方法就是输出数据在接收的模块中利用两个触发器采用系统时钟打两拍,如下图12所示。对于这种同步需要说明以下几点。

图12 一位同步器设计
  (1)图12中的同步电路其实叫"一位同步器",它只能用来对一位异步信号进行同步,而且这个信号的宽度必须大于本级时钟的脉冲宽度,否则有可能根本采不到这个异步信号。
  (2)为什么图一中的同步电路只能用来对一位异步信号进行同步呢? (a)当有两个或更多的异步信号(控制或地址)同时进入本时域来控制本时域的
电路时,如果这些信号分别都用图12中的同步电路来同步就会出现问题,由于连线延迟其他延迟使两个或更多的异步信号(控制或地址)之间产生了

skew,那么这个skew经过图12的同步器同步进入本时域后,会产生很大的skew 或产生竞争

,导致本时域电路出错
  出现的问题如下图13所示:

图13 同步多个控制信号时出错
  (b)如果是异步数据总线要进入本时域,同样不能用图12的电路,因为数据的变化是很随机的,其0的宽度或1的宽度和本时域时钟脉冲无关,所以图12的电路可能会采不到正确数据。
  (3)注意,第二个触发器并不是避免“亚稳态的发生”,确切的说,该电路能够防止亚稳态的传播。也就是说,一旦第一个触发器发生了亚稳态(可能性存在),由于有了第二个触发器,亚稳态不会传播到第二个触发器以后的电路中去。
  (4)第一级触发器发生了亚稳态,需要一个恢复时间来稳定下来,或者叫退出亚稳态。当恢复时间加上第二级触发器的建立时间(更精确的,还要减去clock skew)小于等于时钟周期的时候(这个条件还是很容易满足的,一般要求两级触发器尽量接近,中间没有任何组合逻辑,时钟的skew较小),第二级触发器就可以稳定的采样,得到稳定的确定的数据了,防止了亚稳态的传播。
  (5)FF2是采样了FF1的输出,当然是FF1输出什么,FF2就输出什么。仅仅延迟了1个周期。注意,亚稳态之所以叫做亚稳态,是指一旦FF1进入,其输出电平不定,可能正确也可能错误。所以必须说明的是,虽然这种方法可以防止亚稳态的传播,但是并不能保证两级触发器之后的数据是正确的,因此,这种电路都有一定数量的错误电平数据,所以,仅适用于少量对于错误不敏感的地方。对于敏感的电路,可以采用双口RAM或FIFO

2 输入pulse有可能小于一个时钟周期宽度情况下的同步电路(怎么可能呢?不是小于原来的时钟了吗?)

  对2的情况通常采用如下图14的反馈电路。该电路的分析如下:假设输入的数据是高电平,那么由于第一个触发器FF1是高电平清零,所有输出也是高电平,采用正确。如果输入是低电平那么被FF1被强制清零,这个时候输出位零。这样就保证了输出的正确性。

图14输入pulse有可能小于一个时钟周期宽度情况下的同步电路
继承事业,薪火相传
返回列表