📄 calcmvnormal_11_25_2008.v
字号:
module calcMvNormal
(
input clk, input reset,
input wire [17:0] xu, input wire [17:0] yu, input wire [17:0] zu,
input wire [17:0] xv, input wire [17:0] yv, input wire [17:0] zv,
input wire [17:0] xw, input wire [17:0] yw, input wire [17:0] zw,
input wire [17:0] x, input wire [17:0] y, input wire [17:0] z,
output wire [17:0] Out0,
output wire [17:0] Out1,
output wire [17:0] Out2,
output reg done
);
/* Matrix multiplication to find Mv * Vertex Matrix
MV Vertices
[ xu yu zu ] [x]
[ xv yv zv ] [y]
[ xw yw zw ] [z]
*/
wire [17:0] xu_x, xv_y, xw_z, yu_x, yv_y, yw_z, zu_x, zv_y, zw_z, sum0, sum1, sum2;
reg [17:0] xu_xr, xv_yr, yu_xr, yv_yr, zu_xr, zv_yr, xw_zr, yw_zr, zw_zr, sum0r, sum1r, sum2r;
reg [4:0] state;
/*1st cycle */
fpmult instg(xu_x, xu, x);//xu*x
fpmult insth(xv_y, xv, y);//xv*y
fpmult insti(xw_z, xw, z);//xw*z
fpmult instj(yu_x, yu, x);//yu*x
fpmult instk(yv_y, yv, y);//yv*y
fpmult instl(yw_z, yw, z);//yw*z
fpmult instm(zu_x, zu, x);//zu*x
fpmult instn(zv_y, zv, y);//zv*y
fpmult insto(zw_z, zw, z);//zw*z
/* 2nd Cycle */
fpadd instp(sum0, xu_xr, xv_yr);//xu*x + xv*y
fpadd instq(sum1, yu_xr, yv_yr);//yu*x + yv*y
fpadd instr(sum2, zu_xr, zv_yr);//zu*x + zv*y
/* 3rd Cycle */
fpadd instt(Out0, sum0r, xw_zr);//xu_xv(sum0) + xw*z
fpadd instu(Out1, sum1r, yw_zr);//yu_yv(sum1) + yw*z
fpadd instv(Out2, sum2r, zw_zr);//zu_zv(sum2) + zw*z
parameter exit = 5'd15;
always@(posedge clk) begin
if(reset) begin
xu_xr <= 18'b0;
xv_yr <= 18'b0;
yu_xr <= 18'b0;
yv_yr <= 18'b0;
zu_xr <= 18'b0;
zv_yr <= 18'b0;
xw_zr <= 18'b0;
yw_zr <= 18'b0;
zw_zr <= 18'b0;
sum0r <= 18'b0;
sum1r <= 18'b0;
sum2r <= 18'b0;
state <= 5'd0;
done <= 1'b0;
end
else begin
case(state)
0: begin
xu_xr <= xu_x;
xv_yr <= xv_y;
yu_xr <= yu_x;
yv_yr <= yv_y;
zu_xr <= zu_x;
zv_yr <= zv_y;
xw_zr <= xw_z;
yw_zr <= yw_z;
zw_zr <= zw_z;
state <= 5'd1;
done <= 1'b0;
end
1: begin
sum0r <= sum0;
sum1r <= sum1;
sum2r <= sum2;
state <= 5'd2;
done <= 1'b0;
end
2: begin
state <= exit;
done <= 1'b0;
end
exit: begin
done <= 1'b1;
end
endcase
end
end
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -