1 / 7
文档名称:

FPGA的跨时钟域信号处理——亚稳态.doc

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

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

分享

预览

FPGA的跨时钟域信号处理——亚稳态.doc

上传人:luciferios02 2017/9/17 文件大小:184 KB

下载得到文件列表

FPGA的跨时钟域信号处理——亚稳态.doc

相关文档

文档介绍

文档介绍:基于FPGA的跨时钟域信号处理——亚稳态
文章发表于:2009-08-23 00:47
基于FPGA的跨时钟域信号处理——亚稳态
在特权的上篇博文《基于FPGA的跨时钟域信号处理——专用握手信号》中提出了使用专门的握手信号达到异步时钟域数据的可靠传输。列举了一个简单的由请求信号req、数据信号data、应答信号ack组成的简单握手机制。riple兄更是提出了req和ack这两个直接的跨时钟域信号在被另一个时钟域的寄存器同步时的亚稳态问题。这个问题估计是整个异步通信中最值得探讨和关注的。
很幸运,特权同学找到了很官方的说法——《Application Note42:Metastability in Altera Devices》,一口气读完全文,有一个单词送给这篇文章很合适——“nice”。特权同学过去的所有疑惑都在文章中找到了答案,尽管altera在文章的最后只是竭尽全力的在吹捧自己的好。
如果你E文还不错(该不会比我这个4次都没过掉4级考试的家伙差吧,~_~),那么去享受原文吧。或者你可以考虑看看特权同学的翻译水平,哈哈……
什么是亚稳态?
所有数字器件(例如FPGA)的信号传输都会有一定的时序要求,从而保证每个寄存器将捕获的输入信号正确输出。为了确保可靠的操作,输入寄存器的信号必须在时钟沿的某段时间(寄存器的建立时间Tsu)之前保持稳定,并且持续到时钟沿之后的某段时间(寄存器的保持时间Th)之后才能改变。而该寄存器的输入反映到输出则需要经过一定的延时(时钟到输出的时间Tco)。如果数据信号的变化违反了Tsu后者Th的要求,那么寄存器的输出就会处于亚稳态。此时,寄存器的输出会在高电平1和低电平0之间盘旋一段时间,这也意味着寄存器的输出达到一个稳定的高或者低电平的状态所需要的时间会大于Tco。
在同步系统中,输入信号总是能够达到寄存器的时序要求,所以亚稳态不会发生。亚稳态问题通常发生在一些跨时钟域信号的传输上。由于数据信号可能在任何时间到达异步时钟域的目的寄存器,所以设计者无法保证满足Tsu和Th的要求。然而,并非所有违反寄存器的Tsu或Th要求的信号会导致输出亚稳态。某个寄存器进入了亚稳态后重新回到稳定状态的时间取决于器件的制造工艺及工作环境。在大多数情况下,寄存器将会快速的返回稳定状态。
寄存器在时钟沿采样数据信号好比一个球从小山的一侧抛到另一侧。如图1所示,小山的两侧代表数据的稳定状态——旧的数据值或者新的数据值;山顶代表亚稳态。如果球被抛到山顶上,它可能会停在山顶上,但实际上它只要稍微有些动静就会滚落到山底。在一定时间内,球滚的越远,它达到稳定状态的时间也就越短。
如果数据信号的变化发生在时钟沿的某段时间之后(Th),就好像球跌落到了小山的“old data value”一侧,输出信号仍然保持时钟变化前的值不变。如果数据信号的变化发生在时钟沿的某段时间(Tsu)之前,并且持续到时钟沿之后的某段时间(Th)都不再变化,那就好像球跌落到了小山的“new data value”一侧,输出数据达到稳定状态的时间为Tco。然而,当一个寄存器的输入数据违反了Tsu或者Th,就像球被抛到了山顶。如果球在山顶停留的越久,那么它到达山底的时间也就越长,这就相应的延长了从时钟变化到输出数据达到稳定状态的时间(Tco)。
图1