微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 跨越鸿沟:同步世界中的异步信号

跨越鸿沟:同步世界中的异步信号

时间:08-21 来源:Mike Stein,Paradigm Works 点击:
一个触发器中。

  一个经同步后的信号在两个时钟沿以后就成为新时钟域中的有效信号。信号的延迟是新时钟域中的一到两个时钟周期。一种粗略的估算方法是同步器电路在新时钟域中造成两个时钟周期的延迟,设计者需要考虑同步延迟将对跨时钟域的信号时序造成的影响。

  同步器有许多种设计方法,因为一种同步器不能满足所有应用的需求。同步器的类型基本上有三种:电平、边沿检测和脉冲(表 1)。虽然还存在着其它类型的同步器,但这三种类型的同步器可以解决设计者遇到的多数应用问题。在电平同步器中,跨时钟域的信号在新时钟域中要保持高电平或低电平两个时钟周期以上。这种电路的要求是,在再次成为有效信号前,信号需要先变成无效状态。每一次信号有效时,接收逻辑都会把它看作一个单个事件,而不管信号的有效状态保持了多久。这种电路是所有同步器电路的核心。

表 1

  边沿检测同步器在电平同步器的输出端增加了一个触发器(图 2)。新增触发器的输出经反相后和电平同步器的输出进行与操作。这一电路会检测同步器输入的上升沿,产生一个与时钟周期等宽、高电平有效的脉冲。如果将与门的两个输入端交换使用,就可以构成一个检测输入信号下降沿的同步器。将与门改为与非门可以构建一个产生低电平有效脉冲的电路。

图2,边沿检测同步器在电平同步器的输出端增加了一个触发器。

  当一个脉冲进入更快的时钟域中时,边沿检测同步器可以工作得很好。这一电路会产生一个脉冲,用来指示输入信号上升或下降沿。这种同步器有一个限制,即输入脉冲的宽度必须大于同步时钟周期与第一个同步触发器所需保持时间之和。最保险的脉冲宽度是同步器时钟周期的两倍。如果输入是一个单时钟宽度脉冲进入一个较慢的时钟域,则这种同步器没有作用,在这种情况下,就要采用脉冲同步器。

  脉冲同步器的输入信号是一个单时钟宽度脉冲,它触发原时钟域中的一个翻转电路(图 3)。每当翻转电路接收到一个脉冲时,它就会在高、低电平间进行转换,然后通过电平同步器到达异或门的一个输入端,而另一个信号经一个时钟周期的延迟进入异或门的另一端,翻转电路每转换一次状态,这个同步器的输出端就产生一个单时钟宽度的脉冲。

图3,脉冲同步器的输入信号是一个单时钟宽度脉冲,它触发原时钟域中的一个翻转电路

  脉冲同步器的基本功能是从某个时钟域取出一个单时钟宽度脉冲,然后在新的时钟域中建立另一个单时钟宽度的脉冲。脉冲同步器也有一个限制,即输入脉冲之间的最小间隔必须等于两个同步器时钟周期。如果输入脉冲相互过近,则新时钟域中的输出脉冲也紧密相邻,结果是输出脉冲宽度比一个时钟周期宽。当输入脉冲时钟周期大于两个同步器时钟周期时,这个问题更加严重。这种情况下,如果输入脉冲相邻太近,则同步器就不能检测到每个脉冲。

握手与 FIFO|0">FIFO

  在许多应用中,跨时钟域传送的不只是简单的信号,数据总线、地址总线和控制总线都会同时跨域传输。工程师们用一些其它的手段来处理这些情况,如握手协议和 FIFO 等。

  当几个电路不能预知相互的响应时间时,握手方法能让数字电路间实现有效的通信。例如,仲裁总线结构可以让一个以上的电路请求使用单个的总线,用仲裁方法来决定哪个电路可以获得总线的访问权,例如 PCI 或 AMBA(高级微控制器总线架构)。每个电路都发出一个请求信号,由仲裁逻辑决定谁是"赢家"。获胜的电路会收到一个应答,表示它可以访问总线。该电路于是中断请求,开始使用总线。

  不同时钟域电路使用的握手协议有两种基本类型:全握手(Full-handshake)和部分握手(partial-handshake)。每种类型的握手都要用同步器,每种都各有自己的优缺点。对全握手信号,双方电路在声明或中止各自的握手信号前都要等待对方的响应(图 4)。首先,电路 A 声明它的请求信号,然后,电路 B 检测到该请求信号有效后,声明它的响应信号。当电路 A 检测到响应信号有效后,中止自己的请求信号。最后,当电路 B 检测到请求无效后,它中止自己的响应信号。除非电路 A 检测到无效的响应信号,否则它不会再声明新的请求信号。

图4,对全握手信号,双方电路在声明或中止各自的握手信号前都要等待对方的响应。 这种类型的握手使用了电平同步器。设计人员将这种技术用在如下情况:响应电路(电路 B)需要告知请求电路(电路 A)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top