OSDN Git Service

VGA System Complete
[oca1/test.git] / VGADisplay / Verilog / vga_gen.v
1 /*\r
2  Produced by NSL Core(version=20110302), IP ARCH, Inc. Sun Jan 08 12:30:56 2012\r
3  Licensed to Yujiro_Kaneko::zyangalianhamster01@gmail.com :NON PROFIT USER:\r
4 */\r
5 \r
6 module vga_gen ( i_clk50 , i_fifo_rst , m_clock , p_reset , o_vsync , o_hsync , o_vga_r , o_vga_g , o_vga_b , o_dummy_rgb , o_vcnt , i_wrdata , fi_fifo_write , o_rdack , o_led );\r
7   input i_clk50;\r
8   input i_fifo_rst;\r
9   input m_clock;\r
10   input p_reset;\r
11   output o_vsync;\r
12   output o_hsync;\r
13   output [3:0] o_vga_r;\r
14   output [3:0] o_vga_g;\r
15   output [3:0] o_vga_b;\r
16   output [2:0] o_dummy_rgb;\r
17   output [9:0] o_vcnt;\r
18   input [7:0] i_wrdata;\r
19   input fi_fifo_write;\r
20   output o_rdack;\r
21   output o_led;\r
22   wire fs_fifo_read;\r
23   wire [7:0] w_rddata;\r
24   wire fs_fifo_ack;\r
25   wire fs_initialize;\r
26   reg [7:0] r_data1;\r
27   reg [7:0] r_data2;\r
28   reg r_reg_cnt;\r
29   reg [2:0] r_bit_cnt;\r
30   reg r_vsync;\r
31   reg r_hsync;\r
32   reg [9:0] r_vcnt;\r
33   reg [9:0] r_hcnt;\r
34   reg [25:0] r_cnt;\r
35   reg [2:0] r_outcnt;\r
36   reg [6:0] r_outclr;\r
37   reg r_vcnt_hld;\r
38   reg r_led;\r
39   reg r_init_flg;\r
40   reg [2:0] r_trg;\r
41   reg [25:0] r_cnt1;\r
42   reg [25:0] r_cnt2;\r
43   reg [25:0] r_cnt3;\r
44   reg r_buff1;\r
45   wire _u_FIFO_i_rst;\r
46   wire _u_FIFO_i_clk50;\r
47   wire _u_FIFO_i_clk25;\r
48   wire _u_FIFO_i_we;\r
49   wire [7:0] _u_FIFO_i_wrdata;\r
50   wire _u_FIFO_i_re;\r
51   wire [7:0] _u_FIFO_o_rddata;\r
52   wire _u_FIFO_o_rdack;\r
53   wire _net_0;\r
54   wire _net_1;\r
55   wire _net_2;\r
56   wire _net_3;\r
57   wire _net_4;\r
58   wire _net_5;\r
59   wire _net_6;\r
60   wire _net_7;\r
61   wire _net_8;\r
62   wire _net_9;\r
63   wire _net_10;\r
64   wire _net_11;\r
65   wire _net_12;\r
66   wire _net_13;\r
67   wire _net_14;\r
68   wire _net_15;\r
69   wire _net_16;\r
70   wire _net_17;\r
71   wire _net_18;\r
72   wire _net_19;\r
73   wire _net_20;\r
74   wire _net_21;\r
75   wire _net_22;\r
76   wire _net_23;\r
77   wire _net_24;\r
78   wire _net_25;\r
79   wire _net_26;\r
80   wire _net_27;\r
81   wire _net_28;\r
82   wire _net_29;\r
83   wire _net_30;\r
84   wire _net_31;\r
85   wire _net_32;\r
86   wire _net_33;\r
87   wire _net_34;\r
88   wire _net_35;\r
89   wire _net_36;\r
90   wire _net_37;\r
91   wire _net_38;\r
92   wire _net_39;\r
93   wire _net_40;\r
94   wire _net_41;\r
95   wire _net_42;\r
96   wire _net_43;\r
97   wire _net_44;\r
98   wire _net_45;\r
99   wire _net_46;\r
100   wire _net_47;\r
101   wire _net_48;\r
102   wire _net_49;\r
103   wire _net_50;\r
104   wire _net_51;\r
105   wire _net_52;\r
106   wire _net_53;\r
107   wire _net_54;\r
108   wire _net_55;\r
109   wire _net_56;\r
110   wire _net_57;\r
111   reg _reg_58;\r
112   reg _reg_59;\r
113   reg _reg_60;\r
114   reg _reg_61;\r
115   wire _net_62;\r
116   wire _net_63;\r
117   wire _net_64;\r
118   wire _net_65;\r
119   reg _reg_66;\r
120   reg _reg_67;\r
121   wire _net_68;\r
122 vga_ram u_FIFO (.o_rdack(_u_FIFO_o_rdack), .o_rddata(_u_FIFO_o_rddata), .i_re(_u_FIFO_i_re), .i_wrdata(_u_FIFO_i_wrdata), .i_we(_u_FIFO_i_we), .i_clk25(_u_FIFO_i_clk25), .i_clk50(_u_FIFO_i_clk50), .i_rst(_u_FIFO_i_rst));\r
123 \r
124    assign  fs_fifo_read = _reg_60|_net_15;\r
125    assign  w_rddata = _u_FIFO_o_rddata;\r
126    assign  fs_fifo_ack = _reg_66;\r
127    assign  fs_initialize = _net_0;\r
128    assign  _u_FIFO_i_rst = i_fifo_rst;\r
129    assign  _u_FIFO_i_clk50 = i_clk50;\r
130    assign  _u_FIFO_i_clk25 = m_clock;\r
131    assign  _u_FIFO_i_we = fi_fifo_write;\r
132    assign  _u_FIFO_i_wrdata = i_wrdata;\r
133    assign  _u_FIFO_i_re = fs_fifo_read;\r
134    assign  _net_0 = (r_trg)==(3'b011);\r
135    assign  _net_1 = (r_cnt)==(26'b01011111010111100001000000);\r
136    assign  _net_2 = ~_net_1;\r
137    assign  _net_3 = (r_hcnt) < (10'b1100011111);\r
138    assign  _net_4 = r_init_flg&_net_3;\r
139    assign  _net_5 = r_init_flg&(~_net_3);\r
140    assign  _net_6 = (r_vcnt) < (10'b1000000111);\r
141    assign  _net_7 = r_init_flg&(~_net_3);\r
142    assign  _net_8 = (r_init_flg&(~_net_3))&_net_6;\r
143    assign  _net_9 = (r_init_flg&(~_net_3))&(~_net_6);\r
144    assign  _net_10 = (((r_hcnt) < (10'b1010000000))&((r_vcnt) < (10'b0111100000)))&r_vsync;\r
145    assign  _net_11 = _net_10&r_init_flg;\r
146    assign  _net_12 = (r_bit_cnt)==(3'b111);\r
147    assign  _net_13 = _net_10&r_init_flg;\r
148    assign  _net_14 = (_net_10&r_init_flg)&_net_12;\r
149    assign  _net_15 = (_net_10&r_init_flg)&_net_12;\r
150    assign  _net_16 = ((_net_10&r_init_flg)&fs_fifo_ack)&r_reg_cnt;\r
151    assign  _net_17 = ~r_reg_cnt;\r
152    assign  _net_18 = (_net_10&r_init_flg)&fs_fifo_ack;\r
153    assign  _net_19 = ((_net_10&r_init_flg)&fs_fifo_ack)&_net_17;\r
154    assign  _net_20 = (r_reg_cnt)==(1'b0);\r
155    assign  _net_21 = _net_10&r_init_flg;\r
156    assign  _net_22 = (_net_10&r_init_flg)&_net_20;\r
157    assign  _net_23 = (_net_10&r_init_flg)&(~_net_20);\r
158    assign  _net_24 = (r_outcnt) < (3'b100);\r
159    assign  _net_25 = _net_10&_net_24;\r
160    assign  _net_26 = _net_10&(~_net_24);\r
161    assign  _net_27 = _net_10&(~_net_24);\r
162    assign  _net_28 = ~(r_outclr[4]);\r
163    assign  _net_29 = _net_10&_net_28;\r
164    assign  _net_30 = _net_10&(~_net_28);\r
165    assign  _net_31 = ~(r_outclr[5]);\r
166    assign  _net_32 = _net_10&_net_31;\r
167    assign  _net_33 = _net_10&(~_net_31);\r
168    assign  _net_34 = ~(r_outclr[6]);\r
169    assign  _net_35 = _net_10&_net_34;\r
170    assign  _net_36 = _net_10&(~_net_34);\r
171    assign  _net_37 = (r_hcnt)==(10'b1011101111);\r
172    assign  _net_38 = ~_net_10;\r
173    assign  _net_39 = (~_net_10)&_net_37;\r
174    assign  _net_40 = (r_hcnt)==(10'b1010001111);\r
175    assign  _net_41 = ~_net_10;\r
176    assign  _net_42 = (~_net_10)&_net_40;\r
177    assign  _net_43 = (r_hcnt)==(10'b1010000000);\r
178    assign  _net_44 = ~_net_10;\r
179    assign  _net_45 = (~_net_10)&_net_43;\r
180    assign  _net_46 = (~_net_10)&_net_43;\r
181    assign  _net_47 = (~_net_10)&_net_43;\r
182    assign  _net_48 = (~_net_10)&_net_43;\r
183    assign  _net_49 = (~_net_10)&_net_43;\r
184    assign  _net_50 = (~_net_10)&_net_43;\r
185    assign  _net_51 = ((~_net_10)&fs_fifo_ack)&r_reg_cnt;\r
186    assign  _net_52 = ~r_reg_cnt;\r
187    assign  _net_53 = (~_net_10)&fs_fifo_ack;\r
188    assign  _net_54 = ((~_net_10)&fs_fifo_ack)&_net_52;\r
189    assign  _net_55 = (r_vcnt)==(10'b0111101011);\r
190    assign  _net_56 = (r_vcnt)==(10'b0111101001);\r
191    assign  _net_57 = (r_vcnt)==(10'b0111100000);\r
192    assign  _net_62 = fs_initialize|_reg_61;\r
193    assign  _net_63 = fs_initialize|_reg_60|_reg_61;\r
194    assign  _net_64 = fs_initialize|_reg_59|_reg_60;\r
195    assign  _net_65 = fs_initialize|_reg_58|_reg_59;\r
196    assign  _net_68 = fs_fifo_read|_reg_66|_reg_67;\r
197    assign  o_vsync = r_vsync;\r
198    assign  o_hsync = r_hsync;\r
199    assign  o_vga_r = ((_net_45|_net_33)?4'b0000:4'b0)|\r
200     ((_net_32)?~(r_outclr[3:0]):4'b0);\r
201    assign  o_vga_g = ((_net_46|_net_36)?4'b0000:4'b0)|\r
202     ((_net_35)?~(r_outclr[3:0]):4'b0);\r
203    assign  o_vga_b = ((_net_47|_net_30)?4'b0000:4'b0)|\r
204     ((_net_29)?~(r_outclr[3:0]):4'b0);\r
205    assign  o_dummy_rgb = ((_net_50)?3'b000:3'b0)|\r
206     ((_net_23)?{{2{r_data2[r_bit_cnt]}},r_data2[r_bit_cnt]}:3'b0)|\r
207     ((_net_22)?{{2{r_data1[r_bit_cnt]}},r_data1[r_bit_cnt]}:3'b0);\r
208    assign  o_vcnt = r_vcnt;\r
209    assign  o_rdack = _u_FIFO_o_rdack;\r
210    assign  o_led = r_led;\r
211 always @(posedge m_clock or posedge p_reset)\r
212   begin\r
213 if (p_reset)\r
214      r_data1 <= 8'b00000000;\r
215 else if ((_net_62)|(_net_51|_net_16)) \r
216       r_data1 <= ((_net_62) ?_u_FIFO_o_rddata:8'b0)|\r
217     ((_net_51|_net_16) ?w_rddata:8'b0);\r
218 \r
219 end\r
220 always @(posedge m_clock or posedge p_reset)\r
221   begin\r
222 if (p_reset)\r
223      r_data2 <= 8'b00000000;\r
224 else if ((_reg_59)|(_net_54|_net_19)) \r
225       r_data2 <= ((_reg_59) ?_u_FIFO_o_rddata:8'b0)|\r
226     ((_net_54|_net_19) ?w_rddata:8'b0);\r
227 \r
228 end\r
229 always @(posedge m_clock or posedge p_reset)\r
230   begin\r
231 if (p_reset)\r
232      r_reg_cnt <= 1'b0;\r
233 else if ((_net_14)) \r
234       r_reg_cnt <= ~r_reg_cnt;\r
235 end\r
236 always @(posedge m_clock or posedge p_reset)\r
237   begin\r
238 if (p_reset)\r
239      r_bit_cnt <= 3'b000;\r
240 else if ((_net_11)) \r
241       r_bit_cnt <= (r_bit_cnt)+(3'b001);\r
242 end\r
243 always @(posedge m_clock or posedge p_reset)\r
244   begin\r
245 if (p_reset)\r
246      r_vsync <= 1'b0;\r
247 else if ((_net_56)|(_net_55)) \r
248       r_vsync <= ((_net_56) ?1'b0:1'b0)|\r
249     ((_net_55) ?1'b1:1'b0);\r
250 \r
251 end\r
252 always @(posedge m_clock or posedge p_reset)\r
253   begin\r
254 if (p_reset)\r
255      r_hsync <= 1'b0;\r
256 else if ((_net_42)|(_net_39)) \r
257       r_hsync <= ((_net_42) ?1'b0:1'b0)|\r
258     ((_net_39) ?1'b1:1'b0);\r
259 \r
260 end\r
261 always @(posedge m_clock or posedge p_reset)\r
262   begin\r
263 if (p_reset)\r
264      r_vcnt <= 10'b0000000000;\r
265 else if ((_net_9)|(_net_8)) \r
266       r_vcnt <= ((_net_9) ?10'b0000000000:10'b0)|\r
267     ((_net_8) ?(r_vcnt)+(10'b0000000001):10'b0);\r
268 \r
269 end\r
270 always @(posedge m_clock or posedge p_reset)\r
271   begin\r
272 if (p_reset)\r
273      r_hcnt <= 10'b0000000000;\r
274 else if ((_net_5)|(_net_4)) \r
275       r_hcnt <= ((_net_5) ?10'b0000000000:10'b0)|\r
276     ((_net_4) ?(r_hcnt)+(10'b0000000001):10'b0);\r
277 \r
278 end\r
279 always @(posedge m_clock or posedge p_reset)\r
280   begin\r
281 if (p_reset)\r
282      r_cnt <= 26'b00000000000000000000000000;\r
283 else if ((_net_2)|(_net_1)) \r
284       r_cnt <= ((_net_2) ?(r_cnt)+(26'b00000000000000000000000001):26'b0)|\r
285     ((_net_1) ?26'b00000000000000000000000000:26'b0);\r
286 \r
287 end\r
288 always @(posedge m_clock or posedge p_reset)\r
289   begin\r
290 if (p_reset)\r
291      r_outcnt <= 3'b000;\r
292 else if ((_net_48|_net_26)|(_net_25)) \r
293       r_outcnt <= ((_net_48|_net_26) ?3'b000:3'b0)|\r
294     ((_net_25) ?(r_outcnt)+(3'b001):3'b0);\r
295 \r
296 end\r
297 always @(posedge m_clock or posedge p_reset)\r
298   begin\r
299 if (p_reset)\r
300      r_outclr <= 7'b0000000;\r
301 else if ((_net_49)|(_net_27)) \r
302       r_outclr <= ((_net_49) ?7'b0000000:7'b0)|\r
303     ((_net_27) ?(r_outclr)+(7'b0000001):7'b0);\r
304 \r
305 end\r
306 always @(posedge p_reset)\r
307  begin\r
308 if (p_reset)\r
309      r_vcnt_hld <= 1'b0;\r
310 end\r
311 always @(posedge m_clock or posedge p_reset)\r
312   begin\r
313 if (p_reset)\r
314      r_led <= 1'b0;\r
315 else if ((_net_1)) \r
316       r_led <= ~r_led;\r
317 end\r
318 always @(posedge m_clock or posedge p_reset)\r
319   begin\r
320 if (p_reset)\r
321      r_init_flg <= 1'b0;\r
322 else if ((_reg_58)) \r
323       r_init_flg <= 1'b1;\r
324 end\r
325 always @(posedge m_clock or posedge p_reset)\r
326   begin\r
327 if (p_reset)\r
328      r_trg <= 3'b000;\r
329 else   r_trg <= {r_trg[1:0],1'b1};\r
330 end\r
331 always @(posedge p_reset)\r
332  begin\r
333 if (p_reset)\r
334      r_cnt1 <= 26'b00000000000000000000000000;\r
335 end\r
336 always @(posedge p_reset)\r
337  begin\r
338 if (p_reset)\r
339      r_cnt2 <= 26'b00000000000000000000000000;\r
340 end\r
341 always @(posedge p_reset)\r
342  begin\r
343 if (p_reset)\r
344      r_cnt3 <= 26'b00000000000000000000000000;\r
345 end\r
346 always @(posedge p_reset)\r
347  begin\r
348 if (p_reset)\r
349      r_buff1 <= 1'b0;\r
350 end\r
351 always @(posedge m_clock or posedge p_reset)\r
352   begin\r
353 if (p_reset)\r
354      _reg_58 <= 1'b0;\r
355 else if ((_net_65)) \r
356       _reg_58 <= _reg_59;\r
357 end\r
358 always @(posedge m_clock or posedge p_reset)\r
359   begin\r
360 if (p_reset)\r
361      _reg_59 <= 1'b0;\r
362 else if ((_net_64)) \r
363       _reg_59 <= _reg_60;\r
364 end\r
365 always @(posedge m_clock or posedge p_reset)\r
366   begin\r
367 if (p_reset)\r
368      _reg_60 <= 1'b0;\r
369 else if ((_net_63)) \r
370       _reg_60 <= _reg_61|fs_initialize;\r
371 end\r
372 always @(posedge m_clock or posedge p_reset)\r
373   begin\r
374 if (p_reset)\r
375      _reg_61 <= 1'b0;\r
376 else if ((_reg_61)) \r
377       _reg_61 <= 1'b0;\r
378 end\r
379 always @(posedge m_clock or posedge p_reset)\r
380   begin\r
381 if (p_reset)\r
382      _reg_66 <= 1'b0;\r
383 else if ((_net_68)) \r
384       _reg_66 <= _reg_67|fs_fifo_read;\r
385 end\r
386 always @(posedge m_clock or posedge p_reset)\r
387   begin\r
388 if (p_reset)\r
389      _reg_67 <= 1'b0;\r
390 else if ((_reg_67)) \r
391       _reg_67 <= 1'b0;\r
392 end\r
393 endmodule\r
394 /*\r
395  Produced by NSL Core(version=20110302), IP ARCH, Inc. Sun Jan 08 12:31:01 2012\r
396  Licensed to Yujiro_Kaneko::zyangalianhamster01@gmail.com \r
397 */\r