//=======================================================================
|
//=======================================================================
|
// Project Monophony
|
// Project Monophony
|
// Wire-Frame 3D Graphics Accelerator IP Core
|
// Wire-Frame 3D Graphics Accelerator IP Core
|
//
|
//
|
// File:
|
// File:
|
// fm_3d_core.v
|
// fm_3d_core.v
|
//
|
//
|
// Abstract:
|
// Abstract:
|
// 22-bit floating point 1/x rom table
|
// 22-bit floating point 1/x rom table
|
//
|
//
|
// Author:
|
// Author:
|
// Kenji Ishimaru (info.wf3d@gmail.com)
|
// Kenji Ishimaru (info.info.wf3d@gmail.com)
|
//
|
//
|
//======================================================================
|
//======================================================================
|
//
|
//
|
// Copyright (c) 2015, Kenji Ishimaru
|
// Copyright (c) 2015, Kenji Ishimaru
|
// All rights reserved.
|
// All rights reserved.
|
//
|
//
|
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
// modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
//
|
//
|
// -Redistributions of source code must retain the above copyright notice,
|
// -Redistributions of source code must retain the above copyright notice,
|
// this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
// -Redistributions in binary form must reproduce the above copyright notice,
|
// -Redistributions in binary form must reproduce the above copyright notice,
|
// this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
// and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
//
|
//
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
//
|
//
|
// Revision History
|
// Revision History
|
|
|
module fm_3d_frcp_rom (
|
module fm_3d_frcp_rom (
|
clk_core,
|
clk_core,
|
i_a,
|
i_a,
|
o_c
|
o_c
|
);
|
);
|
|
|
////////////////////////////
|
////////////////////////////
|
// I/O definition
|
// I/O definition
|
////////////////////////////
|
////////////////////////////
|
input clk_core;
|
input clk_core;
|
input [6:0] i_a;
|
input [6:0] i_a;
|
output [31:0] o_c;
|
output [31:0] o_c;
|
|
|
////////////////////////////
|
////////////////////////////
|
// reg
|
// reg
|
////////////////////////////
|
////////////////////////////
|
reg [31:0] r_c;
|
reg [31:0] r_c;
|
////////////////////////////
|
////////////////////////////
|
// assign
|
// assign
|
////////////////////////////
|
////////////////////////////
|
assign o_c = r_c;
|
assign o_c = r_c;
|
///////////////////////////////////////////
|
///////////////////////////////////////////
|
// always statement
|
// always statement
|
///////////////////////////////////////////
|
///////////////////////////////////////////
|
always @(posedge clk_core) begin
|
always @(posedge clk_core) begin
|
case (i_a)
|
case (i_a)
|
7'd0: r_c <= 32'h800001fc;
|
7'd0: r_c <= 32'h800001fc;
|
7'd1: r_c <= 32'h7f0101f4;
|
7'd1: r_c <= 32'h7f0101f4;
|
7'd2: r_c <= 32'h7e0701ec;
|
7'd2: r_c <= 32'h7e0701ec;
|
7'd3: r_c <= 32'h7d1101e5;
|
7'd3: r_c <= 32'h7d1101e5;
|
7'd4: r_c <= 32'h7c1f01dd;
|
7'd4: r_c <= 32'h7c1f01dd;
|
7'd5: r_c <= 32'h7b3001d6;
|
7'd5: r_c <= 32'h7b3001d6;
|
7'd6: r_c <= 32'h7a4401cf;
|
7'd6: r_c <= 32'h7a4401cf;
|
7'd7: r_c <= 32'h795c01c8;
|
7'd7: r_c <= 32'h795c01c8;
|
7'd8: r_c <= 32'h787801c2;
|
7'd8: r_c <= 32'h787801c2;
|
7'd9: r_c <= 32'h779701bb;
|
7'd9: r_c <= 32'h779701bb;
|
7'd10: r_c <= 32'h76b901b5;
|
7'd10: r_c <= 32'h76b901b5;
|
7'd11: r_c <= 32'h75de01af;
|
7'd11: r_c <= 32'h75de01af;
|
7'd12: r_c <= 32'h750701a8;
|
7'd12: r_c <= 32'h750701a8;
|
7'd13: r_c <= 32'h743201a2;
|
7'd13: r_c <= 32'h743201a2;
|
7'd14: r_c <= 32'h7361019d;
|
7'd14: r_c <= 32'h7361019d;
|
7'd15: r_c <= 32'h72920197;
|
7'd15: r_c <= 32'h72920197;
|
7'd16: r_c <= 32'h71c70191;
|
7'd16: r_c <= 32'h71c70191;
|
7'd17: r_c <= 32'h70fe018c;
|
7'd17: r_c <= 32'h70fe018c;
|
7'd18: r_c <= 32'h70380186;
|
7'd18: r_c <= 32'h70380186;
|
7'd19: r_c <= 32'h6f740181;
|
7'd19: r_c <= 32'h6f740181;
|
7'd20: r_c <= 32'h6eb3017c;
|
7'd20: r_c <= 32'h6eb3017c;
|
7'd21: r_c <= 32'h6df50177;
|
7'd21: r_c <= 32'h6df50177;
|
7'd22: r_c <= 32'h6d3a0172;
|
7'd22: r_c <= 32'h6d3a0172;
|
7'd23: r_c <= 32'h6c80016d;
|
7'd23: r_c <= 32'h6c80016d;
|
7'd24: r_c <= 32'h6bca0168;
|
7'd24: r_c <= 32'h6bca0168;
|
7'd25: r_c <= 32'h6b150164;
|
7'd25: r_c <= 32'h6b150164;
|
7'd26: r_c <= 32'h6a63015f;
|
7'd26: r_c <= 32'h6a63015f;
|
7'd27: r_c <= 32'h69b4015a;
|
7'd27: r_c <= 32'h69b4015a;
|
7'd28: r_c <= 32'h69060156;
|
7'd28: r_c <= 32'h69060156;
|
7'd29: r_c <= 32'h685b0152;
|
7'd29: r_c <= 32'h685b0152;
|
7'd30: r_c <= 32'h67b2014d;
|
7'd30: r_c <= 32'h67b2014d;
|
7'd31: r_c <= 32'h670b0149;
|
7'd31: r_c <= 32'h670b0149;
|
7'd32: r_c <= 32'h66660145;
|
7'd32: r_c <= 32'h66660145;
|
7'd33: r_c <= 32'h65c30141;
|
7'd33: r_c <= 32'h65c30141;
|
7'd34: r_c <= 32'h6522013d;
|
7'd34: r_c <= 32'h6522013d;
|
7'd35: r_c <= 32'h64830139;
|
7'd35: r_c <= 32'h64830139;
|
7'd36: r_c <= 32'h63e70136;
|
7'd36: r_c <= 32'h63e70136;
|
7'd37: r_c <= 32'h634c0132;
|
7'd37: r_c <= 32'h634c0132;
|
7'd38: r_c <= 32'h62b2012e;
|
7'd38: r_c <= 32'h62b2012e;
|
7'd39: r_c <= 32'h621b012a;
|
7'd39: r_c <= 32'h621b012a;
|
7'd40: r_c <= 32'h61860127;
|
7'd40: r_c <= 32'h61860127;
|
7'd41: r_c <= 32'h60f20123;
|
7'd41: r_c <= 32'h60f20123;
|
7'd42: r_c <= 32'h60600120;
|
7'd42: r_c <= 32'h60600120;
|
7'd43: r_c <= 32'h5fd0011d;
|
7'd43: r_c <= 32'h5fd0011d;
|
7'd44: r_c <= 32'h5f410119;
|
7'd44: r_c <= 32'h5f410119;
|
7'd45: r_c <= 32'h5eb40116;
|
7'd45: r_c <= 32'h5eb40116;
|
7'd46: r_c <= 32'h5e290113;
|
7'd46: r_c <= 32'h5e290113;
|
7'd47: r_c <= 32'h5d9f0110;
|
7'd47: r_c <= 32'h5d9f0110;
|
7'd48: r_c <= 32'h5d17010d;
|
7'd48: r_c <= 32'h5d17010d;
|
7'd49: r_c <= 32'h5c90010a;
|
7'd49: r_c <= 32'h5c90010a;
|
7'd50: r_c <= 32'h5c0b0107;
|
7'd50: r_c <= 32'h5c0b0107;
|
7'd51: r_c <= 32'h5b870104;
|
7'd51: r_c <= 32'h5b870104;
|
7'd52: r_c <= 32'h5b050101;
|
7'd52: r_c <= 32'h5b050101;
|
7'd53: r_c <= 32'h5a8400fe;
|
7'd53: r_c <= 32'h5a8400fe;
|
7'd54: r_c <= 32'h5a0500fb;
|
7'd54: r_c <= 32'h5a0500fb;
|
7'd55: r_c <= 32'h598700f9;
|
7'd55: r_c <= 32'h598700f9;
|
7'd56: r_c <= 32'h590b00f6;
|
7'd56: r_c <= 32'h590b00f6;
|
7'd57: r_c <= 32'h588f00f3;
|
7'd57: r_c <= 32'h588f00f3;
|
7'd58: r_c <= 32'h581600f1;
|
7'd58: r_c <= 32'h581600f1;
|
7'd59: r_c <= 32'h579d00ee;
|
7'd59: r_c <= 32'h579d00ee;
|
7'd60: r_c <= 32'h572600ec;
|
7'd60: r_c <= 32'h572600ec;
|
7'd61: r_c <= 32'h56b000e9;
|
7'd61: r_c <= 32'h56b000e9;
|
7'd62: r_c <= 32'h563b00e7;
|
7'd62: r_c <= 32'h563b00e7;
|
7'd63: r_c <= 32'h55c700e4;
|
7'd63: r_c <= 32'h55c700e4;
|
7'd64: r_c <= 32'h555500e2;
|
7'd64: r_c <= 32'h555500e2;
|
7'd65: r_c <= 32'h54e400e0;
|
7'd65: r_c <= 32'h54e400e0;
|
7'd66: r_c <= 32'h547400dd;
|
7'd66: r_c <= 32'h547400dd;
|
7'd67: r_c <= 32'h540500db;
|
7'd67: r_c <= 32'h540500db;
|
7'd68: r_c <= 32'h539700d9;
|
7'd68: r_c <= 32'h539700d9;
|
7'd69: r_c <= 32'h532a00d7;
|
7'd69: r_c <= 32'h532a00d7;
|
7'd70: r_c <= 32'h52bf00d4;
|
7'd70: r_c <= 32'h52bf00d4;
|
7'd71: r_c <= 32'h525400d2;
|
7'd71: r_c <= 32'h525400d2;
|
7'd72: r_c <= 32'h51eb00d0;
|
7'd72: r_c <= 32'h51eb00d0;
|
7'd73: r_c <= 32'h518300ce;
|
7'd73: r_c <= 32'h518300ce;
|
7'd74: r_c <= 32'h511b00cc;
|
7'd74: r_c <= 32'h511b00cc;
|
7'd75: r_c <= 32'h50b500ca;
|
7'd75: r_c <= 32'h50b500ca;
|
7'd76: r_c <= 32'h505000c8;
|
7'd76: r_c <= 32'h505000c8;
|
7'd77: r_c <= 32'h4fec00c6;
|
7'd77: r_c <= 32'h4fec00c6;
|
7'd78: r_c <= 32'h4f8800c4;
|
7'd78: r_c <= 32'h4f8800c4;
|
7'd79: r_c <= 32'h4f2600c2;
|
7'd79: r_c <= 32'h4f2600c2;
|
7'd80: r_c <= 32'h4ec400c0;
|
7'd80: r_c <= 32'h4ec400c0;
|
7'd81: r_c <= 32'h4e6400bf;
|
7'd81: r_c <= 32'h4e6400bf;
|
7'd82: r_c <= 32'h4e0400bd;
|
7'd82: r_c <= 32'h4e0400bd;
|
7'd83: r_c <= 32'h4da600bb;
|
7'd83: r_c <= 32'h4da600bb;
|
7'd84: r_c <= 32'h4d4800b9;
|
7'd84: r_c <= 32'h4d4800b9;
|
7'd85: r_c <= 32'h4ceb00b8;
|
7'd85: r_c <= 32'h4ceb00b8;
|
7'd86: r_c <= 32'h4c8f00b6;
|
7'd86: r_c <= 32'h4c8f00b6;
|
7'd87: r_c <= 32'h4c3400b4;
|
7'd87: r_c <= 32'h4c3400b4;
|
7'd88: r_c <= 32'h4bda00b2;
|
7'd88: r_c <= 32'h4bda00b2;
|
7'd89: r_c <= 32'h4b8000b1;
|
7'd89: r_c <= 32'h4b8000b1;
|
7'd90: r_c <= 32'h4b2700af;
|
7'd90: r_c <= 32'h4b2700af;
|
7'd91: r_c <= 32'h4ad000ae;
|
7'd91: r_c <= 32'h4ad000ae;
|
7'd92: r_c <= 32'h4a7900ac;
|
7'd92: r_c <= 32'h4a7900ac;
|
7'd93: r_c <= 32'h4a2200aa;
|
7'd93: r_c <= 32'h4a2200aa;
|
7'd94: r_c <= 32'h49cd00a9;
|
7'd94: r_c <= 32'h49cd00a9;
|
7'd95: r_c <= 32'h497800a7;
|
7'd95: r_c <= 32'h497800a7;
|
7'd96: r_c <= 32'h492400a6;
|
7'd96: r_c <= 32'h492400a6;
|
7'd97: r_c <= 32'h48d100a4;
|
7'd97: r_c <= 32'h48d100a4;
|
7'd98: r_c <= 32'h487e00a3;
|
7'd98: r_c <= 32'h487e00a3;
|
7'd99: r_c <= 32'h482d00a2;
|
7'd99: r_c <= 32'h482d00a2;
|
7'd100: r_c <= 32'h47dc00a0;
|
7'd100: r_c <= 32'h47dc00a0;
|
7'd101: r_c <= 32'h478b009f;
|
7'd101: r_c <= 32'h478b009f;
|
7'd102: r_c <= 32'h473c009d;
|
7'd102: r_c <= 32'h473c009d;
|
7'd103: r_c <= 32'h46ed009c;
|
7'd103: r_c <= 32'h46ed009c;
|
7'd104: r_c <= 32'h469e009b;
|
7'd104: r_c <= 32'h469e009b;
|
7'd105: r_c <= 32'h46510099;
|
7'd105: r_c <= 32'h46510099;
|
7'd106: r_c <= 32'h46040098;
|
7'd106: r_c <= 32'h46040098;
|
7'd107: r_c <= 32'h45b80097;
|
7'd107: r_c <= 32'h45b80097;
|
7'd108: r_c <= 32'h456c0095;
|
7'd108: r_c <= 32'h456c0095;
|
7'd109: r_c <= 32'h45210094;
|
7'd109: r_c <= 32'h45210094;
|
7'd110: r_c <= 32'h44d70093;
|
7'd110: r_c <= 32'h44d70093;
|
7'd111: r_c <= 32'h448d0092;
|
7'd111: r_c <= 32'h448d0092;
|
7'd112: r_c <= 32'h44440091;
|
7'd112: r_c <= 32'h44440091;
|
7'd113: r_c <= 32'h43fb008f;
|
7'd113: r_c <= 32'h43fb008f;
|
7'd114: r_c <= 32'h43b3008e;
|
7'd114: r_c <= 32'h43b3008e;
|
7'd115: r_c <= 32'h436c008d;
|
7'd115: r_c <= 32'h436c008d;
|
7'd116: r_c <= 32'h4325008c;
|
7'd116: r_c <= 32'h4325008c;
|
7'd117: r_c <= 32'h42df008b;
|
7'd117: r_c <= 32'h42df008b;
|
7'd118: r_c <= 32'h429a008a;
|
7'd118: r_c <= 32'h429a008a;
|
7'd119: r_c <= 32'h42540088;
|
7'd119: r_c <= 32'h42540088;
|
7'd120: r_c <= 32'h42100087;
|
7'd120: r_c <= 32'h42100087;
|
7'd121: r_c <= 32'h41cc0086;
|
7'd121: r_c <= 32'h41cc0086;
|
7'd122: r_c <= 32'h41890085;
|
7'd122: r_c <= 32'h41890085;
|
7'd123: r_c <= 32'h41460084;
|
7'd123: r_c <= 32'h41460084;
|
7'd124: r_c <= 32'h41040083;
|
7'd124: r_c <= 32'h41040083;
|
7'd125: r_c <= 32'h40c20082;
|
7'd125: r_c <= 32'h40c20082;
|
7'd126: r_c <= 32'h40810081;
|
7'd126: r_c <= 32'h40810081;
|
7'd127: r_c <= 32'h40400080;
|
7'd127: r_c <= 32'h40400080;
|
default: r_c <= 32'h0;
|
default: r_c <= 32'h0;
|
endcase
|
endcase
|
end
|
end
|
|
|
|
|
endmodule
|
endmodule
|
|
|