宋建港,宋英雄,张俊杰
(上海大学 特种光纤与光接入网教育部重点实验室,上海 200072)
现代数字系统设计中往往含有多个时钟,即多时钟域,这必然会造成数据之间的传递在多时钟控制下完成,使用异步FIFO能有效地在两个不同时钟系统之间快速方便地传输实时数据。在信息处理、数据通信、图像处理等方面,异步FIFO应用广泛。在10G-EPON系统中,存在大量高速数据与低速数据的传输,需要使用大量的异步FIFO,根据实际需要,若能掌握异步FIFO的数据余量(本文将FIFO中已经存储的数据个数定义为数据余量),就能实时告诉外界FIFO已经写入了多少数据,外界就能依此判断剩下的空间能否写下下一帧数据,可以更有效地提高FIFO的利用率。
要想设计异步FIFO数据余量的检测方法,首先应该了解异步FIFO设计中涉及到的亚稳态问题。
在数字集成电路中,触发器必须满足建立时间(set⁃up time)和保持时间(hold time)的时序要求(其中建立时间是时钟翻转之前数据输入必须有效的最小时间,有效时间是在时钟沿之后数据输入必须仍然有效的最小时间)。触发器时序要求如图1所示,如果信号和时钟之间不满足这个时序要求,会使寄存器工作在一个不确定的状态,并且在未知的时刻会随机地固定到高电平或低电平,此时称寄存器进入亚稳态(metastability)。亚稳态会严重降低设计性能,破坏设计所能实现的功能。

异步FIFO中要对不同时钟域信号进行同步,必然会引起亚稳态,而且亚稳态无法彻底消除,只能将其出现的概率降到最低[1]。……