2-3の応用例 HDMIでWRGB4色のグラデーション
- ほとんど下記のプロジェクトを流用して作られています。
2-3のパターン表示回路との差分
- 前回は、8段階のストライプパターン(80ピクセル区切り+上下反転の単純なカウント値)を表示
- 今回の回路は水平方向の輝度を滑らかに変化させ、垂直方向で複数の色相(グレースケール、赤、緑、青)のグラデーションを表示する設計になっている
- 水平ブロックの幅が 80 ピクセル(前回)から 64 ピクセル(今回)に変更されている
gradation_hdmi(最上位モジュール)
機能・構成
- HDMI出力用の最上位モジュールで、HDMIディスプレイにグラデーションパターンを表示する
- 入出力は以前の pattern_hdmi と同様
- 内部で「gradation」モジュールをインスタンス化し、その出力をHDMI変換IP(rgb2dvi)へ接続している
- 注意点として、リセット信号は反転(!RST)で渡している。EBAZ4205回路依存のところ。
gradation(グラデーション生成モジュール)
基本構造
- VGAタイミング(640×480)のパラメータは外部ヘッダファイル vga_param.vh から読み込む
- 内部では syncgen モジュールにより水平・垂直のカウンタおよびピクセルクロック PCK を生成
グラデーション生成ロジック
水平部分:
- ローカルパラメータ HSIZE が 10'd64 と定義され、水平有効領域内のピクセルカウント(hcounter = HCNT - HBLANK + 1)の上位4ビット(hcounter[5:2])を用いて「pattern」として算出。
- この4ビットの値がグラデーションの変化量を決定
垂直部分:
- 垂直方向は VSIZE(10'd120)ごとに区切られ、(VCNT - VBLANK) / VSIZE で計算した vcounter によって、表示する色の種類を切り替え
- case 文による色選択は以下の通り
- vcounter == 0:グレースケール(R = pattern, G = pattern, B = pattern)
- vcounter == 1:赤系のみ(R = pattern, G = 0, B = 0)
- vcounter == 2:緑系のみ(R = 0, G = pattern, B = 0)
- vcounter == 3:青系のみ(R = 0, G = 0, B = pattern)
- その他の場合は黒(全チャネル0)
出力
-
それぞれの4ビットの値を8ビットに拡大するため、同じ4ビットを上下に配置して({R, R, G, G, B, B})RGB出力としている
-
disp_enable 信号は、水平・垂直の表示可能領域内であるかを判定しており、これをタイミング合わせて VGA_DE として出力