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 件のコメント:
コメントを投稿