忍者ブログ

[PR]

2025年04月26日
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

FIFOもどきを作る

2008年11月21日
他のモジュールとの信号のタイミングを合わせるバッファとして、FIFOを作りました。
そこでFIFOのソースを探してみたら、何やらFullFlagやらEmptyFlagやら難しい機能がやたら目に付きました。単に信号を遅延させるだけでいいのに・・・。

1.シフトレジスタで代用
 
 IPでもいいのですがgeneric文で汎用性の高い部品を作りたかったので、自分でソースを書くことにしました。とりあえず、ROMやRAMのソースをベースにして作るということでarray文にも挑戦してみたのですが、なかなか上手くいかず・・・

結局2次元配列なんてかっこいいことは出来ずに、複数ビット分だけシフトするシフトレジスタでFIFOの機能を実現することにしました。要はデータ×レイテンシの幅のシフトレジスタを作るわけです。

記述がかなりシンプルで済みました。動作速度800MHz
ん?何か間違っているんじゃないか??


それに、実用的な機能を再現するだけでも恐ろしい幅になってしまいます。
32bit×50レイテンシ=1600bit
怖い怖い。

2.BRAMを使用
 
 メモリにスライスを割り当てると案の定回路がものすごく大きくなってしまったので、FPGAに搭載されているBRAMを使用することにしました。既存のRAM回路からアドレス関係のI/Oを取り除き、内部にアドレス指定のカウンタを取り付けることでそれっぽく動作させました。メモリ関係のソースはこちらのページが参考になります。
http://www.nahitech.com/nahitafu/fpgavhdl/bram/bram.html
PR
Comment
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字