0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EBAZ4205 FPGA Xilinx編 第2版 演習2-4-2

Posted at

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 文による色選択は以下の通り
  1. vcounter == 0:グレースケール(R = pattern, G = pattern, B = pattern)
  2. vcounter == 1:赤系のみ(R = pattern, G = 0, B = 0)
  3. vcounter == 2:緑系のみ(R = 0, G = pattern, B = 0)
  4. vcounter == 3:青系のみ(R = 0, G = 0, B = pattern)
  5. その他の場合は黒(全チャネル0)

出力

  • それぞれの4ビットの値を8ビットに拡大するため、同じ4ビットを上下に配置して({R, R, G, G, B, B})RGB出力としている

  • disp_enable 信号は、水平・垂直の表示可能領域内であるかを判定しており、これをタイミング合わせて VGA_DE として出力

その他は2-3と同じ

実行例

IMG_1857.jpg

今日はここまで

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?