异步FIFO

发布时间 2023-06-23 19:55:46作者: superego_zhang

第1章 传递多个异步信号

下文将“异步FIFO”简称为“ FIFO”

将多个信号从一个时钟域同步到另一个时钟域,并确保所有的信号都同步到新时钟域中的同一时钟周期这是一个关键问题。FIFO在设计中用于将多位数据从一个时钟域安全地传递到另一个时钟域。通过一个时钟域中的控制信号将数据存入FIFO缓存中,并通过来自第二时钟域的控制信号将数据从同一FIFO缓存的另一个端口中读取并删除。

FIFO设计的难点在于生成FIFO指针以及FIFO上的满和空状态确定。

1.1 同步FIFO指针

对于同步FIFO设计(在同一时钟域中执行FIFO读写操作),一种实现方式是对FIFO的写入和读取次数进行计数,递增(以FIFO写入但不读取),递减(在FIFO读取但无写入时)或保持(无写入和读或同时进行写入和读取操作)FIFO计数值。当FIFO计数器达到预定的最大值时,FIFO为满,而当FIFO计数器为零时,FIFO为空。

不幸的是,对于异步FIFO设计,不能使用增减FIFO填充计数器,因为将需要两个不同的异步时钟来控制计数器。异步FIFO设计的满状态和空状态,必须通过比较写指针和读指针确定。