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

Subversion Repositories orsoc_graphics_accelerator

[/] [orsoc_graphics_accelerator/] [trunk/] [bench/] [verilog/] [gfx/] [gfx_bench.v] - Blame information for rev 6

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 6 Orka
`include "../../../rtl/verilog/gfx/gfx_wbs.v"
2
`include "../../../rtl/verilog/gfx/gfx_wbm_write.v"
3
`include "../../../rtl/verilog/gfx/gfx_wbm_read.v"
4
`include "../../../rtl/verilog/gfx/gfx_rasterizer.v"
5
`include "../../../rtl/verilog/gfx/gfx_clip.v"
6
`include "../../../rtl/verilog/gfx/gfx_fragment_processor.v"
7
`include "../../../rtl/verilog/gfx/gfx_blender.v"
8
`include "../../../rtl/verilog/gfx/gfx_renderer.v"
9
`include "../../../rtl/verilog/gfx/gfx_top.v"
10
`include "../../../rtl/verilog/gfx/basic_fifo.v"
11
`include "../../../rtl/verilog/gfx/gfx_color.v"
12
`include "../../../rtl/verilog/gfx/gfx_wbm_read_arbiter.v"
13
`include "../../../rtl/verilog/gfx/gfx_line.v"
14
`include "../../../rtl/verilog/gfx/gfx_triangle.v"
15
`include "../../../rtl/verilog/gfx/div_uu.v"
16
`include "../../../rtl/verilog/gfx/gfx_transform.v"
17
`include "../../../rtl/verilog/gfx/gfx_interp.v"
18
`include "../../../rtl/verilog/gfx/gfx_cuvz.v"
19
 
20
module gfx_bench();
21
 
22
parameter point_width    = 16;
23
parameter subpixel_width = 16;
24
parameter fifo_depth     = 10;
25
 
26
`include "../../../rtl/verilog/gfx/gfx_params.v"
27
 
28
// GENERATE PARAMETERS FROM gfx_params.v
29
parameter GFX_CTRL_CD8         = 0; // Color Depth 8 
30
parameter GFX_CTRL_CD16        = 1 << GFX_CTRL_COLOR_DEPTH; // Color Depth 16 
31
parameter GFX_CTRL_CD24        = 2 << GFX_CTRL_COLOR_DEPTH; // Color Depth 24  Not supported!
32
parameter GFX_CTRL_CD32        = 3 << GFX_CTRL_COLOR_DEPTH; // Color Depth 32 
33
parameter GFX_CTRL_CDMASK      = 3 << GFX_CTRL_COLOR_DEPTH; // All color depth bits 
34
parameter GFX_TEXTURE_ENABLE   = 1 << GFX_CTRL_TEXTURE;     // Enable Texture Reads 
35
parameter GFX_BLEND_ENABLE     = 1 << GFX_CTRL_BLENDING;    // Enable Alpha Blending 
36
parameter GFX_COLORKEY_ENABLE  = 1 << GFX_CTRL_COLORKEY;    // Enable Colorkeying 
37
parameter GFX_CLIPPING_ENABLE  = 1 << GFX_CTRL_CLIPPING;    // Enable Clipping/Scissoring 
38
parameter GFX_ZBUFFER_ENABLE   = 1 << GFX_CTRL_ZBUFFER;     // Enable depth buffer
39
 
40
parameter GFX_DRAW_RECT        = 1 << GFX_CTRL_RECT;        // Put rect  
41
parameter GFX_DRAW_LINE        = 1 << GFX_CTRL_LINE;        // Put line  
42
parameter GFX_DRAW_TRI         = 1 << GFX_CTRL_TRI;         // Put triangle
43
 
44
parameter GFX_DRAW_CURVE       = 1 << GFX_CTRL_CURVE;       // Put curve
45
parameter GFX_INTERP           = 1 << GFX_CTRL_INTERP;      // Interpolation active (triangles)
46
parameter GFX_INSIDE           = 1 << GFX_CTRL_INSIDE;      // Inside 
47
 
48
parameter GFX_ACTIVE_POINT0    = 0;
49
parameter GFX_ACTIVE_POINT1    = 1 << GFX_CTRL_ACTIVE_POINT;
50
parameter GFX_ACTIVE_POINT2    = 2 << GFX_CTRL_ACTIVE_POINT;
51
parameter GFX_ACTIVE_POINTMASK = 3 << GFX_CTRL_ACTIVE_POINT;
52
parameter GFX_FORWARD_POINT    = 1 << GFX_CTRL_FORWARD_POINT;
53
parameter GFX_TRANSFORM_POINT  = 1 << GFX_CTRL_TRANSFORM_POINT;
54
 
55
// Common wishbone signals
56
reg         wb_clk_i;    // master clock reg
57
reg         wb_rst_i;    // Asynchronous active high reset
58
wire        wb_inta_o;   // interrupt
59
 
60
// Wishbone master signals (write)
61
wire        wbm_write_cyc_o;    // cycle wire
62
wire        wbm_write_stb_o;    // strobe wire
63
wire [ 2:0] wbm_write_cti_o;    // cycle type id
64
wire [ 1:0] wbm_write_bte_o;    // burst type extension
65
wire        wbm_write_we_o;     // write enable wire
66
wire [31:0] wbm_write_adr_o;    // address wire
67
wire [ 3:0] wbm_write_sel_o;    // byte select wires (only 32bits accesses are supported)
68
reg         wbm_write_ack_i;    // wishbone cycle acknowledge
69
reg         wbm_write_err_i;    // wishbone cycle error
70
wire [31:0] wbm_write_dat_o;    // wishbone data out
71
 
72
// Wishbone master signals (read)
73
wire        wbm_read_cyc_o;    // cycle wire
74
wire        wbm_read_stb_o;    // strobe wire
75
wire [ 2:0] wbm_read_cti_o;    // cycle type id
76
wire [ 1:0] wbm_read_bte_o;    // burst type extension
77
wire        wbm_read_we_o;     // write enable wire
78
wire [31:0] wbm_read_adr_o;    // address wire
79
wire [ 3:0] wbm_read_sel_o;    // byte select wires (only 32bits accesses are supported)
80
reg         wbm_read_ack_i;    // wishbone cycle acknowledge
81
reg         wbm_read_err_i;    // wishbone cycle error
82
reg  [31:0] wbm_read_dat_i;    // wishbone data in
83
 
84
// Wishbone slave signals
85
reg         wbs_cyc_i;    // cycle reg
86
reg         wbs_stb_i;    // strobe reg
87
reg  [ 2:0] wbs_cti_i;    // cycle type id
88
reg  [ 1:0] wbs_bte_i;    // burst type extension
89
reg         wbs_we_i;     // write enable reg
90
reg  [31:0] wbs_adr_i;    // address reg
91
reg  [ 3:0] wbs_sel_i;    // byte select reg (only 32bits accesses are supported)
92
wire        wbs_ack_o;    // wishbone cycle acknowledge
93
wire        wbs_err_o;    // wishbone cycle error
94
reg  [31:0] wbs_dat_i;    // wishbone data in
95
wire [31:0] wbs_dat_o;    // wishbone data out
96
 
97
parameter GFX_VMEM            = 32'h00800000;
98
 
99
initial begin
100
  $dumpfile("gfx.vcd");
101
  $dumpvars(0,gfx_bench);
102
 
103
// init values
104
  wb_clk_i = 0;
105
  wb_rst_i = 1;
106
  wbm_write_ack_i = 0;
107
  wbm_read_ack_i = 0;
108
  wbm_write_err_i = 0;
109
  wbm_read_err_i = 0;
110
  wbs_cyc_i = 0;
111
  wbs_cti_i = 0;
112
  wbs_bte_i = 0;
113
  wbs_adr_i = 0;
114
  wbs_sel_i = 4'b1111;
115
  wbs_dat_i = 0;
116
 
117
  // Can be high all the time
118
  wbs_we_i   = 1;
119
  wbs_stb_i  = 1;
120
 
121
//  wbm_read_dat_i = 32'hf18ff18f;
122
 
123
  // Set the texture read pixel
124
  wbm_read_dat_i = 32'h00000000;
125
 
126
  // Finish the reset of the component
127
  #2 wb_rst_i = 0;
128
 
129
 
130
  // Initialize color register
131
  #2 wbs_cyc_i  = 1;
132
  wbs_adr_i = GFX_COLOR0;
133
  wbs_dat_i = 32'h12345671;
134
  #4 wbs_cyc_i  = 0;
135
 
136
  // Initialize traget base
137
  #2 wbs_cyc_i  = 1;
138
  wbs_dat_i  = GFX_VMEM;
139
  wbs_adr_i  = GFX_TARGET_BASE;
140
  #4 wbs_cyc_i = 0;
141
 
142
  // oc_gfx_set_videomode(640, 480, 16);
143
  #2 wbs_cyc_i = 1;
144
  wbs_dat_i  = 640;
145
  wbs_adr_i  = GFX_TARGET_SIZE_X;
146
  #4 wbs_cyc_i = 0;
147
 
148
  #2 wbs_cyc_i = 1;
149
  wbs_dat_i  = 480;
150
  wbs_adr_i  = GFX_TARGET_SIZE_Y;
151
  #4 wbs_cyc_i = 0;
152
 
153
  // Set 16 bit color depth
154
  #2 wbs_cyc_i = 1;
155
  wbs_dat_i  = GFX_CTRL_CD16;
156
  wbs_adr_i  = GFX_CONTROL;
157
  #4 wbs_cyc_i = 0;
158
 
159
// Enable colorkey
160
  #2 wbs_cyc_i = 1;
161
  wbs_dat_i  = 32'h0000F18F; // pink color
162
  wbs_adr_i  = GFX_COLORKEY;
163
  #4 wbs_cyc_i = 0;
164
 
165
  #2 wbs_cyc_i = 1;
166
  wbs_dat_i  = GFX_COLORKEY_ENABLE | GFX_CTRL_CD16;
167
  wbs_adr_i  = GFX_CONTROL;
168
  #4 wbs_cyc_i = 0;
169
 
170
  // set cliparea
171
  #2 wbs_cyc_i = 1;
172
  wbs_dat_i  = 0;
173
  wbs_adr_i  = GFX_CLIP_PIXEL0_X; // Clip Pixel 0
174
  #4 wbs_cyc_i = 0;
175
 
176
  #2 wbs_cyc_i = 1;
177
  wbs_dat_i  = 0;
178
  wbs_adr_i  = GFX_CLIP_PIXEL0_Y; // Clip Pixel 0
179
  #4 wbs_cyc_i = 0;
180
 
181
  #2 wbs_cyc_i = 1;
182
  wbs_dat_i  = 640;
183
  wbs_adr_i  = GFX_CLIP_PIXEL1_X; // Clip Pixel 1
184
  #4 wbs_cyc_i = 0;
185
 
186
  #2 wbs_cyc_i = 1;
187
  wbs_dat_i  = 480;
188
  wbs_adr_i  = GFX_CLIP_PIXEL1_Y; // Clip Pixel 1
189
  #4 wbs_cyc_i = 0;
190
 
191
// oc_gfx_enable_tex0(1)
192
  #2 wbs_cyc_i = 1;
193
  wbs_dat_i  = GFX_TEXTURE_ENABLE | GFX_COLORKEY_ENABLE | GFX_CTRL_CD16;
194
  wbs_adr_i  = GFX_CONTROL;
195
  #4 wbs_cyc_i = 0;
196
 
197
// oc_gfx_bind_tex0(0x01f00000, 10, 10)
198
  #2 wbs_cyc_i = 1;
199
  wbs_dat_i  = GFX_VMEM;
200
  wbs_adr_i  = GFX_TEX0_BASE;
201
  #4 wbs_cyc_i = 0;
202
 
203
  #2 wbs_cyc_i = 1;
204
  wbs_dat_i  = 10;
205
  wbs_adr_i  = GFX_TEX0_SIZE_X;
206
  #4 wbs_cyc_i = 0;
207
 
208
  #2 wbs_cyc_i = 1;
209
  wbs_dat_i  = 10;
210
  wbs_adr_i  = GFX_TEX0_SIZE_Y;
211
  #4 wbs_cyc_i = 0;
212
 
213
// oc_gfx_curve(10, 10, 10, 15, 15, 15, 15, 10, 0xf800f800);
214
  #2 wbs_cyc_i = 1;
215
  wbs_dat_i  = 10 << subpixel_width;
216
  wbs_adr_i  = GFX_DEST_PIXEL_X;
217
  #4 wbs_cyc_i = 0;
218
 
219
  #2 wbs_cyc_i = 1;
220
  wbs_dat_i  = 10 << subpixel_width;
221
  wbs_adr_i  = GFX_DEST_PIXEL_Y;
222
  #4 wbs_cyc_i = 0;
223
 
224
  #2 wbs_cyc_i = 1;
225
  wbs_dat_i  = GFX_TEXTURE_ENABLE | GFX_COLORKEY_ENABLE | GFX_CTRL_CD16 | GFX_ACTIVE_POINT0 | GFX_FORWARD_POINT;
226
  wbs_adr_i  = GFX_CONTROL;
227
  #4 wbs_cyc_i = 0;
228
 
229
  // p1.x = 10
230
 
231
  #2 wbs_cyc_i = 1;
232
  wbs_dat_i  = 15 << subpixel_width;
233
  wbs_adr_i  = GFX_DEST_PIXEL_Y;
234
  #4 wbs_cyc_i = 0;
235
 
236
  #2 wbs_cyc_i = 1;
237
  wbs_dat_i  = GFX_TEXTURE_ENABLE | GFX_COLORKEY_ENABLE | GFX_CTRL_CD16 | GFX_ACTIVE_POINT2 | GFX_FORWARD_POINT;
238
  wbs_adr_i  = GFX_CONTROL;
239
  #4 wbs_cyc_i = 0;
240
 
241
  #2 wbs_cyc_i = 1;
242
  wbs_dat_i  = 15 << subpixel_width;
243
  wbs_adr_i  = GFX_DEST_PIXEL_X;
244
  #4 wbs_cyc_i = 0;
245
 
246
  // p2.y = 15
247
  #2 wbs_cyc_i = 1;
248
  wbs_dat_i  = GFX_TEXTURE_ENABLE | GFX_COLORKEY_ENABLE | GFX_CTRL_CD16 | GFX_ACTIVE_POINT1 | GFX_FORWARD_POINT;
249
  wbs_adr_i  = GFX_CONTROL;
250
  #4 wbs_cyc_i = 0;
251
 
252
  #2 wbs_cyc_i = 1;
253
  wbs_dat_i  = 0;
254
  wbs_adr_i  = GFX_U0;
255
  #4 wbs_cyc_i = 0;
256
 
257
  #2 wbs_cyc_i = 1;
258
  wbs_dat_i  = 0;
259
  wbs_adr_i  = GFX_V0;
260
  #4 wbs_cyc_i = 0;
261
 
262
  #2 wbs_cyc_i = 1;
263
  wbs_dat_i  = 100;
264
  wbs_adr_i  = GFX_U1;
265
  #4 wbs_cyc_i = 0;
266
 
267
  #2 wbs_cyc_i = 1;
268
  wbs_dat_i  = 0;
269
  wbs_adr_i  = GFX_V1;
270
  #4 wbs_cyc_i = 0;
271
 
272
  #2 wbs_cyc_i = 1;
273
  wbs_dat_i  = 100;
274
  wbs_adr_i  = GFX_U2;
275
  #4 wbs_cyc_i = 0;
276
 
277
  #2 wbs_cyc_i = 1;
278
  wbs_dat_i  = 100;
279
  wbs_adr_i  = GFX_V2;
280
  #4 wbs_cyc_i = 0;
281
/*
282
  // p3.x = 15
283
 
284
  #2 wbs_cyc_i = 1;
285
  wbs_dat_i  = 10 << subpixel_width;
286
  wbs_adr_i  = GFX_DEST_PIXEL_Y;
287
  #4 wbs_cyc_i = 0;
288
 
289
  #2 wbs_cyc_i = 1;
290
  wbs_dat_i  = GFX_TEXTURE_ENABLE | GFX_COLORKEY_ENABLE | GFX_CTRL_CD16 | GFX_ACTIVE_POINT3 | GFX_FORWARD_POINT;
291
  wbs_adr_i  = GFX_CONTROL;
292
  #4 wbs_cyc_i = 0;
293
*/
294
 
295
  #2 wbs_cyc_i = 1;
296
  wbs_dat_i  = 32'hf800f800; // Red
297
  wbs_adr_i  = GFX_COLOR0;
298
  #4 wbs_cyc_i = 0;
299
 
300
  #2 wbs_cyc_i = 1; // TODO CURVE
301
  wbs_dat_i  = GFX_DRAW_TRI | GFX_DRAW_CURVE | GFX_INTERP | GFX_CTRL_CD16 | GFX_TEXTURE_ENABLE; // | GFX_BEZIER_FILL;
302
  wbs_adr_i  = GFX_CONTROL;
303
  #4 wbs_cyc_i = 0;
304
 
305
  // After a while, set every pixel read to the color key (demonstrates that colorkeyed pixels are not written)
306
  #200 wbm_read_dat_i = 32'hf18ff18f;
307
 
308
  // TODO: Demonstrate alpha blending
309
 
310
 
311
 
312
  wbm_read_dat_i = #40 32'hffffffff;
313
 
314
// Draw a Rectangle
315
// oc_gfx_rect(110, 110, 115, 115, 0xf800f800);
316
  #200 wbs_cyc_i = 1;
317
  wbs_dat_i  = 110 << 16; // (110 << 16) | 110
318
  wbs_adr_i  = GFX_DEST_PIXEL_X;
319
  #4 wbs_cyc_i = 0;
320
 
321
  #2 wbs_cyc_i = 1;
322
  wbs_dat_i  = 110 << 16; // (110 << 16) | 110
323
  wbs_adr_i  = GFX_DEST_PIXEL_Y;
324
  #4 wbs_cyc_i = 0;
325
 
326
  #2 wbs_cyc_i = 1;
327
  wbs_dat_i  = GFX_TEXTURE_ENABLE | GFX_COLORKEY_ENABLE | GFX_CTRL_CD16 | GFX_ACTIVE_POINT0 | GFX_FORWARD_POINT;
328
  wbs_adr_i  = GFX_CONTROL;
329
  #4 wbs_cyc_i = 0;
330
 
331
  #2 wbs_cyc_i = 1;
332
  wbs_dat_i  = 115 << 16; // (115 << 16) | 115
333
  wbs_adr_i  = GFX_DEST_PIXEL_X;
334
  #4 wbs_cyc_i = 0;
335
 
336
  #2 wbs_cyc_i = 1;
337
  wbs_dat_i  = 115 << 16; // (115 << 16) | 115
338
  wbs_adr_i  = GFX_DEST_PIXEL_Y;
339
  #4 wbs_cyc_i = 0;
340
 
341
  #2 wbs_cyc_i = 1;
342
  wbs_dat_i  = GFX_TEXTURE_ENABLE | GFX_COLORKEY_ENABLE | GFX_CTRL_CD16 | GFX_ACTIVE_POINT1 | GFX_FORWARD_POINT;
343
  wbs_adr_i  = GFX_CONTROL;
344
  #4 wbs_cyc_i = 0;
345
 
346
  #2 wbs_cyc_i = 1; // Draw the rect
347
  wbs_dat_i  = GFX_DRAW_RECT | GFX_CTRL_CD16;
348
  wbs_adr_i  = GFX_CONTROL;
349
  #4 wbs_cyc_i = 0;
350
 
351
  // Draw a bunch of lines
352
 
353
  //draw line ############### 1
354
  #200 wbs_cyc_i = 1;
355
  wbs_dat_i  = 4;
356
  wbs_adr_i  = GFX_DEST_PIXEL_X;
357
  #4 wbs_cyc_i = 0;
358
 
359
  #2 wbs_cyc_i = 1;
360
  wbs_dat_i  = 4;
361
  wbs_adr_i  = GFX_DEST_PIXEL_Y;
362
  #4 wbs_cyc_i = 0;
363
 
364
  #2 wbs_cyc_i = 1;
365
  wbs_dat_i  = GFX_TEXTURE_ENABLE | GFX_COLORKEY_ENABLE | GFX_CTRL_CD16 | GFX_ACTIVE_POINT0 | GFX_FORWARD_POINT;
366
  wbs_adr_i  = GFX_CONTROL;
367
  #4 wbs_cyc_i = 0;
368
 
369
  #2 wbs_cyc_i = 1;
370
  wbs_dat_i  = 8;
371
  wbs_adr_i  = GFX_DEST_PIXEL_X;
372
  #4 wbs_cyc_i = 0;
373
 
374
  #2 wbs_cyc_i = 1;
375
  wbs_dat_i  = 6;
376
  wbs_adr_i  = GFX_DEST_PIXEL_Y;
377
  #4 wbs_cyc_i = 0;
378
 
379
  #2 wbs_cyc_i = 1;
380
  wbs_dat_i  = GFX_TEXTURE_ENABLE | GFX_COLORKEY_ENABLE | GFX_CTRL_CD16 | GFX_ACTIVE_POINT1 | GFX_FORWARD_POINT;
381
  wbs_adr_i  = GFX_CONTROL;
382
  #4 wbs_cyc_i = 0;
383
 
384
  #2 wbs_cyc_i = 1;
385
  wbs_dat_i  = GFX_DRAW_LINE | GFX_CTRL_CD16;
386
  wbs_adr_i  = GFX_CONTROL;
387
  #4 wbs_cyc_i = 0;
388
  //#########################
389
/*
390
  //draw line ############### 2
391
  #100 wbs_cyc_i = 1;
392
  wbs_dat_i  = 32'h00040004; // (110 << 16) | 110
393
  wbs_adr_i  = GFX_DEST_PIXEL0;
394
  #4 wbs_cyc_i = 0;
395
 
396
  #2 wbs_cyc_i = 1;
397
  wbs_dat_i  = 32'h00060008; // (115 << 16) | 115
398
  wbs_adr_i  = GFX_DEST_PIXEL1;
399
  #4 wbs_cyc_i = 0;
400
 
401
  #2 wbs_cyc_i = 1;
402
  wbs_dat_i  = GFX_CONTROL_LINE | GFX_CONTROL_CD16 | GFX_CLIPPING_ENABLE;
403
  wbs_adr_i  = GFX_CONTROL;
404
  #4 wbs_cyc_i = 0;
405
  //#########################
406
 
407
  //draw line ############### 3
408
  #10 wbs_cyc_i = 1;
409
  wbs_dat_i  = 32'h00040004; // (110 << 16) | 110
410
  wbs_adr_i  = GFX_DEST_PIXEL0;
411
  #4 wbs_cyc_i = 0;
412
 
413
  #2 wbs_cyc_i = 1;
414
  wbs_dat_i  = 32'h00020008; // (115 << 16) | 115
415
  wbs_adr_i  = GFX_DEST_PIXEL1;
416
  #4 wbs_cyc_i = 0;
417
 
418
  #2 wbs_cyc_i = 1;
419
  wbs_dat_i  = GFX_CONTROL_LINE | GFX_CONTROL_CD16;
420
  wbs_adr_i  = GFX_CONTROL;
421
  #4 wbs_cyc_i = 0;
422
  //#########################
423
 
424
  //draw line ############### 4
425
  #10 wbs_cyc_i = 1;
426
  wbs_dat_i  = 32'h00040004; // (110 << 16) | 110
427
  wbs_adr_i  = GFX_DEST_PIXEL0;
428
  #4 wbs_cyc_i = 0;
429
 
430
  #2 wbs_cyc_i = 1;
431
  wbs_dat_i  = 32'h00000006; // (115 << 16) | 115
432
  wbs_adr_i  = GFX_DEST_PIXEL1;
433
  #4 wbs_cyc_i = 0;
434
 
435
  #2 wbs_cyc_i = 1;
436
  wbs_dat_i  = GFX_CONTROL_LINE | GFX_CONTROL_CD16;
437
  wbs_adr_i  = GFX_CONTROL;
438
  #4 wbs_cyc_i = 0;
439
  //#########################
440
 
441
  //draw line ############### 5
442
  #10 wbs_cyc_i = 1;
443
  wbs_dat_i  = 32'h00040004; // (110 << 16) | 110
444
  wbs_adr_i  = GFX_DEST_PIXEL0;
445
  #4 wbs_cyc_i = 0;
446
 
447
  #2 wbs_cyc_i = 1;
448
  wbs_dat_i  = 32'h00000002; // (115 << 16) | 115
449
  wbs_adr_i  = GFX_DEST_PIXEL1;
450
  #4 wbs_cyc_i = 0;
451
 
452
  #2 wbs_cyc_i = 1;
453
  wbs_dat_i  = GFX_CONTROL_LINE | GFX_CONTROL_CD16;
454
  wbs_adr_i  = GFX_CONTROL;
455
  #4 wbs_cyc_i = 0;
456
  //#########################
457
 
458
  //draw line ############### 6
459
  #10 wbs_cyc_i = 1;
460
  wbs_dat_i  = 32'h00040004; // (110 << 16) | 110
461
  wbs_adr_i  = GFX_DEST_PIXEL0;
462
  #4 wbs_cyc_i = 0;
463
 
464
  #2 wbs_cyc_i = 1;
465
  wbs_dat_i  = 32'h00020000; // (115 << 16) | 115
466
  wbs_adr_i  = GFX_DEST_PIXEL1;
467
  #4 wbs_cyc_i = 0;
468
 
469
  #2 wbs_cyc_i = 1;
470
  wbs_dat_i  = GFX_CONTROL_LINE | GFX_CONTROL_CD16;
471
  wbs_adr_i  = GFX_CONTROL;
472
  #4 wbs_cyc_i = 0;
473
  //#########################
474
 
475
  //draw line ############### 7
476
  #10 wbs_cyc_i = 1;
477
  wbs_dat_i  = 32'h00040004; // (110 << 16) | 110
478
  wbs_adr_i  = GFX_DEST_PIXEL0;
479
  #4 wbs_cyc_i = 0;
480
 
481
  #2 wbs_cyc_i = 1;
482
  wbs_dat_i  = 32'h00060000; // (115 << 16) | 115
483
  wbs_adr_i  = GFX_DEST_PIXEL1;
484
  #4 wbs_cyc_i = 0;
485
 
486
  #2 wbs_cyc_i = 1;
487
  wbs_dat_i  = GFX_CONTROL_LINE | GFX_CONTROL_CD16;
488
  wbs_adr_i  = GFX_CONTROL;
489
  #4 wbs_cyc_i = 0;
490
  //#########################
491
 
492
  //draw line ############### 8
493
  #10 wbs_cyc_i = 1;
494
  wbs_dat_i  = 32'h00040004; // (110 << 16) | 110
495
  wbs_adr_i  = GFX_DEST_PIXEL0;
496
  #4 wbs_cyc_i = 0;
497
 
498
  #2 wbs_cyc_i = 1;
499
  wbs_dat_i  = 32'h00080002; // (115 << 16) | 115
500
  wbs_adr_i  = GFX_DEST_PIXEL1;
501
  #4 wbs_cyc_i = 0;
502
 
503
  #2 wbs_cyc_i = 1;
504
  wbs_dat_i  = GFX_CONTROL_LINE | GFX_CONTROL_CD16;
505
  wbs_adr_i  = GFX_CONTROL;
506
  #4 wbs_cyc_i = 0;
507
  //#########################
508
*/
509
  #10000 $finish;
510
end
511
 
512
// Set up ack behaviour from memory circuits
513
always @(posedge wb_clk_i)
514
begin
515
  wbm_write_ack_i <= #1 wbm_write_cyc_o & !wbm_write_ack_i;
516
  wbm_read_ack_i  <= #1 wbm_read_cyc_o  & !wbm_read_ack_i;
517
end
518
 
519
// Set up clock
520
always begin
521
  #1 wb_clk_i = ~wb_clk_i;
522
end
523
 
524
// Instansiate module
525
gfx_top top(
526
.wb_clk_i (wb_clk_i),
527
.wb_rst_i (wb_rst_i),
528
.wb_inta_o (wb_inta_o),
529
// Wishbone master signals (interfaces with video memory)
530
.wbm_write_cyc_o (wbm_write_cyc_o),
531
.wbm_write_stb_o (wbm_write_stb_o),
532
.wbm_write_cti_o (wbm_write_cti_o),
533
.wbm_write_bte_o (wbm_write_bte_o),
534
.wbm_write_we_o (wbm_write_we_o),
535
.wbm_write_adr_o (wbm_write_adr_o),
536
.wbm_write_sel_o (wbm_write_sel_o),
537
.wbm_write_ack_i (wbm_write_ack_i),
538
.wbm_write_err_i (wbm_write_err_i),
539
.wbm_write_dat_o (wbm_write_dat_o),
540
// Wishbone master signals (interfaces with video memory)
541
.wbm_read_cyc_o (wbm_read_cyc_o),
542
.wbm_read_stb_o (wbm_read_stb_o),
543
.wbm_read_cti_o (wbm_read_cti_o),
544
.wbm_read_bte_o (wbm_read_bte_o),
545
.wbm_read_we_o (wbm_read_we_o),
546
.wbm_read_adr_o (wbm_read_adr_o),
547
.wbm_read_sel_o (wbm_read_sel_o),
548
.wbm_read_ack_i (wbm_read_ack_i),
549
.wbm_read_err_i (wbm_read_err_i),
550
.wbm_read_dat_i (wbm_read_dat_i),
551
// Wishbone slave signals (interfaces with main bus/CPU)
552
.wbs_cyc_i (wbs_cyc_i),
553
.wbs_stb_i (wbs_stb_i),
554
.wbs_cti_i (wbs_cti_i),
555
.wbs_bte_i (wbs_bte_i),
556
.wbs_we_i (wbs_we_i),
557
.wbs_adr_i (wbs_adr_i),
558
.wbs_sel_i (wbs_sel_i),
559
.wbs_ack_o (wbs_ack_o),
560
.wbs_err_o (wbs_err_o),
561
.wbs_dat_i (wbs_dat_i),
562
.wbs_dat_o (wbs_dat_o)
563
);
564
 
565
defparam top.point_width    = point_width;
566
defparam top.subpixel_width = subpixel_width;
567
defparam top.fifo_depth     = fifo_depth;
568
 
569
endmodule

powered by: WebSVN 2.1.0

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