同步缓冲器设计(Synchronous FIFO)

本文介绍了缓冲器作为数据暂存机制的基本概念,包括同步和异步缓冲器的区别,以及深度、宽度等关键参数。重点讲解了溢出(Overflow)和下溢(Underflow)的预防策略,以及如何通过读写信号和标志位进行有效的控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 缓冲器又称为队列,是一种数据暂存的机制。缓冲器存在的必要是因为当数据传出端传出数据时,接收端不一定能实时地接收,如果接收端不能实时地接收,又无缓冲器的存在,数据将不可避免会遗失。如果输出输入端的时钟频率一致,称之为同步缓冲器,如果输出输入端的时钟频率不一致,称之为异步缓冲器。缓冲器能存储的数据个数,称之为其深度,每一个数据有多少位数,称之为其宽度。
  • 在使用缓冲器时必须了解,如果输入端不断地将数据写入,而输出端却不去将数据取走的话,就会造成Overflow。反之,若输出端不断地将数据取走,输入端却不将数据写入的话,就会造成Underflow。为了避免这种情况,读取与写入就必须经过控制。Overflow和Underflow的指标是满(Full)或空(Empty),如果写数据指针wptr和读数据指针rptr这两个指针指到相同的地址时,就有可能是Full或Empty。如果指到相同的地址之前的动作是write,就是Full;如果指针指到相同的地址之前的动作是read,就是empty。通常设计的要求都是可以发生Full或者Empty,但不能发生Overflow或Underflow。
  • 为了避免Overflow和Underflow,就需要读写地址多一比特的标志位。
  • 通过读写地址和读写标志位来判断当前的Full或者Empty状态:
    • 写动作肯定是在读动作前的.
    • 判断Full,(wr_loop==rd_loop) && (wptr==rptr)
    • 判断Empty, (wr_loop!=rd_loop) && (wprt==rptr)
  • wr_loop,wptr增加的原理需要外部的写
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值