最近用到异步FIFO,发现其中的show-ahead模式很有意思。如下图,对FIFO IP核仿真后,可以看到在写请求信号上升沿两个时钟周期后数据被写入,三个时钟周期后FIFO输出端就有数据输出,而不需要读请求信号,但是只有当发出读请求信号时输出端的数据才会更新,且在读信号上升沿到来后立即更新(比normal mode 快了一个时钟周期)。见下图:
但是我在使用异步FIFO时碰到了一个很无奈的现象,FIFO输入端数据位宽24位,打算把输出端数据位宽设置成4位,但是软件会显示位宽无效,查了资料原因是FIFO的输入输出位宽必须保持2的幂次方的倍数,否则会导致FIFO内部出现多余的数据。没办法不得不改了输出位宽,然后再将输出的数据拆分。不知道有没有更好的办法。