在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 989|回复: 1

[求助] ring_buffer 和 FIFO 有什么区别

[复制链接]
发表于 2024-5-8 18:08:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
今天看到有人说要写一个ring buffer。



看完他的Verilog code, 就是用一个FIFO实现了。跟他请教一下。他的答案是:

  • 读写操作:
    • [color=var(--tw-prose-bold)]Ring Buffer:读写指针可以在缓冲区中自由移动,可以实现随机访问和循环覆盖的功能。
    • [color=var(--tw-prose-bold)]FIFO:只能从队列的头部读取数据,从尾部插入数据,不支持随机访问。
  • 应用场景:
    • [color=var(--tw-prose-bold)]Ring Buffer:常用于数据流处理,例如音频处理、网络数据传输等,尤其适用于需要连续读取数据或实现循环缓冲的场景。
    • [color=var(--tw-prose-bold)]FIFO:常用于进程间通信(IPC)或线程间通信(IPC)等需要按顺序处理数据的场景。
    • 总的来说,Ring Buffer 更适合需要循环读写数据的场景,而 FIFO 则更适合按照先进先出的顺序进行数据处理的场景。


结果,他的code不准随机访问。我就觉得他的叫FIFO更加合适。跟他争了半天,他还是要叫ring_buffer.


到底ring_buffer和fifo之间有何差别?



发表于 2024-5-10 02:05:13 | 显示全部楼层
ring buffer是一种内存排列模式. FIFO是一种数据访问契约. 争论它们是否相同是没有意义的
你可以使用ring buffer来实现 FIFO (只需要限制自己只查看最旧的数据并将最新的数据写入ring buffer的另一端)
但ring buffer不必限制只读最旧的一个和你甚至不限于只写最新的
ring buffer 只需要释放数据的速度足够快,以便新写入的数据不会重叠 (因为内存是排列成环的)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-25 15:18 , Processed in 0.014243 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表