オレ仕様のゲーム機を作ろう(その3)
前回は,FPGA 上に,Z80 と BG の回路を実装して,表示するところまでやりました。
オレ仕様のゲーム機を作ろう(その2)
今回は,ロジック IC を使って,画面タイミング信号の生成を行ってみます。
試作に便利なブレッドボード
ブレッドボードって聞いたことありますよね?
はんだ付けすることなく,リード部品を穴に差し込んで,回路を作るボードです。失敗してもワイヤを抜いて差し込み直すことによって,簡単に修正することができるので,試験的な回路や,その場でしか使わない回路なんかを作るのにはとても便利です。
外観はこんな感じです。
縦に数字で 1 から 63 まで行があり,横にアルファベットで A から J まで列があります。同じ数字の行の,A〜E,F〜I は,ボードの裏で電気的に繋がっています。
また,両端に電源用の差し込み穴があり,これは,プラス,マイナス,それぞれがボードの裏で縦に繋がっています。
このことを踏まえて,部品の足を穴に差し込んだり,導線で部品同士を接続して,目的の回路を作るわけです。
基本は,ブランク信号と同期信号
FPGA で作った,画面出力回路を,ブレッドボード上にロジック IC を差し込み,ワイヤで接続します。
必要な信号は,/HBLANK,/HSYNC,/VBLANK,/VSYNC 信号です。過去の記事でも扱ったことがあるので,詳細は省きますが,/HSYNC,/VSYNC は,モニターに直接送ります。
そして,画面に表示する色情報は,/HBLANK,/VBLANK が非アクティブの時に,画面クロックに合わせて,赤,緑,青それぞれの信号を送ってやれば,該当する色のドットが表示されるというわけです。
ブレッドボードに実装
…と言うことで,実際にブレッドボード上に作ったものがこちらです。
ロジック IC の数は,意外とありますね。ワイヤもぐちゃぐちゃしています。
やっていることは…
水晶発振器を分周して,基準クロックを生成し,カウンタ IC に入れて,カウントします。
そのカウンタの一定範囲を水平ブランク期間として,水平ブランク信号と,水平同期信号を生成します。
水平カウンタが,リセットされるタイミングを,クロックとして垂直カウンタ IC に入れて,同じようにカウントします。
そして,一定範囲を垂直ブランク期間として,垂直ブランク信号と,垂直同期信号を生成します。
動作結果
とりあえず,意図通りに問題なく動作しました。同じ回路を FPGA で事前にテストしているので,動いて当たり前と言えばそうなんですが…。
今回はここまでです。
ブレッドボード上に回路を組みましたが,このブレッドボード上に,さらなる回路を追加して行くとなると,かなりの数のジャンプワイヤと面積が必要になりそうですので,次回は,ユニバーサル基板に回路を作っていく予定です。
あまり時間が取れないので,作業ペースは遅いですが,いつものように,気長にやっていこうと思います。