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/] [transform_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_transform.v"
2
 
3
module transform_bench();
4
 
5
reg clk_i;
6
reg rst_i;
7
 
8
parameter point_width = 16;
9
parameter subpixel_width = 16;
10
 
11
reg signed [point_width-1:-subpixel_width] x_i;
12
reg signed [point_width-1:-subpixel_width] y_i;
13
reg signed [point_width-1:-subpixel_width] z_i;
14
reg                           [1:0] point_id_i; // point 0,1,2,3
15
 
16
reg signed [point_width-1:-subpixel_width] aa;
17
reg signed [point_width-1:-subpixel_width] ab;
18
reg signed [point_width-1:-subpixel_width] ac;
19
reg signed [point_width-1:-subpixel_width] tx;
20
reg signed [point_width-1:-subpixel_width] ba;
21
reg signed [point_width-1:-subpixel_width] bb;
22
reg signed [point_width-1:-subpixel_width] bc;
23
reg signed [point_width-1:-subpixel_width] ty;
24
reg signed [point_width-1:-subpixel_width] ca;
25
reg signed [point_width-1:-subpixel_width] cb;
26
reg signed [point_width-1:-subpixel_width] cc;
27
reg signed [point_width-1:-subpixel_width] tz;
28
 
29
wire signed [point_width-1:-subpixel_width] p0_x_o;
30
wire signed [point_width-1:-subpixel_width] p0_y_o;
31
wire signed               [point_width-1:0] p0_z_o;
32
wire signed [point_width-1:-subpixel_width] p1_x_o;
33
wire signed [point_width-1:-subpixel_width] p1_y_o;
34
wire signed               [point_width-1:0] p1_z_o;
35
wire signed [point_width-1:-subpixel_width] p2_x_o;
36
wire signed [point_width-1:-subpixel_width] p2_y_o;
37
wire signed               [point_width-1:0] p2_z_o;
38
 
39
wire signed [point_width-1:0] p0_x_int = p0_x_o[point_width-1:0];
40
wire signed [point_width-1:0] p0_y_int = p0_y_o[point_width-1:0];
41
wire signed [point_width-1:0] p1_x_int = p1_x_o[point_width-1:0];
42
wire signed [point_width-1:0] p1_y_int = p1_y_o[point_width-1:0];
43
wire signed [point_width-1:0] p2_x_int = p2_x_o[point_width-1:0];
44
wire signed [point_width-1:0] p2_y_int = p2_y_o[point_width-1:0];
45
 
46
reg transform_i, forward_i;
47
 
48
wire ack_o;
49
 
50
parameter FIXEDW = (1<<subpixel_width);
51
 
52
initial begin
53
  $dumpfile("transform.vcd");
54
  $dumpvars(0,transform_bench);
55
 
56
  clk_i = 0;
57
  rst_i = 1;
58
 
59
  transform_i   = 0;
60
  forward_i     = 0;
61
  x_i        = 0;
62
  y_i        = 0;
63
  z_i        = 0;
64
  point_id_i = 0;
65
  // Set transform to identity
66
  aa  = -1 * FIXEDW;
67
  ab  = 0;
68
  ac  = 0;
69
  tx  = 10 * FIXEDW;
70
  ba  = 0;
71
  bb  = 1 * FIXEDW;
72
  bc  = 0;
73
  ty  = 15 * FIXEDW;
74
  ca  = 0;
75
  cb  = 0;
76
  cc  = 1 * FIXEDW;
77
  tz  = -20 * FIXEDW;
78
 
79
// timing
80
#2 rst_i = 0;
81
  transform_i = 1;
82
  x_i = -20 * FIXEDW;
83
  y_i = 0;
84
  z_i = 0;
85
  point_id_i = 0;
86
 
87
#4 point_id_i = 1;
88
#4 point_id_i = 2;
89
#4 forward_i = 0;
90
 
91
#10  transform_i = 1;
92
  point_id_i = 0;
93
  aa = 2*FIXEDW;
94
  ab = 1*FIXEDW;
95
  ac = 0;
96
 
97
  #1000 $finish;
98
end
99
 
100
 
101
always begin
102
  #1 clk_i = ~clk_i;
103
end
104
 
105
gfx_transform transform(
106
.clk_i           (clk_i),
107
.rst_i           (rst_i),
108
.x_i             (x_i),
109
.y_i             (y_i),
110
.z_i             (z_i),
111
.point_id_i      (point_id_i),
112
// Matrix
113
.aa              (aa),
114
.ab              (ab),
115
.ac              (ac),
116
.tx              (tx),
117
.ba              (ba),
118
.bb              (bb),
119
.bc              (bc),
120
.ty              (ty),
121
.ca              (ca),
122
.cb              (cb),
123
.cc              (cc),
124
.tz              (tz),
125
// Output points
126
.p0_x_o          (p0_x_o),
127
.p0_y_o          (p0_y_o),
128
.p0_z_o          (p0_z_o),
129
.p1_x_o          (p1_x_o),
130
.p1_y_o          (p1_y_o),
131
.p1_z_o          (p1_z_o),
132
.p2_x_o          (p2_x_o),
133
.p2_y_o          (p2_y_o),
134
.p2_z_o          (p2_z_o),
135
.transform_i     (transform_i),
136
.forward_i       (forward_i),
137
.ack_o           (ack_o)
138
);
139
 
140
defparam transform.point_width = point_width;
141
defparam transform.subpixel_width = subpixel_width;
142
 
143
endmodule
144
 

powered by: WebSVN 2.1.0

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