2 * VGA
\81@Signal Generate Circuit
3 * Module name is "vga_generate"
4 * @auther Yujiro Kaneko
8 #include "vga_ram.nsh" // vga ram module
10 #define H_ACT_MAX 10'd640
11 #define H_FRONTP_MAX 10'd656
12 #define H_SYNC_MAX 10'd752
13 #define H_BACKP_MAX 10'd800
15 #define V_ACT_MAX 10'd480
16 #define V_FRONTP_MAX 10'd490
17 #define V_SYNC_MAX 10'd492
18 #define V_BACKP_MAX 10'd521
20 #define VCNT_1SEC 26'd25000000
22 declare vga_gen interface {
23 input i_clk50M ; // 50MHz main clock
37 func_in fi_fifo1_write( i_wradrs1, i_wrdata1 ) ;
38 func_in fi_fifo2_write( i_wradrs2, i_wrdata2 ) ;
44 func_self fs_fifo1_read() ;
45 func_self fs_fifo2_read() ;
47 func_self fs_fifo1_exec() ;
48 func_self fs_fifo2_exec() ;
50 func_self fs_fifo1_reset() ;
51 func_self fs_fifo2_reset() ;
53 reg r_bit_number[5] = 0 ;
68 reg r_rdadrs1[8] = 0 ;
69 reg r_rdadrs2[8] = 0 ;
75 u_FIFO.i_clock = i_clk50M ;
76 u_FIFO.m_clock = m_clock ;
78 u_FIFO.i_we1 = fi_fifo1_write ;
79 u_FIFO.i_we2 = fi_fifo2_write ;
80 u_FIFO.i_wrdata1 = i_wrdata1 ;
81 u_FIFO.i_wrdata2 = i_wrdata2 ;
82 u_FIFO.i_wradrs1 = i_wradrs1 ;
83 u_FIFO.i_wradrs2 = i_wradrs2 ;
84 u_FIFO.i_re1 = fs_fifo1_read ;
85 u_FIFO.i_re2 = fs_fifo2_read ;
86 w_rddata1 = u_FIFO.o_rddata1 ;
87 w_rddata2 = u_FIFO.o_rddata2 ;
88 u_FIFO.i_rdadrs1 = r_rdadrs1 ;
89 u_FIFO.i_rdadrs2 = r_rdadrs2 ;
92 r_vcnt_hld := r_vcnt[0] ;
100 ~r_vcnt_hld & r_vcnt[0] : {
103 r_vcnt_hld & ~r_vcnt[0] : {
108 /* test led count routine */
112 testled := ~testled ;
119 /* vsync hsync generate routine */
120 if( r_hcnt < H_BACKP_MAX ) {
124 if( r_vcnt < V_BACKP_MAX ) {
131 // HACTMAX640 VACTMAX480
132 if( ( r_hcnt < H_ACT_MAX ) && ( r_vcnt < V_ACT_MAX ) ) {
135 ~r_vcnt[0] : fs_fifo1_exec() ;
136 r_vcnt[0] : fs_fifo2_exec() ;
140 r_bit_number == 5'd23 : {
143 ~r_vcnt[0] : fs_fifo1_read() ;
144 r_vcnt[0] : fs_fifo2_read() ;
152 /*
\83J
\83\89\81[
\83o
\81[
\8dì
\90¬ */
154 if( r_outcnt < 3'd4 ) {
161 if( ~r_outclr[4]) o_vga_b = ~r_outclr[3:0] ;
164 if( ~r_outclr[5]) o_vga_r = ~r_outclr[3:0] ;
167 if( ~r_outclr[6]) o_vga_g = ~r_outclr[3:0] ;
172 r_hcnt == H_ACT_MAX : {
173 /* VGA
\81@null
\81@ */
181 r_hcnt == H_FRONTP_MAX : {
184 r_hcnt == H_SYNC_MAX : {
191 r_vcnt == V_ACT_MAX : {
194 r_vcnt == V_FRONTP_MAX : {
197 r_vcnt == V_SYNC_MAX : {
204 if(w_rddata1[r_bit_number]){
216 if(w_rddata2[r_bit_number]){
229 r_rdadrs1 := r_rdadrs1 + 8'd3 ;
233 r_rdadrs2 := r_rdadrs2 + 8'd3 ;
236 func fs_fifo1_reset {
240 func fs_fifo2_reset {