跨时钟域问题(clock domain crossing)

跨时钟域问题(clock domain crossing)

ID:13425107

大小:149.00 KB

页数:4页

时间:2018-07-22

跨时钟域问题(clock domain crossing)_第1页
跨时钟域问题(clock domain crossing)_第2页
跨时钟域问题(clock domain crossing)_第3页
跨时钟域问题(clock domain crossing)_第4页
资源描述:

《跨时钟域问题(clock domain crossing)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、跨时钟域问题(ClockDomainCrossing)–同两个时钟域打交道!引言:设计者有时候需要将处于两个不同时钟域的系统对接,由于接口处是异步(会产生setuptime和holdtimeviolation,亚稳态以及不可靠的数据传输)的,因此处理起来较同步逻辑更棘手,需要寻求特殊处理来进行接口界面的设计。任意的两个系统如果满足以下条件之一,就可称其为异步的:(1)工作在不同的时钟频率上; (2)工作频率相同,但是相位不相同; 处理跨时钟域的数据传输,有两种实现方案:(1)     采用握手信号来交互(2)      以异步FIFO来实现 1.

2、1、以握手信号交互: 假设系统A以这种方式向系统B传递数据,握手信号分别为req和ack。握手协议:Transmitterassertsthereq(request)signal,askingthereceivertoacceptthedataonthedatabus.Receiverassertstheack(acknowledge)signal,assertingthatithasacceptedthedata.      这种处理跨时钟域的方式很直接,但是也最容易产生亚稳态,由于系统A发送的req信号需要系统B中的时钟去sample,而系统

3、B发出的ack信号又需要系统A中的时钟去sample,这样两边都存在着setuptime和holdtimeviolation的问题。为了避免由于setuptime和holdtimevilation所造成的亚稳态,通常我们可以将异步时钟域交互的信号用localsystem的时钟打两级甚至三级寄存器,以此来消除亚稳态的影响。下图以系统A发送到系统B的req信号示例消除亚稳态的方法:当然,这种处理方式是以损失传输速率为代价的,加入两到三级寄存器同步异步时钟域的信号,会有许多时钟周期浪费在了系统的“握手”。有时候,我们也会对数据多打两拍reg来同步,但通

4、常情况下,我们并不会采取这种方式,它不仅需要较多逻辑,而且收效甚微。通常对数据的同步是以异步FIFO来实现的。下图给出了1bit数据传输打两拍reg所做的同步,从中可以发现,与前面的握手信号处理完全一致。  1.2结合实际工作谈谈以握手信号处理的跨时钟域问题由于所在项目的逻辑设计相当庞大,超出了最初的预估,同时也鉴于产品化方向考虑可以单独流片,因此对整个逻辑结构进行了划分,在做FPGA原型验证的时候,将这两块逻辑分别映射到不同的器件单元中,这里暂且称它们为wrapper0和wrapper1。实践结果表明,wrapper0和wrapper1的相位需

5、要存在180度的反相,弥补板级走线的延迟影响。这样一来,在wrapper0和wrapper1主交互界面的信号就横跨时钟域,存在着亚稳态问题的困扰了。由于个人对此处亚稳态问题的认识程度不充分,当时没有对界面上的信号做处理,而是将精力放在了对pin脚延迟的处理上,结果收效甚微。设计的功能是视频编码相关的,测试的结果就会发现:一开始,经过前处理的数据写入到SDRAM内部也是正常的,编码出来的图像经过AP(ApplicationProgram)实时播放显示也是正常的,而且有早期测试的基础放在那里,显然不可能是编码内核本身出了差错;在间隔一段时间后,可以明

6、显看到AP实时播放的图像出现了绿色的竖状条,而且随着时间的累积,这些竖条会逐步扩展,移动。这种现象很明显地告诉设计人员:前处理后的数据与SDRAM通信时存在着bug!SDRAMcontroller模块,或者说总线仲裁模块(我们的设计并不是采用SOC方案,而是以纯ASIC的方案进行,总线仲裁和流水线调度都放在了SDRAMcontroller中)的问题排查是比较好解决的。一来,该模块中集成了SDRAM自测试逻辑,可以很方便地检测对SDRAM的读写是否存在着误差;二来,编码内核本身从SDRAM取数据也进行了旁路设计,就是说编码的数据可以是以测试模式来处

7、理,而并非实际外接的数据源,这样就可以在长时间编码时查看AP是否同样会出现上述症况。在本人和项目组其他同仁以上述方案进行了探索性测试后,确定了前面所述的结论:问题的根源肯定不是发现在编码内核,而是前处理后的数据与SDRAM通信时存在着bug!但,令人沮丧的是,我们走了一条错误的道路,认为问题的根源在于板级延迟造成的,而不是跨时钟域的问题,直到走到死胡同里才发现:哟,原来刚才那条小道才是出路!实践也确实检验了处理亚稳态的理论:wrapper0和wrapper1的交互信号在做了两级寄存器同步后,整个系统安全稳定的运行!所以说,看本文的各位同仁,千万要

8、记得在处理跨时钟域问题时多留神,不要被这个看似不大不小的问题折腾得食不甘味、夜不能寐啊,哈哈,有些小夸张J 2.1以异步FIFO应对跨时

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。