-
Notifications
You must be signed in to change notification settings - Fork 0
/
hvsync_generator.v
63 lines (57 loc) · 1.66 KB
/
hvsync_generator.v
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
///////////////////
// File Name: VGA Tutorial
// Author : Da Cheng
// Course : EE201
///////////////////
// timing diagram for the horizontal synch signal (HS)
// 0 655 752 800 (pixels)
// -------------------------|______|-----------------
// timing diagram for the vertical synch signal (VS)
// 0 490 491 525 (lines)
// -----------------------------------|______|-------
module hvsync_generator(clk, reset,vga_h_sync, vga_v_sync, inDisplayArea, CounterX, CounterY);
input clk;
input reset;
output vga_h_sync, vga_v_sync;
output inDisplayArea;
output [9:0] CounterX;
output [9:0] CounterY;
//////////////////////////////////////////////////
reg [9:0] CounterX;
reg [9:0] CounterY;
reg vga_HS, vga_VS;
reg inDisplayArea;
//increment column counter
always @(posedge clk)
begin
if(reset)
CounterX <= 0;
else if(CounterX==10'h320)
CounterX <= 0;
else
CounterX <= CounterX +1;
end
//increment row counter
always @(posedge clk)
begin
if(reset)
CounterY<=0;
else if(CounterY==10'h209) //521
CounterY<=0;
else if(CounterX==10'h320) //800
CounterY <= CounterY + 1;
end
//generate synchronization signal for both vertical and horizontal
always @(posedge clk)
begin
vga_HS <= (CounterX>655 && CounterX<752); // change these values to move the display horizontally
vga_VS <= (CounterY==490 ||CounterY==491); // change these values to move the display vertically
end
always @(posedge clk)
if(reset)
inDisplayArea<=0;
else
inDisplayArea <= (CounterX<640) && (CounterY<480);
assign vga_h_sync = ~vga_HS;
assign vga_v_sync = ~vga_VS;
endmodule