OpenCores
URL https://opencores.org/ocsvn/natalius_8bit_risc/natalius_8bit_risc/trunk

Subversion Repositories natalius_8bit_risc

[/] [natalius_8bit_risc/] [trunk/] [vga_control.v] - Blame information for rev 11

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 11 fabioandre
`timescale 1ns / 1ps
2
//////////////////////////////////////////////////////////////////////////////////
3
// Company:       Universidad Pontificia Bolivariana
4
// Engineer:      Fabio Andres Guzman Figueroa
5
// 
6
// Create Date:    08:18:51 05/10/2012 
7
// Design Name: 
8
// Module Name:    vga_control 
9
// Project Name: 
10
// Target Devices: 
11
// Tool versions: 
12
// Description: 
13
//
14
// Dependencies: 
15
//
16
// Revision: 
17
// Revision 0.01 - File Created
18
// Additional Comments: 
19
//
20
//////////////////////////////////////////////////////////////////////////////////
21
module vga_control(
22
    input clk,
23
    input rst,
24
         input [2:0] ncolor,
25
    output reg hs, vs,
26
         output [2:0] color,
27
    output [12:0] addrb
28
    );
29
 
30
reg [9:0] hcnt;
31
reg [8:0] vcnt;
32
reg clk25;
33
 
34
reg hsync, vsync;
35
wire [6:0] x;
36
wire [5:0] y;
37
wire blank;
38
 
39
//FF Toggle 
40
always@(posedge clk or posedge rst)
41
        if (rst)
42
                clk25<=0;
43
        else
44
                clk25<=~clk25;
45
 
46
//col counter [0->799]
47
always@(posedge clk25 or posedge rst)
48
        if (rst)
49
                hcnt<=0;
50
        else
51
                if (hcnt<800)
52
                        hcnt<=hcnt+1;
53
                else
54
                        hcnt<=0;
55
 
56
//row counter [0->523]
57
always@(posedge clk25 or posedge rst)
58
        if (rst)
59
                vcnt<=0;
60
        else
61
                if (hcnt==0)
62
                        if (vcnt<524)
63
                                vcnt<=vcnt+1;
64
                        else
65
                           vcnt<=0;
66
 
67
// hsync pulse generation
68
always@(posedge clk25 or posedge rst)
69
        if (rst)
70
                hsync<=1;
71
        else
72
                if (hcnt>=656 && hcnt<752)
73
                        hsync<=0;
74
                else
75
                        hsync<=1;
76
 
77
//vsync pulse generation
78
always@(posedge clk25 or posedge rst)
79
        if (rst)
80
                vsync<=1;
81
        else
82
                if (vcnt>=491 && vcnt<493)
83
                        vsync<=0;
84
                else
85
                        vsync<=1;
86
 
87
assign blank=(hcnt>=640 || vcnt>=480)? 1: 0;
88
 
89
always@(posedge clk or posedge rst)
90
        if (rst)
91
                begin
92
                        hs<=1;
93
                        vs<=1;
94
                end
95
        else
96
                begin
97
                        hs<=hsync;
98
                        vs<=vsync;
99
                end
100
 
101
assign color=blank? 0: ncolor;
102
 
103
//we change format dividing by 4, slicing from 640x480 to 80x60
104
assign x=hcnt[9:3];
105
assign y=vcnt[8:3];
106
assign addrb={y, x};
107
 
108
 
109
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.