OpenCores
URL https://opencores.org/ocsvn/yac/yac/trunk

Subversion Repositories yac

[/] [yac/] [trunk/] [rtl/] [vhdl/] [cordic_iterative_pkg.vhd] - Rev 4

Go to most recent revision | Compare with Previous | Blame | View Log

----------------------------------------------------------------------------
----                                                                    ----
----  File           : cordic_iterative_pkg.vhd                         ----
----  Project        : YAC (Yet Another CORDIC Core)                    ----
----  Creation       : Feb. 2014                                        ----
----  Limitations    :                                                  ----
----  Synthesizer    :                                                  ----
----  Target         :                                                  ----
----                                                                    ----
----  Author(s):     : Christian Haettich                               ----
----  Email          : feddischson@opencores.org                        ----
----                                                                    ----
----                                                                    ----
-----                                                                  -----
----                                                                    ----
----  Description                                                       ----
----        VHDL Package which contains some flabs and                  ----
----        some auto-generated division (multiplication)               ----
----        functions.                                                  ----
----                                                                    ----
----                                                                    ----
----                                                                    ----
-----                                                                  -----
----                                                                    ----
----  TODO                                                              ----
----        Some documentation                                          ----
----                                                                    ----
----                                                                    ----
----                                                                    ----
----                                                                    ----
----------------------------------------------------------------------------
----                                                                    ----
----                  Copyright Notice                                  ----
----                                                                    ----
---- This file is part of YAC - Yet Another CORDIC Core                 ----
---- Copyright (c) 2014, Author(s), All rights reserved.                ----
----                                                                    ----
---- YAC is free software; you can redistribute it and/or               ----
---- modify it under the terms of the GNU Lesser General Public         ----
---- License as published by the Free Software Foundation; either       ----
---- version 3.0 of the License, or (at your option) any later version. ----
----                                                                    ----
---- YAC is distributed in the hope that it will be useful,             ----
---- but WITHOUT ANY WARRANTY; without even the implied warranty of     ----
---- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  ----
---- Lesser General Public License for more details.                    ----
----                                                                    ----
---- You should have received a copy of the GNU Lesser General Public   ----
---- License along with this library. If not, download it from          ----
---- http://www.gnu.org/licenses/lgpl                                   ----
----                                                                    ----
----------------------------------------------------------------------------
 
 
 
library ieee;
use ieee.std_logic_1164.ALL;
use ieee.numeric_std.ALL;
 
package cordic_pkg is
 
 
 
<<<<<<< HEAD
<<<<<<< HEAD
   constant I_FLAG_VEC_ROT      : natural :=  3;  -- bit index
   constant I_FLAG_ATAN_3       : natural :=  2;  -- bit index (for future usage)
=======
   constant FLAG_VEC_ROT      : natural :=  3;  -- bit index
   constant FLAG_ATAN_3       : natural :=  2;  -- bit index
>>>>>>> initial commit
=======
   constant I_FLAG_VEC_ROT      : natural :=  3;  -- bit index
   constant I_FLAG_ATAN_3       : natural :=  2;  -- bit index (for future usage)
>>>>>>> Updated C and RTL model as well as the documentation
   constant VAL_MODE_CIR      : std_logic_vector( 1 downto 0 ) :=  "00";  -- value
   constant VAL_MODE_LIN      : std_logic_vector( 1 downto 0 ) :=  "01";  -- value
   constant VAL_MODE_HYP      : std_logic_vector( 1 downto 0 ) :=  "10";  -- value
 
   procedure mult_0_61( signal a    : in    signed; 
                      signal a_sh : inout signed; 
                      signal sum  : inout signed; 
                             cnt  : in    natural;
                      constant RM_GAIN : in natural ); 
 
   procedure mult_0_21( signal a    : in    signed; 
                      signal a_sh : inout signed; 
                      signal sum  : inout signed; 
                             cnt  : in    natural;
                      constant RM_GAIN : in natural ); 
 
 
 
end package cordic_pkg;
 
 
package body cordic_pkg is
 
 
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_01( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_01;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_02( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 4 );
         when   2 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_02;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_03( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   3 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_03;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_04( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_04;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_05( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 12 );
         when   5 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_05;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_06( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_06;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_07( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_07;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_08( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 19 );
         when   8 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_08;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_09( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 20 );
         when   8 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 22 );
         when   9 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_09;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_10( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 20 );
         when   8 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 23 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 25 );
         when  10 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_10;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_11( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 20 );
         when   8 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 23 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 26 );
         when  10 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 27 );
         when  11 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_11;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_12( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 20 );
         when   8 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 23 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 26 );
         when  10 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 28 );
         when  11 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 29 );
         when  12 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_12;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_13( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 20 );
         when   8 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 23 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 26 );
         when  10 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 28 );
         when  11 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 29 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 34 );
         when  13 => sum <= sum + a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_13;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_14( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 20 );
         when   8 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 23 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 26 );
         when  10 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 28 );
         when  11 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 29 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 34 );
         when  13 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 39 );
         when  14 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_14;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_15( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 20 );
         when   8 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 23 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 26 );
         when  10 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 28 );
         when  11 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 29 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 34 );
         when  13 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 38 );
         when  14 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 40 );
         when  15 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_15;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_16( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 20 );
         when   8 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 23 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 26 );
         when  10 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 28 );
         when  11 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 29 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 34 );
         when  13 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 38 );
         when  14 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 41 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 50 );
         when  16 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_16;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_17( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 20 );
         when   8 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 23 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 26 );
         when  10 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 28 );
         when  11 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 29 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 34 );
         when  13 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 38 );
         when  14 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 41 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 50 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  17 => sum <= sum + a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_17;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_18( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 20 );
         when   8 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 23 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 26 );
         when  10 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 28 );
         when  11 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 29 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 34 );
         when  13 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 38 );
         when  14 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 41 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 50 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  17 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  18 => sum <= sum + a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_18;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_19( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 20 );
         when   8 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 23 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 26 );
         when  10 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 28 );
         when  11 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 29 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 34 );
         when  13 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 38 );
         when  14 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 41 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 50 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  17 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  18 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 56 );
         when  19 => sum <= sum + a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_19;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_20( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 20 );
         when   8 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 23 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 26 );
         when  10 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 28 );
         when  11 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 29 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 34 );
         when  13 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 38 );
         when  14 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 41 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 50 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  17 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  18 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 56 );
         when  19 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  20 => sum <= sum + a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_20;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_21( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 20 );
         when   8 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 23 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 26 );
         when  10 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 28 );
         when  11 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 29 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 34 );
         when  13 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 38 );
         when  14 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 41 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 50 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  17 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  18 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 56 );
         when  19 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  20 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 58 );
         when  21 => sum <= sum + a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_21;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_22( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 20 );
         when   8 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 23 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 26 );
         when  10 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 28 );
         when  11 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 29 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 34 );
         when  13 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 38 );
         when  14 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 41 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 50 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  17 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  18 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 56 );
         when  19 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  20 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 58 );
         when  21 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 59 );
         when  22 => sum <= sum + a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_22;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_23( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 20 );
         when   8 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 23 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 26 );
         when  10 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 28 );
         when  11 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 29 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 34 );
         when  13 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 38 );
         when  14 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 41 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 50 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  17 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  18 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 56 );
         when  19 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  20 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 58 );
         when  21 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 59 );
         when  22 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 60 );
         when  23 => sum <= sum + a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_23;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_24( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 20 );
         when   8 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 23 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 26 );
         when  10 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 28 );
         when  11 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 29 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 34 );
         when  13 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 38 );
         when  14 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 41 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 50 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  17 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  18 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 56 );
         when  19 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  20 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 58 );
         when  21 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 59 );
         when  22 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 60 );
         when  23 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 61 );
         when  24 => sum <= sum + a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_24;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_25( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 20 );
         when   8 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 23 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 26 );
         when  10 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 28 );
         when  11 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 29 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 34 );
         when  13 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 38 );
         when  14 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 41 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 50 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  17 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  18 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 56 );
         when  19 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  20 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 58 );
         when  21 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 59 );
         when  22 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 60 );
         when  23 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 61 );
         when  24 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 62 );
         when  25 => sum <= sum + a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_25;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_26( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 20 );
         when   8 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 23 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 26 );
         when  10 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 28 );
         when  11 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 29 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 34 );
         when  13 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 38 );
         when  14 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 41 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 50 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  17 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  18 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 56 );
         when  19 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  20 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 58 );
         when  21 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 59 );
         when  22 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 60 );
         when  23 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 61 );
         when  24 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 62 );
         when  25 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 63 );
         when  26 => sum <= sum + a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_26;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_27( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 20 );
         when   8 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 23 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 26 );
         when  10 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 28 );
         when  11 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 29 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 34 );
         when  13 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 38 );
         when  14 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 41 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 50 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  17 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  18 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 56 );
         when  19 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  20 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 58 );
         when  21 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 59 );
         when  22 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 60 );
         when  23 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 61 );
         when  24 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 62 );
         when  25 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 63 );
         when  26 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 64 );
         when  27 => sum <= sum + a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_27;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_28( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 20 );
         when   8 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 23 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 26 );
         when  10 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 28 );
         when  11 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 29 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 34 );
         when  13 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 38 );
         when  14 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 41 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 50 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  17 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  18 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 56 );
         when  19 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  20 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 58 );
         when  21 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 59 );
         when  22 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 60 );
         when  23 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 61 );
         when  24 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 62 );
         when  25 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 63 );
         when  26 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 64 );
         when  27 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 65 );
         when  28 => sum <= sum + a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_28;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_29( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 20 );
         when   8 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 23 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 26 );
         when  10 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 28 );
         when  11 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 29 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 34 );
         when  13 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 38 );
         when  14 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 41 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 50 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  17 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  18 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 56 );
         when  19 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  20 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 58 );
         when  21 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 59 );
         when  22 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 60 );
         when  23 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 61 );
         when  24 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 62 );
         when  25 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 63 );
         when  26 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 64 );
         when  27 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 65 );
         when  28 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 66 );
         when  29 => sum <= sum + a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_29;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61_30( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= to_signed( 0, sum'length );
                     a_sh <= SHIFT_RIGHT( a, 1 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 3 );
         when   2 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 9 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 13 );
         when   5 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 14 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   7 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 20 );
         when   8 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 23 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 26 );
         when  10 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 28 );
         when  11 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 29 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 34 );
         when  13 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 38 );
         when  14 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 41 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 50 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  17 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  18 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 56 );
         when  19 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  20 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 58 );
         when  21 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 59 );
         when  22 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 60 );
         when  23 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 61 );
         when  24 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 62 );
         when  25 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 63 );
         when  26 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 64 );
         when  27 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 65 );
         when  28 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 66 );
         when  29 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 67 );
         when  30 => sum <= sum + a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_61_30;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_61( signal   a       : in    signed; 
                   signal   a_sh    : inout signed; 
                   signal   sum     : inout signed; 
                            cnt     : in    natural; 
                   constant RM_GAIN : in    natural ) is 
   begin
      case RM_GAIN is
         when 1 => mult_0_61_01( a, a_sh, sum, cnt  );
         when 2 => mult_0_61_02( a, a_sh, sum, cnt  );
         when 3 => mult_0_61_03( a, a_sh, sum, cnt  );
         when 4 => mult_0_61_04( a, a_sh, sum, cnt  );
         when 5 => mult_0_61_05( a, a_sh, sum, cnt  );
         when 6 => mult_0_61_06( a, a_sh, sum, cnt  );
         when 7 => mult_0_61_07( a, a_sh, sum, cnt  );
         when 8 => mult_0_61_08( a, a_sh, sum, cnt  );
         when 9 => mult_0_61_09( a, a_sh, sum, cnt  );
         when 10 => mult_0_61_10( a, a_sh, sum, cnt  );
         when 11 => mult_0_61_11( a, a_sh, sum, cnt  );
         when 12 => mult_0_61_12( a, a_sh, sum, cnt  );
         when 13 => mult_0_61_13( a, a_sh, sum, cnt  );
         when 14 => mult_0_61_14( a, a_sh, sum, cnt  );
         when 15 => mult_0_61_15( a, a_sh, sum, cnt  );
         when 16 => mult_0_61_16( a, a_sh, sum, cnt  );
         when 17 => mult_0_61_17( a, a_sh, sum, cnt  );
         when 18 => mult_0_61_18( a, a_sh, sum, cnt  );
         when 19 => mult_0_61_19( a, a_sh, sum, cnt  );
         when 20 => mult_0_61_20( a, a_sh, sum, cnt  );
         when 21 => mult_0_61_21( a, a_sh, sum, cnt  );
         when 22 => mult_0_61_22( a, a_sh, sum, cnt  );
         when 23 => mult_0_61_23( a, a_sh, sum, cnt  );
         when 24 => mult_0_61_24( a, a_sh, sum, cnt  );
         when 25 => mult_0_61_25( a, a_sh, sum, cnt  );
         when 26 => mult_0_61_26( a, a_sh, sum, cnt  );
         when 27 => mult_0_61_27( a, a_sh, sum, cnt  );
         when 28 => mult_0_61_28( a, a_sh, sum, cnt  );
         when 29 => mult_0_61_29( a, a_sh, sum, cnt  );
         when 30 => mult_0_61_30( a, a_sh, sum, cnt  );
         when others => mult_0_61_30( a, a_sh, sum, cnt  );
      end case;
end procedure mult_0_61;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_01( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 3 ); 
         when   1 => sum  <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_01;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_02( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 4 );
         when   2 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_02;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_03( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 6 );
         when   3 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_03;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_04( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_04;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_05( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 12 );
         when   5 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_05;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_06( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 15 );
         when   6 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_06;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_07( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_07;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_08( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 22 );
         when   8 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_08;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_09( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 21 );
         when   8 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 24 );
         when   9 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_09;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_10( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 21 );
         when   8 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 24 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 27 );
         when  10 => sum <= sum + a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_10;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_11( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 21 );
         when   8 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 24 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 27 );
         when  10 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 37 );
         when  11 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_11;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_12( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 21 );
         when   8 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 24 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 27 );
         when  10 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 36 );
         when  11 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 39 );
         when  12 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_12;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_13( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 21 );
         when   8 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 24 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 27 );
         when  10 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 36 );
         when  11 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 40 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 42 );
         when  13 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_13;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_14( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 21 );
         when   8 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 24 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 27 );
         when  10 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 36 );
         when  11 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 40 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 43 );
         when  13 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 44 );
         when  14 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_14;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_15( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 21 );
         when   8 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 24 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 27 );
         when  10 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 36 );
         when  11 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 40 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 43 );
         when  13 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 45 );
         when  14 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 50 );
         when  15 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_15;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_16( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 21 );
         when   8 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 24 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 27 );
         when  10 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 36 );
         when  11 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 40 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 43 );
         when  13 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 45 );
         when  14 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 51 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 52 );
         when  16 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_16;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_17( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 21 );
         when   8 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 24 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 27 );
         when  10 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 36 );
         when  11 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 40 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 43 );
         when  13 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 45 );
         when  14 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 51 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  17 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_17;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_18( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 21 );
         when   8 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 24 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 27 );
         when  10 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 36 );
         when  11 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 40 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 43 );
         when  13 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 45 );
         when  14 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 51 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  17 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  18 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_18;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_19( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 21 );
         when   8 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 24 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 27 );
         when  10 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 36 );
         when  11 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 40 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 43 );
         when  13 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 45 );
         when  14 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 51 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  17 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  18 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 58 );
         when  19 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_19;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_20( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 21 );
         when   8 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 24 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 27 );
         when  10 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 36 );
         when  11 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 40 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 43 );
         when  13 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 45 );
         when  14 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 51 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  17 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  18 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 58 );
         when  19 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 59 );
         when  20 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_20;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_21( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 21 );
         when   8 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 24 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 27 );
         when  10 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 36 );
         when  11 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 40 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 43 );
         when  13 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 45 );
         when  14 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 51 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  17 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  18 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 58 );
         when  19 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 59 );
         when  20 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 60 );
         when  21 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_21;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_22( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 21 );
         when   8 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 24 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 27 );
         when  10 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 36 );
         when  11 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 40 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 43 );
         when  13 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 45 );
         when  14 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 51 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  17 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  18 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 58 );
         when  19 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 59 );
         when  20 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 60 );
         when  21 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 61 );
         when  22 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_22;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_23( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 21 );
         when   8 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 24 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 27 );
         when  10 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 36 );
         when  11 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 40 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 43 );
         when  13 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 45 );
         when  14 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 51 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  17 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  18 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 58 );
         when  19 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 59 );
         when  20 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 60 );
         when  21 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 61 );
         when  22 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 62 );
         when  23 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_23;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_24( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 21 );
         when   8 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 24 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 27 );
         when  10 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 36 );
         when  11 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 40 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 43 );
         when  13 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 45 );
         when  14 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 51 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  17 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  18 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 58 );
         when  19 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 59 );
         when  20 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 60 );
         when  21 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 61 );
         when  22 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 62 );
         when  23 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 63 );
         when  24 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_24;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_25( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 21 );
         when   8 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 24 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 27 );
         when  10 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 36 );
         when  11 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 40 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 43 );
         when  13 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 45 );
         when  14 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 51 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  17 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  18 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 58 );
         when  19 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 59 );
         when  20 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 60 );
         when  21 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 61 );
         when  22 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 62 );
         when  23 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 63 );
         when  24 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 64 );
         when  25 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_25;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_26( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 21 );
         when   8 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 24 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 27 );
         when  10 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 36 );
         when  11 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 40 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 43 );
         when  13 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 45 );
         when  14 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 51 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  17 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  18 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 58 );
         when  19 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 59 );
         when  20 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 60 );
         when  21 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 61 );
         when  22 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 62 );
         when  23 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 63 );
         when  24 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 64 );
         when  25 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 65 );
         when  26 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_26;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_27( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 21 );
         when   8 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 24 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 27 );
         when  10 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 36 );
         when  11 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 40 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 43 );
         when  13 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 45 );
         when  14 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 51 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  17 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  18 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 58 );
         when  19 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 59 );
         when  20 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 60 );
         when  21 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 61 );
         when  22 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 62 );
         when  23 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 63 );
         when  24 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 64 );
         when  25 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 65 );
         when  26 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 66 );
         when  27 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_27;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_28( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 21 );
         when   8 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 24 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 27 );
         when  10 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 36 );
         when  11 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 40 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 43 );
         when  13 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 45 );
         when  14 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 51 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  17 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  18 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 58 );
         when  19 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 59 );
         when  20 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 60 );
         when  21 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 61 );
         when  22 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 62 );
         when  23 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 63 );
         when  24 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 64 );
         when  25 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 65 );
         when  26 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 66 );
         when  27 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 67 );
         when  28 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_28;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_29( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 21 );
         when   8 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 24 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 27 );
         when  10 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 36 );
         when  11 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 40 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 43 );
         when  13 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 45 );
         when  14 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 51 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  17 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  18 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 58 );
         when  19 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 59 );
         when  20 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 60 );
         when  21 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 61 );
         when  22 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 62 );
         when  23 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 63 );
         when  24 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 64 );
         when  25 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 65 );
         when  26 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 66 );
         when  27 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 67 );
         when  28 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 68 );
         when  29 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_29;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21_30( signal a    : in    signed; 
                   signal a_sh : inout signed; 
                   signal sum  : inout signed; 
                          cnt  : in    natural ) is 
   begin
      case cnt is
         when   0 => sum  <= a;
                     a_sh <= SHIFT_RIGHT( a, 2 ); 
         when   1 => sum  <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 5 );
         when   2 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 7 );
         when   3 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 8 );
         when   4 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 11 );
         when   5 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 16 );
         when   6 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 17 );
         when   7 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 21 );
         when   8 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 24 );
         when   9 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 27 );
         when  10 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 36 );
         when  11 => sum <= sum + a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 40 );
         when  12 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 43 );
         when  13 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 45 );
         when  14 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 51 );
         when  15 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 53 );
         when  16 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 55 );
         when  17 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 57 );
         when  18 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 58 );
         when  19 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 59 );
         when  20 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 60 );
         when  21 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 61 );
         when  22 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 62 );
         when  23 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 63 );
         when  24 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 64 );
         when  25 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 65 );
         when  26 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 66 );
         when  27 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 67 );
         when  28 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 68 );
         when  29 => sum <= sum - a_sh; 
                 a_sh <= SHIFT_RIGHT( a, 69 );
         when  30 => sum <= sum - a_sh; 
         when others => sum <= sum;
     end case;
end procedure mult_0_21_30;
 
 
--
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
-- a_sh is a temporary register to store the shifted value, and 
-- sum is a temporary register to sum up the result
--
procedure mult_0_21( signal   a       : in    signed; 
                   signal   a_sh    : inout signed; 
                   signal   sum     : inout signed; 
                            cnt     : in    natural; 
                   constant RM_GAIN : in    natural ) is 
   begin
      case RM_GAIN is
         when 1 => mult_0_21_01( a, a_sh, sum, cnt  );
         when 2 => mult_0_21_02( a, a_sh, sum, cnt  );
         when 3 => mult_0_21_03( a, a_sh, sum, cnt  );
         when 4 => mult_0_21_04( a, a_sh, sum, cnt  );
         when 5 => mult_0_21_05( a, a_sh, sum, cnt  );
         when 6 => mult_0_21_06( a, a_sh, sum, cnt  );
         when 7 => mult_0_21_07( a, a_sh, sum, cnt  );
         when 8 => mult_0_21_08( a, a_sh, sum, cnt  );
         when 9 => mult_0_21_09( a, a_sh, sum, cnt  );
         when 10 => mult_0_21_10( a, a_sh, sum, cnt  );
         when 11 => mult_0_21_11( a, a_sh, sum, cnt  );
         when 12 => mult_0_21_12( a, a_sh, sum, cnt  );
         when 13 => mult_0_21_13( a, a_sh, sum, cnt  );
         when 14 => mult_0_21_14( a, a_sh, sum, cnt  );
         when 15 => mult_0_21_15( a, a_sh, sum, cnt  );
         when 16 => mult_0_21_16( a, a_sh, sum, cnt  );
         when 17 => mult_0_21_17( a, a_sh, sum, cnt  );
         when 18 => mult_0_21_18( a, a_sh, sum, cnt  );
         when 19 => mult_0_21_19( a, a_sh, sum, cnt  );
         when 20 => mult_0_21_20( a, a_sh, sum, cnt  );
         when 21 => mult_0_21_21( a, a_sh, sum, cnt  );
         when 22 => mult_0_21_22( a, a_sh, sum, cnt  );
         when 23 => mult_0_21_23( a, a_sh, sum, cnt  );
         when 24 => mult_0_21_24( a, a_sh, sum, cnt  );
         when 25 => mult_0_21_25( a, a_sh, sum, cnt  );
         when 26 => mult_0_21_26( a, a_sh, sum, cnt  );
         when 27 => mult_0_21_27( a, a_sh, sum, cnt  );
         when 28 => mult_0_21_28( a, a_sh, sum, cnt  );
         when 29 => mult_0_21_29( a, a_sh, sum, cnt  );
         when 30 => mult_0_21_30( a, a_sh, sum, cnt  );
         when others => mult_0_21_30( a, a_sh, sum, cnt  );
      end case;
end procedure mult_0_21;
 
 
 
 
end cordic_pkg;
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.