2011年11月24日木曜日

Spartan 3E Starter Kit でVGA表示(超簡易版)


by yosikawa » 2011年3月08日(火) 18:18
fpga4funを参考に、ごく簡単なコードでVGAに表示してみた。
要は、水平同期・垂直同期信号さえ生成してやれば、なんとなく表示される。
多少のタイミングの違いは、ディスプレイの方で自動的に合わせこんでくれる。

 T10_VGA_pattern.zip
サンプルソースとコンパイル済みbitファイル
(9.67 KiB) 


コード: 
`timescale 1ns / 1ps
`default_nettype none
module top(
// ==== Clock inputs (CLK) ====
   input wire CLK_50MHZ,         // グローバルクロック

// ==== VGA Port (VGA) ====
   output wire VGA_BLUE,
   output wire VGA_GREEN,
   output wire VGA_HSYNC,
   output wire VGA_RED,
   output wire VGA_VSYNC );

   reg [10:0] CounterX;
   reg [8:0] CounterY;
   wire CounterXmaxed = (CounterX==(768*2-1));

   always @(posedge CLK_50MHZ)
      if(CounterXmaxed)
         CounterX <= 0;
      else
         CounterX <= CounterX + 1;

   always @(posedge CLK_50MHZ)
      if(CounterXmaxed)
          CounterY <= CounterY + 1;

   reg vga_HS, vga_VS;
   always @(posedge CLK_50MHZ)
   begin
      vga_HS <= (CounterX[10:5]==0);   // active for 16 clocks
      vga_VS <= (CounterY==0);         // active for 768*2 clocks
   end

   assign VGA_HSYNC = ~vga_HS;
   assign VGA_VSYNC = ~vga_VS;
   assign VGA_RED = CounterY[3];
   assign VGA_GREEN = (CounterX[6] ^ CounterX[7]);
   assign VGA_BLUE = CounterX[5];

endmodule

0 件のコメント:

コメントを投稿