FC2カウンター FPGAの部屋 キャラクタ・ディスプレイ・コントローラの詳しい説明
FC2ブログ

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

FPGAの部屋

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

キャラクタ・ディスプレイ・コントローラの詳しい説明

キャラクタ・ディスプレイ・コントローラはVHDLをVerilog2001に変更中だ。何しろ、腕が痛くて入力が難しいので遅々として進まないが2つファイルを変換済み。
ここでもう一度キャラクタ・ディスプレイ・コントローラの原理について説明しようと思う。
キャラクタ・ディスプレイ・コントローラはディスプレイに文字のみを表示する。文字しか表示しないならば、文字の画像データをキャラクタROMに入れておいて、文字コードを指定すれば、その文字がディスプレイ上に表示するという動作で十分だ。これでビットマップのディスプレイ・コントローラよりもフレーム・バッファの容量を減らすことが出来る。
例えば640X480ドットのビットマップ・ディスプレイ・コントローラを考えた場合に、RGB1ビットずつ3ビットの時には640X480X3bit = 921,600bit必要となる。
キャラクタ・ディスプレイ・コントローラの場合は640X480ドット・ディスプレイで8X8ドットのキャラクタとすると80X60文字表示できる。1文字RGB3ビット+キャラクタ7ビット=10ビットとすると、80X60X10 = 86,000ビットとなる。よって、Spartan3 Starter Kitでもフレーム・バッファに内部Block RAMを使用することが出来るようになる。(キャラクタROMに8X8X128 = 8.1288ビット、そのほかに必要)
そもそもディスプレイのアナログRGB信号は、Red,Green,BlueとH_SYNC, V_SYNC信号がある。
これから、その説明をする。
ディスプレイの右から横に振られるラインのドットを光らすことで画像を書き出している。そのライン上のドットが640ドットあることになる。次に今書いたラインの下に、次のラインを書く。ライン(ラスタ)は480本ある。
次のラインに移動するための同期信号がH_SYNCである。1画面書いた後に、元の位置に戻る同期信号がV_SYNCだ。

キャラクタを表示する時に、例えば画面の最初の行に A と言う文字を2つ書いたとする。display_method_070613.png

図1 ディスプレイの画面表示の最初の部分(図の色は逆です)

char_disp_ctler_3_070524.png

図2 キャラクタ・ディスプレイ・コントローラブロック図

図1の最初の A キャラクタの最初の行(ピンクで囲まれた部分)が図2のシフトレジスタに取り込まれる。図1の左側からシフトされて、図2のRGBのそれぞれの判定回路に送られる。フレーム・バッファにはRGBのビットがあって、そこが1でないと判定回路はキャラクタROMからのシフトデータが1でも、いつも0となる。
例えば、Rだけが1でGBがどちらも0ならば、最初のシフトデータ"00111000"に従って、R信号だけが出力されて、最初のラインの最初のドットに反映される。それが最初のラインの最初のキャラクタ分の8ドットだが、次は次のキャラクタの最初のデータ8ビットがシフトレジスタにロードされ、同様に処理される。緑色の線で囲まれた部分。
それを80文字(1ライン文)書くと、次のラインを書くことになる。最初の文字の次のラインは"00101000"なので、このキャラクタROMからの出力をシフトレジスタにロードして同様に比較し信号に出力する。これらの処理のために垂直カウンタからの下位アドレス3ビットがキャラクタROMに供給されている。
更にフレーム・バッファにアドレスを供給するカウンタは最初のラインの80文字分をカウントした後、次のラインの時には0に戻る。これを8ライン分繰り返す。8ライン分終了したら、次の下に表示するキャラクタのアドレスに移る。(10進で80、0x50)
  1. 2007年06月16日 06:10 |
  2. VGAコントローラ
  3. | トラックバック:0
  4. | コメント:4

コメント

初めまして

marseeさん
初めまして、hypermacと申します。
私もこの業界で生きている超弱小のエンジニアです。(笑)

「FPGAの部屋」を拝見させていただいて2年くらい経ちます。
いつも貴重な情報、最先端な技術内容を見ていて感動するばかりです(笑)

FPGAのデバックしていて悩んだときにいつも「FPGAの部屋」を拝見させていただいています。(すみません、いつもタダ見で!)

CPU、メモリ、PCI、ツールの使いこなし術などいろいろやられているんですね。凄すぎです!よくそれだけのことをやられるパワーがございますね!

それだけの技術があればどこからも引っ張られて仕事がなくなることはなさそうですね。すばらしです。

失礼ですが、ご自分で企業されているんですか?それとも会社員でしょうか?

いろいろ展示会やセミナーもご出席されているようで、もし機会がありましたら是非直接お話できたらと思っています。

よろしくお願い致します。
  1. 2007/06/16(土) 15:02:12 |
  2. URL |
  3. hypermac #-
  4. [ 編集 ]

こんにちは。初めまして。

いつも見ていただいて、ありがとうございます。
元は自分の備忘録から始めたブログですが、私もいろいろコメントで教えていただいたりして助かっています。自分でも前にやったけど忘れていることがあるとブログをキーワード検索して見ています。もう少し、カテゴリーも検索しやすく出来たらな。。。と思っています。
FPGAのデバックしていて悩んだときに、このブログを見ていただけるのは、私が望んでいたことです。私も周りに、このようなことをしている人がいないので、いつも相談できたらと思っています。

手の内を全てではないですが、かなりさらしていますので、手の内を見せても影響がない仕事です。(そうでないと自分の備忘録として使えないというところもあります。)

展示会やセミナーでお会いしてもよろしいのですが、当方相当爺さんなのでお若い方とは、お話が合わない可能性がありますので、その点はご了承ください。それでもよろしかったらお会いいたしましょう。
展示会では、私はシャイなので、私と相手をしても儲からないだろうからと思ってしまい、なかなかずうずうしく見てまわれません。

次は6月22日のTEDのPCIeセミナーに行きます。セミナは聞いているだけなので気が楽です。2学期になると忙しくなるので展示会、セミナにはなかなか出席できません。
  1. 2007/06/16(土) 17:02:52 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

こんばんは。
早速のレスありがとうございました。

いや~、爺さんだなんてそんなこと言わないでください。(笑)
まだ、小さなお子さんがいるではありませんか!
歳に関しては私も同じようなものだと思いますよ。

我が家では一番下の子が今年中学生になりました。なのでお子さんで比べてしまうと、もしかすると私の方が歳上になのかもしれません。(笑)

しかも、私は6月22日は人間ドックで病院で検査の真っ最中だと思います。(笑)折角いい機会でしたのに残念です。

お会いしていろいろお話が合えばお仕事のことでいろいろご相談したいこともあるのですが、ブログでは筋違いの話ですからメールさせていただいてよろしいでしょうか?

よろしくお願い致します。
  1. 2007/06/16(土) 22:29:07 |
  2. URL |
  3. hypermac #-
  4. [ 編集 ]

了解しました。失礼しました。

ブログのコメントで質問された場合は、FPGAのBBSをご紹介していますが。。。
お仕事の関係といいますと、どのよう様な感じでしょうか?アドバイス?実際の請負?
当方、お堅いところに勤めているので、兼業規制がかかっていますので、実際に他の仕事をすることが出来ません。(書籍などは別と思いますが。。。)

腕が折れていて、今のところあまり長い文が書けません。このブログ記事も書くのに3日かかっています。

以上のような事情がありますが、それでもよろしければブログのプロフィールの欄にあるメールアドレスにメールしてください。
  1. 2007/06/17(日) 05:52:40 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog.fc2.com/tb.php/504-0f032f35
この記事にトラックバックする(FC2ブログユーザー)