FC2カウンター FPGAの部屋 2010年01月18日
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

キャラクタ生成コントローラの仕様2

前回、”キャラクタ生成コントローラの仕様”で、キャラクタ生成コントローラ全体の仕様を考えて、ブロック図を書いてみたが、今度はその下のモジュールのブロック図を書いてみた。
まずはコマンド用FIFOのブロック図を下に示す。
Char_Gen_Controller_3_100117.png

CPUのアドレスはアドレスデコーダに入って、アドレスがデコードされる。自分のアドレスで、最下位の番地が0番地の場合は、0番地用FFにデータバスを貯めておく。8番地を書き込んだ時や、0番地のbit14を1にして書き込んだ場合に、0番地用から8番地用FIFOに各番地のFFの内容を一斉に書き込む。書き込まれたコマンドはキャラクタグラフィックプロセッサに送られる。
次は、キャラクタグラフィックプロセッサだが、キャラクタグラフィックプロセッサ、キャラクタジェネレータROM、画像データ書き込み用FIFOを一緒のブロック図に書くことにする。そのブロック図を下に示す。
Char_Gen_Controller_4_100117.png

主に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とアービタのクロックドメインが異なるを忘れていたので、書き換えました。
  1. 2010年01月18日 05:13 |
  2. VGAコントローラ
  3. | トラックバック:0
  4. | コメント:0