1 / 11
文档名称:

跨时钟域信同步方法种.docx

格式:docx   大小:630KB   页数:11页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

跨时钟域信同步方法种.docx

上传人:hjy0923 2022/6/4 文件大小:630 KB

下载得到文件列表

跨时钟域信同步方法种.docx

文档介绍

文档介绍:Revised by BLUE on the afternoon of December 12,2020.
跨时钟域信同步方法种
跨时钟域信号同步方法6种
ASIC中心
1 引言
基于FPGA的数字钟宽度脉冲,它触发原时钟域中的一个翻转电路(下图)。每当翻转电路接收到一个脉冲时,它就会在高、低电平间进行转换,然后通过电平同步器到达异或门的一个输入端,而另一个信号经一个时钟周期的延迟进入异或门的另一端,翻转电路每转换一次状态,这个同步器的输出端就产生一个单时钟宽度的脉冲。
图:脉冲同步器的输入信号是一个单时钟宽度脉冲,它触发原时钟域中的一个翻转电路
  脉冲同步器的基本功能是从某个时钟域取出一个单时钟宽度脉冲,然后在新的时钟域中建立另一个单时钟宽度的脉冲。脉冲同步器也有一个限制,即输入脉冲之间的最小间隔必须等于两个同步器时钟周期。如果输入脉冲相互过近,则新时钟域中的输出脉冲也紧密相邻,结果是输出脉冲宽度比一个时钟周期宽。当输入脉冲时钟周期大于两个同步器时钟周期时,这个问题更加严重。这种情况下,如果输入脉冲相邻太近,则同步器就不能检测到每个脉冲。
结绳法
由于双锁存器法在快时钟域向慢时钟域过渡中可能存在采样失效的问题,我们引入了一种安全的跨时钟域的方法:结绳法。结绳法适合任何时钟域的过渡(clk1,clk2的频率和相位关系可以任意选定),如图4所示。
图4中的_clk1表示该信号属于clk1时钟域,_clk2的信号表示该信号属于clk2时钟域。在两次src_req_clk1之间被src_vld_clk1结绳(Pluse2Toggle)。将src_vld_clk1用双锁存器同步以后,该信号转换为dst_req_clk2(Toggle2Pluse)。同理,用dst_vld_clk2将dat_req_clk2结绳,dst_vld_clk2表明在clk2时钟域中,src_dat_clk1已经可以进行正确的采样了。最后将dst_vld_clk2转换为dst_ack_clk1(Synchronizer and Toggle2Pluse)。dst_ack_clk1表明src_dat_clk1已经被clk2正确采样了,此后clk1时钟域就可以安全地传输下一个数据了。可以看出,结绳法的关键是将信号结绳以后,使其保持足够长的时间,以便另一个时钟可以正确采样。图5描述了结绳法的具体实现,主要包括3个基本单元:Pluse2Toggle、Synchronizer和Toggle2Pluse。
Pluse2Toggle模块负责将两个脉冲信号结绳,即将单脉冲信号延长;Synchronizer模块用双锁存器法将得到的信号过渡到另一个时钟域;Toggle2Pluse模块与Pluse2Toggle功能相对,即将延长的脉冲信号还原为单脉冲,这里用到了异或门。整体的设计思想就是用Pluse2Toggle将信号延长,用Synchronizer过渡,再用Toggle2Pluse还原,以保证另一个时钟域可以正确采样,而接收方用相反的流程送回响应信号。
结绳法可以解决快时钟域向慢时钟域过渡的问题,且适用的范围很广。但是结绳法实现较复杂,在设计要求较高的场合应该慎用。
握手协议
在许多应用中,跨时钟域传送的不只是简单的信号,数据总线、地址总线和控制总线都会同时跨域传输。工程师们用一些其它的手段来处理这些情况,如握手协议等。
  当几个电路不能预知相互的响应时间时,握手方法能让数字电路间实现有效的通信。例如,仲裁总线结构可以让一个以上的电路请求使用单个的总线,用仲裁方法来决定哪个电路可以获得总线的访问权,例如 PCI 或 AMBA(高级微控制器总线架构)。每个电路都发出一个请求信号,由仲裁逻辑决定谁是“赢家”。获胜的电路会收到一个应答,表示它可以访问总线。该电路于是中断请求,开始使用总线。
  不同时钟域电路使用的握手协议有两种基本类型:全握手(Full-handshake)和部分握手(partial-handshake)。每种类型的握手都要用同步器,每种都各有自己的优缺点。对全握手信号,双方电路在声明或中止各自的握手信号前都要等待对方的响应(图 4)。首先,电路 A 声明它的请求信号,然后,电路 B 检测到该请求信号有效后,声明它的响应信号。当电路 A 检测到响应信号有效后,中止自己的请求信号。最后,当电路 B 检测到请求无效后,它中止自己的响应信号。除非电路 A 检测到无效的响应信号,否则它不会再声明新的请求信号。
图4,对全握手信号,双方电路在声明或中止各自的握手信号前都要等待对方的响应。
  这种类型的握手使用了电平同步器。设计人员将这种技术用在如下情况:响应电路(电路 B)需要告知请求电路(电