Dear Sir, I have written LU Decomposition code for 8X8 matrix in MATLAB and converted into VHDL using HDL coder but when I am synthesizing it it is demanding more FPGA pins that my FPGA has, even my FPGA is having more than 600 pins.
이전 댓글 표시
When I did LU Decomposition in MATLAB, my L and U matrices have -ve as well as floating point numbers. I have converted the MATLAB code into VHDL using HDL Coder while choosing the option "convert to fix point at build time" . When I am synthesizing it is asking more FPGA pins and not getting synthesized. Please suggest how can I make my code synthesized? I am attaching code:
LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; USE IEEE.numeric_std.ALL; USE work.LUDecomposition_fixpt_pkg.ALL;
ENTITY LUDecomposition_fixpt IS PORT( a11 : IN std_logic_vector(2 DOWNTO 0); -- ufix3 a12 : IN std_logic_vector(3 DOWNTO 0); -- ufix4 a13 : IN std_logic_vector(3 DOWNTO 0); -- ufix4 a14 : IN std_logic_vector(2 DOWNTO 0); -- ufix3 a15 : IN std_logic_vector(3 DOWNTO 0); -- ufix4 a16 : IN std_logic_vector(3 DOWNTO 0); -- ufix4 a17 : IN std_logic_vector(2 DOWNTO 0); -- ufix3 a18 : IN std_logic_vector(3 DOWNTO 0); -- ufix4 a21 : IN std_logic_vector(2 DOWNTO 0); -- ufix3 a22 : IN std_logic_vector(4 DOWNTO 0); -- ufix5 a23 : IN std_logic_vector(4 DOWNTO 0); -- ufix5 a24 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a25 : IN std_logic_vector(3 DOWNTO 0); -- ufix4 a26 : IN std_logic_vector(7 DOWNTO 0); -- ufix8 a27 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a28 : IN std_logic_vector(3 DOWNTO 0); -- ufix4 a31 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a32 : IN std_logic_vector(3 DOWNTO 0); -- ufix4 a33 : IN std_logic_vector(3 DOWNTO 0); -- ufix4 a34 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a35 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a36 : IN std_logic_vector(3 DOWNTO 0); -- ufix4 a37 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a38 : IN std_logic_vector(3 DOWNTO 0); -- ufix4 a41 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a42 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a43 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a44 : IN std_logic_vector(6 DOWNTO 0); -- ufix7 a45 : IN std_logic_vector(6 DOWNTO 0); -- ufix7 a46 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a47 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a48 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a51 : IN std_logic_vector(4 DOWNTO 0); -- ufix5 a52 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a53 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a54 : IN std_logic_vector(4 DOWNTO 0); -- ufix5 a55 : IN std_logic_vector(7 DOWNTO 0); -- ufix8 a56 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a57 : IN std_logic_vector(4 DOWNTO 0); -- ufix5 a58 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a61 : IN std_logic_vector(4 DOWNTO 0); -- ufix5 a62 : IN std_logic_vector(4 DOWNTO 0); -- ufix5 a63 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a64 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a65 : IN std_logic_vector(4 DOWNTO 0); -- ufix5 a66 : IN std_logic_vector(3 DOWNTO 0); -- ufix4 a67 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a68 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a71 : IN std_logic_vector(3 DOWNTO 0); -- ufix4 a72 : IN std_logic_vector(4 DOWNTO 0); -- ufix5 a73 : IN std_logic_vector(4 DOWNTO 0); -- ufix5 a74 : IN std_logic_vector(2 DOWNTO 0); -- ufix3 a75 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a76 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a77 : IN std_logic_vector(4 DOWNTO 0); -- ufix5 a78 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a81 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a82 : IN std_logic_vector(2 DOWNTO 0); -- ufix3 a83 : IN std_logic_vector(6 DOWNTO 0); -- ufix7 a84 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a85 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a86 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a87 : IN std_logic_vector(5 DOWNTO 0); -- ufix6 a88 : IN std_logic_vector(6 DOWNTO 0); -- ufix7 LU1 : OUT std_logic_vector(17 DOWNTO 0); -- ufix18_En10 LM : OUT vector_of_signed24(0 TO 63); -- ufix4 UM : OUT vector_of_signed24(0 TO 63); clock : in std_logic ); END LUDecomposition_fixpt;
ARCHITECTURE rtl OF LUDecomposition_fixpt IS
-- Constants
CONSTANT nc : vector_of_signed24(0 TO 63) := (to_signed(16#000400#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000400#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000400#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000400#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000400#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000400#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000400#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000000#, 24),
to_signed(16#000400#, 24)); -- sfix24 [64]
CONSTANT C_divbyzero_p : signed(47 DOWNTO 0) := signed'(X"7FFFFFFFFFFF"); -- sfix48
CONSTANT C_divbyzero_n : signed(47 DOWNTO 0) := signed'(X"800000000000"); -- sfix48
CONSTANT c_divbyzero_p_0 : signed(42 DOWNTO 0) := signed'("0111111111111111111111111111111111111111111"); -- sfix43
CONSTANT c_divbyzero_n_0 : signed(42 DOWNTO 0) := signed'("1000000000000000000000000000000000000000000"); -- sfix43
-- Signals
SIGNAL a11_unsigned : unsigned(2 DOWNTO 0); -- ufix3
SIGNAL a12_unsigned : unsigned(3 DOWNTO 0); -- ufix4
SIGNAL a13_unsigned : unsigned(3 DOWNTO 0); -- ufix4
SIGNAL a14_unsigned : unsigned(2 DOWNTO 0); -- ufix3
SIGNAL a15_unsigned : unsigned(3 DOWNTO 0); -- ufix4
SIGNAL a16_unsigned : unsigned(3 DOWNTO 0); -- ufix4
SIGNAL a17_unsigned : unsigned(2 DOWNTO 0); -- ufix3
SIGNAL a18_unsigned : unsigned(3 DOWNTO 0); -- ufix4
SIGNAL a21_unsigned : unsigned(2 DOWNTO 0); -- ufix3
SIGNAL a22_unsigned : unsigned(4 DOWNTO 0); -- ufix5
SIGNAL a23_unsigned : unsigned(4 DOWNTO 0); -- ufix5
SIGNAL a24_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a25_unsigned : unsigned(3 DOWNTO 0); -- ufix4
SIGNAL a26_unsigned : unsigned(7 DOWNTO 0); -- ufix8
SIGNAL a27_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a28_unsigned : unsigned(3 DOWNTO 0); -- ufix4
SIGNAL a31_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a32_unsigned : unsigned(3 DOWNTO 0); -- ufix4
SIGNAL a33_unsigned : unsigned(3 DOWNTO 0); -- ufix4
SIGNAL a34_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a35_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a36_unsigned : unsigned(3 DOWNTO 0); -- ufix4
SIGNAL a37_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a38_unsigned : unsigned(3 DOWNTO 0); -- ufix4
SIGNAL a41_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a42_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a43_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a44_unsigned : unsigned(6 DOWNTO 0); -- ufix7
SIGNAL a45_unsigned : unsigned(6 DOWNTO 0); -- ufix7
SIGNAL a46_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a47_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a48_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a51_unsigned : unsigned(4 DOWNTO 0); -- ufix5
SIGNAL a52_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a53_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a54_unsigned : unsigned(4 DOWNTO 0); -- ufix5
SIGNAL a55_unsigned : unsigned(7 DOWNTO 0); -- ufix8
SIGNAL a56_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a57_unsigned : unsigned(4 DOWNTO 0); -- ufix5
SIGNAL a58_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a61_unsigned : unsigned(4 DOWNTO 0); -- ufix5
SIGNAL a62_unsigned : unsigned(4 DOWNTO 0); -- ufix5
SIGNAL a63_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a64_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a65_unsigned : unsigned(4 DOWNTO 0); -- ufix5
SIGNAL a66_unsigned : unsigned(3 DOWNTO 0); -- ufix4
SIGNAL a67_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a68_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a71_unsigned : unsigned(3 DOWNTO 0); -- ufix4
SIGNAL a72_unsigned : unsigned(4 DOWNTO 0); -- ufix5
SIGNAL a73_unsigned : unsigned(4 DOWNTO 0); -- ufix5
SIGNAL a74_unsigned : unsigned(2 DOWNTO 0); -- ufix3
SIGNAL a75_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a76_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a77_unsigned : unsigned(4 DOWNTO 0); -- ufix5
SIGNAL a78_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a81_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a82_unsigned : unsigned(2 DOWNTO 0); -- ufix3
SIGNAL a83_unsigned : unsigned(6 DOWNTO 0); -- ufix7
SIGNAL a84_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a85_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a86_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a87_unsigned : unsigned(5 DOWNTO 0); -- ufix6
SIGNAL a88_unsigned : unsigned(6 DOWNTO 0); -- ufix7
SIGNAL LU1_tmp : unsigned(17 DOWNTO 0); -- ufix18_En10
BEGIN a11_unsigned <= unsigned(a11);
a12_unsigned <= unsigned(a12);
a13_unsigned <= unsigned(a13);
a14_unsigned <= unsigned(a14);
a15_unsigned <= unsigned(a15);
a16_unsigned <= unsigned(a16);
a17_unsigned <= unsigned(a17);
a18_unsigned <= unsigned(a18);
a21_unsigned <= unsigned(a21);
a22_unsigned <= unsigned(a22);
a23_unsigned <= unsigned(a23);
a24_unsigned <= unsigned(a24);
a25_unsigned <= unsigned(a25);
a26_unsigned <= unsigned(a26);
a27_unsigned <= unsigned(a27);
a28_unsigned <= unsigned(a28);
a31_unsigned <= unsigned(a31);
a32_unsigned <= unsigned(a32);
a33_unsigned <= unsigned(a33);
a34_unsigned <= unsigned(a34);
a35_unsigned <= unsigned(a35);
a36_unsigned <= unsigned(a36);
a37_unsigned <= unsigned(a37);
a38_unsigned <= unsigned(a38);
a41_unsigned <= unsigned(a41);
a42_unsigned <= unsigned(a42);
a43_unsigned <= unsigned(a43);
a44_unsigned <= unsigned(a44);
a45_unsigned <= unsigned(a45);
a46_unsigned <= unsigned(a46);
a47_unsigned <= unsigned(a47);
a48_unsigned <= unsigned(a48);
a51_unsigned <= unsigned(a51);
a52_unsigned <= unsigned(a52);
a53_unsigned <= unsigned(a53);
a54_unsigned <= unsigned(a54);
a55_unsigned <= unsigned(a55);
a56_unsigned <= unsigned(a56);
a57_unsigned <= unsigned(a57);
a58_unsigned <= unsigned(a58);
a61_unsigned <= unsigned(a61);
a62_unsigned <= unsigned(a62);
a63_unsigned <= unsigned(a63);
a64_unsigned <= unsigned(a64);
a65_unsigned <= unsigned(a65);
a66_unsigned <= unsigned(a66);
a67_unsigned <= unsigned(a67);
a68_unsigned <= unsigned(a68);
a71_unsigned <= unsigned(a71);
a72_unsigned <= unsigned(a72);
a73_unsigned <= unsigned(a73);
a74_unsigned <= unsigned(a74);
a75_unsigned <= unsigned(a75);
a76_unsigned <= unsigned(a76);
a77_unsigned <= unsigned(a77);
a78_unsigned <= unsigned(a78);
a81_unsigned <= unsigned(a81);
a82_unsigned <= unsigned(a82);
a83_unsigned <= unsigned(a83);
a84_unsigned <= unsigned(a84);
a85_unsigned <= unsigned(a85);
a86_unsigned <= unsigned(a86);
a87_unsigned <= unsigned(a87);
a88_unsigned <= unsigned(a88);
LUDecomposition_fixpt_1_output : PROCESS (a11_unsigned, a12_unsigned, a13_unsigned, a14_unsigned, a15_unsigned,
a16_unsigned, a17_unsigned, a18_unsigned, a21_unsigned, a22_unsigned,
a23_unsigned, a24_unsigned, a25_unsigned, a26_unsigned, a27_unsigned,
a28_unsigned, a31_unsigned, a32_unsigned, a33_unsigned, a34_unsigned,
a35_unsigned, a36_unsigned, a37_unsigned, a38_unsigned, a41_unsigned,
a42_unsigned, a43_unsigned, a44_unsigned, a45_unsigned, a46_unsigned,
a47_unsigned, a48_unsigned, a51_unsigned, a52_unsigned, a53_unsigned,
a54_unsigned, a55_unsigned, a56_unsigned, a57_unsigned, a58_unsigned,
a61_unsigned, a62_unsigned, a63_unsigned, a64_unsigned, a65_unsigned,
a66_unsigned, a67_unsigned, a68_unsigned, a71_unsigned, a72_unsigned,
a73_unsigned, a74_unsigned, a75_unsigned, a76_unsigned, a77_unsigned,
a78_unsigned, a81_unsigned, a82_unsigned, a83_unsigned, a84_unsigned,
a85_unsigned, a86_unsigned, a87_unsigned, a88_unsigned,clock)
VARIABLE A : vector_of_unsigned8(0 TO 63);
VARIABLE L : vector_of_signed24(0 TO 63);
VARIABLE U : vector_of_signed24(0 TO 63);
VARIABLE l_0 : vector_of_signed24(0 TO 63);
VARIABLE l_1 : vector_of_signed24(0 TO 63);
VARIABLE c : vector_of_signed51(0 TO 63);
VARIABLE LU : vector_of_unsigned18(0 TO 63);
VARIABLE LU11 : unsigned(17 DOWNTO 0);
VARIABLE j : unsigned(3 DOWNTO 0);
VARIABLE j_1 : unsigned(3 DOWNTO 0);
VARIABLE j_3 : signed(5 DOWNTO 0);
VARIABLE t_0 : unsigned(3 DOWNTO 0);
VARIABLE tmp : unsigned(4 DOWNTO 0);
VARIABLE tmp_0 : unsigned(4 DOWNTO 0);
VARIABLE add_temp : unsigned(4 DOWNTO 0);
VARIABLE tmp_1 : unsigned(3 DOWNTO 0);
VARIABLE tmp_2 : unsigned(4 DOWNTO 0);
VARIABLE tmp_3 : unsigned(4 DOWNTO 0);
VARIABLE tmp_4 : unsigned(4 DOWNTO 0);
VARIABLE u_0 : vector_of_signed24(0 TO 63);
VARIABLE j_5 : signed(5 DOWNTO 0);
VARIABLE t_1 : unsigned(3 DOWNTO 0);
VARIABLE tmp_5 : unsigned(4 DOWNTO 0);
VARIABLE tmp_6 : unsigned(4 DOWNTO 0);
VARIABLE add_temp_0 : unsigned(4 DOWNTO 0);
VARIABLE tmp_7 : unsigned(3 DOWNTO 0);
VARIABLE tmp_8 : unsigned(4 DOWNTO 0);
VARIABLE tmp_9 : unsigned(4 DOWNTO 0);
VARIABLE tmp_10 : unsigned(4 DOWNTO 0);
VARIABLE k_3 : signed(5 DOWNTO 0);
VARIABLE ii : unsigned(3 DOWNTO 0);
VARIABLE l_3 : vector_of_signed24(0 TO 6);
VARIABLE div_temp : vector_of_signed43(0 TO 6);
VARIABLE l_4 : vector_of_signed24(0 TO 8);
VARIABLE div_temp_0 : vector_of_signed48(0 TO 8);
VARIABLE l_5 : vector_of_signed24(0 TO 8);
VARIABLE div_temp_1 : vector_of_signed48(0 TO 8);
VARIABLE add_temp_1 : vector_of_signed32(0 TO 6);
VARIABLE sub_cast : vector_of_signed32(0 TO 6);
VARIABLE sub_cast_0 : vector_of_signed32(0 TO 6);
VARIABLE add_temp_2 : vector_of_signed32(0 TO 6);
VARIABLE sub_cast_1 : vector_of_signed32(0 TO 6);
VARIABLE sub_cast_2 : vector_of_signed32(0 TO 6);
VARIABLE sub_cast_3 : vector_of_signed32(0 TO 6);
VARIABLE slice_cast : vector_of_signed9(0 TO 6);
VARIABLE slice_cast_0 : vector_of_signed43(0 TO 6);
VARIABLE slice_cast_1 : vector_of_signed43(0 TO 6);
VARIABLE sub_cast_4 : vector_of_signed32(0 TO 6);
VARIABLE cast : vector_of_signed9(0 TO 6);
VARIABLE cast_0 : vector_of_signed43(0 TO 6);
VARIABLE add_temp_3 : vector_of_signed32(0 TO 5);
VARIABLE sub_cast_5 : vector_of_signed32(0 TO 6);
VARIABLE cast_1 : vector_of_signed46(0 TO 6);
VARIABLE add_temp_4 : vector_of_signed32(0 TO 5);
VARIABLE sub_cast_6 : vector_of_unsigned4(0 TO 5);
VARIABLE sub_cast_7 : vector_of_unsigned4(0 TO 5);
VARIABLE sub_cast_8 : vector_of_unsigned4(0 TO 5);
VARIABLE add_cast : vector_of_unsigned4(0 TO 5);
VARIABLE add_temp_5 : vector_of_signed32(0 TO 6);
VARIABLE sub_cast_9 : vector_of_unsigned4(0 TO 5);
VARIABLE sub_cast_10 : vector_of_signed49(0 TO 6);
VARIABLE mul_temp : vector_of_signed48(0 TO 6);
VARIABLE sub_cast_11 : vector_of_signed49(0 TO 6);
VARIABLE sub_temp : vector_of_signed49(0 TO 6);
VARIABLE add_cast_0 : vector_of_unsigned4(0 TO 5);
VARIABLE cast_2 : vector_of_signed32(0 TO 8);
VARIABLE add_cast_1 : vector_of_signed32(0 TO 8);
VARIABLE add_cast_2 : vector_of_signed32(0 TO 8);
VARIABLE cast_3 : vector_of_signed32(0 TO 8);
VARIABLE cast_4 : vector_of_signed32(0 TO 8);
VARIABLE add_cast_3 : vector_of_signed32(0 TO 8);
VARIABLE add_cast_4 : vector_of_signed32(0 TO 8);
VARIABLE sub_cast_12 : vector_of_signed32(0 TO 8);
VARIABLE sub_cast_13 : vector_of_signed32(0 TO 8);
VARIABLE cast_5 : vector_of_signed32(0 TO 8);
VARIABLE add_temp_6 : vector_of_signed32(0 TO 30);
VARIABLE add_cast_5 : vector_of_signed64(0 TO 7);
VARIABLE add_cast_6 : vector_of_signed64(0 TO 7);
VARIABLE add_cast_7 : vector_of_signed52(0 TO 7);
VARIABLE add_cast_8 : vector_of_signed64(0 TO 7);
VARIABLE add_cast_9 : vector_of_signed64(0 TO 7);
VARIABLE mul_temp_0 : vector_of_signed48(0 TO 7);
VARIABLE add_cast_10 : vector_of_signed52(0 TO 7);
VARIABLE add_temp_7 : vector_of_signed52(0 TO 7);
VARIABLE sub_cast_14 : vector_of_signed32(0 TO 8);
VARIABLE sub_cast_15 : vector_of_signed32(0 TO 8);
VARIABLE cast_6 : vector_of_signed32(0 TO 30);
VARIABLE add_temp_8 : vector_of_signed32(0 TO 7);
VARIABLE add_temp_9 : vector_of_signed32(0 TO 30);
VARIABLE add_temp_10 : vector_of_signed32(0 TO 30);
VARIABLE add_cast_11 : vector_of_signed32(0 TO 30);
VARIABLE add_cast_12 : vector_of_signed32(0 TO 30);
VARIABLE sub_cast_16 : vector_of_signed49(0 TO 30);
VARIABLE add_cast_13 : vector_of_signed32(0 TO 30);
VARIABLE sub_cast_17 : vector_of_signed32(0 TO 30);
VARIABLE add_cast_14 : vector_of_signed32(0 TO 30);
VARIABLE mul_temp_1 : vector_of_signed48(0 TO 30);
VARIABLE sub_cast_18 : vector_of_signed49(0 TO 30);
VARIABLE sub_temp_0 : vector_of_signed49(0 TO 30);
VARIABLE cast_7 : vector_of_signed32(0 TO 30);
VARIABLE sub_cast_19 : vector_of_signed32(0 TO 8);
VARIABLE slice_cast_2 : vector_of_signed48(0 TO 8);
VARIABLE slice_cast_3 : vector_of_signed48(0 TO 8);
VARIABLE sub_cast_20 : vector_of_signed32(0 TO 8);
VARIABLE cast_8 : vector_of_signed48(0 TO 8);
VARIABLE cast_9 : vector_of_signed32(0 TO 30);
VARIABLE add_temp_11 : vector_of_signed32(0 TO 30);
VARIABLE add_cast_15 : vector_of_signed32(0 TO 30);
VARIABLE add_cast_16 : vector_of_signed32(0 TO 30);
VARIABLE sub_cast_21 : vector_of_signed49(0 TO 30);
VARIABLE add_cast_17 : vector_of_signed32(0 TO 30);
VARIABLE sub_cast_22 : vector_of_signed32(0 TO 30);
VARIABLE add_cast_18 : vector_of_signed32(0 TO 30);
VARIABLE mul_temp_2 : vector_of_signed48(0 TO 30);
VARIABLE sub_cast_23 : vector_of_signed49(0 TO 30);
VARIABLE sub_temp_1 : vector_of_signed49(0 TO 30);
VARIABLE sub_cast_24 : vector_of_signed32(0 TO 8);
VARIABLE cast_10 : vector_of_signed62(0 TO 8);
VARIABLE sub_cast_25 : vector_of_signed32(0 TO 30);
VARIABLE sub_cast_26 : vector_of_signed32(0 TO 30);
VARIABLE sub_cast_27 : vector_of_signed49(0 TO 30);
VARIABLE sub_cast_28 : vector_of_signed32(0 TO 30);
VARIABLE add_cast_19 : vector_of_signed32(0 TO 30);
VARIABLE sub_cast_29 : vector_of_signed32(0 TO 30);
VARIABLE mul_temp_3 : vector_of_signed48(0 TO 30);
VARIABLE sub_cast_30 : vector_of_signed49(0 TO 30);
VARIABLE sub_temp_2 : vector_of_signed49(0 TO 30);
VARIABLE add_temp_12 : vector_of_signed32(0 TO 7);
VARIABLE add_cast_20 : vector_of_unsigned4(0 TO 7);
VARIABLE sub_cast_31 : vector_of_unsigned7(0 TO 7);
VARIABLE sub_cast_32 : vector_of_signed32(0 TO 7);
VARIABLE sub_cast_33 : vector_of_signed32(0 TO 8);
VARIABLE slice_cast_4 : vector_of_signed48(0 TO 8);
VARIABLE slice_cast_5 : vector_of_signed48(0 TO 8);
VARIABLE sub_cast_34 : vector_of_signed32(0 TO 8);
VARIABLE cast_11 : vector_of_signed48(0 TO 8);
VARIABLE cast_12 : vector_of_signed32(0 TO 30);
VARIABLE sub_cast_35 : vector_of_signed32(0 TO 8);
VARIABLE cast_13 : vector_of_signed62(0 TO 8);
VARIABLE sub_cast_36 : vector_of_signed32(0 TO 30);
VARIABLE sub_cast_37 : vector_of_signed32(0 TO 30);
VARIABLE sub_cast_38 : vector_of_signed49(0 TO 30);
VARIABLE sub_cast_39 : vector_of_signed32(0 TO 30);
VARIABLE add_cast_21 : vector_of_signed32(0 TO 30);
VARIABLE sub_cast_40 : vector_of_signed32(0 TO 30);
VARIABLE mul_temp_4 : vector_of_signed48(0 TO 30);
VARIABLE sub_cast_41 : vector_of_signed49(0 TO 30);
VARIABLE sub_temp_3 : vector_of_signed49(0 TO 30);
BEGIN
--HDL code generation from MATLAB function: LUDecomposition_fixpt
--%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-- %
-- Generated by MATLAB 8.5 and Fixed-Point Designer 5.0 %
-- %
--%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-- persistent ud1;
-- if isempty(ud1)
-- ud1 = zeros(9,1);
-- end
--
-- persistent cnt;
--
-- if isempty(cnt)
-- cnt = 0;
-- end
--
-- cnt = cnt + 1;
--
-- if cnt<=uint8(9)
-- ud1(cnt)=A;
-- end
--
-- %%%%%%%%%Start LU Decomposition without pivoting %%%%%%%%%%%%%
-- if (cnt==9)
-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-- a11=ud1(1);a12=ud1(2);a13=ud1(3);
-- a21=ud1(4);a22=ud1(5);a23=ud1(6);
-- a31=ud1(7);a32=ud1(8);a33=ud1(9);
-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-- A=[a11 a12 a13; a21 a22 a23; a31 a32 a33];
A(0) := resize(a11_unsigned, 8);
A(8) := resize(a12_unsigned, 8);
A(16) := resize(a13_unsigned, 8);
A(24) := resize(a14_unsigned, 8);
A(32) := resize(a15_unsigned, 8);
A(40) := resize(a16_unsigned, 8);
A(48) := resize(a17_unsigned, 8);
A(56) := resize(a18_unsigned, 8);
A(1) := resize(a21_unsigned, 8);
A(9) := resize(a22_unsigned, 8);
A(17) := resize(a23_unsigned, 8);
A(25) := resize(a24_unsigned, 8);
A(33) := resize(a25_unsigned, 8);
A(41) := a26_unsigned;
A(49) := resize(a27_unsigned, 8);
A(57) := resize(a28_unsigned, 8);
A(2) := resize(a31_unsigned, 8);
A(10) := resize(a32_unsigned, 8);
A(18) := resize(a33_unsigned, 8);
A(26) := resize(a34_unsigned, 8);
A(34) := resize(a35_unsigned, 8);
A(42) := resize(a36_unsigned, 8);
A(50) := resize(a37_unsigned, 8);
A(58) := resize(a38_unsigned, 8);
A(3) := resize(a41_unsigned, 8);
A(11) := resize(a42_unsigned, 8);
A(19) := resize(a43_unsigned, 8);
A(27) := resize(a44_unsigned, 8);
A(35) := resize(a45_unsigned, 8);
A(43) := resize(a46_unsigned, 8);
A(51) := resize(a47_unsigned, 8);
A(59) := resize(a48_unsigned, 8);
A(4) := resize(a51_unsigned, 8);
A(12) := resize(a52_unsigned, 8);
A(20) := resize(a53_unsigned, 8);
A(28) := resize(a54_unsigned, 8);
A(36) := a55_unsigned;
A(44) := resize(a56_unsigned, 8);
A(52) := resize(a57_unsigned, 8);
A(60) := resize(a58_unsigned, 8);
A(5) := resize(a61_unsigned, 8);
A(13) := resize(a62_unsigned, 8);
A(21) := resize(a63_unsigned, 8);
A(29) := resize(a64_unsigned, 8);
A(37) := resize(a65_unsigned, 8);
A(45) := resize(a66_unsigned, 8);
A(53) := resize(a67_unsigned, 8);
A(61) := resize(a68_unsigned, 8);
A(6) := resize(a71_unsigned, 8);
A(14) := resize(a72_unsigned, 8);
A(22) := resize(a73_unsigned, 8);
A(30) := resize(a74_unsigned, 8);
A(38) := resize(a75_unsigned, 8);
A(46) := resize(a76_unsigned, 8);
A(54) := resize(a77_unsigned, 8);
A(62) := resize(a78_unsigned, 8);
A(7) := resize(a81_unsigned, 8);
A(15) := resize(a82_unsigned, 8);
A(23) := resize(a83_unsigned, 8);
A(31) := resize(a84_unsigned, 8);
A(39) := resize(a85_unsigned, 8);
A(47) := resize(a86_unsigned, 8);
A(55) := resize(a87_unsigned, 8);
A(63) := resize(a88_unsigned, 8);
-- n=3;
L := (OTHERS => to_signed(16#000000#, 24));
L(0) := signed(resize(A(0) & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 24));
l_0 := L;
if(clock='1' and clock'event) then
FOR j_0 IN 0 TO 6 LOOP
add_temp_1(j_0) := to_signed(j_0 + 2, 32);
j := unsigned(add_temp_1(j_0)(3 DOWNTO 0));
sub_cast(j_0) := signed(resize(j, 32));
sub_cast_0(j_0) := signed(resize(j, 32));
l_0(to_integer(sub_cast(j_0) - 1)) := signed(resize(A(to_integer(sub_cast_0(j_0) - 1)) & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 24));
END LOOP;
U := nc;
FOR j_2 IN 0 TO 6 LOOP
add_temp_2(j_2) := to_signed(j_2 + 2, 32);
j_1 := unsigned(add_temp_2(j_2)(3 DOWNTO 0));
sub_cast_1(j_2) := signed(resize(j_1, 32));
sub_cast_2(j_2) := signed(resize(j_1, 32));
L(to_integer(sub_cast_1(j_2) - 1)) := signed(resize(A(to_integer(sub_cast_2(j_2) - 1)) & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 24));
l_3(j_2) := L(0);
sub_cast_3(j_2) := signed(resize(j_1, 32));
slice_cast(j_2) := signed(resize(A(to_integer(resize(8 * (sub_cast_3(j_2) - 1), 31))), 9));
slice_cast_0(j_2) := slice_cast(j_2) & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0';
IF slice_cast_0(j_2)(42) = l_3(j_2)(23) THEN
slice_cast_1(j_2) := c_divbyzero_p_0;
ELSE
slice_cast_1(j_2) := c_divbyzero_n_0;
END IF;
sub_cast_4(j_2) := signed(resize(j_1, 32));
cast(j_2) := signed(resize(A(to_integer(resize(8 * (sub_cast_4(j_2) - 1), 31))), 9));
cast_0(j_2) := cast(j_2) & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0';
IF l_3(j_2) = 0 THEN
div_temp(j_2) := slice_cast_1(j_2);
ELSE
div_temp(j_2) := cast_0(j_2) / l_3(j_2);
END IF;
sub_cast_5(j_2) := signed(resize(j_1, 32));
cast_1(j_2) := resize(div_temp(j_2), 46);
U(to_integer(resize(8 * (sub_cast_5(j_2) - 1), 31))) := cast_1(j_2)(37 DOWNTO 14);
END LOOP;
u_0 := U;
l_1 := l_0;
FOR j_4 IN 0 TO 5 LOOP
add_temp_3(j_4) := to_signed(j_4 + 2, 32);
j_3 := add_temp_3(j_4)(5 DOWNTO 0);
t_0 := unsigned(j_3(3 DOWNTO 0));
sub_cast_6(j_4) := unsigned(j_3(3 DOWNTO 0));
tmp := resize(sub_cast_6(j_4), 5) - to_unsigned(16#01#, 5);
sub_cast_7(j_4) := unsigned(j_3(3 DOWNTO 0));
tmp_0 := resize(sub_cast_7(j_4), 5) - to_unsigned(16#01#, 5);
add_cast(j_4) := unsigned(j_3(3 DOWNTO 0));
add_temp := resize(add_cast(j_4), 5) + to_unsigned(16#01#, 5);
FOR i IN 0 TO 8 LOOP
tmp_1 := unsigned(to_signed(i, 32)(3 DOWNTO 0));
cast_2(i) := signed(resize(t_0, 32));
IF to_signed(i, 32) >= cast_2(i) THEN
add_cast_1(i) := signed(resize(tmp_1, 32));
add_cast_2(i) := signed(resize(tmp_1, 32));
l_1(to_integer((add_cast_1(i) + resize(8 * (resize(j_3, 32) - 1), 32)) - 1)) := signed(resize(A(to_integer((add_cast_2(i) + resize(8 * (resize(j_3, 32) - 1), 32)) - 1)) & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 24));
FOR k IN 0 TO 30 LOOP
add_temp_6(k) := to_signed(k + 1, 32);
tmp_2 := unsigned(add_temp_6(k)(4 DOWNTO 0));
cast_6(k) := signed(resize(tmp_0, 32));
IF to_signed(k + 1, 32) <= cast_6(k) THEN
add_cast_11(k) := signed(resize(tmp_1, 32));
add_cast_12(k) := signed(resize(tmp_1, 32));
sub_cast_16(k) := resize(l_1(to_integer((add_cast_12(k) + resize(8 * (resize(j_3, 32) - 1), 32)) - 1)) & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 49);
add_cast_13(k) := signed(resize(tmp_1, 32));
sub_cast_17(k) := signed(resize(tmp_2, 32));
add_cast_14(k) := signed(resize(tmp_2, 32));
mul_temp_1(k) := l_1(to_integer((add_cast_13(k) + resize(8 * (sub_cast_17(k) - 1), 32)) - 1)) * u_0(to_integer((add_cast_14(k) + resize(8 * (resize(j_3, 32) - 1), 32)) - 1));
sub_cast_18(k) := resize(mul_temp_1(k), 49);
sub_temp_0(k) := sub_cast_16(k) - sub_cast_18(k);
l_1(to_integer((add_cast_11(k) + resize(8 * (resize(j_3, 32) - 1), 32)) - 1)) := sub_temp_0(k)(33 DOWNTO 10);
END IF;
END LOOP;
END IF;
END LOOP;
FOR i_0 IN 0 TO 30 LOOP
add_temp_10(i_0) := to_signed(i_0 + 1, 32);
tmp_4 := unsigned(add_temp_10(i_0)(4 DOWNTO 0));
cast_9(i_0) := signed(resize(tmp, 32));
IF to_signed(i_0 + 1, 32) <= cast_9(i_0) THEN
sub_cast_25(i_0) := signed(resize(tmp_3, 32));
sub_cast_26(i_0) := signed(resize(tmp_3, 32));
sub_cast_27(i_0) := resize(u_0(to_integer((resize(j_3, 32) + resize(8 * (sub_cast_26(i_0) - 1), 32)) - 1)) & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 49);
sub_cast_28(i_0) := signed(resize(tmp_4, 32));
add_cast_19(i_0) := signed(resize(tmp_4, 32));
sub_cast_29(i_0) := signed(resize(tmp_3, 32));
mul_temp_3(i_0) := l_1(to_integer((resize(j_3, 32) + resize(8 * (sub_cast_28(i_0) - 1), 32)) - 1)) * u_0(to_integer((add_cast_19(i_0) + resize(8 * (sub_cast_29(i_0) - 1), 32)) - 1));
sub_cast_30(i_0) := resize(mul_temp_3(i_0), 49);
sub_temp_2(i_0) := sub_cast_27(i_0) - sub_cast_30(i_0);
u_0(to_integer((resize(j_3, 32) + resize(8 * (sub_cast_25(i_0) - 1), 32)) - 1)) := sub_temp_2(i_0)(33 DOWNTO 10);
END IF;
END LOOP;
l_4(k_0) := l_1(to_integer((resize(j_3, 32) + resize(8 * (resize(j_3, 32) - 1), 32)) - 1));
sub_cast_19(k_0) := signed(resize(tmp_3, 32));
slice_cast_2(k_0) := u_0(to_integer((resize(j_3, 32) + resize(8 * (sub_cast_19(k_0) - 1), 32)) - 1)) & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0';
IF slice_cast_2(k_0)(47) = l_4(k_0)(23) THEN
slice_cast_3(k_0) := C_divbyzero_p;
ELSE
slice_cast_3(k_0) := C_divbyzero_n;
END IF;
sub_cast_20(k_0) := signed(resize(tmp_3, 32));
cast_8(k_0) := u_0(to_integer((resize(j_3, 32) + resize(8 * (sub_cast_20(k_0) - 1), 32)) - 1)) & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0';
IF l_4(k_0) = 0 THEN
div_temp_0(k_0) := slice_cast_3(k_0);
ELSE
div_temp_0(k_0) := cast_8(k_0) / l_4(k_0);
END IF;
sub_cast_24(k_0) := signed(resize(tmp_3, 32));
cast_10(k_0) := resize(div_temp_0(k_0), 62);
u_0(to_integer((resize(j_3, 32) + resize(8 * (sub_cast_24(k_0) - 1), 32)) - 1)) := cast_10(k_0)(37 DOWNTO 14);
END IF;
END LOOP;
END LOOP;
FOR j_6 IN 0 TO 5 LOOP
add_temp_4(j_6) := to_signed(j_6 + 2, 32);
j_5 := add_temp_4(j_6)(5 DOWNTO 0);
t_1 := unsigned(j_5(3 DOWNTO 0));
sub_cast_8(j_6) := unsigned(j_5(3 DOWNTO 0));
tmp_5 := resize(sub_cast_8(j_6), 5) - to_unsigned(16#01#, 5);
sub_cast_9(j_6) := unsigned(j_5(3 DOWNTO 0));
tmp_6 := resize(sub_cast_9(j_6), 5) - to_unsigned(16#01#, 5);
add_cast_0(j_6) := unsigned(j_5(3 DOWNTO 0));
add_temp_0 := resize(add_cast_0(j_6), 5) + to_unsigned(16#01#, 5);
FOR i_1 IN 0 TO 8 LOOP
tmp_7 := unsigned(to_signed(i_1, 32)(3 DOWNTO 0));
cast_3(i_1) := signed(resize(t_1, 32));
IF to_signed(i_1, 32) >= cast_3(i_1) THEN
add_cast_3(i_1) := signed(resize(tmp_7, 32));
add_cast_4(i_1) := signed(resize(tmp_7, 32));
l_0(to_integer((add_cast_3(i_1) + resize(8 * (resize(j_5, 32) - 1), 32)) - 1)) := signed(resize(A(to_integer((add_cast_4(i_1) + resize(8 * (resize(j_5, 32) - 1), 32)) - 1)) & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 24));
FOR k_1 IN 0 TO 30 LOOP
add_temp_9(k_1) := to_signed(k_1 + 1, 32);
tmp_8 := unsigned(add_temp_9(k_1)(4 DOWNTO 0));
cast_7(k_1) := signed(resize(tmp_6, 32));
IF to_signed(k_1 + 1, 32) <= cast_7(k_1) THEN
add_cast_15(k_1) := signed(resize(tmp_7, 32));
add_cast_16(k_1) := signed(resize(tmp_7, 32));
sub_cast_21(k_1) := resize(l_0(to_integer((add_cast_16(k_1) + resize(8 * (resize(j_5, 32) - 1), 32)) - 1)) & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 49);
add_cast_17(k_1) := signed(resize(tmp_7, 32));
sub_cast_22(k_1) := signed(resize(tmp_8, 32));
add_cast_18(k_1) := signed(resize(tmp_8, 32));
mul_temp_2(k_1) := l_0(to_integer((add_cast_17(k_1) + resize(8 * (sub_cast_22(k_1) - 1), 32)) - 1)) * U(to_integer((add_cast_18(k_1) + resize(8 * (resize(j_5, 32) - 1), 32)) - 1));
sub_cast_23(k_1) := resize(mul_temp_2(k_1), 49);
sub_temp_1(k_1) := sub_cast_21(k_1) - sub_cast_23(k_1);
l_0(to_integer((add_cast_15(k_1) + resize(8 * (resize(j_5, 32) - 1), 32)) - 1)) := sub_temp_1(k_1)(33 DOWNTO 10);
END IF;
END LOOP;
END IF;
END LOOP;
FOR k_2 IN 0 TO 8 LOOP
tmp_9 := unsigned(to_signed(k_2, 32)(4 DOWNTO 0));
cast_5(k_2) := signed(resize(add_temp_0, 32));
IF to_signed(k_2, 32) >= cast_5(k_2) THEN
sub_cast_14(k_2) := signed(resize(tmp_9, 32));
sub_cast_15(k_2) := signed(resize(tmp_9, 32));
U(to_integer((resize(j_5, 32) + resize(8 * (sub_cast_14(k_2) - 1), 32)) - 1)) := signed(resize(A(to_integer((resize(j_5, 32) + resize(8 * (sub_cast_15(k_2) - 1), 32)) - 1)) & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 24));
FOR i_2 IN 0 TO 30 LOOP
add_temp_11(i_2) := to_signed(i_2 + 1, 32);
tmp_10 := unsigned(add_temp_11(i_2)(4 DOWNTO 0));
cast_12(i_2) := signed(resize(tmp_5, 32));
IF to_signed(i_2 + 1, 32) <= cast_12(i_2) THEN
sub_cast_36(i_2) := signed(resize(tmp_9, 32));
sub_cast_37(i_2) := signed(resize(tmp_9, 32));
sub_cast_38(i_2) := resize(U(to_integer((resize(j_5, 32) + resize(8 * (sub_cast_37(i_2) - 1), 32)) - 1)) & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 49);
sub_cast_39(i_2) := signed(resize(tmp_10, 32));
add_cast_21(i_2) := signed(resize(tmp_10, 32));
sub_cast_40(i_2) := signed(resize(tmp_9, 32));
mul_temp_4(i_2) := l_0(to_integer((resize(j_5, 32) + resize(8 * (sub_cast_39(i_2) - 1), 32)) - 1)) * U(to_integer((add_cast_21(i_2) + resize(8 * (sub_cast_40(i_2) - 1), 32)) - 1));
sub_cast_41(i_2) := resize(mul_temp_4(i_2), 49);
sub_temp_3(i_2) := sub_cast_38(i_2) - sub_cast_41(i_2);
U(to_integer((resize(j_5, 32) + resize(8 * (sub_cast_36(i_2) - 1), 32)) - 1)) := sub_temp_3(i_2)(33 DOWNTO 10);
END IF;
END LOOP;
l_5(k_2) := l_0(to_integer((resize(j_5, 32) + resize(8 * (resize(j_5, 32) - 1), 32)) - 1));
sub_cast_33(k_2) := signed(resize(tmp_9, 32));
slice_cast_4(k_2) := U(to_integer((resize(j_5, 32) + resize(8 * (sub_cast_33(k_2) - 1), 32)) - 1)) & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0';
IF slice_cast_4(k_2)(47) = l_5(k_2)(23) THEN
slice_cast_5(k_2) := C_divbyzero_p;
ELSE
slice_cast_5(k_2) := C_divbyzero_n;
END IF;
sub_cast_34(k_2) := signed(resize(tmp_9, 32));
cast_11(k_2) := U(to_integer((resize(j_5, 32) + resize(8 * (sub_cast_34(k_2) - 1), 32)) - 1)) & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0';
IF l_5(k_2) = 0 THEN
div_temp_1(k_2) := slice_cast_5(k_2);
ELSE
div_temp_1(k_2) := cast_11(k_2) / l_5(k_2);
END IF;
sub_cast_35(k_2) := signed(resize(tmp_9, 32));
cast_13(k_2) := resize(div_temp_1(k_2), 62);
U(to_integer((resize(j_5, 32) + resize(8 * (sub_cast_35(k_2) - 1), 32)) - 1)) := cast_13(k_2)(37 DOWNTO 14);
END IF;
END LOOP;
END LOOP;
l_1(63) := signed(resize(A(63) & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 24));
FOR k_4 IN 0 TO 6 LOOP
add_temp_5(k_4) := to_signed(k_4 + 1, 32);
k_3 := add_temp_5(k_4)(5 DOWNTO 0);
sub_cast_10(k_4) := resize(l_1(63) & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0' & '0', 49);
mul_temp(k_4) := l_1(to_integer(7 + resize(8 * (resize(k_3, 32) - 1), 32))) * U(to_integer(resize(k_3, 32) + 55));
sub_cast_11(k_4) := resize(mul_temp(k_4), 49);
sub_temp(k_4) := sub_cast_10(k_4) - sub_cast_11(k_4);
l_1(63) := sub_temp(k_4)(33 DOWNTO 10);
END LOOP;
c := (OTHERS => to_signed(0, 51));
FOR l_2 IN 0 TO 7 LOOP
FOR m IN 0 TO 7 LOOP
FOR k_5 IN 0 TO 7 LOOP
add_cast_5(k_5) := resize(to_signed(m, 32) & '0' & '0' & '0', 64);
add_cast_6(k_5) := resize(to_signed(m, 32) & '0' & '0' & '0', 64);
add_cast_7(k_5) := resize(c(to_integer(to_signed(l_2, 32) + resize(add_cast_6(k_5), 32))), 52);
add_cast_8(k_5) := resize(to_signed(k_5, 32) & '0' & '0' & '0', 64);
add_cast_9(k_5) := resize(to_signed(m, 32) & '0' & '0' & '0', 64);
mul_temp_0(k_5) := l_1(to_integer(to_signed(l_2, 32) + resize(add_cast_8(k_5), 32))) * U(to_integer(to_signed(k_5, 32) + resize(add_cast_9(k_5), 32)));
add_cast_10(k_5) := resize(mul_temp_0(k_5), 52);
add_temp_7(k_5) := add_cast_7(k_5) + add_cast_10(k_5);
c(to_integer(to_signed(l_2, 32) + resize(add_cast_5(k_5), 32))) := add_temp_7(k_5)(50 DOWNTO 0);
END LOOP;
END LOOP;
END LOOP;
FOR t_2 IN 0 TO 63 LOOP
LU(t_2) := unsigned(c(t_2)(27 DOWNTO 10));
END LOOP;
LU11 := to_unsigned(16#00000#, 18);
FOR ii_0 IN 0 TO 7 LOOP
add_temp_8(ii_0) := to_signed(ii_0 + 1, 32);
ii := unsigned(add_temp_8(ii_0)(3 DOWNTO 0));
FOR jj IN 0 TO 7 LOOP
add_temp_12(jj) := to_signed(jj + 1, 32);
add_cast_20(jj) := unsigned(add_temp_12(jj)(3 DOWNTO 0));
sub_cast_31(jj) := resize(resize(to_unsigned(16#8#, 4) * (resize(ii, 5) - to_unsigned(16#01#, 5)), 10) + resize(add_cast_20(jj), 10), 7);
sub_cast_32(jj) := signed(resize(sub_cast_31(jj), 32));
LU11 := LU(to_integer(sub_cast_32(jj) - 1));
END LOOP;
END LOOP;
LM<=l_0;
UM<=u_0;
LU1_tmp <= LU11;
end if;
END PROCESS LUDecomposition_fixpt_1_output;
LU1 <= std_logic_vector(LU1_tmp);
END rtl;
채택된 답변
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Develop Apps Using App Designer에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!