From 4f3af62b15f1a5a458878fce1c02b9e6d629fb3d Mon Sep 17 00:00:00 2001 From: Pavel Pisa Date: Sun, 7 Dec 2014 00:28:29 +0100 Subject: [PATCH] Approximated function block changed to used signed 18x18 multiply of DSP48A1. Signed-off-by: Pavel Pisa --- hw/lx-fncapprox/lx_fncapprox.vhd | 40 +- hw/lx-fncapprox/lx_fncapprox_dsp48.vhd | 10 +- hw/lx-fncapprox/lx_fncapprox_pkg.vhd | 1 - hw/lx-fncapprox/reci_tab_a.lut | 512 ++++++++++++------------- hw/lx-fncapprox/reci_tab_bc.lut | 512 ++++++++++++------------- hw/lx-fncapprox/sin_tab_a.lut | 256 ++++++------- hw/lx-fncapprox/sin_tab_bc.lut | 256 ++++++------- 7 files changed, 789 insertions(+), 798 deletions(-) diff --git a/hw/lx-fncapprox/lx_fncapprox.vhd b/hw/lx-fncapprox/lx_fncapprox.vhd index b7d2128..26732a7 100644 --- a/hw/lx-fncapprox/lx_fncapprox.vhd +++ b/hw/lx-fncapprox/lx_fncapprox.vhd @@ -20,8 +20,8 @@ entity lx_fncapprox is ); end lx_fncapprox; --- reciproc ... a - (b - c * x) * x --- sin ... a + (b - c * x) * x +-- reciproc ... a + (b + c * x) * x +-- sin ... a + (b + c * x) * x architecture Behavioral of lx_fncapprox is @@ -37,7 +37,7 @@ architecture Behavioral of lx_fncapprox is constant reci_tab_bits : natural := 8; constant sin_tab_bits : natural := 7; constant approx_frac_bits : natural := 18; - constant approx_tab_b_shift : natural := 9; + constant approx_tab_b_shift : natural := 8; constant approx_tab_c_shift : natural := 25; constant approx_lo_used_bit : natural := 31 - approx_top_bits - approx_frac_bits + 1; @@ -52,7 +52,6 @@ architecture Behavioral of lx_fncapprox is signal dsp48_a_s : std_logic_vector(17 downto 0); signal dsp48_b_s : std_logic_vector(17 downto 0); signal dsp48_c_s : std_logic_vector(47 downto 0); - signal dsp48_add_sub_x_s : std_logic; signal dsp48_ce_s : std_logic; signal state_tab_s : state_fncapprox_t; @@ -103,7 +102,6 @@ approx_dsp48: lx_fncapprox_dsp48 A => dsp48_a_s, B => dsp48_b_s, C => dsp48_c_s, - ADD_SUB_X => dsp48_add_sub_x_s, CLK => clk_i, CE => dsp48_ce_s ); @@ -119,7 +117,8 @@ reci_tab_a : rom_table clk_i => clk_i, stb_i => reci_tab_a_stb_s, addr_i => reci_tab_idx_s, - data_o => reci_tab_a_data_s + data_o => reci_tab_a_data_s, + ack_o => open ); reci_tab_bc : rom_table @@ -133,7 +132,8 @@ reci_tab_bc : rom_table clk_i => clk_i, stb_i => reci_tab_bc_stb_s, addr_i => reci_tab_idx_s, - data_o => reci_tab_bc_data_s + data_o => reci_tab_bc_data_s, + ack_o => open ); sin_tab_a : rom_table @@ -147,7 +147,8 @@ sin_tab_a : rom_table clk_i => clk_i, stb_i => sin_tab_a_stb_s, addr_i => sin_tab_idx_s, - data_o => sin_tab_a_data_s + data_o => sin_tab_a_data_s, + ack_o => open ); sin_tab_bc : rom_table @@ -161,7 +162,8 @@ sin_tab_bc : rom_table clk_i => clk_i, stb_i => sin_tab_bc_stb_s, addr_i => sin_tab_idx_s, - data_o => sin_tab_bc_data_s + data_o => sin_tab_bc_data_s, + ack_o => open ); wire_in_and_next_state: @@ -204,6 +206,7 @@ function_tables_access: process(state_tab_r, argument_r) variable negate_arg_v : std_logic; variable arg_frac_is_zeros_v : std_logic; + variable approx_frac_v : std_logic_vector(approx_frac_bits-1 downto 0); begin -- init values reci_tab_idx_s <= (others => '-'); @@ -284,16 +287,18 @@ function_tables_access: negate_arg_v := not argument_r(30); end case; + approx_frac_v := argument_r(31 - approx_top_bits downto + 31 - approx_top_bits - approx_frac_bits + 1); + approx_frac_v(approx_frac_bits - 1) := not approx_frac_v(approx_frac_bits - 1); + if negate_arg_v = '0' then sin_tab_idx_s <= argument_r(29 downto 29 - sin_tab_bits + 1); - approx_frac_s <= argument_r(31 - approx_top_bits downto - 31 - approx_top_bits - approx_frac_bits + 1); + approx_frac_s <= approx_frac_v; else sin_tab_idx_s <= not argument_r(29 downto 29 - sin_tab_bits + 1); - approx_frac_s <= not argument_r(31 - approx_top_bits downto - 31 - approx_top_bits - approx_frac_bits + 1); + approx_frac_s <= not approx_frac_v; end if; end process; @@ -305,7 +310,6 @@ dsp48_computation: dsp48_a_s <= (others => '-'); dsp48_b_s <= (others => '-'); dsp48_c_s <= (others => '-'); - dsp48_add_sub_x_s <= '-'; dsp48_ce_s <= '0'; case state_dsp48_r is @@ -318,11 +322,10 @@ dsp48_computation: dsp48_c_s(approx_tab_c_shift - 1 downto 0) <= (others => '0'); dsp48_c_s(approx_tab_c_shift + 17 downto approx_tab_c_shift) <= reci_tab_bc_data_s(35 downto 18); - dsp48_c_s(47 downto approx_tab_c_shift + 18) <= (others => '0'); + dsp48_c_s(47 downto approx_tab_c_shift + 18) <= (others => reci_tab_bc_data_s(35)); dsp48_a_s <= reci_tab_bc_data_s(17 downto 0); dsp48_b_s <= approx_frac_r; - dsp48_add_sub_x_s <= '1'; dsp48_ce_s <= '1'; when ST_RECI1 => @@ -332,17 +335,15 @@ dsp48_computation: dsp48_a_s <= dsp48_p_s(approx_tab_c_shift + 17 downto approx_tab_c_shift); dsp48_b_s <= approx_frac_r; - dsp48_add_sub_x_s <= '1'; dsp48_ce_s <= '1'; when ST_SIN0 | ST_COS0 => dsp48_c_s(approx_tab_c_shift - 1 downto 0) <= (others => '0'); dsp48_c_s(approx_tab_c_shift + 17 downto approx_tab_c_shift) <= sin_tab_bc_data_s(35 downto 18); - dsp48_c_s(47 downto approx_tab_c_shift + 18) <= (others => '0'); + dsp48_c_s(47 downto approx_tab_c_shift + 18) <= (others => sin_tab_bc_data_s(35)); dsp48_a_s <= sin_tab_bc_data_s(17 downto 0); dsp48_b_s <= approx_frac_r; - dsp48_add_sub_x_s <= '1'; dsp48_ce_s <= '1'; when ST_SIN1 | ST_COS1 => @@ -352,7 +353,6 @@ dsp48_computation: dsp48_a_s <= dsp48_p_s(approx_tab_c_shift + 17 downto approx_tab_c_shift); dsp48_b_s <= approx_frac_r; - dsp48_add_sub_x_s <= '0'; dsp48_ce_s <= '1'; end case; diff --git a/hw/lx-fncapprox/lx_fncapprox_dsp48.vhd b/hw/lx-fncapprox/lx_fncapprox_dsp48.vhd index 230199c..c938f8b 100644 --- a/hw/lx-fncapprox/lx_fncapprox_dsp48.vhd +++ b/hw/lx-fncapprox/lx_fncapprox_dsp48.vhd @@ -11,28 +11,20 @@ entity lx_fncapprox_dsp48 is A : in std_logic_vector(17 downto 0) := (others => '0'); B : in std_logic_vector(17 downto 0) := (others => '0'); C : in std_logic_vector(47 downto 0) := (others => '0'); - ADD_SUB_X : in std_logic; CLK : in std_logic; CE : in std_logic ); end lx_fncapprox_dsp48; architecture Behavioral of lx_fncapprox_dsp48 is - signal P_s : std_logic_vector(47 downto 0); begin - P <= P_s; - update: process begin wait until CLK'event and CLK= '1' and CE = '1'; - if ADD_SUB_X = '1' then - P_s <= std_logic_vector(unsigned(C) - unsigned(A) * unsigned(B)); - else - P_s <= std_logic_vector(unsigned(C) + unsigned(A) * unsigned(B)); - end if; + P <= std_logic_vector(signed(C) + signed(A) * signed(B)); end process; end Behavioral; diff --git a/hw/lx-fncapprox/lx_fncapprox_pkg.vhd b/hw/lx-fncapprox/lx_fncapprox_pkg.vhd index b081da5..379f3af 100644 --- a/hw/lx-fncapprox/lx_fncapprox_pkg.vhd +++ b/hw/lx-fncapprox/lx_fncapprox_pkg.vhd @@ -31,7 +31,6 @@ package lx_fncapprox_pkg is A : in std_logic_vector(17 downto 0) := (others => '0'); B : in std_logic_vector(17 downto 0) := (others => '0'); C : in std_logic_vector(47 downto 0) := (others => '0'); - ADD_SUB_X : in std_logic; CLK : in std_logic; CE : in std_logic ); diff --git a/hw/lx-fncapprox/reci_tab_a.lut b/hw/lx-fncapprox/reci_tab_a.lut index 0a80905..239bb89 100644 --- a/hw/lx-fncapprox/reci_tab_a.lut +++ b/hw/lx-fncapprox/reci_tab_a.lut @@ -1,256 +1,256 @@ -100000000000000000000000000000000000 -011111111000000001111111100000001000 -011111110000000111111100000001111111 -011111101000010001110010101010000000 -011111100000011111100000011111100000 -011111011000110001000010101100101000 -011111010001000110010110011110010011 -011111001001011111011001000100001001 -011111000001111100000111110000011111 -011110111010011100011111111000010001 -011110110011000000011110110011000000 -011110101011101000000001111010101111 -011110100100010011000110101011111100 -011110011101000001101010100101100110 -011110010101110011101011001001000000 -011110001110101001000101111001110111 -011110000111100001111000011110001000 -011110000000011110000000011110000000 -011101111001011101011011100011111110 -011101110010100000000111011100101000 -011101101011100110000001110110101110 -011101100100101111001000100011001000 -011101011101111011011001010100101110 -011101010111001010110010000000011101 -011101010000011101010000011101010000 -011101001001110010110010100011111111 -011101000011001011010110001111011100 -011100111100100110111001011100010001 -011100110110000101011010001001000001 -011100101111100110110110010110000000 -011100101001001011001100000101011000 -011100100010110010011001011010111111 -011100011100011100011100011100011100 -011100010110001001010011010001000011 -011100001111111000111100000001110001 -011100001001101011010100111001001100 -011100000011100000011100000011100000 -011011111101011000001111101110100010 -011011110111010010101110001001100101 -011011110001001111110101100101100010 -011011101011001111100100010100110000 -011011100101010001111000101011000110 -011011011111010110110000111101110111 -011011011001011110001011100011110000 -011011010011101000000110110100111010 -011011001101110100100001001010110110 -011011001000000011011001000000011011 -011011000010010100101100110001110110 -011010111100101000011010111100101000 -011010110110111110100001111111100101 -011010110001010111000000011010110001 -011010101011110001110100101111100010 -011010100110001110111101100000011011 -011010100000101110011001010001001100 -011010011011010000000110100110110100 -011010010101110100000100000111011010 -011010010000011010010000011010010000 -011010001011000010101010000111110001 -011010000101101101001111111001011111 -011010000000011010000000011010000000 -011001111011001000111010010101000100 -011001110101111001111100010111011011 -011001110000101101000101001110111001 -011001101011100010010011101010010101 -011001100110011001100110011001100110 -011001100001010010111100001101100100 -011001011100001110010011111000000011 -011001010111001011101100001011111001 -011001010010001011000011111100110110 -011001001101001100011001111111100111 -011001001000001111101101001001110100 -011001000011010100111100010010000000 -011000111110011100000110001111100111 -011000111001100101001001111010111100 -011000110100110000000110001101001100 -011000101111111100111010000000011001 -011000101011001011100100001111011011 -011000100110011100000011110110000000 -011000100001101110010111110000101011 -011000011101000010011110111100110000 -011000011000011000011000011000011000 -011000010011110000000011000010011110 -011000001111001001011101111010101101 -011000001010100100101000000001100001 -011000000110000001100000011000000110 -011000000001100000000110000000011000 -010111111101000000010111111101000000 -010111111000100010010101010001010111 -010111110100000101111101000001011111 -010111101111101011001110010010001100 -010111101011010010001000001000111000 -010111100110111010101001101011101110 -010111100010100100110010000001011110 -010111011110010000100000010001100111 -010111011001111101110011100100001101 -010111010101101100101011000010000000 -010111010001011101000101110100010111 -010111001101001111000011000101010000 -010111001001000010100001111111010010 -010111000100110111100001101101100111 -010111000000101110000001011100000011 -010110111100100110000000010110111101 -010110111000011111011101101011010001 -010110110100011010011000100110100000 -010110110000010110110000010110110000 -010110101100010100100100001010101001 -010110101000010011110011010001010101 -010110100100010100011100111010100010 -010110100000010110100000010110100000 -010110011100011001111100110110000000 -010110011000011110110001101010010100 -010110010100100100111110000101001111 -010110010000101100100001011001000011 -010110001100110101011010111000100011 -010110001000111111101001110111000000 -010110000101001011001101101000001100 -010110000001011000000101100000010110 -010101111101100110010000110100001010 -010101111001110101101110111000110100 -010101110110000110011111000011111011 -010101110010011000100000101011100101 -010101101110101011110011000110010010 -010101101011000000010101101011000000 -010101100111010110000111110001001001 -010101100011101101001000110000100000 -010101100000000101011000000001010110 -010101011100011110110100111100010100 -010101011000111001011110111010011111 -010101010101010101010101010101010101 -010101010001110010010111100110101111 -010101001110010000100101001000111101 -010101001010101111111101010110101010 -010101000111010000011111101010111001 -010101000011110010001011100001000100 -010101000000010101000000010101000000 -010100111100111000111101100010110111 -010100111001011110000010100111001100 -010100110110000100001110111110110111 -010100110010101011100010000111001001 -010100101111010011111011011101101010 -010100101011111101011010100000010101 -010100101000100111111110101101011110 -010100100101010011100111100011101101 -010100100010000000010100100010000000 -010100011110101110000101000111101100 -010100011011011100111000110100010110 -010100011000001100101111000111111101 -010100010100111101100111100010110010 -010100010001101111100001100101011001 -010100001110100010011100110000101011 -010100001011010110011000100101110101 -010100001000001011010100100110011000 -010100000101000001010000010100000101 -010100000001111000001011010001000100 -010011111110110000000100111111101100 -010011111011101000111101000010101001 -010011111000100010110010111100111001 -010011110101011101100110010001101011 -010011110010011001010110100100011111 -010011101111010110000011011001001001 -010011101100010011101100010011101100 -010011101001010010010000111000011111 -010011100110010001110000101100000110 -010011100011010010001011010011011010 -010011100000010011100000010011100000 -010011011101010101101111010001110010 -010011011010011000110111110011111000 -010011010111011100111001011111101000 -010011010100100001110011111011001011 -010011010001100111100110101100111000 -010011001110101110010001011011010110 -010011001011110101110011101101011011 -010011001000111110001101001010001011 -010011000110000111011101011000111010 -010011000011010001100100000001001100 -010011000000011100100000101010110001 -010010111101101000010010111101101000 -010010111010110100111010100010000000 -010010111000000010010111000000010011 -010010110101010000101000000001001011 -010010110010011111101101001101100000 -010010101111101111100110001110010111 -010010101101000000010010101101000000 -010010101010010001110010010010111101 -010010100111100100000100101001111001 -010010100100110111001001011011101110 -010010100010001011000000010010100010 -010010011111011111101000111000101000 -010010011100110101000010111000100000 -010010011010001011001101111100110110 -010010010111100010001001110000100000 -010010010100111001110101111110100100 -010010010010010010010010010010010010 -010010001111101011011110010111000110 -010010001101000101011001111000100111 -010010001010100000000100100010101000 -010010000111111011011110000001001000 -010010000101010111100110000000010010 -010010000010110100011100001100011010 -010010000000010010000000010010000000 -010001111101110000010001111101110000 -010001111011001111010000111100100000 -010001111000101110111100111011010000 -010001110110001111010101100111001100 -010001110011110000011010101101101001 -010001110001010010001011111100000111 -010001101110110100101001000000010010 -010001101100010111110001100111111101 -010001101001111011100101100001000111 -010001100111100000000100011001111000 -010001100101000101001110000000100011 -010001100010101011000010000011100100 -010001100000010001100000010001100000 -010001011101111000101000011001000111 -010001011011100000011010001001010001 -010001011001001000110101010000111111 -010001010110110001111001011111011101 -010001010100011011100110100011111111 -010001010010000101111100001110000011 -010001001111110000111010001101001101 -010001001101011100100000010001001101 -010001001011001000101110001001111011 -010001001000110101100011100111010111 -010001000110100011000000011001101010 -010001000100010001000100010001000100 -010001000001111111101110111110000000 -010000111111101111000000010001000000 -010000111101011110110111111010101101 -010000111011001111010101101011111010 -010000111001000000011001010101100001 -010000110110110010000010101000100100 -010000110100100100010001010110001101 -010000110010010111000101001111101111 -010000110000001010011110000110100011 -010000101101111110011011101100001001 -010000101011110010111101110010001100 -010000101001101000000100001010011010 -010000100111011101101110100110101100 -010000100101010011111100111001000000 -010000100011001010101110110011011101 -010000100001000010000100001000010001 -010000011110111001111100101001101110 -010000011100110010011000001010010010 -010000011010101011010110011100011110 -010000011000100100110111010010111100 -010000010110011110111010100000011101 -010000010100011001011111110111110110 -010000010010010100100111001100000110 -010000010000010000010000010000010000 -010000001110001100011010110111100001 -010000001100001001000110110101001000 -010000001010000110010011111100011110 -010000001000000100000010000001000001 -010000000110000010010000110110010100 -010000000100000001000000010000000100 -010000000010000000010000000010000000 +011111111100000000011111111100000000 +011111110100000100011110010100101000 +011111101100001100011000010000110101 +011111100100011000001010110110100000 +011111011100100111110011001110011000 +011111010100111011001110100011111111 +011111001101010010011010000101100111 +011111000101101101010011000100010000 +011110111110001011110110110011100010 +011110110110101110000010101001101101 +011110101111010011110011111111100001 +011110100111111101001000010000010001 +011110100000101001111100111001101100 +011110011001011010001111011011111010 +011110010010001101111101011001011100 +011110001011000101000100010111000110 +011110000011111111100001111100000000 +011101111100111101010011110001011111 +011101110101111110010111100011000110 +011101101111000010101010111110011111 +011101101000001010001011110011100000 +011101100001010100110111110100000000 +011101011010100010101100110011111100 +011101010011110011101000101001001110 +011101001101000111101001001011110000 +011101000110011110101100010101011000 +011100111111111000110000000001110100 +011100111001010101110010001110101011 +011100110010110101110000111011011001 +011100101100011000101010001001001100 +011100100101111110011011111011000101 +011100011111100111000100010101110100 +011100011001010010100001011111110101 +011100010011000000110001100001010001 +011100001100110001110010100011111010 +011100000110100101100010110011001010 +011100000000011100000000011100000000 +011011111010010101001001101101000010 +011011110100010000111100110110010101 +011011101110001111011000001001100010 +011011101000010000011001111001101111 +011011100010010100000000011011100010 +011011011100011010001010000100111100 +011011010110100010110101001101010111 +011011010000101110000000001101101000 +011011001010111011101001011111111101 +011011000101001011101111011111110110 +011010111111011110010000101010001011 +011010111001110011001011011101000111 +011010110100001010011110011000000110 +011010101110100100000111111011110101 +011010101001000000000110101010010000 +011010100011011110011001000110100010 +011010011101111110111101110101000011 +011010011000100001110011011011010100 +011010010011000110111000100000000011 +011010001101101110001011101011000111 +011010001000010111101011100101011101 +011010000011000011010110111001001100 +011001111101110001001100010001011101 +011001111000100001001010011010011111 +011001110011010011010000000001100111 +011001101110000111011011110101001010 +011001101000111101101100100100011101 +011001100011110110000000111111111010 +011001011110110000010111111000110101 +011001011001101100110000000001100110 +011001010100101011001000001101011101 +011001001111101011011111010000101011 +011001001010101101110100000000011001 +011001000101110010000101010010101110 +011001000000111000010001111110101000 +011000111100000000011000111100000000 +011000110111001010011001000011100110 +011000110010010110010001001111000000 +011000101101100100000000011000101110 +011000101000110011100101011100000000 +011000100100000100111111010101000001 +011000011111011000001101000000101011 +011000011010101101001101011100101101 +011000010110000011111111100111101010 +011000010001011100100010100000110100 +011000001100110110110101001000001110 +011000001000010010110110011110101111 +011000000011110000100101100101111000 +010111111111010000000001011111111101 +010111111010110001001001001111111111 +010111110110010011111011111001101011 +010111110001111000011000100001011100 +010111101101011110011110001100011010 +010111101001000110001100000000011000 +010111100100101111100001000011110010 +010111100000011010011100011101110000 +010111011100000110111101010110000100 +010111010111110101000010110101001001 +010111010011100100101100000100000000 +010111001111010101111000001100010110 +010111001011001000100110011000011100 +010111000110111100110101110011001100 +010111000010110010100101101000000100 +010110111110101001110101000011001001 +010110111010100010100011010001000110 +010110110110011100101111011111001010 +010110110010011000011000111011000111 +010110101110010101011110110011010100 +010110101010010100000000010110101010 +010110100110010011111100110100100111 +010110100010010101010011011101001001 +010110011110011000000011100000110000 +010110011010011100001100010000011101 +010110010110100001101100111101110100 +010110010010101000100100111010110111 +010110001110110000110011011010001001 +010110001010111010010111101110101011 +010110000111000101010001001100000000 +010110000011010001011111000110000111 +010101111111011111000000110001011111 +010101111011101101110101100011000011 +010101110111111101111100110000001100 +010101110100001111010101101110110010 +010101110000100001111111110101001000 +010101101100110101111010011001111100 +010101101001001011000100110100011011 +010101100101100001011110011100001010 +010101100001111001000110101001001101 +010101011110010001111100110100000000 +010101011010101100000000010101011011 +010101010111000111010000100110101110 +010101010011100011101101000001100101 +010101010000000001010101000000000101 +010101001100100000000111111100101100 +010101001001000000000101010010010000 +010101000101100001001100011100000000 +010101000010000011011100110101100100 +010100111110100110110101111010111011 +010100111011001011010111001000011011 +010100110111110000111111111010110010 +010100110100010111101111101111000101 +010100110000111111100110000010110001 +010100101101101000100010010011100101 +010100101010010010100011111111101011 +010100100110111101101010100101100001 +010100100011101001110101100011111001 +010100100000010111000100011001111101 +010100011101000101010110100111001010 +010100011001110100101011101011010010 +010100010110100101000011000110011100 +010100010011010110011100011001000100 +010100010000001000110111000011111000 +010100001100111100010010100111111100 +010100001001110000101110100110100101 +010100000110100110001010100001011101 +010100000011011100100101111010100001 +010100000000010100000000010100000000 +010011111101001100011001010000011101 +010011111010000101110000010010101010 +010011110111000000000100111101110000 +010011110011111011010110110101000110 +010011110000110111100101011100010101 +010011101101110100110000010111011010 +010011101010110010110111001010100010 +010011100111110001111001011010001001 +010011100100110001110110101010111110 +010011100001110010101110100010000001 +010011011110110100100000100100100010 +010011011011110111001100010111111111 +010011011000111010110001100010001010 +010011010101111111001111101001000010 +010011010011000100100110010010110110 +010011010000001010110101000110000110 +010011001101010001111011101001011111 +010011001010011001111001100100000000 +010011000111100010101110011100110101 +010011000100101100011001111011011000 +010011000001110110111011100111010101 +010010111111000010010011001000100010 +010010111100001110100000000111000111 +010010111001011011100010001011011000 +010010110110101001011000111101110111 +010010110011111000000100000111010110 +010010110001000111100011010000110010 +010010101110010111110110000011010111 +010010101011101000111100001000011110 +010010101000111010110101001001101100 +010010100110001101100000110000110100 +010010100011100000111110100111110111 +010010100000110101001110011001000001 +010010011110001010001111101110101100 +010010011011100000000010010011011100 +010010011000110110100101110010000100 +010010010110001101111001110101100010 +010010010011100101111110001001000001 +010010010000111110110010010111110101 +010010001110011000010110001101100010 +010010001011110010101001010101110100 +010010001001001101101011011100100100 +010010000110101001011100001101110111 +010010000100000101111011010101111100 +010010000001100011001000100001001111 +010001111111000001000011011100010100 +010001111100011111101011110011111100 +010001111001111111000001010101000011 +010001110111011111000011101100101111 +010001110100111111110010101000010000 +010001110010100001001101110101000001 +010001110000000011010101000000101000 +010001101101100110000111111000110011 +010001101011001001100110001011011101 +010001101000101101101111100110101001 +010001100110010010100011111000100101 +010001100011111000000010101111100111 +010001100001011110001011111010010000 +010001011111000100111111000111001011 +010001011100101100011100000101001100 +010001011010010100100010100011001111 +010001010111111101010010010000011011 +010001010101100110101010111100000000 +010001010011010000101100010101010111 +010001010000111011010110001100000000 +010001001110100110101000001111100111 +010001001100010010100010001111111111 +010001001001111111000011111101000011 +010001000111101100001101000110111001 +010001000101011001111101011101101101 +010001000011001000010100110001110100 +010001000000110111010010110011101101 +010000111110100110110111010011111110 +010000111100010111000010000011010100 +010000111010000111110010110010100110 +010000110111111001001001010010110010 +010000110101101011000101010100111111 +010000110011011101100110101010011010 +010000110001010000101101000100011001 +010000101111000100011000010100011001 +010000101100111000101000001100000000 +010000101010101101011100011100111010 +010000101000100010110100111000111011 +010000100110011000110001010001111110 +010000100100001111010001011010000101 +010000100010000110010101000011011011 +010000011111111101111100000000010000 +010000011101110110000110000010111101 +010000011011101110110010111110000001 +010000011001101000000010100100000000 +010000010111100001110100100111101001 +010000010101011100001000111011101110 +010000010011010110111111010011001011 +010000010001010010010111100000111111 +010000001111001110010001011000010011 +010000001101001010101100101100010100 +010000001011000111101001010000010111 +010000001001000101000110110111110111 +010000000111000011000101010110010110 +010000000101000001100100011111011010 +010000000011000000100100000110110001 +010000000001000000000100000000010000 diff --git a/hw/lx-fncapprox/reci_tab_bc.lut b/hw/lx-fncapprox/reci_tab_bc.lut index 3d3488c..3414f3c 100644 --- a/hw/lx-fncapprox/reci_tab_bc.lut +++ b/hw/lx-fncapprox/reci_tab_bc.lut @@ -1,256 +1,256 @@ -111111111111111110011111110100000011 -111111100000001010011111011100011011 -111111000000101101011111000101001010 -111110100001101000011110101110010000 -111110000010111001011110010111101101 -111101100100100010011110000001011111 -111101000110100000011101101011100111 -111100101000110101011101010110000100 -111100001011011111011101000000110110 -111011101110011110011100101011111100 -111011010001110010011100010111010110 -111010110101011011011100000011000100 -111010011001011000011011101111000101 -111001111101101001011011011011011001 -111001100010001110011011001000000000 -111001000111000101011010110100111001 -111000101100010001011010100010000100 -111000010001101110011010001111100000 -110111110111011111011001111101001101 -110111011101100010011001101011001100 -110111000011110110011001011001011011 -110110101010011101011001000111111010 -110110010001010110011000110110101010 -110101111000011110011000100101101001 -110101011111111001011000010100111000 -110101000111100101011000000100010110 -110100101111100000010111110100000010 -110100010111101011010111100011111110 -110100000000001000010111010100001000 -110011101000110100010111000100100000 -110011010001101111010110110101000110 -110010111010111010010110100101111001 -110010100100010100010110010110111011 -110010001101111110010110001000001001 -110001110111110101010101111001100100 -110001100001111100010101101011001100 -110001001100010001010101011101000001 -110000110110110100010101001111000001 -110000100001100101010101000001001110 -110000001100100011010100110011100111 -101111110111110000010100100110001100 -101111100011001010010100011000111100 -101111001110110000010100001011111000 -101110111010100101010011111110111110 -101110100110100110010011110010010000 -101110010010110011010011100101101100 -101101111111001110010011011001010011 -101101101011110101010011001101000100 -101101011000101000010011000001000000 -101101000101100111010010110101000101 -101100110010110001010010101001010101 -101100100000001000010010011101101110 -101100001101101011010010010010010001 -101011111011011000010010000110111110 -101011101001010001010001111011110011 -101011010111010110010001110000110010 -101011000101100100010001100101111010 -101010110011111111010001011011001010 -101010100010100100010001010000100100 -101010010001010100010001000110000110 -101010000000001101010000111011110000 -101001101111010001010000110001100011 -101001011110100000010000100111011110 -101001001101111000010000011101100001 -101000111101011011010000010011101011 -101000101101000111010000001001111110 -101000011100111110010000000000011000 -101000001100111101001111110110111010 -100111111101000110001111101101100100 -100111101101011001001111100100010100 -100111011101110100001111011011001100 -100111001110011001001111010010001011 -100110111111000111001111001001010001 -100110101111111110001111000000011110 -100110100000111101001110110111110010 -100110010010000101001110101111001100 -100110000011010110001110100110101101 -100101110100110000001110011110010101 -100101100110010001001110010110000011 -100101010111111011001110001101110111 -100101001001101101001110000101110001 -100100111011100111001101111101110010 -100100101101101001001101110101111000 -100100011111110100001101101110000101 -100100010010000110001101100110010111 -100100000100011111001101011110101111 -100011110111000000001101010111001101 -100011101001101001001101001111110000 -100011011100011010001101001000011001 -100011001111010001001101000001001000 -100011000010010000001100111001111011 -100010110101010110001100110010110100 -100010101000100011001100101011110010 -100010011011111000001100100100110110 -100010001111010010001100011101111110 -100010000010110101001100010111001011 -100001110110011110001100010000011110 -100001101010001101001100001001110101 -100001011110000011001100000011010001 -100001010010000000001011111100110001 -100001000110000100001011110110010111 -100000111010001101001011110000000001 -100000101110011101001011101001101111 -100000100010110011001011100011100010 -100000010111010000001011011101011001 -100000001011110010001011010111010101 -100000000000011011001011010001010100 -011111110101001010001011001011011000 -011111101001111110001011000101100001 -011111011110111000001010111111101101 -011111010011111001001010111001111101 -011111001001000000001010110100010010 -011110111110001011001010101110101010 -011110110011011100001010101001000110 -011110101000110011001010100011100110 -011110011110010000001010011110001010 -011110010011110010001010011000110001 -011110001001011000001010010011011101 -011101111111000110001010001110001011 -011101110100110111001010001000111110 -011101101010101110001010000011110100 -011101100000101010001001111110101101 -011101010110101011001001111001101010 -011101001100110010001001110100101010 -011101000010111101001001101111101110 -011100111001001110001001101010110101 -011100101111100010001001100101111111 -011100100101111101001001100001001100 -011100011100011100001001011100011101 -011100010010111111001001010111110001 -011100001001100111001001010011000111 -011100000000010100001001001110100001 -011011110111000101001001001001111110 -011011101101111100001001000101011110 -011011100100110110001001000001000001 -011011011011110101001000111100100111 -011011010010111001001000111000001111 -011011001010000000001000110011111011 -011011000001001100001000101111101001 -011010111000011101001000101011011010 -011010101111110001001000100111001110 -011010100111001010001000100011000100 -011010011110100111001000011110111101 -011010010110001000001000011010111001 -011010001101101101001000010110110111 -011010000101010111001000010010111000 -011001111101000100001000001110111100 -011001110100110101001000001011000001 -011001101100101010001000000111001010 -011001100100100010001000000011010101 -011001011100011111000111111111100010 -011001010100011111000111111011110001 -011001001100100100000111111000000011 -011001000100101100000111110100010111 -011000111100111000000111110000101110 -011000110101000111000111101101000111 -011000101101011001000111101001100010 -011000100101110000000111100101111111 -011000011110001010000111100010011111 -011000010110101000000111011111000000 -011000001111001000000111011011100100 -011000000111101110000111011000001010 -011000000000010101000111010100110010 -010111111001000000000111010001011100 -010111110001101111000111001110001000 -010111101010100001000111001010110110 -010111100011010110000111000111100110 -010111011100001111000111000100010111 -010111010101001010000111000001001011 -010111001110001001000110111110000001 -010111000111001011000110111010111001 -010111000000001111000110110111110010 -010110111001011000000110110100101110 -010110110010100011000110110001101011 -010110101011110010000110101110101010 -010110100101000011000110101011101011 -010110011110010111000110101000101101 -010110010111101110000110100101110010 -010110010001001001000110100010111000 -010110001010100110000110100000000000 -010110000100000110000110011101001001 -010101111101101001000110011010010100 -010101110111001110000110010111100001 -010101110000110111000110010100101111 -010101101010100010000110010001111111 -010101100100010000000110001111010001 -010101011110000001000110001100100100 -010101010111110100000110001001111001 -010101010001101010000110000111001111 -010101001011100100000110000100100111 -010101000101011111000110000010000000 -010100111111011101000101111111011011 -010100111001011101000101111100110111 -010100110011100001000101111010010101 -010100101101100110000101110111110100 -010100100111101110000101110101010100 -010100100001111001000101110010110110 -010100011100000110000101110000011010 -010100010110010101000101101101111110 -010100010000101000000101101011100100 -010100001010111100000101101001001100 -010100000101010011000101100110110101 -010011111111101101000101100100011111 -010011111010001000000101100010001010 -010011110100100101000101011111110111 -010011101111000101000101011101100101 -010011101001101000000101011011010100 -010011100100001101000101011001000100 -010011011110110100000101010110110110 -010011011001011101000101010100101001 -010011010100001001000101010010011101 -010011001110110110000101010000010010 -010011001001100110000101001110001001 -010011000100011000000101001100000000 -010010111111001011000101001001111001 -010010111010000001000101000111110011 -010010110100111001000101000101101110 -010010101111110100000101000011101010 -010010101010110000000101000001101000 -010010100101101110000100111111100110 -010010100000101111000100111101100110 -010010011011110001000100111011100110 -010010010110110110000100111001101000 -010010010001111100000100110111101010 -010010001101000100000100110101101110 -010010001000001111000100110011110011 -010010000011011011000100110001111001 -010001111110101001000100101111111111 -010001111001111010000100101110000111 -010001110101001100000100101100010000 -010001110000011111000100101010011010 -010001101011110101000100101000100100 -010001100111001100000100100110110000 -010001100010100101000100100100111101 -010001011110000000000100100011001010 -010001011001011101000100100001011001 -010001010100111011000100011111101000 -010001010000011100000100011101111001 -010001001011111111000100011100001010 -010001000111100010000100011010011100 -010001000011001000000100011000101111 -010000111110101111000100010111000011 -010000111010011000000100010101010111 -010000110110000010000100010011101101 -010000110001101111000100010010000100 -010000101101011101000100010000011011 -010000101001001100000100001110110011 -010000100100111101000100001101001100 -010000100000110000000100001011100110 -010000011100100101000100001010000000 -010000011000011011000100001000011100 -010000010100010010000100000110111000 -010000010000001011000100000101010101 -010000001100000110000100000011110010 -010000001000000011000100000010010001 -010000000100000000000100000000110000 +100000000111111110001111111010000010 +100000010111110010001111101110001110 +100000100111011011001111100010100101 +100000110110110111001111010111001000 +100001000110001001001111001011110110 +100001010101001111001111000000101111 +100001100100001010001110110101110011 +100001110010111011001110101011000010 +100010000001100000001110100000011011 +100010001111111100001110010101111110 +100010011110001100001110001011101011 +100010101100010011001110000001100010 +100010111010010000001101110111100011 +100011001000000010001101101101101101 +100011010101101011001101100100000000 +100011100011001010001101011010011100 +100011110000100000001101010001000010 +100011111101101100001101000111110000 +100100001010110000001100111110100111 +100100010111101010001100110101100110 +100100100100011011001100101100101101 +100100110001000011001100100011111101 +100100111101100011001100011011010101 +100101001001111010001100010010110101 +100101010110001000001100001010011100 +100101100010001111001100000010001011 +100101101110001101001011111010000001 +100101111010000011001011110001111111 +100110000101110001001011101010000100 +100110010001010111001011100010010000 +100110011100110101001011011010100011 +100110101000001100001011010010111101 +100110110011011011001011001011011101 +100110111110100011001011000100000100 +100111001001100011001010111100110010 +100111010100011101001010110101100110 +100111011111001111001010101110100000 +100111101001111010001010100111100001 +100111110100011110001010100000100111 +100111111110111011001010011001110100 +101000001001010001001010010011000110 +101000010011100001001010001100011110 +101000011101101010001010000101111100 +101000100111101101001001111111011111 +101000110001101001001001111001001000 +101000111011011111001001110010110110 +101001000101001111001001101100101001 +101001001110111001001001100110100010 +101001011000011100001001100000100000 +101001100001111010001001011010100011 +101001101011010001001001010100101010 +101001110100100011001001001110110111 +101001111101101111001001001001001001 +101010000110110101001001000011011111 +101010001111110110001000111101111010 +101010011000110001001000111000011001 +101010100001100111001000110010111101 +101010101010010111001000101101100101 +101010110011000010001000101000010010 +101010111011101000001000100011000011 +101011000100001000001000011101111000 +101011001100100011001000011000110001 +101011010100111010001000010011101111 +101011011101001011001000001110110000 +101011100101010111001000001001110110 +101011101101011111001000000100111111 +101011110101100001001000000000001100 +101011111101011111000111111011011101 +101100000101011000000111110110110010 +101100001101001101000111110010001010 +101100010100111101000111101101100110 +101100011100101000000111101001000110 +101100100100001111000111100100101001 +101100101011110001000111100000001111 +101100110011001111000111011011111001 +101100111010101001000111010111100110 +101101000001111110000111010011010111 +101101001001010000000111001111001010 +101101010000011101000111001011000001 +101101010111100110000111000110111011 +101101011110101011000111000010111001 +101101100101101100000110111110111001 +101101101100101000000110111010111100 +101101110011100001000110110111000010 +101101111010010111000110110011001100 +101110000001001000000110101111011000 +101110000111110101000110101011100110 +101110001110011111000110100111111000 +101110010101000101000110100100001101 +101110011011100111000110100000100100 +101110100010000110000110011100111110 +101110101000100001000110011001011010 +101110101110111001000110010101111001 +101110110101001101000110010010011011 +101110111011011110000110001110111111 +101111000001101011000110001011100110 +101111000111110101000110001000001111 +101111001101111100000110000100111010 +101111010011111111000110000001101000 +101111011001111111000101111110011001 +101111011111111100000101111011001011 +101111100101110101000101111000000000 +101111101011101100000101110100110111 +101111110001011111000101110001110001 +101111110111001111000101101110101100 +101111111100111100000101101011101010 +110000000010100111000101101000101010 +110000001000001110000101100101101100 +110000001101110010000101100010110000 +110000010011010011000101011111110110 +110000011000110010000101011100111111 +110000011110001101000101011010001001 +110000100011100110000101010111010101 +110000101000111100000101010100100011 +110000101110001111000101010001110011 +110000110011100000000101001111000101 +110000111000101101000101001100011001 +110000111101111000000101001001101110 +110001000011000001000101000111000110 +110001001000000110000101000100011111 +110001001101001010000101000001111010 +110001010010001010000100111111010111 +110001010111001000000100111100110101 +110001011100000100000100111010010101 +110001100000111101000100110111110111 +110001100101110100000100110101011010 +110001101010101000000100110010111111 +110001101111011010000100110000100110 +110001110100001001000100101110001110 +110001111000110110000100101011111000 +110001111101100001000100101001100100 +110010000010001001000100100111010001 +110010000110101111000100100100111111 +110010001011010011000100100010101111 +110010001111110101000100100000100000 +110010010100010100000100011110010011 +110010011000110001000100011100001000 +110010011101001101000100011001111101 +110010100001100101000100010111110101 +110010100101111100000100010101101101 +110010101010010001000100010011100111 +110010101110100011000100010001100010 +110010110010110100000100001111011111 +110010110111000010000100001101011100 +110010111011001111000100001011011100 +110010111111011001000100001001011100 +110011000011100010000100000111011110 +110011000111101000000100000101100001 +110011001011101101000100000011100101 +110011001111101111000100000001101010 +110011010011110000000011111111110001 +110011010111101111000011111101111001 +110011011011101100000011111100000010 +110011011111100111000011111010001100 +110011100011100000000011111000010111 +110011100111011000000011110110100011 +110011101011001101000011110100110001 +110011101111000001000011110011000000 +110011110010110011000011110001001111 +110011110110100100000011101111100000 +110011111010010010000011101101110010 +110011111101111111000011101100000101 +110100000001101010000011101010011001 +110100000101010100000011101000101110 +110100001000111100000011100111000100 +110100001100100010000011100101011011 +110100010000000111000011100011110011 +110100010011101010000011100010001100 +110100010111001011000011100000100110 +110100011010101011000011011111000001 +110100011110001001000011011101011100 +110100100001100110000011011011111001 +110100100101000001000011011010010111 +110100101000011011000011011000110101 +110100101011110011000011010111010101 +110100101111001001000011010101110101 +110100110010011110000011010100010111 +110100110101110010000011010010111001 +110100111001000100000011010001011100 +110100111100010101000011010000000000 +110100111111100100000011001110100100 +110101000010110010000011001101001010 +110101000101111110000011001011110000 +110101001001001001000011001010011000 +110101001100010011000011001001000000 +110101001111011011000011000111101000 +110101010010100010000011000110010010 +110101010101101000000011000100111100 +110101011000101100000011000011100111 +110101011011101111000011000010010011 +110101011110110001000011000001000000 +110101100001110001000010111111101101 +110101100100110000000010111110011011 +110101100111101110000010111101001010 +110101101010101011000010111011111010 +110101101101100110000010111010101010 +110101110000100000000010111001011011 +110101110011011001000010111000001101 +110101110110010000000010110110111111 +110101111001000111000010110101110010 +110101111011111100000010110100100110 +110101111110110000000010110011011010 +110110000001100011000010110010001111 +110110000100010100000010110001000101 +110110000111000101000010101111111011 +110110001001110100000010101110110010 +110110001100100010000010101101101010 +110110001111010000000010101100100010 +110110010001111100000010101011011011 +110110010100100110000010101010010100 +110110010111010000000010101001001110 +110110011001111001000010101000001001 +110110011100100000000010100111000100 +110110011111000111000010100110000000 +110110100001101100000010100100111101 +110110100100010001000010100011111010 +110110100110110100000010100010110111 +110110101001010111000010100001110101 +110110101011111000000010100000110100 +110110101110011000000010011111110011 +110110110000111000000010011110110011 +110110110011010110000010011101110011 +110110110101110011000010011100110100 +110110111000001111000010011011110101 +110110111010101011000010011010110111 +110110111101000101000010011001111001 +110110111111011111000010011000111100 +110111000001110111000010011000000000 +110111000100001111000010010111000100 +110111000110100101000010010110001000 +110111001000111011000010010101001101 +110111001011010000000010010100010010 +110111001101100011000010010011011000 +110111001111110110000010010010011110 +110111010010001000000010010001100101 +110111010100011010000010010000101100 +110111010110101010000010001111110100 +110111011000111001000010001110111100 +110111011011001000000010001110000101 +110111011101010101000010001101001110 +110111011111100010000010001100010111 +110111100001101110000010001011100001 +110111100011111001000010001010101100 +110111100110000011000010001001110111 +110111101000001101000010001001000010 +110111101010010101000010001000001101 +110111101100011101000010000111011001 +110111101110100100000010000110100110 +110111110000101010000010000101110011 +110111110010110000000010000101000000 +110111110100110100000010000100001110 +110111110110111000000010000011011100 +110111111000111011000010000010101010 +110111111010111110000010000001111001 +110111111100111111000010000001001000 +110111111111000000000010000000011000 diff --git a/hw/lx-fncapprox/sin_tab_a.lut b/hw/lx-fncapprox/sin_tab_a.lut index db767ee..e8b24e8 100644 --- a/hw/lx-fncapprox/sin_tab_a.lut +++ b/hw/lx-fncapprox/sin_tab_a.lut @@ -1,128 +1,128 @@ -000000000000000000000000000000000000 -000000000110010010000111010001111111 -000000001100100100001010101011111100 -000000010010110110000110010101110110 -000000011001000111110110010111110001 -000000011111011001010110111001111010 -000000100101101010100100000100100110 -000000101011111011011010000000010101 -000000110010001011110100110101111000 -000000111000011011110000101110001111 -000000111110101011001001110010101101 -000001000100111001111100001100111011 -000001001011001000000100000110111010 -000001010001010101011101101011000101 -000001010111100010000101000100010010 -000001011101101101110110011101111001 -000001100011111000101110000011110010 -000001101010000010101000000010010111 -000001110000001011100000100110101010 -000001110110010011010011111110010101 -000001111100011001111110010111101101 -000010000010011111011100000001110010 -000010001000100011101001001100010110 -000010001110100110100010000111111010 -000010010100101000000011000101110111 -000010011010101000001000011000010111 -000010100000100110101110010010100001 -000010100110100011110001001000010100 -000010101100011111001101001110101101 -000010110010011000111110111011101010 -000010111000010001000010100110001000 -000010111110000111010100100110001001 -000011000011111011110001010100110101 -000011001001101110010101001100011110 -000011001111011110111100101000011101 -000011010101001101100100000101011011 -000011011010111010001000000001001111 -000011100000100100100100111011000000 -000011100110001100110111010011001010 -000011101011110010111011101011011100 -000011110001010110101110100111000000 -000011110110111000001100101010010111 -000011111100010111010010011011100000 -000100000001110011111100100001110101 -000100000111001110000111100110010010 -000100001100100101110000010011010110 -000100010001111010110011010101000010 -000100010111001101001101011000111110 -000100011100011100111011001110011011 -000100100001101001111001100110010011 -000100100110110100000101010011001110 -000100101011111011011011001001100000 -000100110000111111110111111111001110 -000100110110000001011000101100010000 -000100111010111111111010001010010010 -000100111111111011011001010100110100 -000101000100110011110011001001010001 -000101001001101001000100100110111010 -000101001110011011001010101110111110 -000101010011001010000010100100101010 -000101010111110101101001001101001001 -000101011100011101111011101111100110 -000101100001000010110111010101010010 -000101100101100100011001001001011111 -000101101010000010011110011001101000 -000101101110011101000100010101001111 -000101110010110100001000001101111111 -000101110111000111100111010111110000 -000101111011010111011111001000100111 -000101111111100011101100111000110101 -000110000011101100001110000011000000 -000110000111110001000000000011111100 -000110001011110010000000011010110001 -000110001111101111001100101000111111 -000110010011101000100010010010011001 -000110010111011101111110111101001100 -000110011011001111100000010001111111 -000110011110111101000011111011110011 -000110100010100110100111101000000100 -000110100110001100001001000110110000 -000110101001101101100110001010010001 -000110101101001010111100100111100010 -000110110000100100001010010110000001 -000110110011111001001101001111101111 -000110110111001010000011010001010010 -000110111010010110101010011001110011 -000110111101011111000000101011000111 -000111000000100011000100001001100111 -000111000011100010110010111100011000 -000111000110011110001011001101001001 -000111001001010101001011001000010011 -000111001100000111110000111101000000 -000111001110110101111010111101000100 -000111010001011111100111011101000100 -000111010100000100110100110100010101 -000111010110100101100001011100111101 -000111011001000001101011110011110011 -000111011011011001010010011000100100 -000111011101101100010011101101101101 -000111011111111010101110011000100011 -000111100010000100100001000001001111 -000111100100001001101010010010110011 -000111100110001010001000111011000101 -000111101000000101111011101010110101 -000111101001111101000001010101101100 -000111101011101111011000110010001110 -000111101101011101000000111001110111 -000111101111000101111000101000111110 -000111110000101001111110111110111001 -000111110010001001010010111101110111 -000111110011100011110011101011000110 -000111110100111001100000001110110001 -000111110110001010010111110011111111 -000111110111010110011001101000111010 -000111111000011101100100111110100111 -000111111001011111111001001001001101 -000111111010011101010101011111110001 -000111111011010101111001011100011001 -000111111100001001100100011100001110 -000111111100111000010101111111010111 -000111111101100010001101101000111101 -000111111110000111001010111111001100 -000111111110100111001101101011010000 -000111111111000010010101011001011001 -000111111111011000100001111000111000 -000111111111101001110010111100000000 -000111111111110110001000011000001000 -000111111111111101100010000101101010 +000000000011001001000011111000100000 +000000001001011011001001101101011110 +000000001111101101001001101110011001 +000000010101111111000000000011010011 +000000011100010000101000110100010011 +000000100010100010000000001001101010 +000000101000110011000010001011110010 +000000101111000011101011000011010101 +000000110101010011110110111001001001 +000000111011100011100001110110010111 +000001000001110010101000000100011111 +000001001000000001000101101101010100 +000001001110001110110110111011000011 +000001010100011011110111111000010110 +000001011010101000000100110000010100 +000001100000110011011001101110100010 +000001100110111101110010111111001011 +000001101101000111001100101110111101 +000001110011001111100011001011001100 +000001111001010110110010100001111000 +000001111111011100110111000001101011 +000010000101100001101100111001111111 +000010001011100101010000011010111100 +000010010001100111011101110101011110 +000010010111101000010001011011010111 +000010011101100111100111011111010000 +000010100011100101011100010100101011 +000010101001100001101100010000000101 +000010101111011100010011100110111101 +000010110101010101001110101111101110 +000010111011001100011010000001111001 +000011000001000001110001110110000010 +000011000110110101010010100101110110 +000011001100100110111000101100001010 +000011010010010110100000100100111111 +000011011000000100000110101101100100 +000011011101101111100111100100011000 +000011100011011000111111101001001101 +000011101001000000001011011101000111 +000011101110100101000111100010100100 +000011110100000111110000011101011000 +000011111001101000000010110010110010 +000011111111000101111011001001011111 +000100000100100001010110001001101011 +000100001001111010010000011101000001 +000100001111010000100110101110110011 +000100010100100100010101101011110011 +000100011001110101011010000010011111 +000100011111000011110000100010111100 +000100100100001111010101111110111010 +000100101001011000000111001001110110 +000100101110011110000000111000111111 +000100110011100001000000000011010001 +000100111000100001000001100001011110 +000100111101011110000010001110001100 +000101000010010111111111000101111001 +000101000111001110110101000110111010 +000101001100000010100001010001011111 +000101010000110011000000100111110110 +000101010101100000010000001110001001 +000101011010001010001101001010100110 +000101011110110000110100100101011000 +000101100011010100000011101000110010 +000101100111110011110111100001001001 +000101101100010000001101011100111100 +000101110000101001000010101100110001 +000101110100111110010100100011011011 +000101111001010000000000010101110101 +000101111101011110000011011011001100 +000110000001101000011011001100111011 +000110000101101111000101000110101111 +000110001001110001111110100110100101 +000110001101110001000101001100110001 +000110010001101100010110011011111101 +000110010101100011101111111001001001 +000110011001010111001111001011101110 +000110011101000110110001111101011111 +000110100000110010010101111010101100 +000110100100011001111000110010000001 +000110100111111101011000010100101010 +000110101011011100110010010110010001 +000110101110111000000100101101000100 +000110110010001111001101010001110000 +000110110101100010001001111111101001 +000110111000110000111000110100100111 +000110111011111011010111110001001001 +000110111111000001100100111000010101 +000111000010000011011110001111111011 +000111000101000001000010000000010011 +000111000111111010001110010100100010 +000111001010101111000001011010011010 +000111001101011111011001100010011001 +000111010000001011010100111111101011 +000111010010110010110010001000001110 +000111010101010101101111010100101111 +000111010111110100001011000000101100 +000111011010001110000011101010010110 +000111011100100011010111110010110100 +000111011110110100000101111101111110 +000111100001000000001100110010100011 +000111100011000111101010111010000111 +000111100101001010011111000001000111 +000111100111001000100111110110110111 +000111101001000010000100001101100010 +000111101010110110110010111010001110 +000111101100100110110010110100111100 +000111101110010010000010111000100110 +000111101111111000100010000011000001 +000111110001011010001111010100111111 +000111110010110111001001110010010001 +000111110100001111010000100001100000 +000111110101100010100010101100011000 +000111110110110000111111011111011111 +000111110111111010100110001010011110 +000111111000111111010101111111111011 +000111111001111111001110010101011011 +000111111010111010001110100011100100 +000111111011110000010110000101111110 +000111111100100001100100011011010000 +000111111101001101111001000101000010 +000111111101110101010011100111111111 +000111111110010111110011101011110011 +000111111110110101011000111011001011 +000111111111001110000011000011111001 +000111111111100001110001110110101110 +000111111111110000100101000111011111 +000111111111111010011100101101000101 +000111111111111111011000100001011001 diff --git a/hw/lx-fncapprox/sin_tab_bc.lut b/hw/lx-fncapprox/sin_tab_bc.lut index 339ef78..4e19352 100644 --- a/hw/lx-fncapprox/sin_tab_bc.lut +++ b/hw/lx-fncapprox/sin_tab_bc.lut @@ -1,128 +1,128 @@ -110010010001000001000000001111100000 -110010010000110010000000101110100000 -110010010000000011000001001101100000 -110010001110110110000001101100011111 -110010001101001001000010001011011101 -110010001010111110000010101010011010 -110010001000010011000011001001010101 -110010000101001011000011101000001110 -110010000001100010000100000111000101 -110001111101011011000100100101111001 -110001111000110101000101000100101011 -110001110011110000000101100011011001 -110001101110001110000110000010000100 -110001101000001011000110100000101011 -110001100001101010000110111111001110 -110001011010101011000111011101101101 -110001010011001110000111111100000111 -110001001011010010001000011010011101 -110001000010110111001000111000101101 -110000111001111110001001010110110111 -110000110000100111001001110100111100 -110000100110110010001010010010111011 -110000011100011111001010110000110100 -110000010001101111001011001110100110 -110000000110100000001011101100010001 -101111111010110011001100001001110100 -101111101110101010001100100111010000 -101111100010000011001101000100100101 -101111010100111110001101100001110001 -101111000111011100001101111110110101 -101110111001011101001110011011110001 -101110101011000010001110111000100011 -101110011100001001001111010101001101 -101110001100110011001111110001101100 -101101111101000011010000001110000011 -101101101100110100010000101010001111 -101101011100001010010001000110010001 -101101001011000100010001100010001000 -101100111001100001010001111101110100 -101100100111100011010010011001010110 -101100010101001010010010110100101100 -101100000010010101010011001111110110 -101011101111000110010011101010110101 -101011011011011011010100000101100111 -101011000111010110010100100000001101 -101010110010110101010100111010100111 -101010011101111010010101010100110011 -101010001000100110010101101110110011 -101001110010110111010110001000100101 -101001011100101111010110100010001001 -101001000110001100010110111011011111 -101000101111010001010111010100101000 -101000010111111100010111101101100010 -101000000000001111011000000110001101 -100111101000001000011000011110101001 -100111001111101010011000110110110110 -100110110110110011011001001110110100 -100110011101100100011001100110100011 -100110000011111110011001111110000001 -100101101001111111011010010101010000 -100101001111101010011010101100001110 -100100110100111110011011000010111100 -100100011001111011011011011001011001 -100011111110100001011011101111100110 -100011100010110001011100000101100001 -100011000110101100011100011011001011 -100010101010010001011100110000100011 -100010001101100000011101000101101010 -100001110000011011011101011010011110 -100001010011000000011101101111000001 -100000110101010001011110000011010001 -100000010111001110011110010111001110 -011111111000110111011110101010111001 -011111011010001100011110111110010001 -011110111011001101011111010001010110 -011110011011111101011111100100001000 -011101111100011000011111110110100110 -011101011100100010100000001000110000 -011100111100011001100000011010100111 -011100011011111110100000101100001001 -011011111011010010100000111101011000 -011011011010010101100001001110010010 -011010111001000110100001011110111000 -011010010111100111100001101111001001 -011001110101111000100001111111000101 -011001010011111001100010001110101100 -011000110001101010100010011101111110 -011000001111001100100010101100111011 -010111101100011111100010111011100010 -010111001001100011100011001001110100 -010110100110011010100011010111110001 -010110000011000010100011100101010111 -010101011111011101100011110010100111 -010100111011101010100011111111100010 -010100010111101011100100001100000110 -010011110011011111100100011000010100 -010011001111000111100100100100001011 -010010101010100010100100101111101100 -010010000101110010100100111010110110 -010001100000110111100101000101101001 -010000111011110010100101010000000110 -010000010110100010100101011010001100 -001111110001000111100101100011111010 -001111001011100011100101101101010001 -001110100101110111100101110110010001 -001110000000000000100101111110111010 -001101011010000001100110000111001011 -001100110011111010100110001111000101 -001100001101101011100110010110100111 -001011100111010100100110011101110010 -001011000000110110100110100100100100 -001010011010010010100110101010111111 -001001110011100111100110110001000011 -001001001100110110100110110110101110 -001000100101111111100110111100000001 -000111111111000011100111000000111100 -000111011000000010100111000101011111 -000110110000111100100111001001101011 -000110001001110010100111001101011101 -000101100010100101100111010000111000 -000100111011010100100111010011111011 -000100010100000001100111010110100101 -000011101100101010100111011000110111 -000011000101010001100111011010110001 -000010011101110110100111011100010010 -000001110110011010100111011101011011 -000001001110111101100111011110001100 -000000100111011110100111011110100100 +011001001000011101111111111000010000 +011001001000001110111111101000110000 +011001000111101111111111011001010000 +011001000111000000111111001001110000 +011001000110000010111110111010010001 +011001000100110101111110101010110011 +011001000011011000111110011011010110 +011001000001101011111110001011111001 +011000111111110000111101111100011110 +011000111101100100111101101101000011 +011000111011001010111101011101101011 +011000111000100000111101001110010100 +011000110101100110111100111110111110 +011000110010011110111100101111101011 +011000101111000110111100100000011001 +011000101011011110111100010001001010 +011000100111101000111100000001111100 +011000100011100010111011110010110010 +011000011111001101111011100011101010 +011000011010101010111011010100100100 +011000010101110111111011000101100010 +011000010000110101111010110110100010 +011000001011100100111010100111100110 +011000000110000100111010011000101101 +011000000000010101111010001001111000 +010111111010011000111001111011000110 +010111110100001011111001101100011000 +010111101101110000111001011101101110 +010111100111000111111001001111000111 +010111100000001111111001000000100101 +010111011001001000111000110010001000 +010111010001110011111000100011101110 +010111001010001111111000010101011010 +010111000010011110111000000111001010 +010110111010011110110111111000111111 +010110110010010000110111101010111001 +010110101001110100110111011100111000 +010110100001001010110111001110111100 +010110011000010010110111000001000110 +010110001111001100110110110011010101 +010110000101111000110110100101101010 +010101111100010111110110011000000101 +010101110010101000110110001010100110 +010101101000101100110101111101001100 +010101011110100011110101101111111001 +010101010100001100110101100010101101 +010101001001101000110101010101100110 +010100111110110111110101001000100111 +010100110011111001110100111011101110 +010100101000101111110100101110111011 +010100011101010111110100100010010000 +010100010001110011110100010101101100 +010100000110000011110100001001001111 +010011111010000110110011111100111010 +010011101101111101110011110000101011 +010011100001100111110011100100100101 +010011010101000110110011011000100110 +010011001000011001110011001100101111 +010010111011011111110011000000111111 +010010101110011011110010110101011000 +010010100001001010110010101001111001 +010010010011101110110010011110100010 +010010000110000111110010010011010011 +010001111000010101110010001000001101 +010001101010011000110001111101010000 +010001011100010000110001110010011011 +010001001101111101110001100111101111 +010000111111011111110001011101001011 +010000110000110111110001010010110001 +010000100010000101110001001000100000 +010000010011001000110000111110011000 +010000000100000001110000110100011001 +001111110100110001110000101010100011 +001111100101010111110000100000110111 +001111010101110011110000010111010101 +001111000110000101110000001101111100 +001110110110001111110000000100101101 +001110100110001111101111111011101000 +001110010110000110101111110010101101 +001110000101110100101111101001111011 +001101110101011010101111100001010100 +001101100100110111101111011000110111 +001101010100001100101111010000100100 +001101000011011000101111001000011100 +001100110010011101101111000000011110 +001100100001011001101110111000101010 +001100010000001110101110110001000001 +001011111110111011101110101001100011 +001011101101100001101110100010001111 +001011011100000000101110011011000110 +001011001010010111101110010100001000 +001010111000101000101110001101010101 +001010100110110010101110000110101100 +001010010100110101101110000000001111 +001010000010110011101101111001111101 +001001110000101001101101110011110110 +001001011110011010101101101101111010 +001001001100000101101101101000001010 +001000111001101011101101100010100101 +001000100111001011101101011101001011 +001000010100100101101101010111111101 +001000000001111011101101010010111010 +000111101111001011101101001110000011 +000111011100010111101101001001010111 +000111001001011110101101000100110111 +000110110110100000101101000000100011 +000110100011011111101100111100011010 +000110010000011001101100111000011101 +000101111101010000101100110100101100 +000101101010000011101100110001000111 +000101010110110010101100101101101110 +000101000011011110101100101010100000 +000100110000000111101100100111011111 +000100011100101101101100100100101001 +000100001001010001101100100001111111 +000011110101110001101100011111100010 +000011100010010000101100011101010000 +000011001110101100101100011011001011 +000010111011000110101100011001010001 +000010100111011111101100010111100100 +000010010011110101101100010110000011 +000010000000001011101100010100101110 +000001101100011111101100010011100101 +000001011000110010101100010010101000 +000001000101000100101100010001110111 +000000110001010110101100010001010011 +000000011101100111101100010000111010 +000000001001111000101100010000101110 -- 2.39.2