User`s manual

85 wire signed[9:0] sy1, sy2, sy3, sy4;
86 assign sx1 = {1’b0, x1};
87 assign sx2 = {1’b0, x2};
88 assign sx3 = {1’b0, x3};
89 assign sx4 = {1’b0, x4};
90 assign sy1 = {1’b0, y1};
91 assign sy2 = {1’b0, y2};
92 assign sy3 = {1’b0, y3};
93 assign sy4 = {1’b0, y4};
94
95 // difference values for computation
96 wire signed[10:0] d_x1_x2,d_x2_x3,d_x3_x4,d_x4_x1;
97 wire signed[9:0] d_y1_y2, d_y2_y3, d_y3_y4, d_y4_y1, d_y4_y2;
98 assign d_x1_x2 = sx1 - sx2;
99 assign d_x2_x3 = sx2 - sx3;
100 assign d_x3_x4 = sx3 - sx4;
101 assign d_x4_x1 = sx4 - sx1;
102 assign d_y1_y2 = sy1 - sy2;
103 assign d_y2_y3 = sy2 - sy3;
104 assign d_y3_y4 = sy3 - sy4;
105 assign d_y4_y1 = sy4 - sy1;
106 assign d_y4_y2 = sy4 - sy2;
107
108 // computation of p7, p8
109 wire signed[20:0] num0, num1, num2, num3;
110 wire signed[21:0] p7_temp, p8_temp;
111 wire signed[23:0] p7, p8;
112 assign num0 = -(d_x4_x1 * d_y2_y3);
113 assign num1 = d_y4_y1 * d_x2_x3;
114 assign num2 = d_x1_x2 * d_y3_y4;
115 assign num3 = -(d_x3_x4 * d_y1_y2);
116 assign p7_temp = num0 + num1;
117 assign p8_temp = num2 + num3;
118 assign p7 = (p7_temp <<< 1) + p7_temp;
119 assign p8 = (p8_temp <<< 2);
120
121 // computation of denom
122 wire signed[20:0] denom0, denom1, denom2;
123 wire signed[21:0] denom;
124 assign denom0 = sx4 * d_y2_y3;
125 assign denom1 = sx2 * d_y3_y4;
126 assign denom2 = sx3 * d_y4_y2;
127 assign denom = denom0 + denom1 + denom2;
128
129 // computation of p3, p6, p9
130 // observe that 1920 = 2^7 * 15
229