Digital HDL 記述による設計法をマスタする 実験で学ぶ ロジック回路設計 木村 真也 Shinya Kimura 1 1回 コントローラでラケットを操作する 第 今回はゲームの要素である壁とラケット(写真 11 − 1)の表示部分 (図 11 − 1)を解説します. ラケットは,コントローラに従って動くので,コン トローラ部分についても解説します. 回路規模を小さくするために 画面表示を荒くする ● VGA の全ドットを扱うのは大変 ゲームを表示する VGA の描画エリアは,水平方向 単純に計算するとゲーム回路で制御すべきドットの 総数は 307200 ドットとなり,これをすべて扱う回路 は相当規模が大きくなりそうです. 制御対象を減らすために,1 ドットを大きくします. 具体的には,ゲームにおける表示要素である「壁」, 「ボール」,「ラケット」を 8 × 8 ドット・サイズが基 本の図形にします.図 11 − 2 に示すように,制御する ゲーム・エリアを実質 80 × 60 サイズに縮小できます. こうすると,制御対象とする点を 4800 個に減らせます. に 640 ドット,垂直方向は 480 ドットです. ● 8 × 8 のサイズを 1 ゲーム・ドットとする ディスプレイのドットで 8 × 8 サイズのエリアを, このゲームでは 1 ドットのように扱うのです.以降, この 8 × 8 のエリアを「ゲーム・ドット」と呼びます. ロジック回路 実験ボード ゲーム・ドットへの対応は,描画点の座標情報であ ラケット 壁 る x_count 信号と y_count 信号の下位 3 ビットを無 視するだけで可能です(下位 3 ビットは 8 ドットぶん の座標情報) .特別な配慮や回路は必要ありません. 図 11 − 2 に示すように壁はゲーム・エリアの上下左 左右に動く 左右に回す コントローラ 右の端に配置します. ラケットは上から 50 行目(50 ゲーム・ドット目)に 配置し,幅を 10 ゲーム・ドットとして水平移動のみ 可能とします. 輝度信号は本来アナログ信号ですが,回路規模を小 写真 11 − 1 壁とラケットとコントローラ Keyword 1 VGA (Video Graphics Array) VGA は,1987 年に IBM 社が自社のパソコン PS/2 用に 開発したモニタ表示規格の名前です. その後のパソコンは,必ずこの規格での表示モードを持 っていると言っても過言ではないくらいで,パソコン用モ ニタ・ディスプレイでは標準的な規格となっています. 表示は 640 ドット× 480 ライン,正確な規格は 16 色で す.16 色以外の場合など,正確な規格とは異なる場合で も VGA と呼ばれることがあります. 信号のタイミングにはいくつかの種類があります.本連 載のテレビ・ゲーム回路は,ドット・クロックが 194 25.175 MHz,水平同期信号周波数が 31.469 kHz,垂直同 期信号周波数が 59.940 Hz のタイミングに基づいて作成し ています.ただし,部品の関係でドット・クロックを 25 MHz にしているので,少し異なる値になっています. 信号のレベルは,輝度信号(R,G,B)が 0.7 V P − P,同 期信号は TTL レベルとなっています. 信号接続用コネクタはミニ D サブ 15 ピンで,ピンが 3 段に配置されているものです.ミニ D サブ 15 ピンにはピ ンが 2 段に配置されているものもあるので,部品入手時は 間違えないように注意してください. 2007 年 10 月号 Digital BASICS syncgenモジュール(連載第10回;2007年9月号で解説) 電子ビーム座標 (描画座標) 描画期間フラグ x_count y_count squash 最上位モジュール (CPLD 内の回路) 同期信号 同期信号 x_disp y_disp H_SYNC V_SYNC (モニタへ) ゲーム本体部 ボール移動制御部 ボール速度制御 ボール衝突検出 ボール位置座標 ラケット・トリガ ラケット位置制御部 ラケット座標 RKT_TRG (コントローラへ) ラケット・パルス RKT_PLS 得点カウント部 得点 (コントローラへ) score 輝度信号 (赤・緑・青) RD,GR,BL (モニタへ) 得点表示制御部 表示制御部 壁表示制御部 beep 効果音信号 SPKR 音源部 (スピーカへ) 図 11 − 1 今回は壁とラケットの 制御/表示部分を作る クロック信号 XTAL 今回は二つをまとめてwall_racket というモジュールにしている リセット信号 RESET_N syncgen モジュールは前回解説した rkt_lx rkt_rx ball_x さくするため,ロジック回路から出力するHレベルか Lレベルで扱います.赤,青,緑の 3 本ありますから, 壁 ball_y ● どんな入力装置からどんな信号を得るか 10ドット 59 ▲ Keyword 2 ラケット Y座標 は,スイッチを 2 個用意して,一方を右方向移動に, しかし,この方法ではラケットの移動速度をコント ロールできません. ボール 50 Z左と右を指定するスイッチ 2 個では物足りない 簡単にラケットを操作する方法として考えられるの 他方を左方向移動に対応させ,ゲームのプレーヤがス イッチを操作する方法です. 79 0 1 2 白や黒を含めて 8 色を作れます. ラケットの位置を決める コントローラを作る X座標 0 12 数値はゲーム・ドット (8×8ドット) 図 11 − 2 荒くした描画エリアで壁やラケット,ボールを表示する ラケットのY座標は 50,幅を 10 ゲーム・ドットと決める トリガ信号 トリガ信号とはフリップフロップやレジスタ,カウンタ 最近のロジック回路設計では,エッジ・トリガ・タイプ の動作,つまり記憶や動作のきっかけ,引き金になる信号 を使用し,トリガ信号としてクロック信号を直結する「完 を言います. 全クロック同期方式」がよく用いられます.今回のゲーム ロジック回路を構成する部品には,エッジ・トリガ・タ イプとレベル・トリガ・タイプ(レベル・センシティブ・ タイプ)があり,いずれも Verilog HDL で記述し,論理合 成ツールでロジック回路化することができます. エッジとは信号が“L”→“H”や“H”→“L”と変わ もそうしています.posedge XTAL という記述に注目して みてください. 開発ツールによっては,レベル・トリガの記述をすると ワーニング(注意表示)を出すものもあります. 今回使った 74HC123 もエッジ・トリガの入力を持ちま るときの,変わり目のことで,エッジ・トリガとは,トリ す.A 入力を使ったので,トリガ信号(RKT_TRG,実際は ガ信号のエッジで動作するタイプです. V_sync と同じ)の立ち下がりで動作を開始します. 2007 年 10 月号 195
© Copyright 2024 Paperzz