投稿

3月, 2022の投稿を表示しています

FPGA:VGA Pmod gradation

イメージ
 第2章の課題 2-4-2 グラデーション表示 階調を段階的に16階調、各色4ビット。水平方向を10分割縦は4分割で上から白、赤、緑、青。各ブロックの横方向に4ビットごとに色を変化させる事をしなさいという課題 module pattern(     input               CLK,     input               RST,     output  reg [3:0]   VGA_R, VGA_G, VGA_B,     output              VGA_HS, VGA_VS,     output  reg         VGA_DE,     output              PCK ); VGAは4ビットしかカラー表示ができないので、VGA_RGBのビットは4ビットに wire [9:0] cnt_h_color = (HCNT-HBLANK+10'd1); wire [9:0] cnt_v_color =((VCNT-VBLANK)/VSIZE); cnt_h_color :横方向には表示領域以降にカウントアップする信号を作る。 cnt_v_color :VSIZEで割り算して、4行分が入るが、上から0,1,2,3とする cnt_h_colorは 0000000000 → 0000000001 → 0000000010 → 0000000011 ・・・ と変化していく。 試しに例題としてすでに実行したpatternのソースで {VGA_R, VGA_G, VGA_B} <={{cnt_h_color[3:0]}, {4{rgb_1[1]}}, {4{rgb_1[0]}} }; とでもして実行してみるとわかりやすい。 16ピクセル周期でグラデーションされる。4回繰り返ししたい。 そこでcnt_h_color[5:2]にしてしまう。 例えば3ビット目より左は  0 00, 0 01, 0 10, 0 11, 1 00, 1 01, ・・・・ といたぐあいに4で繰り上がり数字が増えるので4回繰り返してくれる事になる。 縦方向だが、白、赤、緑、青の順番 だが力業・・・cnt_v_color の値で場合わけ、セレクタで対応。 always @( posedge PCK ) begin     if