首页 > 试题广场 >

异步FIFO设计注意事项有哪些?

[问答题]

异步FIFO设计注意事项有哪些?

1.存储体的使用,对于异步FIFO存储体通常采用memory compiler 生成DPSRAM包含两套独立的时钟和读写相关的信号
2.空满标志的产生,全等为空。高位取反其他位相等为满。有的设计还学要设计almost empty/full信号,保证数据传输的可靠性。
3.指针同步  采用每次只有1bit变化的Grraycode进行跨域的传输,保证读写地址同步的安全性
发表于 2020-07-29 20:55:25 回复(0)
异步FIFO通过比较读写地址判断满空标志,但是读写地址属于不同的时钟域,在比较前需要对读写地址进行同步处理,如将写地址同步到读时钟再与读地址进行FIFO比较,判断FIFO空状态。但多位地址重新进行同步时,一些位可能滞后其他位一个时钟周期,取决于各个引线上的传播特性。可以将地址转换为格雷码来解决,格雷码相邻计数间仅变化一位
发表于 2018-08-17 09:04:38 回复(0)
答:设计异步FIFO时,要注意
 (1)在地址信号跨时钟域时需要对其进行二进制码转格雷码的转换并进行目标时钟域的时钟打两拍同步,以防止亚稳态的产生。
 (2)写满信号由读地址同步到写时钟域并与写地址进行比较产生,读空信号由写地址同步到读时钟域并与读地址进行比较产生。这样可以在第一时间得到读空与写满的信息,并对异步fifo进行操作。
(3)异步fifo的深度需要考虑到写状态的背靠背写入状态以得到最适合的深度。
(4)读写地址需要扩展一位来判断是读空还是写满,当扩展后的读写地址的格雷码相等时为读空,若其前两位不同,后面相等时为写满。
发表于 2020-07-06 16:09:59 回复(0)
①fifo深度计算
fifo深度应大于或等于(写数据时钟频率减去读数据时钟频率)乘上(最大猝发传输数据长度除以写数据时钟频率)。
②判断fifo满和空
通过读写指针判断fifo的空和满。读写指针要比存储地址多一位,用于判断满。
但由于两个指针的时钟域不同,所以需要将写指针同步到读时钟域进行判断fifo是否读空,将读指针同步到写时钟域进行判断fifo是否写满。
在读写时钟频率差距不是很大时,可将读写指针转换为格雷码进行同步,因为在读写时钟频率差距不是很大时,通常的计数器加一改变的bit数过多,而
格雷码只是跳变一个bit。
fifo空条件:写指针与读指针相等。
fifo满条件:在格雷码领域判断,最高位和次高位相反,其余位相等。
发表于 2020-06-17 11:31:03 回复(1)
1,写满标志的产生和确保“读而不空,写而不溢”。
2,深度要合适。假设fifo的写时钟100M,读时钟80M,在fifo的输入侧,每100个时钟写80个数据,读侧则每一个时钟读一个数据。合理设计fifo的深度,避免fifo的溢出。
3,读写指针同步的问题,考虑到fifo的地址连续变换,使用格雷码进行传输地址。使得每一个相邻的地址之间仅仅一位不同,即使出错,也可以使得fifo的功能没有问题。也就是说即使写时钟同步错误,当前不是真的读空判断为读空,产生错误的读空标志,也不会出现读空之后继续读的情况。。


发表于 2023-07-29 10:38:21 回复(0)
1.异步FIFO涉及跨时钟域信号的比较,因此需要对跨时钟域信号进行同步,可以考虑用格雷码来实现跨时钟域信号的同步; 2.写满和读空标志都是读写地址相同,因此需要增加一位地址宽度来区分写满和读空
发表于 2020-06-06 21:42:56 回复(0)
1、确定是由高时钟转换低时钟,还是低时钟转换为高时钟,及两个时钟之间的关系;
2、确定FIFO深度,位宽。
3、在写入端添加满使能,读取端添加空使能。

发表于 2019-08-18 14:08:30 回复(0)