原创 FPGA中跨时钟域的信号处理--跨时钟域的相关概念

2010-11-14 22:51 5294 14 14 分类: FPGA/CPLD

      转行做通信算法,很多东西要学习,没时间更新日志,以后我会把我项目中的一些问题和经验总结展示给大家,包括FPGA在无线通信中应用,当然,我在这方面还才入门,大家相互学习。


     最近的工程中遇到很多跨时钟域的问题,所以我总结一些流行的跨时钟域信号处理的方法,将陆陆续续写出和大家分享,希望大家批评指正。


一、        跨时钟域的基本概念


在逻辑设计领域,只涉及单个时钟域的设计并不多。尤其对于一些复杂的应用,FPGA往往需要和多个时钟域的信号进行通信。异步时钟域所涉及的两个时钟之间可能存在相位差,也可能没有任何 频率关系,即通常所说的不同频不同相。


 2e7835c2-79e4-40b4-a49c-406b0618cfe6.JPG


图1是一个跨时钟域的异步通信实例,发送域 和接收域的时钟分别是clk_a和clk_b。 这两个时钟频率不同,并且存在一定的相位差。对于接收时钟域而言,来自发送时钟域的信号data_a2b有 可能在任何时刻变化。



二、        亚稳态的基本概念


亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。在这个稳定期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。


 ed6f94a9-6eb9-43cc-9c39-9e6b62b86be1.JPG



对于分析亚稳态的问题,只需要记住第一条,任何信号从输入端口传递到输出端口都需要一定的时间。


亚稳态发生的原因  


在同步系统中,如果触发器的setup time / hold time不满足,就可能产生亚稳态,此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里Q端毛刺、振荡、固定的某一电压值,而不是等于数据输入端D的值。这段之间成为决断时间(resolution time)。经过resolution time之后Q端将稳定到0或1上,但是究竟是0还是1,这是随机的,与输入没有必然的关系。


亚稳态有两种危害:“输出较长时间的不稳定电平”和“逻辑错误”。


其实对于相同时钟域内的时钟树来讲,在不同点也存在相位差别。但这种差别可以通过计算时钟信号线的长度来进行预测,并可通过时钟域内的时钟树综合算法来求得优化的结构。因此相对来讲,比较好解决。对于跨时钟域通信,异步同步通信来讲,情况变得相对复杂。跨时钟域也是一种异步同步通信。两个时钟域内的时钟没有必然的频率关系和相位关系。造成这种情况的原因在于,在工程上,对待同一个时钟域的分析就已经比较复杂,目前有一些方法来优化时钟树,但当引入多个时钟的时候,如果进行联合分析,问题的复杂性会变得很大。因此工程上采用“各自独立分析优化,在此基础上进行互相通信设计”。

文章评论0条评论)

登录后参与讨论
我要评论
0
14
关闭 站长推荐上一条 /2 下一条