基于FPGA的跨时钟域信号处理_第1页
基于FPGA的跨时钟域信号处理_第2页
基于FPGA的跨时钟域信号处理_第3页
基于FPGA的跨时钟域信号处理_第4页
基于FPGA的跨时钟域信号处理_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——基于FPGA的跨时钟域信号处理

基于FPGA的跨时钟域信号处理——亚稳态

在特权的上篇博文《基于FPGA的跨时钟域信号处理——专用握手信号》中

提出了使用专门的握手信号达到异步时钟域数据的可靠传输。列举了一个简单的由请求信号req、数据信号data、应答信号ack组成的简单握手机制。riple兄更是提出了req和ack这两个直接的跨时钟域信号在被另一个时钟域的寄放器同步时的亚稳态问题。这个问题估计是整个异步通信中最值得探讨和关注的。

很幸运,特权同学找到了很官方的说法——《Application

Note42:MetastabilityinAlteraDevices》,一口气读完全文,有一个单词送给这篇文章很适合——“nice〞。特权同学过去的所有不解都在文章中找到了答案,尽管altera在文章的最终只是竭尽全力的在吹捧自己的好。

假使你E文还不错(该不会比我这个4次都没过掉4级考试的家伙差吧,~_~),

那么去享受原文吧。或者你可以考虑看看特权同学的翻译水平,哈哈??

什么是亚稳态?

所有数字器件(例如FPGA)的信号传输都会有一定的时序要求,从而保证每

个寄放器将捕获的输入信号正确输出。为了确保可靠的操作,输入寄放器的信号必需在时钟沿的某段时间(寄放器的建立时间Tsu)之前保持稳定,并且持续到时钟沿之后的某段时间(寄放器的保持时间Th)之后才能改变。而该寄放器的输入反映到输出则需要经过一定的延时(时钟到输出的时间Tco)。假使数据信号的变化违反了Tsu后者Th的要求,那么寄放器的输出就会处于亚稳态。此时,寄放器的输出会在高电平1和低电平0之间旋绕一段时间,这也意味着寄放器的输出达到一个稳定的高或者低电平的状态所需要的时间会大于Tco。

在同步系统中,输入信号总是能够达到寄放器的时序要求,所以亚稳态不会发生。亚稳态问题寻常发生在一些跨时钟域信号的传输上。由于数据信号可能在任何时间到达异步时钟域的目的寄放器,所以设计者无法保证满足Tsu和Th的要求。然而,并非所有违反寄放器的Tsu或Th要求的信号会导致输出亚稳态。某个寄放器进入了亚稳态后重新回到稳定状态的时间取决于器件的制造工艺及工作环境。在大多数状况下,寄放器将会快速的返回稳定状态。

寄放器在时钟沿采样数据信号好比一个球从小山的一侧抛到另一侧。如图1所示,小山的两侧代表数据的稳定状态——旧的数据值或者新的数据值;山顶代表亚稳态。假使球被抛到山顶上,它可能会停在山顶上,但实际上它只要稍微有些动静就会滚落到山底。在一定时间内,球滚的越远,它达到稳定状态的时间也就越短。

假使数据信号的变化发生在时钟沿的某段时间之后(Th),就好像球跌落到了小山的“olddatavalue〞一侧,输出信号依旧保持时钟变化前的值不变。假使数据信号的变化发生在时钟沿的某段时间(Tsu)之前,并且持续到时钟沿之后的某段时间(Th)都不再变化,那就好像球跌落到了小山的“newdatavalue〞一侧,输出数据达到稳定状态的时间为Tco。然而,当一个寄放器的输入数据违反了Tsu或者Th,就像球被抛到了山顶。假使球在山顶停留的越久,那么它到达山底的时间也就越长,这就相应的延长了从时钟变化到输出数据达到稳定状态的时间(Tco)。

图1

图2很好的阐释了亚稳态信号。在时钟变化的同时,寄放器的输入数据信号

也处于从低电平到高电平的变化状态,这就违反了寄放器的Tsu要求。图中的输出信号从低电平变化到亚稳态,即旋绕于高低电平之间的一个状态。信号输出A最终达到输入信号的新状态值1,信号输出B却返回了输入信号的旧状态值0。在这两种状况下,信号输出变化稳定在固定的1或者0状态的时间远超过了寄放器的固有Tco。

图2

假使输出信号在下一个寄放器捕获数据前(下一个时钟锁存沿的Tsu时间前)

处于一个稳定的有效状态,那么亚稳态信号不会对该系统照成影响。但是假使亚稳态信号在下一个寄放器捕获数据时依旧旋绕于高或者低电平之间,那将会对系统的后续电路产生影响。继续探讨球和小山的比喻,当球到达山底的时间(处于稳定的规律值0或1)超过了扣除寄放器Tco以外的余量时间,那么问题就随着而来。

同步寄放器

当信号变化处于一个不相关的电路或者以不时钟域,它在被使用前就需要先

被同步到新的时钟域中。新的时钟域中的第一个寄放器将扮演同步寄放器的角色。

为了尽可能减少异步信号传输中由于亚稳态引发的问题,设计者寻常在目的

时钟域中使用一串连续的寄放器(同步寄放器链或者同步装置)将信号同步到新的时钟域中。这些寄放器有额外的时间用于信号在被使用前从亚稳态达到稳定值。同步寄放器到寄放器路径的时序余量,也就是亚稳态信号达到稳定的最大时间,也被认为是亚稳态持续时间。

同步寄放器链,或者同步装置,被定义为一串达到以下要求的连续寄放器:■链中的寄放器都由一致的时钟或者相位相关的时钟触发;■链中的第一个寄放器由不相关时钟域或者是异步的时钟来触发;■每个寄放器的扇出值都为1,链中的最终一个寄放器可以例外。

同步寄放器链的长度就是达到以上要求的同步时钟域的寄放器数量,图3是一个两级的同步寄放器链,

图3

传输在不相关时钟域的信号,都有可能在相对于捕获寄放器时钟沿的任何

时间点变化。因此,设计者无法预计信号变化的顺序或者说信号两次变化间经过了几个锁存时钟周期。例如,一条异步总线的各个数据信号可能在不同的时钟沿变化,结果接收到的数据值可能是错误的。

设计者必需考虑到电路的这些状况,而使用双时钟FIFO(DCFIFO)传输信号或者使用握手信号进行控制。FIFO使用同步装置处理来自不同时钟域的控制信号,数据的读写使用两套独立的总线。此外,假使异步信号作为两个时钟域的握手规律,这些控制信号就需要用于指示何时数据信号可以被接收时钟域锁存。如此一来,就可以利用同步寄放器确保亚稳态不会影响控制信号的传输,从而保证数据在使用前有充足的时间等待亚稳态达到稳定。

文章其实还没有终止,只不过altera在后面很官方的提出了所谓的MTBF

(meantimebetweenfailures)的概念,即所谓的平均无故障时间的概念。列了个公式,分析了各个参数,当然也不忘提他们的器件参数对于这个MTBF做了多大的贡献。然后也提出了它们是如何进行该公式参数的推导。

我们还是回到主题,在明确了这些基本的概念和基本的方法后,就要学以致

用。在上篇博文没有解决的一个关键问题在于如何最有效的进行握手信号req、ack的采样。这个问题我们可以先以altera提出的MTBF推导公式的各个参数入手分析。

在这个公式中,Tmet就是指寄放器从时钟上升沿触发后的时序余量时间,Fclk是接收时钟域的时钟频率,Fdata是数据的变化频率,而C1、C2则是与器件有关的参数,对于用户是一个固定值。由此看来,设计者只能通过改变Tmet、Fclk、Fdata来提高MTBF值。MTBF值越大,说明出现亚稳态的几率越小。要增大MTBF值,可以延长Tmet、也可以降低Fclk和Fdata这两个频率。

首先我们看看如何延长Tmet时间。

Tmet时间=采样时钟周期时间–输出信号正常的Tco时间-数据到达下一级寄放器的输入端口的其它延时时间Tdata-下一级寄放器Tsu时间。

图4

从严格意义上来说,Tmet时间还应当加上时钟网络延时时间(Tclk2-Tclk1)。

总之,这个Tmet时间是指正常没有亚稳态状况下,寄放器输出信号从源寄放器到目的寄放器的建立时间余量。由于决定Tmet取值的参数中Tco和Tsu都是由FPGA器件本身的工艺以及工作环境决定的,设置时钟网络延时参数也很大程度上由器件决定,所以,假使在时钟频率Fclk和数据变化率Fdata固定的状况下,要增大Tmet值,那么设计者要做的只能是减小Tdata值。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论