Ringバッファを考えてみました

通信回路等でよく使われる、Ringバッファについて考えてみました。
 今まで、Ringバッファにトライしてきましたが、もひとつだったので、改めて考えてみました。

●Ringバッファについて

 ランダムに発生する外部の事象を、CPU等で処理する場合、外部の事象を受け止めるためRingバッファはよく使われます
 Ringバッファは、外部の事象を入力しながら、CPU等の処理能力に合わせて出力する機能を持ちます。
 このため、メモリーやレジスタをリング状に構成して、切れ目が無い様にしなければなりません。下図の様に、番地0,1、〜Max、0,1、・・・
です。

 次の様な注意点が考えられます。
  @番地Maxの次は、番地0です
  Aデータ入力が少なく読出しデータが無い場合、空読みを防止する
  Bデータ入力が多い場合、未読出し番地に上書きを防止する

●考えてみたこと

 今まで、3つの注意点を、書込みポインタと読出しポインタの演算で処理する事を考えていましたが、複雑になっていました。

 今回、記憶数カウンタを導入することにより、単純で確実な構成が出来ました。
 記憶数カウンタの動きは、データ入力で+1し、Max数以上は禁止。データ出力でー1し、0以下は禁止です。




  



ホームへ戻る