FPGAの部屋FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。キャラクタ生成コントローラの仕様2前回、”キャラクタ生成コントローラの仕様”で、キャラクタ生成コントローラ全体の仕様を考えて、ブロック図を書いてみたが、今度はその下のモジュールのブロック図を書いてみた。コマンド用FIFOのブロック図を下に示す。CPUのアドレスはアドレスデコーダに入って、アドレスがデコードされる。自分のアドレスで、最下位の番地が0番地の場合は、0番地用FFにデータバスを貯めておく。8番地を書き込んだ時や、0番地のbit14を1にして書き込んだ場合に、0番地用から8番地用FIFOに各番地のFFの内容を一斉に書き込む。書き込まれたコマンドはキャラクタグラフィックプロセッサに送られる。次は、キャラクタグラフィックプロセッサだが、キャラクタグラフィックプロセッサ、キャラクタジェネレータROM、画像データ書き込み用FIFOを一緒のブロック図に書くことにする。そのブロック図を下に示す。8番地の”キャラクタを書くVRAMの先頭番地”からVRAMアドレスカウンタに入力される。0番地のbit14が1だと、キャラクタを並べて書くので、8番地の内容は無視して、単に4番地のフォントの倍率を掛けたアドレスを計算してVRAMアドレスカウンタにロードする。VRAMアドレスカウンタの出力はアドレス用FIFOに入力されてアービタに出力される。0番地のキャラクタコードはキャラクタコードアドレスカウンタにロードされ、行方向のカウンタのアドレスと一緒にキャラクタジェネレータROMのアドレスに入力される。キャラクタジェネレータROMから出力された8ビットのフォントデータは、キャラクタデータ判定回路で判定されて、キャラクタの色データか背景データかをMUXで選択される。その後、Write用データ非同期FIFOに入力されて、アービタに出力される。背景色を書かない設定になっている場合の背景色の時には、アドレス用非同期FIFOにもWrite用データ非同期FIFOにも書かない。フォントの倍率が1倍でないときは、倍数に応じて、VRAMアドレスカウンタを進めてアドレス用非同期FIFOに出力する。キャラクタデータシフトレジスタは進めずにWrite用データ非同期FIFOに同じデータを書き込んで行くことにする。大体、仕様が決まったので、次はVerilogコードを書いて行こうと思う。(2010/01/19:追記)CPUとアービタのクロックドメインが異なるを忘れていたので、書き換えました。コメント:0プロフィールAuthor:marseeFPGAの部屋へようこそ!FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。WEBブログデザイナ。