aboutsummaryrefslogtreecommitdiff
path: root/src/vga/vga.v
diff options
context:
space:
mode:
Diffstat (limited to 'src/vga/vga.v')
-rw-r--r--src/vga/vga.v44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/vga/vga.v b/src/vga/vga.v
new file mode 100644
index 0000000..da9de58
--- /dev/null
+++ b/src/vga/vga.v
@@ -0,0 +1,44 @@
+module vga(
+ input wire clk,
+ output wire hsync,
+ output wire vsync,
+ output wire r,
+ output wire g,
+ output wire b
+);
+
+reg[9:0] hcnt;
+reg[9:0] vcnt;
+reg div;
+reg hpulse;
+reg vpulse;
+
+wire linedone = hcnt == (800-1);
+wire screendone = vcnt == (525-1);
+
+always @(posedge clk)
+ div <= div + 1;
+
+always @(posedge div) begin
+if(linedone) begin
+ hcnt <= 0;
+ vcnt <= vcnt + 1;
+end
+else
+ hcnt <= hcnt + 1;
+if(screendone)
+ vcnt <= 0;
+end
+
+always @(posedge div) begin
+ hpulse <= hcnt[9:4] == 0;
+ vpulse <= vcnt == 0;
+end
+
+assign hsync = ~hpulse;
+assign vsync = ~vpulse;
+assign r = vcnt[3] | hcnt & 1;
+assign g = vcnt[3] | hcnt & 1;
+assign b = vcnt[3] | hcnt & 1;
+
+endmodule \ No newline at end of file