同步FIFO与异步FIFO的区别

0.什么是FIFO

FIFO(First In First Out,即先入先出),是一种数据缓冲器,用来实现数据先入先出
的读写方式。在FPGA里,FIFO主要是用作缓存,可应用于多比特数据做跨时钟域转换,与RAM、ROM不同,FIFO没有读写的地址线,FIFO遵循着“先入先出”的原则:数据按顺序写入 FIFO,先被写入的数据同样在读取的时候先被读出。

1.同步FIFO(SCFIFO)

SCFIFO 的读写为同一时钟,应用在同步时钟系统中。它的作用一般是做交互数据的一个缓冲,就像一个buffer一样。

2.异步FIFO(DCFIFO)

DCFIFO 的读写时钟是不同的,有别于同步FIFO,是异步数据传输时常用的存储器,多bit数据异步传输时,无论是从快时钟域到慢时钟域,还是从慢时钟域到快时钟域,都可以使用FIFO处理。

3.FIFO的主要参数(以异步FIFO为例)

在vivado里搜索FIFO的IP核,在FIFO Generator里建立一个异步FIFO时可以看到FIFO的主要参数有:
write width:写宽度
write depth:写深度
wr_clk:写时钟
wr_en:写使能
full:满标志
read width:读宽度
read depth:读深度
rd_clk:读时钟
rd_en:读使能
emtpy:空标志

同时可以根据自己选择,选择增加其它的参数:
almost full flag:几乎满标志
almost empty flag:几乎空标志
write acknowledge:写确认标志(报告写操作成功)
overflow:溢出标志
valid flag:有效标志
underflow flag:下溢标志(我的理解是overflow是写入导致的写溢出、underflow 是读导致的读溢出)
write data count:FIFO内剩余的数据个数(基于写时钟)
read data count:FIFO内剩余的数据个数(基于读时钟)

4.FIFO设计的关键

“ 产生可靠的 FIFO 读写指针和生成 FIFO“空”/“满”状态标志。”

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值