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

Subversion Repositories yac

[/] [yac/] [trunk/] [rtl/] [vhdl/] [cordic_iterative_pkg.vhd] - Blame information for rev 4

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

Line No. Rev Author Line
1 2 feddischso
----------------------------------------------------------------------------
2
----                                                                    ----
3
----  File           : cordic_iterative_pkg.vhd                         ----
4
----  Project        : YAC (Yet Another CORDIC Core)                    ----
5
----  Creation       : Feb. 2014                                        ----
6
----  Limitations    :                                                  ----
7
----  Synthesizer    :                                                  ----
8
----  Target         :                                                  ----
9
----                                                                    ----
10
----  Author(s):     : Christian Haettich                               ----
11
----  Email          : feddischson@opencores.org                        ----
12
----                                                                    ----
13
----                                                                    ----
14
-----                                                                  -----
15
----                                                                    ----
16
----  Description                                                       ----
17
----        VHDL Package which contains some flabs and                  ----
18
----        some auto-generated division (multiplication)               ----
19
----        functions.                                                  ----
20
----                                                                    ----
21
----                                                                    ----
22
----                                                                    ----
23
-----                                                                  -----
24
----                                                                    ----
25
----  TODO                                                              ----
26
----        Some documentation                                          ----
27
----                                                                    ----
28
----                                                                    ----
29
----                                                                    ----
30
----                                                                    ----
31
----------------------------------------------------------------------------
32
----                                                                    ----
33
----                  Copyright Notice                                  ----
34
----                                                                    ----
35
---- This file is part of YAC - Yet Another CORDIC Core                 ----
36
---- Copyright (c) 2014, Author(s), All rights reserved.                ----
37
----                                                                    ----
38
---- YAC is free software; you can redistribute it and/or               ----
39
---- modify it under the terms of the GNU Lesser General Public         ----
40
---- License as published by the Free Software Foundation; either       ----
41
---- version 3.0 of the License, or (at your option) any later version. ----
42
----                                                                    ----
43
---- YAC is distributed in the hope that it will be useful,             ----
44
---- but WITHOUT ANY WARRANTY; without even the implied warranty of     ----
45
---- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  ----
46
---- Lesser General Public License for more details.                    ----
47
----                                                                    ----
48
---- You should have received a copy of the GNU Lesser General Public   ----
49
---- License along with this library. If not, download it from          ----
50
---- http://www.gnu.org/licenses/lgpl                                   ----
51
----                                                                    ----
52
----------------------------------------------------------------------------
53
 
54
 
55
 
56
library ieee;
57
use ieee.std_logic_1164.ALL;
58
use ieee.numeric_std.ALL;
59
 
60
package cordic_pkg is
61
 
62
 
63
 
64 3 feddischso
<<<<<<< HEAD
65 4 feddischso
<<<<<<< HEAD
66 2 feddischso
   constant I_FLAG_VEC_ROT      : natural :=  3;  -- bit index
67
   constant I_FLAG_ATAN_3       : natural :=  2;  -- bit index (for future usage)
68 3 feddischso
=======
69
   constant FLAG_VEC_ROT      : natural :=  3;  -- bit index
70
   constant FLAG_ATAN_3       : natural :=  2;  -- bit index
71
>>>>>>> initial commit
72 4 feddischso
=======
73
   constant I_FLAG_VEC_ROT      : natural :=  3;  -- bit index
74
   constant I_FLAG_ATAN_3       : natural :=  2;  -- bit index (for future usage)
75
>>>>>>> Updated C and RTL model as well as the documentation
76 2 feddischso
   constant VAL_MODE_CIR      : std_logic_vector( 1 downto 0 ) :=  "00";  -- value
77
   constant VAL_MODE_LIN      : std_logic_vector( 1 downto 0 ) :=  "01";  -- value
78
   constant VAL_MODE_HYP      : std_logic_vector( 1 downto 0 ) :=  "10";  -- value
79
 
80
   procedure mult_0_61( signal a    : in    signed;
81
                      signal a_sh : inout signed;
82
                      signal sum  : inout signed;
83
                             cnt  : in    natural;
84
                      constant RM_GAIN : in natural );
85
 
86
   procedure mult_0_21( signal a    : in    signed;
87
                      signal a_sh : inout signed;
88
                      signal sum  : inout signed;
89
                             cnt  : in    natural;
90
                      constant RM_GAIN : in natural );
91
 
92
 
93
 
94
end package cordic_pkg;
95
 
96
 
97
package body cordic_pkg is
98
 
99
 
100
 
101
 
102
--
103
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
104
-- a_sh is a temporary register to store the shifted value, and 
105
-- sum is a temporary register to sum up the result
106
--
107
procedure mult_0_61_01( signal a    : in    signed;
108
                   signal a_sh : inout signed;
109
                   signal sum  : inout signed;
110
                          cnt  : in    natural ) is
111
   begin
112
      case cnt is
113
         when   0 => sum  <= to_signed( 0, sum'length );
114
                     a_sh <= SHIFT_RIGHT( a, 1 );
115
         when   1 => sum  <= sum + a_sh;
116
         when others => sum <= sum;
117
     end case;
118
end procedure mult_0_61_01;
119
 
120
 
121
--
122
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
123
-- a_sh is a temporary register to store the shifted value, and 
124
-- sum is a temporary register to sum up the result
125
--
126
procedure mult_0_61_02( signal a    : in    signed;
127
                   signal a_sh : inout signed;
128
                   signal sum  : inout signed;
129
                          cnt  : in    natural ) is
130
   begin
131
      case cnt is
132
         when   0 => sum  <= to_signed( 0, sum'length );
133
                     a_sh <= SHIFT_RIGHT( a, 1 );
134
         when   1 => sum  <= sum + a_sh;
135
                 a_sh <= SHIFT_RIGHT( a, 4 );
136
         when   2 => sum <= sum - a_sh;
137
         when others => sum <= sum;
138
     end case;
139
end procedure mult_0_61_02;
140
 
141
 
142
--
143
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
144
-- a_sh is a temporary register to store the shifted value, and 
145
-- sum is a temporary register to sum up the result
146
--
147
procedure mult_0_61_03( signal a    : in    signed;
148
                   signal a_sh : inout signed;
149
                   signal sum  : inout signed;
150
                          cnt  : in    natural ) is
151
   begin
152
      case cnt is
153
         when   0 => sum  <= to_signed( 0, sum'length );
154
                     a_sh <= SHIFT_RIGHT( a, 1 );
155
         when   1 => sum  <= sum + a_sh;
156
                 a_sh <= SHIFT_RIGHT( a, 3 );
157
         when   2 => sum <= sum + a_sh;
158
                 a_sh <= SHIFT_RIGHT( a, 5 );
159
         when   3 => sum <= sum - a_sh;
160
         when others => sum <= sum;
161
     end case;
162
end procedure mult_0_61_03;
163
 
164
 
165
--
166
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
167
-- a_sh is a temporary register to store the shifted value, and 
168
-- sum is a temporary register to sum up the result
169
--
170
procedure mult_0_61_04( signal a    : in    signed;
171
                   signal a_sh : inout signed;
172
                   signal sum  : inout signed;
173
                          cnt  : in    natural ) is
174
   begin
175
      case cnt is
176
         when   0 => sum  <= to_signed( 0, sum'length );
177
                     a_sh <= SHIFT_RIGHT( a, 1 );
178
         when   1 => sum  <= sum + a_sh;
179
                 a_sh <= SHIFT_RIGHT( a, 3 );
180
         when   2 => sum <= sum + a_sh;
181
                 a_sh <= SHIFT_RIGHT( a, 6 );
182
         when   3 => sum <= sum - a_sh;
183
                 a_sh <= SHIFT_RIGHT( a, 8 );
184
         when   4 => sum <= sum - a_sh;
185
         when others => sum <= sum;
186
     end case;
187
end procedure mult_0_61_04;
188
 
189
 
190
--
191
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
192
-- a_sh is a temporary register to store the shifted value, and 
193
-- sum is a temporary register to sum up the result
194
--
195
procedure mult_0_61_05( signal a    : in    signed;
196
                   signal a_sh : inout signed;
197
                   signal sum  : inout signed;
198
                          cnt  : in    natural ) is
199
   begin
200
      case cnt is
201
         when   0 => sum  <= to_signed( 0, sum'length );
202
                     a_sh <= SHIFT_RIGHT( a, 1 );
203
         when   1 => sum  <= sum + a_sh;
204
                 a_sh <= SHIFT_RIGHT( a, 3 );
205
         when   2 => sum <= sum + a_sh;
206
                 a_sh <= SHIFT_RIGHT( a, 6 );
207
         when   3 => sum <= sum - a_sh;
208
                 a_sh <= SHIFT_RIGHT( a, 9 );
209
         when   4 => sum <= sum - a_sh;
210
                 a_sh <= SHIFT_RIGHT( a, 12 );
211
         when   5 => sum <= sum - a_sh;
212
         when others => sum <= sum;
213
     end case;
214
end procedure mult_0_61_05;
215
 
216
 
217
--
218
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
219
-- a_sh is a temporary register to store the shifted value, and 
220
-- sum is a temporary register to sum up the result
221
--
222
procedure mult_0_61_06( signal a    : in    signed;
223
                   signal a_sh : inout signed;
224
                   signal sum  : inout signed;
225
                          cnt  : in    natural ) is
226
   begin
227
      case cnt is
228
         when   0 => sum  <= to_signed( 0, sum'length );
229
                     a_sh <= SHIFT_RIGHT( a, 1 );
230
         when   1 => sum  <= sum + a_sh;
231
                 a_sh <= SHIFT_RIGHT( a, 3 );
232
         when   2 => sum <= sum + a_sh;
233
                 a_sh <= SHIFT_RIGHT( a, 6 );
234
         when   3 => sum <= sum - a_sh;
235
                 a_sh <= SHIFT_RIGHT( a, 9 );
236
         when   4 => sum <= sum - a_sh;
237
                 a_sh <= SHIFT_RIGHT( a, 13 );
238
         when   5 => sum <= sum - a_sh;
239
                 a_sh <= SHIFT_RIGHT( a, 14 );
240
         when   6 => sum <= sum - a_sh;
241
         when others => sum <= sum;
242
     end case;
243
end procedure mult_0_61_06;
244
 
245
 
246
--
247
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
248
-- a_sh is a temporary register to store the shifted value, and 
249
-- sum is a temporary register to sum up the result
250
--
251
procedure mult_0_61_07( signal a    : in    signed;
252
                   signal a_sh : inout signed;
253
                   signal sum  : inout signed;
254
                          cnt  : in    natural ) is
255
   begin
256
      case cnt is
257
         when   0 => sum  <= to_signed( 0, sum'length );
258
                     a_sh <= SHIFT_RIGHT( a, 1 );
259
         when   1 => sum  <= sum + a_sh;
260
                 a_sh <= SHIFT_RIGHT( a, 3 );
261
         when   2 => sum <= sum + a_sh;
262
                 a_sh <= SHIFT_RIGHT( a, 6 );
263
         when   3 => sum <= sum - a_sh;
264
                 a_sh <= SHIFT_RIGHT( a, 9 );
265
         when   4 => sum <= sum - a_sh;
266
                 a_sh <= SHIFT_RIGHT( a, 13 );
267
         when   5 => sum <= sum - a_sh;
268
                 a_sh <= SHIFT_RIGHT( a, 14 );
269
         when   6 => sum <= sum - a_sh;
270
                 a_sh <= SHIFT_RIGHT( a, 17 );
271
         when   7 => sum <= sum - a_sh;
272
         when others => sum <= sum;
273
     end case;
274
end procedure mult_0_61_07;
275
 
276
 
277
--
278
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
279
-- a_sh is a temporary register to store the shifted value, and 
280
-- sum is a temporary register to sum up the result
281
--
282
procedure mult_0_61_08( signal a    : in    signed;
283
                   signal a_sh : inout signed;
284
                   signal sum  : inout signed;
285
                          cnt  : in    natural ) is
286
   begin
287
      case cnt is
288
         when   0 => sum  <= to_signed( 0, sum'length );
289
                     a_sh <= SHIFT_RIGHT( a, 1 );
290
         when   1 => sum  <= sum + a_sh;
291
                 a_sh <= SHIFT_RIGHT( a, 3 );
292
         when   2 => sum <= sum + a_sh;
293
                 a_sh <= SHIFT_RIGHT( a, 6 );
294
         when   3 => sum <= sum - a_sh;
295
                 a_sh <= SHIFT_RIGHT( a, 9 );
296
         when   4 => sum <= sum - a_sh;
297
                 a_sh <= SHIFT_RIGHT( a, 13 );
298
         when   5 => sum <= sum - a_sh;
299
                 a_sh <= SHIFT_RIGHT( a, 14 );
300
         when   6 => sum <= sum - a_sh;
301
                 a_sh <= SHIFT_RIGHT( a, 16 );
302
         when   7 => sum <= sum + a_sh;
303
                 a_sh <= SHIFT_RIGHT( a, 19 );
304
         when   8 => sum <= sum - a_sh;
305
         when others => sum <= sum;
306
     end case;
307
end procedure mult_0_61_08;
308
 
309
 
310
--
311
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
312
-- a_sh is a temporary register to store the shifted value, and 
313
-- sum is a temporary register to sum up the result
314
--
315
procedure mult_0_61_09( signal a    : in    signed;
316
                   signal a_sh : inout signed;
317
                   signal sum  : inout signed;
318
                          cnt  : in    natural ) is
319
   begin
320
      case cnt is
321
         when   0 => sum  <= to_signed( 0, sum'length );
322
                     a_sh <= SHIFT_RIGHT( a, 1 );
323
         when   1 => sum  <= sum + a_sh;
324
                 a_sh <= SHIFT_RIGHT( a, 3 );
325
         when   2 => sum <= sum + a_sh;
326
                 a_sh <= SHIFT_RIGHT( a, 6 );
327
         when   3 => sum <= sum - a_sh;
328
                 a_sh <= SHIFT_RIGHT( a, 9 );
329
         when   4 => sum <= sum - a_sh;
330
                 a_sh <= SHIFT_RIGHT( a, 13 );
331
         when   5 => sum <= sum - a_sh;
332
                 a_sh <= SHIFT_RIGHT( a, 14 );
333
         when   6 => sum <= sum - a_sh;
334
                 a_sh <= SHIFT_RIGHT( a, 16 );
335
         when   7 => sum <= sum + a_sh;
336
                 a_sh <= SHIFT_RIGHT( a, 20 );
337
         when   8 => sum <= sum - a_sh;
338
                 a_sh <= SHIFT_RIGHT( a, 22 );
339
         when   9 => sum <= sum - a_sh;
340
         when others => sum <= sum;
341
     end case;
342
end procedure mult_0_61_09;
343
 
344
 
345
--
346
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
347
-- a_sh is a temporary register to store the shifted value, and 
348
-- sum is a temporary register to sum up the result
349
--
350
procedure mult_0_61_10( signal a    : in    signed;
351
                   signal a_sh : inout signed;
352
                   signal sum  : inout signed;
353
                          cnt  : in    natural ) is
354
   begin
355
      case cnt is
356
         when   0 => sum  <= to_signed( 0, sum'length );
357
                     a_sh <= SHIFT_RIGHT( a, 1 );
358
         when   1 => sum  <= sum + a_sh;
359
                 a_sh <= SHIFT_RIGHT( a, 3 );
360
         when   2 => sum <= sum + a_sh;
361
                 a_sh <= SHIFT_RIGHT( a, 6 );
362
         when   3 => sum <= sum - a_sh;
363
                 a_sh <= SHIFT_RIGHT( a, 9 );
364
         when   4 => sum <= sum - a_sh;
365
                 a_sh <= SHIFT_RIGHT( a, 13 );
366
         when   5 => sum <= sum - a_sh;
367
                 a_sh <= SHIFT_RIGHT( a, 14 );
368
         when   6 => sum <= sum - a_sh;
369
                 a_sh <= SHIFT_RIGHT( a, 16 );
370
         when   7 => sum <= sum + a_sh;
371
                 a_sh <= SHIFT_RIGHT( a, 20 );
372
         when   8 => sum <= sum - a_sh;
373
                 a_sh <= SHIFT_RIGHT( a, 23 );
374
         when   9 => sum <= sum - a_sh;
375
                 a_sh <= SHIFT_RIGHT( a, 25 );
376
         when  10 => sum <= sum - a_sh;
377
         when others => sum <= sum;
378
     end case;
379
end procedure mult_0_61_10;
380
 
381
 
382
--
383
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
384
-- a_sh is a temporary register to store the shifted value, and 
385
-- sum is a temporary register to sum up the result
386
--
387
procedure mult_0_61_11( signal a    : in    signed;
388
                   signal a_sh : inout signed;
389
                   signal sum  : inout signed;
390
                          cnt  : in    natural ) is
391
   begin
392
      case cnt is
393
         when   0 => sum  <= to_signed( 0, sum'length );
394
                     a_sh <= SHIFT_RIGHT( a, 1 );
395
         when   1 => sum  <= sum + a_sh;
396
                 a_sh <= SHIFT_RIGHT( a, 3 );
397
         when   2 => sum <= sum + a_sh;
398
                 a_sh <= SHIFT_RIGHT( a, 6 );
399
         when   3 => sum <= sum - a_sh;
400
                 a_sh <= SHIFT_RIGHT( a, 9 );
401
         when   4 => sum <= sum - a_sh;
402
                 a_sh <= SHIFT_RIGHT( a, 13 );
403
         when   5 => sum <= sum - a_sh;
404
                 a_sh <= SHIFT_RIGHT( a, 14 );
405
         when   6 => sum <= sum - a_sh;
406
                 a_sh <= SHIFT_RIGHT( a, 16 );
407
         when   7 => sum <= sum + a_sh;
408
                 a_sh <= SHIFT_RIGHT( a, 20 );
409
         when   8 => sum <= sum - a_sh;
410
                 a_sh <= SHIFT_RIGHT( a, 23 );
411
         when   9 => sum <= sum - a_sh;
412
                 a_sh <= SHIFT_RIGHT( a, 26 );
413
         when  10 => sum <= sum - a_sh;
414
                 a_sh <= SHIFT_RIGHT( a, 27 );
415
         when  11 => sum <= sum - a_sh;
416
         when others => sum <= sum;
417
     end case;
418
end procedure mult_0_61_11;
419
 
420
 
421
--
422
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
423
-- a_sh is a temporary register to store the shifted value, and 
424
-- sum is a temporary register to sum up the result
425
--
426
procedure mult_0_61_12( signal a    : in    signed;
427
                   signal a_sh : inout signed;
428
                   signal sum  : inout signed;
429
                          cnt  : in    natural ) is
430
   begin
431
      case cnt is
432
         when   0 => sum  <= to_signed( 0, sum'length );
433
                     a_sh <= SHIFT_RIGHT( a, 1 );
434
         when   1 => sum  <= sum + a_sh;
435
                 a_sh <= SHIFT_RIGHT( a, 3 );
436
         when   2 => sum <= sum + a_sh;
437
                 a_sh <= SHIFT_RIGHT( a, 6 );
438
         when   3 => sum <= sum - a_sh;
439
                 a_sh <= SHIFT_RIGHT( a, 9 );
440
         when   4 => sum <= sum - a_sh;
441
                 a_sh <= SHIFT_RIGHT( a, 13 );
442
         when   5 => sum <= sum - a_sh;
443
                 a_sh <= SHIFT_RIGHT( a, 14 );
444
         when   6 => sum <= sum - a_sh;
445
                 a_sh <= SHIFT_RIGHT( a, 16 );
446
         when   7 => sum <= sum + a_sh;
447
                 a_sh <= SHIFT_RIGHT( a, 20 );
448
         when   8 => sum <= sum - a_sh;
449
                 a_sh <= SHIFT_RIGHT( a, 23 );
450
         when   9 => sum <= sum - a_sh;
451
                 a_sh <= SHIFT_RIGHT( a, 26 );
452
         when  10 => sum <= sum - a_sh;
453
                 a_sh <= SHIFT_RIGHT( a, 28 );
454
         when  11 => sum <= sum - a_sh;
455
                 a_sh <= SHIFT_RIGHT( a, 29 );
456
         when  12 => sum <= sum - a_sh;
457
         when others => sum <= sum;
458
     end case;
459
end procedure mult_0_61_12;
460
 
461
 
462
--
463
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
464
-- a_sh is a temporary register to store the shifted value, and 
465
-- sum is a temporary register to sum up the result
466
--
467
procedure mult_0_61_13( signal a    : in    signed;
468
                   signal a_sh : inout signed;
469
                   signal sum  : inout signed;
470
                          cnt  : in    natural ) is
471
   begin
472
      case cnt is
473
         when   0 => sum  <= to_signed( 0, sum'length );
474
                     a_sh <= SHIFT_RIGHT( a, 1 );
475
         when   1 => sum  <= sum + a_sh;
476
                 a_sh <= SHIFT_RIGHT( a, 3 );
477
         when   2 => sum <= sum + a_sh;
478
                 a_sh <= SHIFT_RIGHT( a, 6 );
479
         when   3 => sum <= sum - a_sh;
480
                 a_sh <= SHIFT_RIGHT( a, 9 );
481
         when   4 => sum <= sum - a_sh;
482
                 a_sh <= SHIFT_RIGHT( a, 13 );
483
         when   5 => sum <= sum - a_sh;
484
                 a_sh <= SHIFT_RIGHT( a, 14 );
485
         when   6 => sum <= sum - a_sh;
486
                 a_sh <= SHIFT_RIGHT( a, 16 );
487
         when   7 => sum <= sum + a_sh;
488
                 a_sh <= SHIFT_RIGHT( a, 20 );
489
         when   8 => sum <= sum - a_sh;
490
                 a_sh <= SHIFT_RIGHT( a, 23 );
491
         when   9 => sum <= sum - a_sh;
492
                 a_sh <= SHIFT_RIGHT( a, 26 );
493
         when  10 => sum <= sum - a_sh;
494
                 a_sh <= SHIFT_RIGHT( a, 28 );
495
         when  11 => sum <= sum - a_sh;
496
                 a_sh <= SHIFT_RIGHT( a, 29 );
497
         when  12 => sum <= sum - a_sh;
498
                 a_sh <= SHIFT_RIGHT( a, 34 );
499
         when  13 => sum <= sum + a_sh;
500
         when others => sum <= sum;
501
     end case;
502
end procedure mult_0_61_13;
503
 
504
 
505
--
506
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
507
-- a_sh is a temporary register to store the shifted value, and 
508
-- sum is a temporary register to sum up the result
509
--
510
procedure mult_0_61_14( signal a    : in    signed;
511
                   signal a_sh : inout signed;
512
                   signal sum  : inout signed;
513
                          cnt  : in    natural ) is
514
   begin
515
      case cnt is
516
         when   0 => sum  <= to_signed( 0, sum'length );
517
                     a_sh <= SHIFT_RIGHT( a, 1 );
518
         when   1 => sum  <= sum + a_sh;
519
                 a_sh <= SHIFT_RIGHT( a, 3 );
520
         when   2 => sum <= sum + a_sh;
521
                 a_sh <= SHIFT_RIGHT( a, 6 );
522
         when   3 => sum <= sum - a_sh;
523
                 a_sh <= SHIFT_RIGHT( a, 9 );
524
         when   4 => sum <= sum - a_sh;
525
                 a_sh <= SHIFT_RIGHT( a, 13 );
526
         when   5 => sum <= sum - a_sh;
527
                 a_sh <= SHIFT_RIGHT( a, 14 );
528
         when   6 => sum <= sum - a_sh;
529
                 a_sh <= SHIFT_RIGHT( a, 16 );
530
         when   7 => sum <= sum + a_sh;
531
                 a_sh <= SHIFT_RIGHT( a, 20 );
532
         when   8 => sum <= sum - a_sh;
533
                 a_sh <= SHIFT_RIGHT( a, 23 );
534
         when   9 => sum <= sum - a_sh;
535
                 a_sh <= SHIFT_RIGHT( a, 26 );
536
         when  10 => sum <= sum - a_sh;
537
                 a_sh <= SHIFT_RIGHT( a, 28 );
538
         when  11 => sum <= sum - a_sh;
539
                 a_sh <= SHIFT_RIGHT( a, 29 );
540
         when  12 => sum <= sum - a_sh;
541
                 a_sh <= SHIFT_RIGHT( a, 34 );
542
         when  13 => sum <= sum + a_sh;
543
                 a_sh <= SHIFT_RIGHT( a, 39 );
544
         when  14 => sum <= sum - a_sh;
545
         when others => sum <= sum;
546
     end case;
547
end procedure mult_0_61_14;
548
 
549
 
550
--
551
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
552
-- a_sh is a temporary register to store the shifted value, and 
553
-- sum is a temporary register to sum up the result
554
--
555
procedure mult_0_61_15( signal a    : in    signed;
556
                   signal a_sh : inout signed;
557
                   signal sum  : inout signed;
558
                          cnt  : in    natural ) is
559
   begin
560
      case cnt is
561
         when   0 => sum  <= to_signed( 0, sum'length );
562
                     a_sh <= SHIFT_RIGHT( a, 1 );
563
         when   1 => sum  <= sum + a_sh;
564
                 a_sh <= SHIFT_RIGHT( a, 3 );
565
         when   2 => sum <= sum + a_sh;
566
                 a_sh <= SHIFT_RIGHT( a, 6 );
567
         when   3 => sum <= sum - a_sh;
568
                 a_sh <= SHIFT_RIGHT( a, 9 );
569
         when   4 => sum <= sum - a_sh;
570
                 a_sh <= SHIFT_RIGHT( a, 13 );
571
         when   5 => sum <= sum - a_sh;
572
                 a_sh <= SHIFT_RIGHT( a, 14 );
573
         when   6 => sum <= sum - a_sh;
574
                 a_sh <= SHIFT_RIGHT( a, 16 );
575
         when   7 => sum <= sum + a_sh;
576
                 a_sh <= SHIFT_RIGHT( a, 20 );
577
         when   8 => sum <= sum - a_sh;
578
                 a_sh <= SHIFT_RIGHT( a, 23 );
579
         when   9 => sum <= sum - a_sh;
580
                 a_sh <= SHIFT_RIGHT( a, 26 );
581
         when  10 => sum <= sum - a_sh;
582
                 a_sh <= SHIFT_RIGHT( a, 28 );
583
         when  11 => sum <= sum - a_sh;
584
                 a_sh <= SHIFT_RIGHT( a, 29 );
585
         when  12 => sum <= sum - a_sh;
586
                 a_sh <= SHIFT_RIGHT( a, 34 );
587
         when  13 => sum <= sum + a_sh;
588
                 a_sh <= SHIFT_RIGHT( a, 38 );
589
         when  14 => sum <= sum + a_sh;
590
                 a_sh <= SHIFT_RIGHT( a, 40 );
591
         when  15 => sum <= sum - a_sh;
592
         when others => sum <= sum;
593
     end case;
594
end procedure mult_0_61_15;
595
 
596
 
597
--
598
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
599
-- a_sh is a temporary register to store the shifted value, and 
600
-- sum is a temporary register to sum up the result
601
--
602
procedure mult_0_61_16( signal a    : in    signed;
603
                   signal a_sh : inout signed;
604
                   signal sum  : inout signed;
605
                          cnt  : in    natural ) is
606
   begin
607
      case cnt is
608
         when   0 => sum  <= to_signed( 0, sum'length );
609
                     a_sh <= SHIFT_RIGHT( a, 1 );
610
         when   1 => sum  <= sum + a_sh;
611
                 a_sh <= SHIFT_RIGHT( a, 3 );
612
         when   2 => sum <= sum + a_sh;
613
                 a_sh <= SHIFT_RIGHT( a, 6 );
614
         when   3 => sum <= sum - a_sh;
615
                 a_sh <= SHIFT_RIGHT( a, 9 );
616
         when   4 => sum <= sum - a_sh;
617
                 a_sh <= SHIFT_RIGHT( a, 13 );
618
         when   5 => sum <= sum - a_sh;
619
                 a_sh <= SHIFT_RIGHT( a, 14 );
620
         when   6 => sum <= sum - a_sh;
621
                 a_sh <= SHIFT_RIGHT( a, 16 );
622
         when   7 => sum <= sum + a_sh;
623
                 a_sh <= SHIFT_RIGHT( a, 20 );
624
         when   8 => sum <= sum - a_sh;
625
                 a_sh <= SHIFT_RIGHT( a, 23 );
626
         when   9 => sum <= sum - a_sh;
627
                 a_sh <= SHIFT_RIGHT( a, 26 );
628
         when  10 => sum <= sum - a_sh;
629
                 a_sh <= SHIFT_RIGHT( a, 28 );
630
         when  11 => sum <= sum - a_sh;
631
                 a_sh <= SHIFT_RIGHT( a, 29 );
632
         when  12 => sum <= sum - a_sh;
633
                 a_sh <= SHIFT_RIGHT( a, 34 );
634
         when  13 => sum <= sum + a_sh;
635
                 a_sh <= SHIFT_RIGHT( a, 38 );
636
         when  14 => sum <= sum + a_sh;
637
                 a_sh <= SHIFT_RIGHT( a, 41 );
638
         when  15 => sum <= sum - a_sh;
639
                 a_sh <= SHIFT_RIGHT( a, 50 );
640
         when  16 => sum <= sum - a_sh;
641
         when others => sum <= sum;
642
     end case;
643
end procedure mult_0_61_16;
644
 
645
 
646
--
647
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
648
-- a_sh is a temporary register to store the shifted value, and 
649
-- sum is a temporary register to sum up the result
650
--
651
procedure mult_0_61_17( signal a    : in    signed;
652
                   signal a_sh : inout signed;
653
                   signal sum  : inout signed;
654
                          cnt  : in    natural ) is
655
   begin
656
      case cnt is
657
         when   0 => sum  <= to_signed( 0, sum'length );
658
                     a_sh <= SHIFT_RIGHT( a, 1 );
659
         when   1 => sum  <= sum + a_sh;
660
                 a_sh <= SHIFT_RIGHT( a, 3 );
661
         when   2 => sum <= sum + a_sh;
662
                 a_sh <= SHIFT_RIGHT( a, 6 );
663
         when   3 => sum <= sum - a_sh;
664
                 a_sh <= SHIFT_RIGHT( a, 9 );
665
         when   4 => sum <= sum - a_sh;
666
                 a_sh <= SHIFT_RIGHT( a, 13 );
667
         when   5 => sum <= sum - a_sh;
668
                 a_sh <= SHIFT_RIGHT( a, 14 );
669
         when   6 => sum <= sum - a_sh;
670
                 a_sh <= SHIFT_RIGHT( a, 16 );
671
         when   7 => sum <= sum + a_sh;
672
                 a_sh <= SHIFT_RIGHT( a, 20 );
673
         when   8 => sum <= sum - a_sh;
674
                 a_sh <= SHIFT_RIGHT( a, 23 );
675
         when   9 => sum <= sum - a_sh;
676
                 a_sh <= SHIFT_RIGHT( a, 26 );
677
         when  10 => sum <= sum - a_sh;
678
                 a_sh <= SHIFT_RIGHT( a, 28 );
679
         when  11 => sum <= sum - a_sh;
680
                 a_sh <= SHIFT_RIGHT( a, 29 );
681
         when  12 => sum <= sum - a_sh;
682
                 a_sh <= SHIFT_RIGHT( a, 34 );
683
         when  13 => sum <= sum + a_sh;
684
                 a_sh <= SHIFT_RIGHT( a, 38 );
685
         when  14 => sum <= sum + a_sh;
686
                 a_sh <= SHIFT_RIGHT( a, 41 );
687
         when  15 => sum <= sum - a_sh;
688
                 a_sh <= SHIFT_RIGHT( a, 50 );
689
         when  16 => sum <= sum - a_sh;
690
                 a_sh <= SHIFT_RIGHT( a, 53 );
691
         when  17 => sum <= sum + a_sh;
692
         when others => sum <= sum;
693
     end case;
694
end procedure mult_0_61_17;
695
 
696
 
697
--
698
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
699
-- a_sh is a temporary register to store the shifted value, and 
700
-- sum is a temporary register to sum up the result
701
--
702
procedure mult_0_61_18( signal a    : in    signed;
703
                   signal a_sh : inout signed;
704
                   signal sum  : inout signed;
705
                          cnt  : in    natural ) is
706
   begin
707
      case cnt is
708
         when   0 => sum  <= to_signed( 0, sum'length );
709
                     a_sh <= SHIFT_RIGHT( a, 1 );
710
         when   1 => sum  <= sum + a_sh;
711
                 a_sh <= SHIFT_RIGHT( a, 3 );
712
         when   2 => sum <= sum + a_sh;
713
                 a_sh <= SHIFT_RIGHT( a, 6 );
714
         when   3 => sum <= sum - a_sh;
715
                 a_sh <= SHIFT_RIGHT( a, 9 );
716
         when   4 => sum <= sum - a_sh;
717
                 a_sh <= SHIFT_RIGHT( a, 13 );
718
         when   5 => sum <= sum - a_sh;
719
                 a_sh <= SHIFT_RIGHT( a, 14 );
720
         when   6 => sum <= sum - a_sh;
721
                 a_sh <= SHIFT_RIGHT( a, 16 );
722
         when   7 => sum <= sum + a_sh;
723
                 a_sh <= SHIFT_RIGHT( a, 20 );
724
         when   8 => sum <= sum - a_sh;
725
                 a_sh <= SHIFT_RIGHT( a, 23 );
726
         when   9 => sum <= sum - a_sh;
727
                 a_sh <= SHIFT_RIGHT( a, 26 );
728
         when  10 => sum <= sum - a_sh;
729
                 a_sh <= SHIFT_RIGHT( a, 28 );
730
         when  11 => sum <= sum - a_sh;
731
                 a_sh <= SHIFT_RIGHT( a, 29 );
732
         when  12 => sum <= sum - a_sh;
733
                 a_sh <= SHIFT_RIGHT( a, 34 );
734
         when  13 => sum <= sum + a_sh;
735
                 a_sh <= SHIFT_RIGHT( a, 38 );
736
         when  14 => sum <= sum + a_sh;
737
                 a_sh <= SHIFT_RIGHT( a, 41 );
738
         when  15 => sum <= sum - a_sh;
739
                 a_sh <= SHIFT_RIGHT( a, 50 );
740
         when  16 => sum <= sum - a_sh;
741
                 a_sh <= SHIFT_RIGHT( a, 53 );
742
         when  17 => sum <= sum + a_sh;
743
                 a_sh <= SHIFT_RIGHT( a, 55 );
744
         when  18 => sum <= sum + a_sh;
745
         when others => sum <= sum;
746
     end case;
747
end procedure mult_0_61_18;
748
 
749
 
750
--
751
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
752
-- a_sh is a temporary register to store the shifted value, and 
753
-- sum is a temporary register to sum up the result
754
--
755
procedure mult_0_61_19( signal a    : in    signed;
756
                   signal a_sh : inout signed;
757
                   signal sum  : inout signed;
758
                          cnt  : in    natural ) is
759
   begin
760
      case cnt is
761
         when   0 => sum  <= to_signed( 0, sum'length );
762
                     a_sh <= SHIFT_RIGHT( a, 1 );
763
         when   1 => sum  <= sum + a_sh;
764
                 a_sh <= SHIFT_RIGHT( a, 3 );
765
         when   2 => sum <= sum + a_sh;
766
                 a_sh <= SHIFT_RIGHT( a, 6 );
767
         when   3 => sum <= sum - a_sh;
768
                 a_sh <= SHIFT_RIGHT( a, 9 );
769
         when   4 => sum <= sum - a_sh;
770
                 a_sh <= SHIFT_RIGHT( a, 13 );
771
         when   5 => sum <= sum - a_sh;
772
                 a_sh <= SHIFT_RIGHT( a, 14 );
773
         when   6 => sum <= sum - a_sh;
774
                 a_sh <= SHIFT_RIGHT( a, 16 );
775
         when   7 => sum <= sum + a_sh;
776
                 a_sh <= SHIFT_RIGHT( a, 20 );
777
         when   8 => sum <= sum - a_sh;
778
                 a_sh <= SHIFT_RIGHT( a, 23 );
779
         when   9 => sum <= sum - a_sh;
780
                 a_sh <= SHIFT_RIGHT( a, 26 );
781
         when  10 => sum <= sum - a_sh;
782
                 a_sh <= SHIFT_RIGHT( a, 28 );
783
         when  11 => sum <= sum - a_sh;
784
                 a_sh <= SHIFT_RIGHT( a, 29 );
785
         when  12 => sum <= sum - a_sh;
786
                 a_sh <= SHIFT_RIGHT( a, 34 );
787
         when  13 => sum <= sum + a_sh;
788
                 a_sh <= SHIFT_RIGHT( a, 38 );
789
         when  14 => sum <= sum + a_sh;
790
                 a_sh <= SHIFT_RIGHT( a, 41 );
791
         when  15 => sum <= sum - a_sh;
792
                 a_sh <= SHIFT_RIGHT( a, 50 );
793
         when  16 => sum <= sum - a_sh;
794
                 a_sh <= SHIFT_RIGHT( a, 53 );
795
         when  17 => sum <= sum + a_sh;
796
                 a_sh <= SHIFT_RIGHT( a, 55 );
797
         when  18 => sum <= sum + a_sh;
798
                 a_sh <= SHIFT_RIGHT( a, 56 );
799
         when  19 => sum <= sum + a_sh;
800
         when others => sum <= sum;
801
     end case;
802
end procedure mult_0_61_19;
803
 
804
 
805
--
806
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
807
-- a_sh is a temporary register to store the shifted value, and 
808
-- sum is a temporary register to sum up the result
809
--
810
procedure mult_0_61_20( signal a    : in    signed;
811
                   signal a_sh : inout signed;
812
                   signal sum  : inout signed;
813
                          cnt  : in    natural ) is
814
   begin
815
      case cnt is
816
         when   0 => sum  <= to_signed( 0, sum'length );
817
                     a_sh <= SHIFT_RIGHT( a, 1 );
818
         when   1 => sum  <= sum + a_sh;
819
                 a_sh <= SHIFT_RIGHT( a, 3 );
820
         when   2 => sum <= sum + a_sh;
821
                 a_sh <= SHIFT_RIGHT( a, 6 );
822
         when   3 => sum <= sum - a_sh;
823
                 a_sh <= SHIFT_RIGHT( a, 9 );
824
         when   4 => sum <= sum - a_sh;
825
                 a_sh <= SHIFT_RIGHT( a, 13 );
826
         when   5 => sum <= sum - a_sh;
827
                 a_sh <= SHIFT_RIGHT( a, 14 );
828
         when   6 => sum <= sum - a_sh;
829
                 a_sh <= SHIFT_RIGHT( a, 16 );
830
         when   7 => sum <= sum + a_sh;
831
                 a_sh <= SHIFT_RIGHT( a, 20 );
832
         when   8 => sum <= sum - a_sh;
833
                 a_sh <= SHIFT_RIGHT( a, 23 );
834
         when   9 => sum <= sum - a_sh;
835
                 a_sh <= SHIFT_RIGHT( a, 26 );
836
         when  10 => sum <= sum - a_sh;
837
                 a_sh <= SHIFT_RIGHT( a, 28 );
838
         when  11 => sum <= sum - a_sh;
839
                 a_sh <= SHIFT_RIGHT( a, 29 );
840
         when  12 => sum <= sum - a_sh;
841
                 a_sh <= SHIFT_RIGHT( a, 34 );
842
         when  13 => sum <= sum + a_sh;
843
                 a_sh <= SHIFT_RIGHT( a, 38 );
844
         when  14 => sum <= sum + a_sh;
845
                 a_sh <= SHIFT_RIGHT( a, 41 );
846
         when  15 => sum <= sum - a_sh;
847
                 a_sh <= SHIFT_RIGHT( a, 50 );
848
         when  16 => sum <= sum - a_sh;
849
                 a_sh <= SHIFT_RIGHT( a, 53 );
850
         when  17 => sum <= sum + a_sh;
851
                 a_sh <= SHIFT_RIGHT( a, 55 );
852
         when  18 => sum <= sum + a_sh;
853
                 a_sh <= SHIFT_RIGHT( a, 56 );
854
         when  19 => sum <= sum + a_sh;
855
                 a_sh <= SHIFT_RIGHT( a, 57 );
856
         when  20 => sum <= sum + a_sh;
857
         when others => sum <= sum;
858
     end case;
859
end procedure mult_0_61_20;
860
 
861
 
862
--
863
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
864
-- a_sh is a temporary register to store the shifted value, and 
865
-- sum is a temporary register to sum up the result
866
--
867
procedure mult_0_61_21( signal a    : in    signed;
868
                   signal a_sh : inout signed;
869
                   signal sum  : inout signed;
870
                          cnt  : in    natural ) is
871
   begin
872
      case cnt is
873
         when   0 => sum  <= to_signed( 0, sum'length );
874
                     a_sh <= SHIFT_RIGHT( a, 1 );
875
         when   1 => sum  <= sum + a_sh;
876
                 a_sh <= SHIFT_RIGHT( a, 3 );
877
         when   2 => sum <= sum + a_sh;
878
                 a_sh <= SHIFT_RIGHT( a, 6 );
879
         when   3 => sum <= sum - a_sh;
880
                 a_sh <= SHIFT_RIGHT( a, 9 );
881
         when   4 => sum <= sum - a_sh;
882
                 a_sh <= SHIFT_RIGHT( a, 13 );
883
         when   5 => sum <= sum - a_sh;
884
                 a_sh <= SHIFT_RIGHT( a, 14 );
885
         when   6 => sum <= sum - a_sh;
886
                 a_sh <= SHIFT_RIGHT( a, 16 );
887
         when   7 => sum <= sum + a_sh;
888
                 a_sh <= SHIFT_RIGHT( a, 20 );
889
         when   8 => sum <= sum - a_sh;
890
                 a_sh <= SHIFT_RIGHT( a, 23 );
891
         when   9 => sum <= sum - a_sh;
892
                 a_sh <= SHIFT_RIGHT( a, 26 );
893
         when  10 => sum <= sum - a_sh;
894
                 a_sh <= SHIFT_RIGHT( a, 28 );
895
         when  11 => sum <= sum - a_sh;
896
                 a_sh <= SHIFT_RIGHT( a, 29 );
897
         when  12 => sum <= sum - a_sh;
898
                 a_sh <= SHIFT_RIGHT( a, 34 );
899
         when  13 => sum <= sum + a_sh;
900
                 a_sh <= SHIFT_RIGHT( a, 38 );
901
         when  14 => sum <= sum + a_sh;
902
                 a_sh <= SHIFT_RIGHT( a, 41 );
903
         when  15 => sum <= sum - a_sh;
904
                 a_sh <= SHIFT_RIGHT( a, 50 );
905
         when  16 => sum <= sum - a_sh;
906
                 a_sh <= SHIFT_RIGHT( a, 53 );
907
         when  17 => sum <= sum + a_sh;
908
                 a_sh <= SHIFT_RIGHT( a, 55 );
909
         when  18 => sum <= sum + a_sh;
910
                 a_sh <= SHIFT_RIGHT( a, 56 );
911
         when  19 => sum <= sum + a_sh;
912
                 a_sh <= SHIFT_RIGHT( a, 57 );
913
         when  20 => sum <= sum + a_sh;
914
                 a_sh <= SHIFT_RIGHT( a, 58 );
915
         when  21 => sum <= sum + a_sh;
916
         when others => sum <= sum;
917
     end case;
918
end procedure mult_0_61_21;
919
 
920
 
921
--
922
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
923
-- a_sh is a temporary register to store the shifted value, and 
924
-- sum is a temporary register to sum up the result
925
--
926
procedure mult_0_61_22( signal a    : in    signed;
927
                   signal a_sh : inout signed;
928
                   signal sum  : inout signed;
929
                          cnt  : in    natural ) is
930
   begin
931
      case cnt is
932
         when   0 => sum  <= to_signed( 0, sum'length );
933
                     a_sh <= SHIFT_RIGHT( a, 1 );
934
         when   1 => sum  <= sum + a_sh;
935
                 a_sh <= SHIFT_RIGHT( a, 3 );
936
         when   2 => sum <= sum + a_sh;
937
                 a_sh <= SHIFT_RIGHT( a, 6 );
938
         when   3 => sum <= sum - a_sh;
939
                 a_sh <= SHIFT_RIGHT( a, 9 );
940
         when   4 => sum <= sum - a_sh;
941
                 a_sh <= SHIFT_RIGHT( a, 13 );
942
         when   5 => sum <= sum - a_sh;
943
                 a_sh <= SHIFT_RIGHT( a, 14 );
944
         when   6 => sum <= sum - a_sh;
945
                 a_sh <= SHIFT_RIGHT( a, 16 );
946
         when   7 => sum <= sum + a_sh;
947
                 a_sh <= SHIFT_RIGHT( a, 20 );
948
         when   8 => sum <= sum - a_sh;
949
                 a_sh <= SHIFT_RIGHT( a, 23 );
950
         when   9 => sum <= sum - a_sh;
951
                 a_sh <= SHIFT_RIGHT( a, 26 );
952
         when  10 => sum <= sum - a_sh;
953
                 a_sh <= SHIFT_RIGHT( a, 28 );
954
         when  11 => sum <= sum - a_sh;
955
                 a_sh <= SHIFT_RIGHT( a, 29 );
956
         when  12 => sum <= sum - a_sh;
957
                 a_sh <= SHIFT_RIGHT( a, 34 );
958
         when  13 => sum <= sum + a_sh;
959
                 a_sh <= SHIFT_RIGHT( a, 38 );
960
         when  14 => sum <= sum + a_sh;
961
                 a_sh <= SHIFT_RIGHT( a, 41 );
962
         when  15 => sum <= sum - a_sh;
963
                 a_sh <= SHIFT_RIGHT( a, 50 );
964
         when  16 => sum <= sum - a_sh;
965
                 a_sh <= SHIFT_RIGHT( a, 53 );
966
         when  17 => sum <= sum + a_sh;
967
                 a_sh <= SHIFT_RIGHT( a, 55 );
968
         when  18 => sum <= sum + a_sh;
969
                 a_sh <= SHIFT_RIGHT( a, 56 );
970
         when  19 => sum <= sum + a_sh;
971
                 a_sh <= SHIFT_RIGHT( a, 57 );
972
         when  20 => sum <= sum + a_sh;
973
                 a_sh <= SHIFT_RIGHT( a, 58 );
974
         when  21 => sum <= sum + a_sh;
975
                 a_sh <= SHIFT_RIGHT( a, 59 );
976
         when  22 => sum <= sum + a_sh;
977
         when others => sum <= sum;
978
     end case;
979
end procedure mult_0_61_22;
980
 
981
 
982
--
983
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
984
-- a_sh is a temporary register to store the shifted value, and 
985
-- sum is a temporary register to sum up the result
986
--
987
procedure mult_0_61_23( signal a    : in    signed;
988
                   signal a_sh : inout signed;
989
                   signal sum  : inout signed;
990
                          cnt  : in    natural ) is
991
   begin
992
      case cnt is
993
         when   0 => sum  <= to_signed( 0, sum'length );
994
                     a_sh <= SHIFT_RIGHT( a, 1 );
995
         when   1 => sum  <= sum + a_sh;
996
                 a_sh <= SHIFT_RIGHT( a, 3 );
997
         when   2 => sum <= sum + a_sh;
998
                 a_sh <= SHIFT_RIGHT( a, 6 );
999
         when   3 => sum <= sum - a_sh;
1000
                 a_sh <= SHIFT_RIGHT( a, 9 );
1001
         when   4 => sum <= sum - a_sh;
1002
                 a_sh <= SHIFT_RIGHT( a, 13 );
1003
         when   5 => sum <= sum - a_sh;
1004
                 a_sh <= SHIFT_RIGHT( a, 14 );
1005
         when   6 => sum <= sum - a_sh;
1006
                 a_sh <= SHIFT_RIGHT( a, 16 );
1007
         when   7 => sum <= sum + a_sh;
1008
                 a_sh <= SHIFT_RIGHT( a, 20 );
1009
         when   8 => sum <= sum - a_sh;
1010
                 a_sh <= SHIFT_RIGHT( a, 23 );
1011
         when   9 => sum <= sum - a_sh;
1012
                 a_sh <= SHIFT_RIGHT( a, 26 );
1013
         when  10 => sum <= sum - a_sh;
1014
                 a_sh <= SHIFT_RIGHT( a, 28 );
1015
         when  11 => sum <= sum - a_sh;
1016
                 a_sh <= SHIFT_RIGHT( a, 29 );
1017
         when  12 => sum <= sum - a_sh;
1018
                 a_sh <= SHIFT_RIGHT( a, 34 );
1019
         when  13 => sum <= sum + a_sh;
1020
                 a_sh <= SHIFT_RIGHT( a, 38 );
1021
         when  14 => sum <= sum + a_sh;
1022
                 a_sh <= SHIFT_RIGHT( a, 41 );
1023
         when  15 => sum <= sum - a_sh;
1024
                 a_sh <= SHIFT_RIGHT( a, 50 );
1025
         when  16 => sum <= sum - a_sh;
1026
                 a_sh <= SHIFT_RIGHT( a, 53 );
1027
         when  17 => sum <= sum + a_sh;
1028
                 a_sh <= SHIFT_RIGHT( a, 55 );
1029
         when  18 => sum <= sum + a_sh;
1030
                 a_sh <= SHIFT_RIGHT( a, 56 );
1031
         when  19 => sum <= sum + a_sh;
1032
                 a_sh <= SHIFT_RIGHT( a, 57 );
1033
         when  20 => sum <= sum + a_sh;
1034
                 a_sh <= SHIFT_RIGHT( a, 58 );
1035
         when  21 => sum <= sum + a_sh;
1036
                 a_sh <= SHIFT_RIGHT( a, 59 );
1037
         when  22 => sum <= sum + a_sh;
1038
                 a_sh <= SHIFT_RIGHT( a, 60 );
1039
         when  23 => sum <= sum + a_sh;
1040
         when others => sum <= sum;
1041
     end case;
1042
end procedure mult_0_61_23;
1043
 
1044
 
1045
--
1046
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
1047
-- a_sh is a temporary register to store the shifted value, and 
1048
-- sum is a temporary register to sum up the result
1049
--
1050
procedure mult_0_61_24( signal a    : in    signed;
1051
                   signal a_sh : inout signed;
1052
                   signal sum  : inout signed;
1053
                          cnt  : in    natural ) is
1054
   begin
1055
      case cnt is
1056
         when   0 => sum  <= to_signed( 0, sum'length );
1057
                     a_sh <= SHIFT_RIGHT( a, 1 );
1058
         when   1 => sum  <= sum + a_sh;
1059
                 a_sh <= SHIFT_RIGHT( a, 3 );
1060
         when   2 => sum <= sum + a_sh;
1061
                 a_sh <= SHIFT_RIGHT( a, 6 );
1062
         when   3 => sum <= sum - a_sh;
1063
                 a_sh <= SHIFT_RIGHT( a, 9 );
1064
         when   4 => sum <= sum - a_sh;
1065
                 a_sh <= SHIFT_RIGHT( a, 13 );
1066
         when   5 => sum <= sum - a_sh;
1067
                 a_sh <= SHIFT_RIGHT( a, 14 );
1068
         when   6 => sum <= sum - a_sh;
1069
                 a_sh <= SHIFT_RIGHT( a, 16 );
1070
         when   7 => sum <= sum + a_sh;
1071
                 a_sh <= SHIFT_RIGHT( a, 20 );
1072
         when   8 => sum <= sum - a_sh;
1073
                 a_sh <= SHIFT_RIGHT( a, 23 );
1074
         when   9 => sum <= sum - a_sh;
1075
                 a_sh <= SHIFT_RIGHT( a, 26 );
1076
         when  10 => sum <= sum - a_sh;
1077
                 a_sh <= SHIFT_RIGHT( a, 28 );
1078
         when  11 => sum <= sum - a_sh;
1079
                 a_sh <= SHIFT_RIGHT( a, 29 );
1080
         when  12 => sum <= sum - a_sh;
1081
                 a_sh <= SHIFT_RIGHT( a, 34 );
1082
         when  13 => sum <= sum + a_sh;
1083
                 a_sh <= SHIFT_RIGHT( a, 38 );
1084
         when  14 => sum <= sum + a_sh;
1085
                 a_sh <= SHIFT_RIGHT( a, 41 );
1086
         when  15 => sum <= sum - a_sh;
1087
                 a_sh <= SHIFT_RIGHT( a, 50 );
1088
         when  16 => sum <= sum - a_sh;
1089
                 a_sh <= SHIFT_RIGHT( a, 53 );
1090
         when  17 => sum <= sum + a_sh;
1091
                 a_sh <= SHIFT_RIGHT( a, 55 );
1092
         when  18 => sum <= sum + a_sh;
1093
                 a_sh <= SHIFT_RIGHT( a, 56 );
1094
         when  19 => sum <= sum + a_sh;
1095
                 a_sh <= SHIFT_RIGHT( a, 57 );
1096
         when  20 => sum <= sum + a_sh;
1097
                 a_sh <= SHIFT_RIGHT( a, 58 );
1098
         when  21 => sum <= sum + a_sh;
1099
                 a_sh <= SHIFT_RIGHT( a, 59 );
1100
         when  22 => sum <= sum + a_sh;
1101
                 a_sh <= SHIFT_RIGHT( a, 60 );
1102
         when  23 => sum <= sum + a_sh;
1103
                 a_sh <= SHIFT_RIGHT( a, 61 );
1104
         when  24 => sum <= sum + a_sh;
1105
         when others => sum <= sum;
1106
     end case;
1107
end procedure mult_0_61_24;
1108
 
1109
 
1110
--
1111
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
1112
-- a_sh is a temporary register to store the shifted value, and 
1113
-- sum is a temporary register to sum up the result
1114
--
1115
procedure mult_0_61_25( signal a    : in    signed;
1116
                   signal a_sh : inout signed;
1117
                   signal sum  : inout signed;
1118
                          cnt  : in    natural ) is
1119
   begin
1120
      case cnt is
1121
         when   0 => sum  <= to_signed( 0, sum'length );
1122
                     a_sh <= SHIFT_RIGHT( a, 1 );
1123
         when   1 => sum  <= sum + a_sh;
1124
                 a_sh <= SHIFT_RIGHT( a, 3 );
1125
         when   2 => sum <= sum + a_sh;
1126
                 a_sh <= SHIFT_RIGHT( a, 6 );
1127
         when   3 => sum <= sum - a_sh;
1128
                 a_sh <= SHIFT_RIGHT( a, 9 );
1129
         when   4 => sum <= sum - a_sh;
1130
                 a_sh <= SHIFT_RIGHT( a, 13 );
1131
         when   5 => sum <= sum - a_sh;
1132
                 a_sh <= SHIFT_RIGHT( a, 14 );
1133
         when   6 => sum <= sum - a_sh;
1134
                 a_sh <= SHIFT_RIGHT( a, 16 );
1135
         when   7 => sum <= sum + a_sh;
1136
                 a_sh <= SHIFT_RIGHT( a, 20 );
1137
         when   8 => sum <= sum - a_sh;
1138
                 a_sh <= SHIFT_RIGHT( a, 23 );
1139
         when   9 => sum <= sum - a_sh;
1140
                 a_sh <= SHIFT_RIGHT( a, 26 );
1141
         when  10 => sum <= sum - a_sh;
1142
                 a_sh <= SHIFT_RIGHT( a, 28 );
1143
         when  11 => sum <= sum - a_sh;
1144
                 a_sh <= SHIFT_RIGHT( a, 29 );
1145
         when  12 => sum <= sum - a_sh;
1146
                 a_sh <= SHIFT_RIGHT( a, 34 );
1147
         when  13 => sum <= sum + a_sh;
1148
                 a_sh <= SHIFT_RIGHT( a, 38 );
1149
         when  14 => sum <= sum + a_sh;
1150
                 a_sh <= SHIFT_RIGHT( a, 41 );
1151
         when  15 => sum <= sum - a_sh;
1152
                 a_sh <= SHIFT_RIGHT( a, 50 );
1153
         when  16 => sum <= sum - a_sh;
1154
                 a_sh <= SHIFT_RIGHT( a, 53 );
1155
         when  17 => sum <= sum + a_sh;
1156
                 a_sh <= SHIFT_RIGHT( a, 55 );
1157
         when  18 => sum <= sum + a_sh;
1158
                 a_sh <= SHIFT_RIGHT( a, 56 );
1159
         when  19 => sum <= sum + a_sh;
1160
                 a_sh <= SHIFT_RIGHT( a, 57 );
1161
         when  20 => sum <= sum + a_sh;
1162
                 a_sh <= SHIFT_RIGHT( a, 58 );
1163
         when  21 => sum <= sum + a_sh;
1164
                 a_sh <= SHIFT_RIGHT( a, 59 );
1165
         when  22 => sum <= sum + a_sh;
1166
                 a_sh <= SHIFT_RIGHT( a, 60 );
1167
         when  23 => sum <= sum + a_sh;
1168
                 a_sh <= SHIFT_RIGHT( a, 61 );
1169
         when  24 => sum <= sum + a_sh;
1170
                 a_sh <= SHIFT_RIGHT( a, 62 );
1171
         when  25 => sum <= sum + a_sh;
1172
         when others => sum <= sum;
1173
     end case;
1174
end procedure mult_0_61_25;
1175
 
1176
 
1177
--
1178
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
1179
-- a_sh is a temporary register to store the shifted value, and 
1180
-- sum is a temporary register to sum up the result
1181
--
1182
procedure mult_0_61_26( signal a    : in    signed;
1183
                   signal a_sh : inout signed;
1184
                   signal sum  : inout signed;
1185
                          cnt  : in    natural ) is
1186
   begin
1187
      case cnt is
1188
         when   0 => sum  <= to_signed( 0, sum'length );
1189
                     a_sh <= SHIFT_RIGHT( a, 1 );
1190
         when   1 => sum  <= sum + a_sh;
1191
                 a_sh <= SHIFT_RIGHT( a, 3 );
1192
         when   2 => sum <= sum + a_sh;
1193
                 a_sh <= SHIFT_RIGHT( a, 6 );
1194
         when   3 => sum <= sum - a_sh;
1195
                 a_sh <= SHIFT_RIGHT( a, 9 );
1196
         when   4 => sum <= sum - a_sh;
1197
                 a_sh <= SHIFT_RIGHT( a, 13 );
1198
         when   5 => sum <= sum - a_sh;
1199
                 a_sh <= SHIFT_RIGHT( a, 14 );
1200
         when   6 => sum <= sum - a_sh;
1201
                 a_sh <= SHIFT_RIGHT( a, 16 );
1202
         when   7 => sum <= sum + a_sh;
1203
                 a_sh <= SHIFT_RIGHT( a, 20 );
1204
         when   8 => sum <= sum - a_sh;
1205
                 a_sh <= SHIFT_RIGHT( a, 23 );
1206
         when   9 => sum <= sum - a_sh;
1207
                 a_sh <= SHIFT_RIGHT( a, 26 );
1208
         when  10 => sum <= sum - a_sh;
1209
                 a_sh <= SHIFT_RIGHT( a, 28 );
1210
         when  11 => sum <= sum - a_sh;
1211
                 a_sh <= SHIFT_RIGHT( a, 29 );
1212
         when  12 => sum <= sum - a_sh;
1213
                 a_sh <= SHIFT_RIGHT( a, 34 );
1214
         when  13 => sum <= sum + a_sh;
1215
                 a_sh <= SHIFT_RIGHT( a, 38 );
1216
         when  14 => sum <= sum + a_sh;
1217
                 a_sh <= SHIFT_RIGHT( a, 41 );
1218
         when  15 => sum <= sum - a_sh;
1219
                 a_sh <= SHIFT_RIGHT( a, 50 );
1220
         when  16 => sum <= sum - a_sh;
1221
                 a_sh <= SHIFT_RIGHT( a, 53 );
1222
         when  17 => sum <= sum + a_sh;
1223
                 a_sh <= SHIFT_RIGHT( a, 55 );
1224
         when  18 => sum <= sum + a_sh;
1225
                 a_sh <= SHIFT_RIGHT( a, 56 );
1226
         when  19 => sum <= sum + a_sh;
1227
                 a_sh <= SHIFT_RIGHT( a, 57 );
1228
         when  20 => sum <= sum + a_sh;
1229
                 a_sh <= SHIFT_RIGHT( a, 58 );
1230
         when  21 => sum <= sum + a_sh;
1231
                 a_sh <= SHIFT_RIGHT( a, 59 );
1232
         when  22 => sum <= sum + a_sh;
1233
                 a_sh <= SHIFT_RIGHT( a, 60 );
1234
         when  23 => sum <= sum + a_sh;
1235
                 a_sh <= SHIFT_RIGHT( a, 61 );
1236
         when  24 => sum <= sum + a_sh;
1237
                 a_sh <= SHIFT_RIGHT( a, 62 );
1238
         when  25 => sum <= sum + a_sh;
1239
                 a_sh <= SHIFT_RIGHT( a, 63 );
1240
         when  26 => sum <= sum + a_sh;
1241
         when others => sum <= sum;
1242
     end case;
1243
end procedure mult_0_61_26;
1244
 
1245
 
1246
--
1247
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
1248
-- a_sh is a temporary register to store the shifted value, and 
1249
-- sum is a temporary register to sum up the result
1250
--
1251
procedure mult_0_61_27( signal a    : in    signed;
1252
                   signal a_sh : inout signed;
1253
                   signal sum  : inout signed;
1254
                          cnt  : in    natural ) is
1255
   begin
1256
      case cnt is
1257
         when   0 => sum  <= to_signed( 0, sum'length );
1258
                     a_sh <= SHIFT_RIGHT( a, 1 );
1259
         when   1 => sum  <= sum + a_sh;
1260
                 a_sh <= SHIFT_RIGHT( a, 3 );
1261
         when   2 => sum <= sum + a_sh;
1262
                 a_sh <= SHIFT_RIGHT( a, 6 );
1263
         when   3 => sum <= sum - a_sh;
1264
                 a_sh <= SHIFT_RIGHT( a, 9 );
1265
         when   4 => sum <= sum - a_sh;
1266
                 a_sh <= SHIFT_RIGHT( a, 13 );
1267
         when   5 => sum <= sum - a_sh;
1268
                 a_sh <= SHIFT_RIGHT( a, 14 );
1269
         when   6 => sum <= sum - a_sh;
1270
                 a_sh <= SHIFT_RIGHT( a, 16 );
1271
         when   7 => sum <= sum + a_sh;
1272
                 a_sh <= SHIFT_RIGHT( a, 20 );
1273
         when   8 => sum <= sum - a_sh;
1274
                 a_sh <= SHIFT_RIGHT( a, 23 );
1275
         when   9 => sum <= sum - a_sh;
1276
                 a_sh <= SHIFT_RIGHT( a, 26 );
1277
         when  10 => sum <= sum - a_sh;
1278
                 a_sh <= SHIFT_RIGHT( a, 28 );
1279
         when  11 => sum <= sum - a_sh;
1280
                 a_sh <= SHIFT_RIGHT( a, 29 );
1281
         when  12 => sum <= sum - a_sh;
1282
                 a_sh <= SHIFT_RIGHT( a, 34 );
1283
         when  13 => sum <= sum + a_sh;
1284
                 a_sh <= SHIFT_RIGHT( a, 38 );
1285
         when  14 => sum <= sum + a_sh;
1286
                 a_sh <= SHIFT_RIGHT( a, 41 );
1287
         when  15 => sum <= sum - a_sh;
1288
                 a_sh <= SHIFT_RIGHT( a, 50 );
1289
         when  16 => sum <= sum - a_sh;
1290
                 a_sh <= SHIFT_RIGHT( a, 53 );
1291
         when  17 => sum <= sum + a_sh;
1292
                 a_sh <= SHIFT_RIGHT( a, 55 );
1293
         when  18 => sum <= sum + a_sh;
1294
                 a_sh <= SHIFT_RIGHT( a, 56 );
1295
         when  19 => sum <= sum + a_sh;
1296
                 a_sh <= SHIFT_RIGHT( a, 57 );
1297
         when  20 => sum <= sum + a_sh;
1298
                 a_sh <= SHIFT_RIGHT( a, 58 );
1299
         when  21 => sum <= sum + a_sh;
1300
                 a_sh <= SHIFT_RIGHT( a, 59 );
1301
         when  22 => sum <= sum + a_sh;
1302
                 a_sh <= SHIFT_RIGHT( a, 60 );
1303
         when  23 => sum <= sum + a_sh;
1304
                 a_sh <= SHIFT_RIGHT( a, 61 );
1305
         when  24 => sum <= sum + a_sh;
1306
                 a_sh <= SHIFT_RIGHT( a, 62 );
1307
         when  25 => sum <= sum + a_sh;
1308
                 a_sh <= SHIFT_RIGHT( a, 63 );
1309
         when  26 => sum <= sum + a_sh;
1310
                 a_sh <= SHIFT_RIGHT( a, 64 );
1311
         when  27 => sum <= sum + a_sh;
1312
         when others => sum <= sum;
1313
     end case;
1314
end procedure mult_0_61_27;
1315
 
1316
 
1317
--
1318
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
1319
-- a_sh is a temporary register to store the shifted value, and 
1320
-- sum is a temporary register to sum up the result
1321
--
1322
procedure mult_0_61_28( signal a    : in    signed;
1323
                   signal a_sh : inout signed;
1324
                   signal sum  : inout signed;
1325
                          cnt  : in    natural ) is
1326
   begin
1327
      case cnt is
1328
         when   0 => sum  <= to_signed( 0, sum'length );
1329
                     a_sh <= SHIFT_RIGHT( a, 1 );
1330
         when   1 => sum  <= sum + a_sh;
1331
                 a_sh <= SHIFT_RIGHT( a, 3 );
1332
         when   2 => sum <= sum + a_sh;
1333
                 a_sh <= SHIFT_RIGHT( a, 6 );
1334
         when   3 => sum <= sum - a_sh;
1335
                 a_sh <= SHIFT_RIGHT( a, 9 );
1336
         when   4 => sum <= sum - a_sh;
1337
                 a_sh <= SHIFT_RIGHT( a, 13 );
1338
         when   5 => sum <= sum - a_sh;
1339
                 a_sh <= SHIFT_RIGHT( a, 14 );
1340
         when   6 => sum <= sum - a_sh;
1341
                 a_sh <= SHIFT_RIGHT( a, 16 );
1342
         when   7 => sum <= sum + a_sh;
1343
                 a_sh <= SHIFT_RIGHT( a, 20 );
1344
         when   8 => sum <= sum - a_sh;
1345
                 a_sh <= SHIFT_RIGHT( a, 23 );
1346
         when   9 => sum <= sum - a_sh;
1347
                 a_sh <= SHIFT_RIGHT( a, 26 );
1348
         when  10 => sum <= sum - a_sh;
1349
                 a_sh <= SHIFT_RIGHT( a, 28 );
1350
         when  11 => sum <= sum - a_sh;
1351
                 a_sh <= SHIFT_RIGHT( a, 29 );
1352
         when  12 => sum <= sum - a_sh;
1353
                 a_sh <= SHIFT_RIGHT( a, 34 );
1354
         when  13 => sum <= sum + a_sh;
1355
                 a_sh <= SHIFT_RIGHT( a, 38 );
1356
         when  14 => sum <= sum + a_sh;
1357
                 a_sh <= SHIFT_RIGHT( a, 41 );
1358
         when  15 => sum <= sum - a_sh;
1359
                 a_sh <= SHIFT_RIGHT( a, 50 );
1360
         when  16 => sum <= sum - a_sh;
1361
                 a_sh <= SHIFT_RIGHT( a, 53 );
1362
         when  17 => sum <= sum + a_sh;
1363
                 a_sh <= SHIFT_RIGHT( a, 55 );
1364
         when  18 => sum <= sum + a_sh;
1365
                 a_sh <= SHIFT_RIGHT( a, 56 );
1366
         when  19 => sum <= sum + a_sh;
1367
                 a_sh <= SHIFT_RIGHT( a, 57 );
1368
         when  20 => sum <= sum + a_sh;
1369
                 a_sh <= SHIFT_RIGHT( a, 58 );
1370
         when  21 => sum <= sum + a_sh;
1371
                 a_sh <= SHIFT_RIGHT( a, 59 );
1372
         when  22 => sum <= sum + a_sh;
1373
                 a_sh <= SHIFT_RIGHT( a, 60 );
1374
         when  23 => sum <= sum + a_sh;
1375
                 a_sh <= SHIFT_RIGHT( a, 61 );
1376
         when  24 => sum <= sum + a_sh;
1377
                 a_sh <= SHIFT_RIGHT( a, 62 );
1378
         when  25 => sum <= sum + a_sh;
1379
                 a_sh <= SHIFT_RIGHT( a, 63 );
1380
         when  26 => sum <= sum + a_sh;
1381
                 a_sh <= SHIFT_RIGHT( a, 64 );
1382
         when  27 => sum <= sum + a_sh;
1383
                 a_sh <= SHIFT_RIGHT( a, 65 );
1384
         when  28 => sum <= sum + a_sh;
1385
         when others => sum <= sum;
1386
     end case;
1387
end procedure mult_0_61_28;
1388
 
1389
 
1390
--
1391
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
1392
-- a_sh is a temporary register to store the shifted value, and 
1393
-- sum is a temporary register to sum up the result
1394
--
1395
procedure mult_0_61_29( signal a    : in    signed;
1396
                   signal a_sh : inout signed;
1397
                   signal sum  : inout signed;
1398
                          cnt  : in    natural ) is
1399
   begin
1400
      case cnt is
1401
         when   0 => sum  <= to_signed( 0, sum'length );
1402
                     a_sh <= SHIFT_RIGHT( a, 1 );
1403
         when   1 => sum  <= sum + a_sh;
1404
                 a_sh <= SHIFT_RIGHT( a, 3 );
1405
         when   2 => sum <= sum + a_sh;
1406
                 a_sh <= SHIFT_RIGHT( a, 6 );
1407
         when   3 => sum <= sum - a_sh;
1408
                 a_sh <= SHIFT_RIGHT( a, 9 );
1409
         when   4 => sum <= sum - a_sh;
1410
                 a_sh <= SHIFT_RIGHT( a, 13 );
1411
         when   5 => sum <= sum - a_sh;
1412
                 a_sh <= SHIFT_RIGHT( a, 14 );
1413
         when   6 => sum <= sum - a_sh;
1414
                 a_sh <= SHIFT_RIGHT( a, 16 );
1415
         when   7 => sum <= sum + a_sh;
1416
                 a_sh <= SHIFT_RIGHT( a, 20 );
1417
         when   8 => sum <= sum - a_sh;
1418
                 a_sh <= SHIFT_RIGHT( a, 23 );
1419
         when   9 => sum <= sum - a_sh;
1420
                 a_sh <= SHIFT_RIGHT( a, 26 );
1421
         when  10 => sum <= sum - a_sh;
1422
                 a_sh <= SHIFT_RIGHT( a, 28 );
1423
         when  11 => sum <= sum - a_sh;
1424
                 a_sh <= SHIFT_RIGHT( a, 29 );
1425
         when  12 => sum <= sum - a_sh;
1426
                 a_sh <= SHIFT_RIGHT( a, 34 );
1427
         when  13 => sum <= sum + a_sh;
1428
                 a_sh <= SHIFT_RIGHT( a, 38 );
1429
         when  14 => sum <= sum + a_sh;
1430
                 a_sh <= SHIFT_RIGHT( a, 41 );
1431
         when  15 => sum <= sum - a_sh;
1432
                 a_sh <= SHIFT_RIGHT( a, 50 );
1433
         when  16 => sum <= sum - a_sh;
1434
                 a_sh <= SHIFT_RIGHT( a, 53 );
1435
         when  17 => sum <= sum + a_sh;
1436
                 a_sh <= SHIFT_RIGHT( a, 55 );
1437
         when  18 => sum <= sum + a_sh;
1438
                 a_sh <= SHIFT_RIGHT( a, 56 );
1439
         when  19 => sum <= sum + a_sh;
1440
                 a_sh <= SHIFT_RIGHT( a, 57 );
1441
         when  20 => sum <= sum + a_sh;
1442
                 a_sh <= SHIFT_RIGHT( a, 58 );
1443
         when  21 => sum <= sum + a_sh;
1444
                 a_sh <= SHIFT_RIGHT( a, 59 );
1445
         when  22 => sum <= sum + a_sh;
1446
                 a_sh <= SHIFT_RIGHT( a, 60 );
1447
         when  23 => sum <= sum + a_sh;
1448
                 a_sh <= SHIFT_RIGHT( a, 61 );
1449
         when  24 => sum <= sum + a_sh;
1450
                 a_sh <= SHIFT_RIGHT( a, 62 );
1451
         when  25 => sum <= sum + a_sh;
1452
                 a_sh <= SHIFT_RIGHT( a, 63 );
1453
         when  26 => sum <= sum + a_sh;
1454
                 a_sh <= SHIFT_RIGHT( a, 64 );
1455
         when  27 => sum <= sum + a_sh;
1456
                 a_sh <= SHIFT_RIGHT( a, 65 );
1457
         when  28 => sum <= sum + a_sh;
1458
                 a_sh <= SHIFT_RIGHT( a, 66 );
1459
         when  29 => sum <= sum + a_sh;
1460
         when others => sum <= sum;
1461
     end case;
1462
end procedure mult_0_61_29;
1463
 
1464
 
1465
--
1466
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
1467
-- a_sh is a temporary register to store the shifted value, and 
1468
-- sum is a temporary register to sum up the result
1469
--
1470
procedure mult_0_61_30( signal a    : in    signed;
1471
                   signal a_sh : inout signed;
1472
                   signal sum  : inout signed;
1473
                          cnt  : in    natural ) is
1474
   begin
1475
      case cnt is
1476
         when   0 => sum  <= to_signed( 0, sum'length );
1477
                     a_sh <= SHIFT_RIGHT( a, 1 );
1478
         when   1 => sum  <= sum + a_sh;
1479
                 a_sh <= SHIFT_RIGHT( a, 3 );
1480
         when   2 => sum <= sum + a_sh;
1481
                 a_sh <= SHIFT_RIGHT( a, 6 );
1482
         when   3 => sum <= sum - a_sh;
1483
                 a_sh <= SHIFT_RIGHT( a, 9 );
1484
         when   4 => sum <= sum - a_sh;
1485
                 a_sh <= SHIFT_RIGHT( a, 13 );
1486
         when   5 => sum <= sum - a_sh;
1487
                 a_sh <= SHIFT_RIGHT( a, 14 );
1488
         when   6 => sum <= sum - a_sh;
1489
                 a_sh <= SHIFT_RIGHT( a, 16 );
1490
         when   7 => sum <= sum + a_sh;
1491
                 a_sh <= SHIFT_RIGHT( a, 20 );
1492
         when   8 => sum <= sum - a_sh;
1493
                 a_sh <= SHIFT_RIGHT( a, 23 );
1494
         when   9 => sum <= sum - a_sh;
1495
                 a_sh <= SHIFT_RIGHT( a, 26 );
1496
         when  10 => sum <= sum - a_sh;
1497
                 a_sh <= SHIFT_RIGHT( a, 28 );
1498
         when  11 => sum <= sum - a_sh;
1499
                 a_sh <= SHIFT_RIGHT( a, 29 );
1500
         when  12 => sum <= sum - a_sh;
1501
                 a_sh <= SHIFT_RIGHT( a, 34 );
1502
         when  13 => sum <= sum + a_sh;
1503
                 a_sh <= SHIFT_RIGHT( a, 38 );
1504
         when  14 => sum <= sum + a_sh;
1505
                 a_sh <= SHIFT_RIGHT( a, 41 );
1506
         when  15 => sum <= sum - a_sh;
1507
                 a_sh <= SHIFT_RIGHT( a, 50 );
1508
         when  16 => sum <= sum - a_sh;
1509
                 a_sh <= SHIFT_RIGHT( a, 53 );
1510
         when  17 => sum <= sum + a_sh;
1511
                 a_sh <= SHIFT_RIGHT( a, 55 );
1512
         when  18 => sum <= sum + a_sh;
1513
                 a_sh <= SHIFT_RIGHT( a, 56 );
1514
         when  19 => sum <= sum + a_sh;
1515
                 a_sh <= SHIFT_RIGHT( a, 57 );
1516
         when  20 => sum <= sum + a_sh;
1517
                 a_sh <= SHIFT_RIGHT( a, 58 );
1518
         when  21 => sum <= sum + a_sh;
1519
                 a_sh <= SHIFT_RIGHT( a, 59 );
1520
         when  22 => sum <= sum + a_sh;
1521
                 a_sh <= SHIFT_RIGHT( a, 60 );
1522
         when  23 => sum <= sum + a_sh;
1523
                 a_sh <= SHIFT_RIGHT( a, 61 );
1524
         when  24 => sum <= sum + a_sh;
1525
                 a_sh <= SHIFT_RIGHT( a, 62 );
1526
         when  25 => sum <= sum + a_sh;
1527
                 a_sh <= SHIFT_RIGHT( a, 63 );
1528
         when  26 => sum <= sum + a_sh;
1529
                 a_sh <= SHIFT_RIGHT( a, 64 );
1530
         when  27 => sum <= sum + a_sh;
1531
                 a_sh <= SHIFT_RIGHT( a, 65 );
1532
         when  28 => sum <= sum + a_sh;
1533
                 a_sh <= SHIFT_RIGHT( a, 66 );
1534
         when  29 => sum <= sum + a_sh;
1535
                 a_sh <= SHIFT_RIGHT( a, 67 );
1536
         when  30 => sum <= sum + a_sh;
1537
         when others => sum <= sum;
1538
     end case;
1539
end procedure mult_0_61_30;
1540
 
1541
 
1542
--
1543
-- Auto-generated procedure to multiply "a" with 0.607253 iteratively
1544
-- a_sh is a temporary register to store the shifted value, and 
1545
-- sum is a temporary register to sum up the result
1546
--
1547
procedure mult_0_61( signal   a       : in    signed;
1548
                   signal   a_sh    : inout signed;
1549
                   signal   sum     : inout signed;
1550
                            cnt     : in    natural;
1551
                   constant RM_GAIN : in    natural ) is
1552
   begin
1553
      case RM_GAIN is
1554
         when 1 => mult_0_61_01( a, a_sh, sum, cnt  );
1555
         when 2 => mult_0_61_02( a, a_sh, sum, cnt  );
1556
         when 3 => mult_0_61_03( a, a_sh, sum, cnt  );
1557
         when 4 => mult_0_61_04( a, a_sh, sum, cnt  );
1558
         when 5 => mult_0_61_05( a, a_sh, sum, cnt  );
1559
         when 6 => mult_0_61_06( a, a_sh, sum, cnt  );
1560
         when 7 => mult_0_61_07( a, a_sh, sum, cnt  );
1561
         when 8 => mult_0_61_08( a, a_sh, sum, cnt  );
1562
         when 9 => mult_0_61_09( a, a_sh, sum, cnt  );
1563
         when 10 => mult_0_61_10( a, a_sh, sum, cnt  );
1564
         when 11 => mult_0_61_11( a, a_sh, sum, cnt  );
1565
         when 12 => mult_0_61_12( a, a_sh, sum, cnt  );
1566
         when 13 => mult_0_61_13( a, a_sh, sum, cnt  );
1567
         when 14 => mult_0_61_14( a, a_sh, sum, cnt  );
1568
         when 15 => mult_0_61_15( a, a_sh, sum, cnt  );
1569
         when 16 => mult_0_61_16( a, a_sh, sum, cnt  );
1570
         when 17 => mult_0_61_17( a, a_sh, sum, cnt  );
1571
         when 18 => mult_0_61_18( a, a_sh, sum, cnt  );
1572
         when 19 => mult_0_61_19( a, a_sh, sum, cnt  );
1573
         when 20 => mult_0_61_20( a, a_sh, sum, cnt  );
1574
         when 21 => mult_0_61_21( a, a_sh, sum, cnt  );
1575
         when 22 => mult_0_61_22( a, a_sh, sum, cnt  );
1576
         when 23 => mult_0_61_23( a, a_sh, sum, cnt  );
1577
         when 24 => mult_0_61_24( a, a_sh, sum, cnt  );
1578
         when 25 => mult_0_61_25( a, a_sh, sum, cnt  );
1579
         when 26 => mult_0_61_26( a, a_sh, sum, cnt  );
1580
         when 27 => mult_0_61_27( a, a_sh, sum, cnt  );
1581
         when 28 => mult_0_61_28( a, a_sh, sum, cnt  );
1582
         when 29 => mult_0_61_29( a, a_sh, sum, cnt  );
1583
         when 30 => mult_0_61_30( a, a_sh, sum, cnt  );
1584
         when others => mult_0_61_30( a, a_sh, sum, cnt  );
1585
      end case;
1586
end procedure mult_0_61;
1587
 
1588
 
1589
--
1590
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
1591
-- a_sh is a temporary register to store the shifted value, and 
1592
-- sum is a temporary register to sum up the result
1593
--
1594
procedure mult_0_21_01( signal a    : in    signed;
1595
                   signal a_sh : inout signed;
1596
                   signal sum  : inout signed;
1597
                          cnt  : in    natural ) is
1598
   begin
1599
      case cnt is
1600
         when   0 => sum  <= a;
1601
                     a_sh <= SHIFT_RIGHT( a, 3 );
1602
         when   1 => sum  <= sum - a_sh;
1603
         when others => sum <= sum;
1604
     end case;
1605
end procedure mult_0_21_01;
1606
 
1607
 
1608
--
1609
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
1610
-- a_sh is a temporary register to store the shifted value, and 
1611
-- sum is a temporary register to sum up the result
1612
--
1613
procedure mult_0_21_02( signal a    : in    signed;
1614
                   signal a_sh : inout signed;
1615
                   signal sum  : inout signed;
1616
                          cnt  : in    natural ) is
1617
   begin
1618
      case cnt is
1619
         when   0 => sum  <= a;
1620
                     a_sh <= SHIFT_RIGHT( a, 2 );
1621
         when   1 => sum  <= sum + a_sh;
1622
                 a_sh <= SHIFT_RIGHT( a, 4 );
1623
         when   2 => sum <= sum - a_sh;
1624
         when others => sum <= sum;
1625
     end case;
1626
end procedure mult_0_21_02;
1627
 
1628
 
1629
--
1630
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
1631
-- a_sh is a temporary register to store the shifted value, and 
1632
-- sum is a temporary register to sum up the result
1633
--
1634
procedure mult_0_21_03( signal a    : in    signed;
1635
                   signal a_sh : inout signed;
1636
                   signal sum  : inout signed;
1637
                          cnt  : in    natural ) is
1638
   begin
1639
      case cnt is
1640
         when   0 => sum  <= a;
1641
                     a_sh <= SHIFT_RIGHT( a, 2 );
1642
         when   1 => sum  <= sum + a_sh;
1643
                 a_sh <= SHIFT_RIGHT( a, 5 );
1644
         when   2 => sum <= sum - a_sh;
1645
                 a_sh <= SHIFT_RIGHT( a, 6 );
1646
         when   3 => sum <= sum - a_sh;
1647
         when others => sum <= sum;
1648
     end case;
1649
end procedure mult_0_21_03;
1650
 
1651
 
1652
--
1653
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
1654
-- a_sh is a temporary register to store the shifted value, and 
1655
-- sum is a temporary register to sum up the result
1656
--
1657
procedure mult_0_21_04( signal a    : in    signed;
1658
                   signal a_sh : inout signed;
1659
                   signal sum  : inout signed;
1660
                          cnt  : in    natural ) is
1661
   begin
1662
      case cnt is
1663
         when   0 => sum  <= a;
1664
                     a_sh <= SHIFT_RIGHT( a, 2 );
1665
         when   1 => sum  <= sum + a_sh;
1666
                 a_sh <= SHIFT_RIGHT( a, 5 );
1667
         when   2 => sum <= sum - a_sh;
1668
                 a_sh <= SHIFT_RIGHT( a, 7 );
1669
         when   3 => sum <= sum - a_sh;
1670
                 a_sh <= SHIFT_RIGHT( a, 8 );
1671
         when   4 => sum <= sum - a_sh;
1672
         when others => sum <= sum;
1673
     end case;
1674
end procedure mult_0_21_04;
1675
 
1676
 
1677
--
1678
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
1679
-- a_sh is a temporary register to store the shifted value, and 
1680
-- sum is a temporary register to sum up the result
1681
--
1682
procedure mult_0_21_05( signal a    : in    signed;
1683
                   signal a_sh : inout signed;
1684
                   signal sum  : inout signed;
1685
                          cnt  : in    natural ) is
1686
   begin
1687
      case cnt is
1688
         when   0 => sum  <= a;
1689
                     a_sh <= SHIFT_RIGHT( a, 2 );
1690
         when   1 => sum  <= sum + a_sh;
1691
                 a_sh <= SHIFT_RIGHT( a, 5 );
1692
         when   2 => sum <= sum - a_sh;
1693
                 a_sh <= SHIFT_RIGHT( a, 7 );
1694
         when   3 => sum <= sum - a_sh;
1695
                 a_sh <= SHIFT_RIGHT( a, 8 );
1696
         when   4 => sum <= sum - a_sh;
1697
                 a_sh <= SHIFT_RIGHT( a, 12 );
1698
         when   5 => sum <= sum - a_sh;
1699
         when others => sum <= sum;
1700
     end case;
1701
end procedure mult_0_21_05;
1702
 
1703
 
1704
--
1705
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
1706
-- a_sh is a temporary register to store the shifted value, and 
1707
-- sum is a temporary register to sum up the result
1708
--
1709
procedure mult_0_21_06( signal a    : in    signed;
1710
                   signal a_sh : inout signed;
1711
                   signal sum  : inout signed;
1712
                          cnt  : in    natural ) is
1713
   begin
1714
      case cnt is
1715
         when   0 => sum  <= a;
1716
                     a_sh <= SHIFT_RIGHT( a, 2 );
1717
         when   1 => sum  <= sum + a_sh;
1718
                 a_sh <= SHIFT_RIGHT( a, 5 );
1719
         when   2 => sum <= sum - a_sh;
1720
                 a_sh <= SHIFT_RIGHT( a, 7 );
1721
         when   3 => sum <= sum - a_sh;
1722
                 a_sh <= SHIFT_RIGHT( a, 8 );
1723
         when   4 => sum <= sum - a_sh;
1724
                 a_sh <= SHIFT_RIGHT( a, 11 );
1725
         when   5 => sum <= sum + a_sh;
1726
                 a_sh <= SHIFT_RIGHT( a, 15 );
1727
         when   6 => sum <= sum - a_sh;
1728
         when others => sum <= sum;
1729
     end case;
1730
end procedure mult_0_21_06;
1731
 
1732
 
1733
--
1734
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
1735
-- a_sh is a temporary register to store the shifted value, and 
1736
-- sum is a temporary register to sum up the result
1737
--
1738
procedure mult_0_21_07( signal a    : in    signed;
1739
                   signal a_sh : inout signed;
1740
                   signal sum  : inout signed;
1741
                          cnt  : in    natural ) is
1742
   begin
1743
      case cnt is
1744
         when   0 => sum  <= a;
1745
                     a_sh <= SHIFT_RIGHT( a, 2 );
1746
         when   1 => sum  <= sum + a_sh;
1747
                 a_sh <= SHIFT_RIGHT( a, 5 );
1748
         when   2 => sum <= sum - a_sh;
1749
                 a_sh <= SHIFT_RIGHT( a, 7 );
1750
         when   3 => sum <= sum - a_sh;
1751
                 a_sh <= SHIFT_RIGHT( a, 8 );
1752
         when   4 => sum <= sum - a_sh;
1753
                 a_sh <= SHIFT_RIGHT( a, 11 );
1754
         when   5 => sum <= sum + a_sh;
1755
                 a_sh <= SHIFT_RIGHT( a, 16 );
1756
         when   6 => sum <= sum - a_sh;
1757
                 a_sh <= SHIFT_RIGHT( a, 17 );
1758
         when   7 => sum <= sum - a_sh;
1759
         when others => sum <= sum;
1760
     end case;
1761
end procedure mult_0_21_07;
1762
 
1763
 
1764
--
1765
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
1766
-- a_sh is a temporary register to store the shifted value, and 
1767
-- sum is a temporary register to sum up the result
1768
--
1769
procedure mult_0_21_08( signal a    : in    signed;
1770
                   signal a_sh : inout signed;
1771
                   signal sum  : inout signed;
1772
                          cnt  : in    natural ) is
1773
   begin
1774
      case cnt is
1775
         when   0 => sum  <= a;
1776
                     a_sh <= SHIFT_RIGHT( a, 2 );
1777
         when   1 => sum  <= sum + a_sh;
1778
                 a_sh <= SHIFT_RIGHT( a, 5 );
1779
         when   2 => sum <= sum - a_sh;
1780
                 a_sh <= SHIFT_RIGHT( a, 7 );
1781
         when   3 => sum <= sum - a_sh;
1782
                 a_sh <= SHIFT_RIGHT( a, 8 );
1783
         when   4 => sum <= sum - a_sh;
1784
                 a_sh <= SHIFT_RIGHT( a, 11 );
1785
         when   5 => sum <= sum + a_sh;
1786
                 a_sh <= SHIFT_RIGHT( a, 16 );
1787
         when   6 => sum <= sum - a_sh;
1788
                 a_sh <= SHIFT_RIGHT( a, 17 );
1789
         when   7 => sum <= sum - a_sh;
1790
                 a_sh <= SHIFT_RIGHT( a, 22 );
1791
         when   8 => sum <= sum - a_sh;
1792
         when others => sum <= sum;
1793
     end case;
1794
end procedure mult_0_21_08;
1795
 
1796
 
1797
--
1798
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
1799
-- a_sh is a temporary register to store the shifted value, and 
1800
-- sum is a temporary register to sum up the result
1801
--
1802
procedure mult_0_21_09( signal a    : in    signed;
1803
                   signal a_sh : inout signed;
1804
                   signal sum  : inout signed;
1805
                          cnt  : in    natural ) is
1806
   begin
1807
      case cnt is
1808
         when   0 => sum  <= a;
1809
                     a_sh <= SHIFT_RIGHT( a, 2 );
1810
         when   1 => sum  <= sum + a_sh;
1811
                 a_sh <= SHIFT_RIGHT( a, 5 );
1812
         when   2 => sum <= sum - a_sh;
1813
                 a_sh <= SHIFT_RIGHT( a, 7 );
1814
         when   3 => sum <= sum - a_sh;
1815
                 a_sh <= SHIFT_RIGHT( a, 8 );
1816
         when   4 => sum <= sum - a_sh;
1817
                 a_sh <= SHIFT_RIGHT( a, 11 );
1818
         when   5 => sum <= sum + a_sh;
1819
                 a_sh <= SHIFT_RIGHT( a, 16 );
1820
         when   6 => sum <= sum - a_sh;
1821
                 a_sh <= SHIFT_RIGHT( a, 17 );
1822
         when   7 => sum <= sum - a_sh;
1823
                 a_sh <= SHIFT_RIGHT( a, 21 );
1824
         when   8 => sum <= sum + a_sh;
1825
                 a_sh <= SHIFT_RIGHT( a, 24 );
1826
         when   9 => sum <= sum - a_sh;
1827
         when others => sum <= sum;
1828
     end case;
1829
end procedure mult_0_21_09;
1830
 
1831
 
1832
--
1833
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
1834
-- a_sh is a temporary register to store the shifted value, and 
1835
-- sum is a temporary register to sum up the result
1836
--
1837
procedure mult_0_21_10( signal a    : in    signed;
1838
                   signal a_sh : inout signed;
1839
                   signal sum  : inout signed;
1840
                          cnt  : in    natural ) is
1841
   begin
1842
      case cnt is
1843
         when   0 => sum  <= a;
1844
                     a_sh <= SHIFT_RIGHT( a, 2 );
1845
         when   1 => sum  <= sum + a_sh;
1846
                 a_sh <= SHIFT_RIGHT( a, 5 );
1847
         when   2 => sum <= sum - a_sh;
1848
                 a_sh <= SHIFT_RIGHT( a, 7 );
1849
         when   3 => sum <= sum - a_sh;
1850
                 a_sh <= SHIFT_RIGHT( a, 8 );
1851
         when   4 => sum <= sum - a_sh;
1852
                 a_sh <= SHIFT_RIGHT( a, 11 );
1853
         when   5 => sum <= sum + a_sh;
1854
                 a_sh <= SHIFT_RIGHT( a, 16 );
1855
         when   6 => sum <= sum - a_sh;
1856
                 a_sh <= SHIFT_RIGHT( a, 17 );
1857
         when   7 => sum <= sum - a_sh;
1858
                 a_sh <= SHIFT_RIGHT( a, 21 );
1859
         when   8 => sum <= sum + a_sh;
1860
                 a_sh <= SHIFT_RIGHT( a, 24 );
1861
         when   9 => sum <= sum - a_sh;
1862
                 a_sh <= SHIFT_RIGHT( a, 27 );
1863
         when  10 => sum <= sum + a_sh;
1864
         when others => sum <= sum;
1865
     end case;
1866
end procedure mult_0_21_10;
1867
 
1868
 
1869
--
1870
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
1871
-- a_sh is a temporary register to store the shifted value, and 
1872
-- sum is a temporary register to sum up the result
1873
--
1874
procedure mult_0_21_11( signal a    : in    signed;
1875
                   signal a_sh : inout signed;
1876
                   signal sum  : inout signed;
1877
                          cnt  : in    natural ) is
1878
   begin
1879
      case cnt is
1880
         when   0 => sum  <= a;
1881
                     a_sh <= SHIFT_RIGHT( a, 2 );
1882
         when   1 => sum  <= sum + a_sh;
1883
                 a_sh <= SHIFT_RIGHT( a, 5 );
1884
         when   2 => sum <= sum - a_sh;
1885
                 a_sh <= SHIFT_RIGHT( a, 7 );
1886
         when   3 => sum <= sum - a_sh;
1887
                 a_sh <= SHIFT_RIGHT( a, 8 );
1888
         when   4 => sum <= sum - a_sh;
1889
                 a_sh <= SHIFT_RIGHT( a, 11 );
1890
         when   5 => sum <= sum + a_sh;
1891
                 a_sh <= SHIFT_RIGHT( a, 16 );
1892
         when   6 => sum <= sum - a_sh;
1893
                 a_sh <= SHIFT_RIGHT( a, 17 );
1894
         when   7 => sum <= sum - a_sh;
1895
                 a_sh <= SHIFT_RIGHT( a, 21 );
1896
         when   8 => sum <= sum + a_sh;
1897
                 a_sh <= SHIFT_RIGHT( a, 24 );
1898
         when   9 => sum <= sum - a_sh;
1899
                 a_sh <= SHIFT_RIGHT( a, 27 );
1900
         when  10 => sum <= sum + a_sh;
1901
                 a_sh <= SHIFT_RIGHT( a, 37 );
1902
         when  11 => sum <= sum - a_sh;
1903
         when others => sum <= sum;
1904
     end case;
1905
end procedure mult_0_21_11;
1906
 
1907
 
1908
--
1909
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
1910
-- a_sh is a temporary register to store the shifted value, and 
1911
-- sum is a temporary register to sum up the result
1912
--
1913
procedure mult_0_21_12( signal a    : in    signed;
1914
                   signal a_sh : inout signed;
1915
                   signal sum  : inout signed;
1916
                          cnt  : in    natural ) is
1917
   begin
1918
      case cnt is
1919
         when   0 => sum  <= a;
1920
                     a_sh <= SHIFT_RIGHT( a, 2 );
1921
         when   1 => sum  <= sum + a_sh;
1922
                 a_sh <= SHIFT_RIGHT( a, 5 );
1923
         when   2 => sum <= sum - a_sh;
1924
                 a_sh <= SHIFT_RIGHT( a, 7 );
1925
         when   3 => sum <= sum - a_sh;
1926
                 a_sh <= SHIFT_RIGHT( a, 8 );
1927
         when   4 => sum <= sum - a_sh;
1928
                 a_sh <= SHIFT_RIGHT( a, 11 );
1929
         when   5 => sum <= sum + a_sh;
1930
                 a_sh <= SHIFT_RIGHT( a, 16 );
1931
         when   6 => sum <= sum - a_sh;
1932
                 a_sh <= SHIFT_RIGHT( a, 17 );
1933
         when   7 => sum <= sum - a_sh;
1934
                 a_sh <= SHIFT_RIGHT( a, 21 );
1935
         when   8 => sum <= sum + a_sh;
1936
                 a_sh <= SHIFT_RIGHT( a, 24 );
1937
         when   9 => sum <= sum - a_sh;
1938
                 a_sh <= SHIFT_RIGHT( a, 27 );
1939
         when  10 => sum <= sum + a_sh;
1940
                 a_sh <= SHIFT_RIGHT( a, 36 );
1941
         when  11 => sum <= sum + a_sh;
1942
                 a_sh <= SHIFT_RIGHT( a, 39 );
1943
         when  12 => sum <= sum - a_sh;
1944
         when others => sum <= sum;
1945
     end case;
1946
end procedure mult_0_21_12;
1947
 
1948
 
1949
--
1950
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
1951
-- a_sh is a temporary register to store the shifted value, and 
1952
-- sum is a temporary register to sum up the result
1953
--
1954
procedure mult_0_21_13( signal a    : in    signed;
1955
                   signal a_sh : inout signed;
1956
                   signal sum  : inout signed;
1957
                          cnt  : in    natural ) is
1958
   begin
1959
      case cnt is
1960
         when   0 => sum  <= a;
1961
                     a_sh <= SHIFT_RIGHT( a, 2 );
1962
         when   1 => sum  <= sum + a_sh;
1963
                 a_sh <= SHIFT_RIGHT( a, 5 );
1964
         when   2 => sum <= sum - a_sh;
1965
                 a_sh <= SHIFT_RIGHT( a, 7 );
1966
         when   3 => sum <= sum - a_sh;
1967
                 a_sh <= SHIFT_RIGHT( a, 8 );
1968
         when   4 => sum <= sum - a_sh;
1969
                 a_sh <= SHIFT_RIGHT( a, 11 );
1970
         when   5 => sum <= sum + a_sh;
1971
                 a_sh <= SHIFT_RIGHT( a, 16 );
1972
         when   6 => sum <= sum - a_sh;
1973
                 a_sh <= SHIFT_RIGHT( a, 17 );
1974
         when   7 => sum <= sum - a_sh;
1975
                 a_sh <= SHIFT_RIGHT( a, 21 );
1976
         when   8 => sum <= sum + a_sh;
1977
                 a_sh <= SHIFT_RIGHT( a, 24 );
1978
         when   9 => sum <= sum - a_sh;
1979
                 a_sh <= SHIFT_RIGHT( a, 27 );
1980
         when  10 => sum <= sum + a_sh;
1981
                 a_sh <= SHIFT_RIGHT( a, 36 );
1982
         when  11 => sum <= sum + a_sh;
1983
                 a_sh <= SHIFT_RIGHT( a, 40 );
1984
         when  12 => sum <= sum - a_sh;
1985
                 a_sh <= SHIFT_RIGHT( a, 42 );
1986
         when  13 => sum <= sum - a_sh;
1987
         when others => sum <= sum;
1988
     end case;
1989
end procedure mult_0_21_13;
1990
 
1991
 
1992
--
1993
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
1994
-- a_sh is a temporary register to store the shifted value, and 
1995
-- sum is a temporary register to sum up the result
1996
--
1997
procedure mult_0_21_14( signal a    : in    signed;
1998
                   signal a_sh : inout signed;
1999
                   signal sum  : inout signed;
2000
                          cnt  : in    natural ) is
2001
   begin
2002
      case cnt is
2003
         when   0 => sum  <= a;
2004
                     a_sh <= SHIFT_RIGHT( a, 2 );
2005
         when   1 => sum  <= sum + a_sh;
2006
                 a_sh <= SHIFT_RIGHT( a, 5 );
2007
         when   2 => sum <= sum - a_sh;
2008
                 a_sh <= SHIFT_RIGHT( a, 7 );
2009
         when   3 => sum <= sum - a_sh;
2010
                 a_sh <= SHIFT_RIGHT( a, 8 );
2011
         when   4 => sum <= sum - a_sh;
2012
                 a_sh <= SHIFT_RIGHT( a, 11 );
2013
         when   5 => sum <= sum + a_sh;
2014
                 a_sh <= SHIFT_RIGHT( a, 16 );
2015
         when   6 => sum <= sum - a_sh;
2016
                 a_sh <= SHIFT_RIGHT( a, 17 );
2017
         when   7 => sum <= sum - a_sh;
2018
                 a_sh <= SHIFT_RIGHT( a, 21 );
2019
         when   8 => sum <= sum + a_sh;
2020
                 a_sh <= SHIFT_RIGHT( a, 24 );
2021
         when   9 => sum <= sum - a_sh;
2022
                 a_sh <= SHIFT_RIGHT( a, 27 );
2023
         when  10 => sum <= sum + a_sh;
2024
                 a_sh <= SHIFT_RIGHT( a, 36 );
2025
         when  11 => sum <= sum + a_sh;
2026
                 a_sh <= SHIFT_RIGHT( a, 40 );
2027
         when  12 => sum <= sum - a_sh;
2028
                 a_sh <= SHIFT_RIGHT( a, 43 );
2029
         when  13 => sum <= sum - a_sh;
2030
                 a_sh <= SHIFT_RIGHT( a, 44 );
2031
         when  14 => sum <= sum - a_sh;
2032
         when others => sum <= sum;
2033
     end case;
2034
end procedure mult_0_21_14;
2035
 
2036
 
2037
--
2038
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
2039
-- a_sh is a temporary register to store the shifted value, and 
2040
-- sum is a temporary register to sum up the result
2041
--
2042
procedure mult_0_21_15( signal a    : in    signed;
2043
                   signal a_sh : inout signed;
2044
                   signal sum  : inout signed;
2045
                          cnt  : in    natural ) is
2046
   begin
2047
      case cnt is
2048
         when   0 => sum  <= a;
2049
                     a_sh <= SHIFT_RIGHT( a, 2 );
2050
         when   1 => sum  <= sum + a_sh;
2051
                 a_sh <= SHIFT_RIGHT( a, 5 );
2052
         when   2 => sum <= sum - a_sh;
2053
                 a_sh <= SHIFT_RIGHT( a, 7 );
2054
         when   3 => sum <= sum - a_sh;
2055
                 a_sh <= SHIFT_RIGHT( a, 8 );
2056
         when   4 => sum <= sum - a_sh;
2057
                 a_sh <= SHIFT_RIGHT( a, 11 );
2058
         when   5 => sum <= sum + a_sh;
2059
                 a_sh <= SHIFT_RIGHT( a, 16 );
2060
         when   6 => sum <= sum - a_sh;
2061
                 a_sh <= SHIFT_RIGHT( a, 17 );
2062
         when   7 => sum <= sum - a_sh;
2063
                 a_sh <= SHIFT_RIGHT( a, 21 );
2064
         when   8 => sum <= sum + a_sh;
2065
                 a_sh <= SHIFT_RIGHT( a, 24 );
2066
         when   9 => sum <= sum - a_sh;
2067
                 a_sh <= SHIFT_RIGHT( a, 27 );
2068
         when  10 => sum <= sum + a_sh;
2069
                 a_sh <= SHIFT_RIGHT( a, 36 );
2070
         when  11 => sum <= sum + a_sh;
2071
                 a_sh <= SHIFT_RIGHT( a, 40 );
2072
         when  12 => sum <= sum - a_sh;
2073
                 a_sh <= SHIFT_RIGHT( a, 43 );
2074
         when  13 => sum <= sum - a_sh;
2075
                 a_sh <= SHIFT_RIGHT( a, 45 );
2076
         when  14 => sum <= sum - a_sh;
2077
                 a_sh <= SHIFT_RIGHT( a, 50 );
2078
         when  15 => sum <= sum - a_sh;
2079
         when others => sum <= sum;
2080
     end case;
2081
end procedure mult_0_21_15;
2082
 
2083
 
2084
--
2085
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
2086
-- a_sh is a temporary register to store the shifted value, and 
2087
-- sum is a temporary register to sum up the result
2088
--
2089
procedure mult_0_21_16( signal a    : in    signed;
2090
                   signal a_sh : inout signed;
2091
                   signal sum  : inout signed;
2092
                          cnt  : in    natural ) is
2093
   begin
2094
      case cnt is
2095
         when   0 => sum  <= a;
2096
                     a_sh <= SHIFT_RIGHT( a, 2 );
2097
         when   1 => sum  <= sum + a_sh;
2098
                 a_sh <= SHIFT_RIGHT( a, 5 );
2099
         when   2 => sum <= sum - a_sh;
2100
                 a_sh <= SHIFT_RIGHT( a, 7 );
2101
         when   3 => sum <= sum - a_sh;
2102
                 a_sh <= SHIFT_RIGHT( a, 8 );
2103
         when   4 => sum <= sum - a_sh;
2104
                 a_sh <= SHIFT_RIGHT( a, 11 );
2105
         when   5 => sum <= sum + a_sh;
2106
                 a_sh <= SHIFT_RIGHT( a, 16 );
2107
         when   6 => sum <= sum - a_sh;
2108
                 a_sh <= SHIFT_RIGHT( a, 17 );
2109
         when   7 => sum <= sum - a_sh;
2110
                 a_sh <= SHIFT_RIGHT( a, 21 );
2111
         when   8 => sum <= sum + a_sh;
2112
                 a_sh <= SHIFT_RIGHT( a, 24 );
2113
         when   9 => sum <= sum - a_sh;
2114
                 a_sh <= SHIFT_RIGHT( a, 27 );
2115
         when  10 => sum <= sum + a_sh;
2116
                 a_sh <= SHIFT_RIGHT( a, 36 );
2117
         when  11 => sum <= sum + a_sh;
2118
                 a_sh <= SHIFT_RIGHT( a, 40 );
2119
         when  12 => sum <= sum - a_sh;
2120
                 a_sh <= SHIFT_RIGHT( a, 43 );
2121
         when  13 => sum <= sum - a_sh;
2122
                 a_sh <= SHIFT_RIGHT( a, 45 );
2123
         when  14 => sum <= sum - a_sh;
2124
                 a_sh <= SHIFT_RIGHT( a, 51 );
2125
         when  15 => sum <= sum - a_sh;
2126
                 a_sh <= SHIFT_RIGHT( a, 52 );
2127
         when  16 => sum <= sum - a_sh;
2128
         when others => sum <= sum;
2129
     end case;
2130
end procedure mult_0_21_16;
2131
 
2132
 
2133
--
2134
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
2135
-- a_sh is a temporary register to store the shifted value, and 
2136
-- sum is a temporary register to sum up the result
2137
--
2138
procedure mult_0_21_17( signal a    : in    signed;
2139
                   signal a_sh : inout signed;
2140
                   signal sum  : inout signed;
2141
                          cnt  : in    natural ) is
2142
   begin
2143
      case cnt is
2144
         when   0 => sum  <= a;
2145
                     a_sh <= SHIFT_RIGHT( a, 2 );
2146
         when   1 => sum  <= sum + a_sh;
2147
                 a_sh <= SHIFT_RIGHT( a, 5 );
2148
         when   2 => sum <= sum - a_sh;
2149
                 a_sh <= SHIFT_RIGHT( a, 7 );
2150
         when   3 => sum <= sum - a_sh;
2151
                 a_sh <= SHIFT_RIGHT( a, 8 );
2152
         when   4 => sum <= sum - a_sh;
2153
                 a_sh <= SHIFT_RIGHT( a, 11 );
2154
         when   5 => sum <= sum + a_sh;
2155
                 a_sh <= SHIFT_RIGHT( a, 16 );
2156
         when   6 => sum <= sum - a_sh;
2157
                 a_sh <= SHIFT_RIGHT( a, 17 );
2158
         when   7 => sum <= sum - a_sh;
2159
                 a_sh <= SHIFT_RIGHT( a, 21 );
2160
         when   8 => sum <= sum + a_sh;
2161
                 a_sh <= SHIFT_RIGHT( a, 24 );
2162
         when   9 => sum <= sum - a_sh;
2163
                 a_sh <= SHIFT_RIGHT( a, 27 );
2164
         when  10 => sum <= sum + a_sh;
2165
                 a_sh <= SHIFT_RIGHT( a, 36 );
2166
         when  11 => sum <= sum + a_sh;
2167
                 a_sh <= SHIFT_RIGHT( a, 40 );
2168
         when  12 => sum <= sum - a_sh;
2169
                 a_sh <= SHIFT_RIGHT( a, 43 );
2170
         when  13 => sum <= sum - a_sh;
2171
                 a_sh <= SHIFT_RIGHT( a, 45 );
2172
         when  14 => sum <= sum - a_sh;
2173
                 a_sh <= SHIFT_RIGHT( a, 51 );
2174
         when  15 => sum <= sum - a_sh;
2175
                 a_sh <= SHIFT_RIGHT( a, 53 );
2176
         when  16 => sum <= sum - a_sh;
2177
                 a_sh <= SHIFT_RIGHT( a, 55 );
2178
         when  17 => sum <= sum - a_sh;
2179
         when others => sum <= sum;
2180
     end case;
2181
end procedure mult_0_21_17;
2182
 
2183
 
2184
--
2185
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
2186
-- a_sh is a temporary register to store the shifted value, and 
2187
-- sum is a temporary register to sum up the result
2188
--
2189
procedure mult_0_21_18( signal a    : in    signed;
2190
                   signal a_sh : inout signed;
2191
                   signal sum  : inout signed;
2192
                          cnt  : in    natural ) is
2193
   begin
2194
      case cnt is
2195
         when   0 => sum  <= a;
2196
                     a_sh <= SHIFT_RIGHT( a, 2 );
2197
         when   1 => sum  <= sum + a_sh;
2198
                 a_sh <= SHIFT_RIGHT( a, 5 );
2199
         when   2 => sum <= sum - a_sh;
2200
                 a_sh <= SHIFT_RIGHT( a, 7 );
2201
         when   3 => sum <= sum - a_sh;
2202
                 a_sh <= SHIFT_RIGHT( a, 8 );
2203
         when   4 => sum <= sum - a_sh;
2204
                 a_sh <= SHIFT_RIGHT( a, 11 );
2205
         when   5 => sum <= sum + a_sh;
2206
                 a_sh <= SHIFT_RIGHT( a, 16 );
2207
         when   6 => sum <= sum - a_sh;
2208
                 a_sh <= SHIFT_RIGHT( a, 17 );
2209
         when   7 => sum <= sum - a_sh;
2210
                 a_sh <= SHIFT_RIGHT( a, 21 );
2211
         when   8 => sum <= sum + a_sh;
2212
                 a_sh <= SHIFT_RIGHT( a, 24 );
2213
         when   9 => sum <= sum - a_sh;
2214
                 a_sh <= SHIFT_RIGHT( a, 27 );
2215
         when  10 => sum <= sum + a_sh;
2216
                 a_sh <= SHIFT_RIGHT( a, 36 );
2217
         when  11 => sum <= sum + a_sh;
2218
                 a_sh <= SHIFT_RIGHT( a, 40 );
2219
         when  12 => sum <= sum - a_sh;
2220
                 a_sh <= SHIFT_RIGHT( a, 43 );
2221
         when  13 => sum <= sum - a_sh;
2222
                 a_sh <= SHIFT_RIGHT( a, 45 );
2223
         when  14 => sum <= sum - a_sh;
2224
                 a_sh <= SHIFT_RIGHT( a, 51 );
2225
         when  15 => sum <= sum - a_sh;
2226
                 a_sh <= SHIFT_RIGHT( a, 53 );
2227
         when  16 => sum <= sum - a_sh;
2228
                 a_sh <= SHIFT_RIGHT( a, 55 );
2229
         when  17 => sum <= sum - a_sh;
2230
                 a_sh <= SHIFT_RIGHT( a, 57 );
2231
         when  18 => sum <= sum - a_sh;
2232
         when others => sum <= sum;
2233
     end case;
2234
end procedure mult_0_21_18;
2235
 
2236
 
2237
--
2238
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
2239
-- a_sh is a temporary register to store the shifted value, and 
2240
-- sum is a temporary register to sum up the result
2241
--
2242
procedure mult_0_21_19( signal a    : in    signed;
2243
                   signal a_sh : inout signed;
2244
                   signal sum  : inout signed;
2245
                          cnt  : in    natural ) is
2246
   begin
2247
      case cnt is
2248
         when   0 => sum  <= a;
2249
                     a_sh <= SHIFT_RIGHT( a, 2 );
2250
         when   1 => sum  <= sum + a_sh;
2251
                 a_sh <= SHIFT_RIGHT( a, 5 );
2252
         when   2 => sum <= sum - a_sh;
2253
                 a_sh <= SHIFT_RIGHT( a, 7 );
2254
         when   3 => sum <= sum - a_sh;
2255
                 a_sh <= SHIFT_RIGHT( a, 8 );
2256
         when   4 => sum <= sum - a_sh;
2257
                 a_sh <= SHIFT_RIGHT( a, 11 );
2258
         when   5 => sum <= sum + a_sh;
2259
                 a_sh <= SHIFT_RIGHT( a, 16 );
2260
         when   6 => sum <= sum - a_sh;
2261
                 a_sh <= SHIFT_RIGHT( a, 17 );
2262
         when   7 => sum <= sum - a_sh;
2263
                 a_sh <= SHIFT_RIGHT( a, 21 );
2264
         when   8 => sum <= sum + a_sh;
2265
                 a_sh <= SHIFT_RIGHT( a, 24 );
2266
         when   9 => sum <= sum - a_sh;
2267
                 a_sh <= SHIFT_RIGHT( a, 27 );
2268
         when  10 => sum <= sum + a_sh;
2269
                 a_sh <= SHIFT_RIGHT( a, 36 );
2270
         when  11 => sum <= sum + a_sh;
2271
                 a_sh <= SHIFT_RIGHT( a, 40 );
2272
         when  12 => sum <= sum - a_sh;
2273
                 a_sh <= SHIFT_RIGHT( a, 43 );
2274
         when  13 => sum <= sum - a_sh;
2275
                 a_sh <= SHIFT_RIGHT( a, 45 );
2276
         when  14 => sum <= sum - a_sh;
2277
                 a_sh <= SHIFT_RIGHT( a, 51 );
2278
         when  15 => sum <= sum - a_sh;
2279
                 a_sh <= SHIFT_RIGHT( a, 53 );
2280
         when  16 => sum <= sum - a_sh;
2281
                 a_sh <= SHIFT_RIGHT( a, 55 );
2282
         when  17 => sum <= sum - a_sh;
2283
                 a_sh <= SHIFT_RIGHT( a, 57 );
2284
         when  18 => sum <= sum - a_sh;
2285
                 a_sh <= SHIFT_RIGHT( a, 58 );
2286
         when  19 => sum <= sum - a_sh;
2287
         when others => sum <= sum;
2288
     end case;
2289
end procedure mult_0_21_19;
2290
 
2291
 
2292
--
2293
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
2294
-- a_sh is a temporary register to store the shifted value, and 
2295
-- sum is a temporary register to sum up the result
2296
--
2297
procedure mult_0_21_20( signal a    : in    signed;
2298
                   signal a_sh : inout signed;
2299
                   signal sum  : inout signed;
2300
                          cnt  : in    natural ) is
2301
   begin
2302
      case cnt is
2303
         when   0 => sum  <= a;
2304
                     a_sh <= SHIFT_RIGHT( a, 2 );
2305
         when   1 => sum  <= sum + a_sh;
2306
                 a_sh <= SHIFT_RIGHT( a, 5 );
2307
         when   2 => sum <= sum - a_sh;
2308
                 a_sh <= SHIFT_RIGHT( a, 7 );
2309
         when   3 => sum <= sum - a_sh;
2310
                 a_sh <= SHIFT_RIGHT( a, 8 );
2311
         when   4 => sum <= sum - a_sh;
2312
                 a_sh <= SHIFT_RIGHT( a, 11 );
2313
         when   5 => sum <= sum + a_sh;
2314
                 a_sh <= SHIFT_RIGHT( a, 16 );
2315
         when   6 => sum <= sum - a_sh;
2316
                 a_sh <= SHIFT_RIGHT( a, 17 );
2317
         when   7 => sum <= sum - a_sh;
2318
                 a_sh <= SHIFT_RIGHT( a, 21 );
2319
         when   8 => sum <= sum + a_sh;
2320
                 a_sh <= SHIFT_RIGHT( a, 24 );
2321
         when   9 => sum <= sum - a_sh;
2322
                 a_sh <= SHIFT_RIGHT( a, 27 );
2323
         when  10 => sum <= sum + a_sh;
2324
                 a_sh <= SHIFT_RIGHT( a, 36 );
2325
         when  11 => sum <= sum + a_sh;
2326
                 a_sh <= SHIFT_RIGHT( a, 40 );
2327
         when  12 => sum <= sum - a_sh;
2328
                 a_sh <= SHIFT_RIGHT( a, 43 );
2329
         when  13 => sum <= sum - a_sh;
2330
                 a_sh <= SHIFT_RIGHT( a, 45 );
2331
         when  14 => sum <= sum - a_sh;
2332
                 a_sh <= SHIFT_RIGHT( a, 51 );
2333
         when  15 => sum <= sum - a_sh;
2334
                 a_sh <= SHIFT_RIGHT( a, 53 );
2335
         when  16 => sum <= sum - a_sh;
2336
                 a_sh <= SHIFT_RIGHT( a, 55 );
2337
         when  17 => sum <= sum - a_sh;
2338
                 a_sh <= SHIFT_RIGHT( a, 57 );
2339
         when  18 => sum <= sum - a_sh;
2340
                 a_sh <= SHIFT_RIGHT( a, 58 );
2341
         when  19 => sum <= sum - a_sh;
2342
                 a_sh <= SHIFT_RIGHT( a, 59 );
2343
         when  20 => sum <= sum - a_sh;
2344
         when others => sum <= sum;
2345
     end case;
2346
end procedure mult_0_21_20;
2347
 
2348
 
2349
--
2350
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
2351
-- a_sh is a temporary register to store the shifted value, and 
2352
-- sum is a temporary register to sum up the result
2353
--
2354
procedure mult_0_21_21( signal a    : in    signed;
2355
                   signal a_sh : inout signed;
2356
                   signal sum  : inout signed;
2357
                          cnt  : in    natural ) is
2358
   begin
2359
      case cnt is
2360
         when   0 => sum  <= a;
2361
                     a_sh <= SHIFT_RIGHT( a, 2 );
2362
         when   1 => sum  <= sum + a_sh;
2363
                 a_sh <= SHIFT_RIGHT( a, 5 );
2364
         when   2 => sum <= sum - a_sh;
2365
                 a_sh <= SHIFT_RIGHT( a, 7 );
2366
         when   3 => sum <= sum - a_sh;
2367
                 a_sh <= SHIFT_RIGHT( a, 8 );
2368
         when   4 => sum <= sum - a_sh;
2369
                 a_sh <= SHIFT_RIGHT( a, 11 );
2370
         when   5 => sum <= sum + a_sh;
2371
                 a_sh <= SHIFT_RIGHT( a, 16 );
2372
         when   6 => sum <= sum - a_sh;
2373
                 a_sh <= SHIFT_RIGHT( a, 17 );
2374
         when   7 => sum <= sum - a_sh;
2375
                 a_sh <= SHIFT_RIGHT( a, 21 );
2376
         when   8 => sum <= sum + a_sh;
2377
                 a_sh <= SHIFT_RIGHT( a, 24 );
2378
         when   9 => sum <= sum - a_sh;
2379
                 a_sh <= SHIFT_RIGHT( a, 27 );
2380
         when  10 => sum <= sum + a_sh;
2381
                 a_sh <= SHIFT_RIGHT( a, 36 );
2382
         when  11 => sum <= sum + a_sh;
2383
                 a_sh <= SHIFT_RIGHT( a, 40 );
2384
         when  12 => sum <= sum - a_sh;
2385
                 a_sh <= SHIFT_RIGHT( a, 43 );
2386
         when  13 => sum <= sum - a_sh;
2387
                 a_sh <= SHIFT_RIGHT( a, 45 );
2388
         when  14 => sum <= sum - a_sh;
2389
                 a_sh <= SHIFT_RIGHT( a, 51 );
2390
         when  15 => sum <= sum - a_sh;
2391
                 a_sh <= SHIFT_RIGHT( a, 53 );
2392
         when  16 => sum <= sum - a_sh;
2393
                 a_sh <= SHIFT_RIGHT( a, 55 );
2394
         when  17 => sum <= sum - a_sh;
2395
                 a_sh <= SHIFT_RIGHT( a, 57 );
2396
         when  18 => sum <= sum - a_sh;
2397
                 a_sh <= SHIFT_RIGHT( a, 58 );
2398
         when  19 => sum <= sum - a_sh;
2399
                 a_sh <= SHIFT_RIGHT( a, 59 );
2400
         when  20 => sum <= sum - a_sh;
2401
                 a_sh <= SHIFT_RIGHT( a, 60 );
2402
         when  21 => sum <= sum - a_sh;
2403
         when others => sum <= sum;
2404
     end case;
2405
end procedure mult_0_21_21;
2406
 
2407
 
2408
--
2409
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
2410
-- a_sh is a temporary register to store the shifted value, and 
2411
-- sum is a temporary register to sum up the result
2412
--
2413
procedure mult_0_21_22( signal a    : in    signed;
2414
                   signal a_sh : inout signed;
2415
                   signal sum  : inout signed;
2416
                          cnt  : in    natural ) is
2417
   begin
2418
      case cnt is
2419
         when   0 => sum  <= a;
2420
                     a_sh <= SHIFT_RIGHT( a, 2 );
2421
         when   1 => sum  <= sum + a_sh;
2422
                 a_sh <= SHIFT_RIGHT( a, 5 );
2423
         when   2 => sum <= sum - a_sh;
2424
                 a_sh <= SHIFT_RIGHT( a, 7 );
2425
         when   3 => sum <= sum - a_sh;
2426
                 a_sh <= SHIFT_RIGHT( a, 8 );
2427
         when   4 => sum <= sum - a_sh;
2428
                 a_sh <= SHIFT_RIGHT( a, 11 );
2429
         when   5 => sum <= sum + a_sh;
2430
                 a_sh <= SHIFT_RIGHT( a, 16 );
2431
         when   6 => sum <= sum - a_sh;
2432
                 a_sh <= SHIFT_RIGHT( a, 17 );
2433
         when   7 => sum <= sum - a_sh;
2434
                 a_sh <= SHIFT_RIGHT( a, 21 );
2435
         when   8 => sum <= sum + a_sh;
2436
                 a_sh <= SHIFT_RIGHT( a, 24 );
2437
         when   9 => sum <= sum - a_sh;
2438
                 a_sh <= SHIFT_RIGHT( a, 27 );
2439
         when  10 => sum <= sum + a_sh;
2440
                 a_sh <= SHIFT_RIGHT( a, 36 );
2441
         when  11 => sum <= sum + a_sh;
2442
                 a_sh <= SHIFT_RIGHT( a, 40 );
2443
         when  12 => sum <= sum - a_sh;
2444
                 a_sh <= SHIFT_RIGHT( a, 43 );
2445
         when  13 => sum <= sum - a_sh;
2446
                 a_sh <= SHIFT_RIGHT( a, 45 );
2447
         when  14 => sum <= sum - a_sh;
2448
                 a_sh <= SHIFT_RIGHT( a, 51 );
2449
         when  15 => sum <= sum - a_sh;
2450
                 a_sh <= SHIFT_RIGHT( a, 53 );
2451
         when  16 => sum <= sum - a_sh;
2452
                 a_sh <= SHIFT_RIGHT( a, 55 );
2453
         when  17 => sum <= sum - a_sh;
2454
                 a_sh <= SHIFT_RIGHT( a, 57 );
2455
         when  18 => sum <= sum - a_sh;
2456
                 a_sh <= SHIFT_RIGHT( a, 58 );
2457
         when  19 => sum <= sum - a_sh;
2458
                 a_sh <= SHIFT_RIGHT( a, 59 );
2459
         when  20 => sum <= sum - a_sh;
2460
                 a_sh <= SHIFT_RIGHT( a, 60 );
2461
         when  21 => sum <= sum - a_sh;
2462
                 a_sh <= SHIFT_RIGHT( a, 61 );
2463
         when  22 => sum <= sum - a_sh;
2464
         when others => sum <= sum;
2465
     end case;
2466
end procedure mult_0_21_22;
2467
 
2468
 
2469
--
2470
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
2471
-- a_sh is a temporary register to store the shifted value, and 
2472
-- sum is a temporary register to sum up the result
2473
--
2474
procedure mult_0_21_23( signal a    : in    signed;
2475
                   signal a_sh : inout signed;
2476
                   signal sum  : inout signed;
2477
                          cnt  : in    natural ) is
2478
   begin
2479
      case cnt is
2480
         when   0 => sum  <= a;
2481
                     a_sh <= SHIFT_RIGHT( a, 2 );
2482
         when   1 => sum  <= sum + a_sh;
2483
                 a_sh <= SHIFT_RIGHT( a, 5 );
2484
         when   2 => sum <= sum - a_sh;
2485
                 a_sh <= SHIFT_RIGHT( a, 7 );
2486
         when   3 => sum <= sum - a_sh;
2487
                 a_sh <= SHIFT_RIGHT( a, 8 );
2488
         when   4 => sum <= sum - a_sh;
2489
                 a_sh <= SHIFT_RIGHT( a, 11 );
2490
         when   5 => sum <= sum + a_sh;
2491
                 a_sh <= SHIFT_RIGHT( a, 16 );
2492
         when   6 => sum <= sum - a_sh;
2493
                 a_sh <= SHIFT_RIGHT( a, 17 );
2494
         when   7 => sum <= sum - a_sh;
2495
                 a_sh <= SHIFT_RIGHT( a, 21 );
2496
         when   8 => sum <= sum + a_sh;
2497
                 a_sh <= SHIFT_RIGHT( a, 24 );
2498
         when   9 => sum <= sum - a_sh;
2499
                 a_sh <= SHIFT_RIGHT( a, 27 );
2500
         when  10 => sum <= sum + a_sh;
2501
                 a_sh <= SHIFT_RIGHT( a, 36 );
2502
         when  11 => sum <= sum + a_sh;
2503
                 a_sh <= SHIFT_RIGHT( a, 40 );
2504
         when  12 => sum <= sum - a_sh;
2505
                 a_sh <= SHIFT_RIGHT( a, 43 );
2506
         when  13 => sum <= sum - a_sh;
2507
                 a_sh <= SHIFT_RIGHT( a, 45 );
2508
         when  14 => sum <= sum - a_sh;
2509
                 a_sh <= SHIFT_RIGHT( a, 51 );
2510
         when  15 => sum <= sum - a_sh;
2511
                 a_sh <= SHIFT_RIGHT( a, 53 );
2512
         when  16 => sum <= sum - a_sh;
2513
                 a_sh <= SHIFT_RIGHT( a, 55 );
2514
         when  17 => sum <= sum - a_sh;
2515
                 a_sh <= SHIFT_RIGHT( a, 57 );
2516
         when  18 => sum <= sum - a_sh;
2517
                 a_sh <= SHIFT_RIGHT( a, 58 );
2518
         when  19 => sum <= sum - a_sh;
2519
                 a_sh <= SHIFT_RIGHT( a, 59 );
2520
         when  20 => sum <= sum - a_sh;
2521
                 a_sh <= SHIFT_RIGHT( a, 60 );
2522
         when  21 => sum <= sum - a_sh;
2523
                 a_sh <= SHIFT_RIGHT( a, 61 );
2524
         when  22 => sum <= sum - a_sh;
2525
                 a_sh <= SHIFT_RIGHT( a, 62 );
2526
         when  23 => sum <= sum - a_sh;
2527
         when others => sum <= sum;
2528
     end case;
2529
end procedure mult_0_21_23;
2530
 
2531
 
2532
--
2533
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
2534
-- a_sh is a temporary register to store the shifted value, and 
2535
-- sum is a temporary register to sum up the result
2536
--
2537
procedure mult_0_21_24( signal a    : in    signed;
2538
                   signal a_sh : inout signed;
2539
                   signal sum  : inout signed;
2540
                          cnt  : in    natural ) is
2541
   begin
2542
      case cnt is
2543
         when   0 => sum  <= a;
2544
                     a_sh <= SHIFT_RIGHT( a, 2 );
2545
         when   1 => sum  <= sum + a_sh;
2546
                 a_sh <= SHIFT_RIGHT( a, 5 );
2547
         when   2 => sum <= sum - a_sh;
2548
                 a_sh <= SHIFT_RIGHT( a, 7 );
2549
         when   3 => sum <= sum - a_sh;
2550
                 a_sh <= SHIFT_RIGHT( a, 8 );
2551
         when   4 => sum <= sum - a_sh;
2552
                 a_sh <= SHIFT_RIGHT( a, 11 );
2553
         when   5 => sum <= sum + a_sh;
2554
                 a_sh <= SHIFT_RIGHT( a, 16 );
2555
         when   6 => sum <= sum - a_sh;
2556
                 a_sh <= SHIFT_RIGHT( a, 17 );
2557
         when   7 => sum <= sum - a_sh;
2558
                 a_sh <= SHIFT_RIGHT( a, 21 );
2559
         when   8 => sum <= sum + a_sh;
2560
                 a_sh <= SHIFT_RIGHT( a, 24 );
2561
         when   9 => sum <= sum - a_sh;
2562
                 a_sh <= SHIFT_RIGHT( a, 27 );
2563
         when  10 => sum <= sum + a_sh;
2564
                 a_sh <= SHIFT_RIGHT( a, 36 );
2565
         when  11 => sum <= sum + a_sh;
2566
                 a_sh <= SHIFT_RIGHT( a, 40 );
2567
         when  12 => sum <= sum - a_sh;
2568
                 a_sh <= SHIFT_RIGHT( a, 43 );
2569
         when  13 => sum <= sum - a_sh;
2570
                 a_sh <= SHIFT_RIGHT( a, 45 );
2571
         when  14 => sum <= sum - a_sh;
2572
                 a_sh <= SHIFT_RIGHT( a, 51 );
2573
         when  15 => sum <= sum - a_sh;
2574
                 a_sh <= SHIFT_RIGHT( a, 53 );
2575
         when  16 => sum <= sum - a_sh;
2576
                 a_sh <= SHIFT_RIGHT( a, 55 );
2577
         when  17 => sum <= sum - a_sh;
2578
                 a_sh <= SHIFT_RIGHT( a, 57 );
2579
         when  18 => sum <= sum - a_sh;
2580
                 a_sh <= SHIFT_RIGHT( a, 58 );
2581
         when  19 => sum <= sum - a_sh;
2582
                 a_sh <= SHIFT_RIGHT( a, 59 );
2583
         when  20 => sum <= sum - a_sh;
2584
                 a_sh <= SHIFT_RIGHT( a, 60 );
2585
         when  21 => sum <= sum - a_sh;
2586
                 a_sh <= SHIFT_RIGHT( a, 61 );
2587
         when  22 => sum <= sum - a_sh;
2588
                 a_sh <= SHIFT_RIGHT( a, 62 );
2589
         when  23 => sum <= sum - a_sh;
2590
                 a_sh <= SHIFT_RIGHT( a, 63 );
2591
         when  24 => sum <= sum - a_sh;
2592
         when others => sum <= sum;
2593
     end case;
2594
end procedure mult_0_21_24;
2595
 
2596
 
2597
--
2598
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
2599
-- a_sh is a temporary register to store the shifted value, and 
2600
-- sum is a temporary register to sum up the result
2601
--
2602
procedure mult_0_21_25( signal a    : in    signed;
2603
                   signal a_sh : inout signed;
2604
                   signal sum  : inout signed;
2605
                          cnt  : in    natural ) is
2606
   begin
2607
      case cnt is
2608
         when   0 => sum  <= a;
2609
                     a_sh <= SHIFT_RIGHT( a, 2 );
2610
         when   1 => sum  <= sum + a_sh;
2611
                 a_sh <= SHIFT_RIGHT( a, 5 );
2612
         when   2 => sum <= sum - a_sh;
2613
                 a_sh <= SHIFT_RIGHT( a, 7 );
2614
         when   3 => sum <= sum - a_sh;
2615
                 a_sh <= SHIFT_RIGHT( a, 8 );
2616
         when   4 => sum <= sum - a_sh;
2617
                 a_sh <= SHIFT_RIGHT( a, 11 );
2618
         when   5 => sum <= sum + a_sh;
2619
                 a_sh <= SHIFT_RIGHT( a, 16 );
2620
         when   6 => sum <= sum - a_sh;
2621
                 a_sh <= SHIFT_RIGHT( a, 17 );
2622
         when   7 => sum <= sum - a_sh;
2623
                 a_sh <= SHIFT_RIGHT( a, 21 );
2624
         when   8 => sum <= sum + a_sh;
2625
                 a_sh <= SHIFT_RIGHT( a, 24 );
2626
         when   9 => sum <= sum - a_sh;
2627
                 a_sh <= SHIFT_RIGHT( a, 27 );
2628
         when  10 => sum <= sum + a_sh;
2629
                 a_sh <= SHIFT_RIGHT( a, 36 );
2630
         when  11 => sum <= sum + a_sh;
2631
                 a_sh <= SHIFT_RIGHT( a, 40 );
2632
         when  12 => sum <= sum - a_sh;
2633
                 a_sh <= SHIFT_RIGHT( a, 43 );
2634
         when  13 => sum <= sum - a_sh;
2635
                 a_sh <= SHIFT_RIGHT( a, 45 );
2636
         when  14 => sum <= sum - a_sh;
2637
                 a_sh <= SHIFT_RIGHT( a, 51 );
2638
         when  15 => sum <= sum - a_sh;
2639
                 a_sh <= SHIFT_RIGHT( a, 53 );
2640
         when  16 => sum <= sum - a_sh;
2641
                 a_sh <= SHIFT_RIGHT( a, 55 );
2642
         when  17 => sum <= sum - a_sh;
2643
                 a_sh <= SHIFT_RIGHT( a, 57 );
2644
         when  18 => sum <= sum - a_sh;
2645
                 a_sh <= SHIFT_RIGHT( a, 58 );
2646
         when  19 => sum <= sum - a_sh;
2647
                 a_sh <= SHIFT_RIGHT( a, 59 );
2648
         when  20 => sum <= sum - a_sh;
2649
                 a_sh <= SHIFT_RIGHT( a, 60 );
2650
         when  21 => sum <= sum - a_sh;
2651
                 a_sh <= SHIFT_RIGHT( a, 61 );
2652
         when  22 => sum <= sum - a_sh;
2653
                 a_sh <= SHIFT_RIGHT( a, 62 );
2654
         when  23 => sum <= sum - a_sh;
2655
                 a_sh <= SHIFT_RIGHT( a, 63 );
2656
         when  24 => sum <= sum - a_sh;
2657
                 a_sh <= SHIFT_RIGHT( a, 64 );
2658
         when  25 => sum <= sum - a_sh;
2659
         when others => sum <= sum;
2660
     end case;
2661
end procedure mult_0_21_25;
2662
 
2663
 
2664
--
2665
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
2666
-- a_sh is a temporary register to store the shifted value, and 
2667
-- sum is a temporary register to sum up the result
2668
--
2669
procedure mult_0_21_26( signal a    : in    signed;
2670
                   signal a_sh : inout signed;
2671
                   signal sum  : inout signed;
2672
                          cnt  : in    natural ) is
2673
   begin
2674
      case cnt is
2675
         when   0 => sum  <= a;
2676
                     a_sh <= SHIFT_RIGHT( a, 2 );
2677
         when   1 => sum  <= sum + a_sh;
2678
                 a_sh <= SHIFT_RIGHT( a, 5 );
2679
         when   2 => sum <= sum - a_sh;
2680
                 a_sh <= SHIFT_RIGHT( a, 7 );
2681
         when   3 => sum <= sum - a_sh;
2682
                 a_sh <= SHIFT_RIGHT( a, 8 );
2683
         when   4 => sum <= sum - a_sh;
2684
                 a_sh <= SHIFT_RIGHT( a, 11 );
2685
         when   5 => sum <= sum + a_sh;
2686
                 a_sh <= SHIFT_RIGHT( a, 16 );
2687
         when   6 => sum <= sum - a_sh;
2688
                 a_sh <= SHIFT_RIGHT( a, 17 );
2689
         when   7 => sum <= sum - a_sh;
2690
                 a_sh <= SHIFT_RIGHT( a, 21 );
2691
         when   8 => sum <= sum + a_sh;
2692
                 a_sh <= SHIFT_RIGHT( a, 24 );
2693
         when   9 => sum <= sum - a_sh;
2694
                 a_sh <= SHIFT_RIGHT( a, 27 );
2695
         when  10 => sum <= sum + a_sh;
2696
                 a_sh <= SHIFT_RIGHT( a, 36 );
2697
         when  11 => sum <= sum + a_sh;
2698
                 a_sh <= SHIFT_RIGHT( a, 40 );
2699
         when  12 => sum <= sum - a_sh;
2700
                 a_sh <= SHIFT_RIGHT( a, 43 );
2701
         when  13 => sum <= sum - a_sh;
2702
                 a_sh <= SHIFT_RIGHT( a, 45 );
2703
         when  14 => sum <= sum - a_sh;
2704
                 a_sh <= SHIFT_RIGHT( a, 51 );
2705
         when  15 => sum <= sum - a_sh;
2706
                 a_sh <= SHIFT_RIGHT( a, 53 );
2707
         when  16 => sum <= sum - a_sh;
2708
                 a_sh <= SHIFT_RIGHT( a, 55 );
2709
         when  17 => sum <= sum - a_sh;
2710
                 a_sh <= SHIFT_RIGHT( a, 57 );
2711
         when  18 => sum <= sum - a_sh;
2712
                 a_sh <= SHIFT_RIGHT( a, 58 );
2713
         when  19 => sum <= sum - a_sh;
2714
                 a_sh <= SHIFT_RIGHT( a, 59 );
2715
         when  20 => sum <= sum - a_sh;
2716
                 a_sh <= SHIFT_RIGHT( a, 60 );
2717
         when  21 => sum <= sum - a_sh;
2718
                 a_sh <= SHIFT_RIGHT( a, 61 );
2719
         when  22 => sum <= sum - a_sh;
2720
                 a_sh <= SHIFT_RIGHT( a, 62 );
2721
         when  23 => sum <= sum - a_sh;
2722
                 a_sh <= SHIFT_RIGHT( a, 63 );
2723
         when  24 => sum <= sum - a_sh;
2724
                 a_sh <= SHIFT_RIGHT( a, 64 );
2725
         when  25 => sum <= sum - a_sh;
2726
                 a_sh <= SHIFT_RIGHT( a, 65 );
2727
         when  26 => sum <= sum - a_sh;
2728
         when others => sum <= sum;
2729
     end case;
2730
end procedure mult_0_21_26;
2731
 
2732
 
2733
--
2734
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
2735
-- a_sh is a temporary register to store the shifted value, and 
2736
-- sum is a temporary register to sum up the result
2737
--
2738
procedure mult_0_21_27( signal a    : in    signed;
2739
                   signal a_sh : inout signed;
2740
                   signal sum  : inout signed;
2741
                          cnt  : in    natural ) is
2742
   begin
2743
      case cnt is
2744
         when   0 => sum  <= a;
2745
                     a_sh <= SHIFT_RIGHT( a, 2 );
2746
         when   1 => sum  <= sum + a_sh;
2747
                 a_sh <= SHIFT_RIGHT( a, 5 );
2748
         when   2 => sum <= sum - a_sh;
2749
                 a_sh <= SHIFT_RIGHT( a, 7 );
2750
         when   3 => sum <= sum - a_sh;
2751
                 a_sh <= SHIFT_RIGHT( a, 8 );
2752
         when   4 => sum <= sum - a_sh;
2753
                 a_sh <= SHIFT_RIGHT( a, 11 );
2754
         when   5 => sum <= sum + a_sh;
2755
                 a_sh <= SHIFT_RIGHT( a, 16 );
2756
         when   6 => sum <= sum - a_sh;
2757
                 a_sh <= SHIFT_RIGHT( a, 17 );
2758
         when   7 => sum <= sum - a_sh;
2759
                 a_sh <= SHIFT_RIGHT( a, 21 );
2760
         when   8 => sum <= sum + a_sh;
2761
                 a_sh <= SHIFT_RIGHT( a, 24 );
2762
         when   9 => sum <= sum - a_sh;
2763
                 a_sh <= SHIFT_RIGHT( a, 27 );
2764
         when  10 => sum <= sum + a_sh;
2765
                 a_sh <= SHIFT_RIGHT( a, 36 );
2766
         when  11 => sum <= sum + a_sh;
2767
                 a_sh <= SHIFT_RIGHT( a, 40 );
2768
         when  12 => sum <= sum - a_sh;
2769
                 a_sh <= SHIFT_RIGHT( a, 43 );
2770
         when  13 => sum <= sum - a_sh;
2771
                 a_sh <= SHIFT_RIGHT( a, 45 );
2772
         when  14 => sum <= sum - a_sh;
2773
                 a_sh <= SHIFT_RIGHT( a, 51 );
2774
         when  15 => sum <= sum - a_sh;
2775
                 a_sh <= SHIFT_RIGHT( a, 53 );
2776
         when  16 => sum <= sum - a_sh;
2777
                 a_sh <= SHIFT_RIGHT( a, 55 );
2778
         when  17 => sum <= sum - a_sh;
2779
                 a_sh <= SHIFT_RIGHT( a, 57 );
2780
         when  18 => sum <= sum - a_sh;
2781
                 a_sh <= SHIFT_RIGHT( a, 58 );
2782
         when  19 => sum <= sum - a_sh;
2783
                 a_sh <= SHIFT_RIGHT( a, 59 );
2784
         when  20 => sum <= sum - a_sh;
2785
                 a_sh <= SHIFT_RIGHT( a, 60 );
2786
         when  21 => sum <= sum - a_sh;
2787
                 a_sh <= SHIFT_RIGHT( a, 61 );
2788
         when  22 => sum <= sum - a_sh;
2789
                 a_sh <= SHIFT_RIGHT( a, 62 );
2790
         when  23 => sum <= sum - a_sh;
2791
                 a_sh <= SHIFT_RIGHT( a, 63 );
2792
         when  24 => sum <= sum - a_sh;
2793
                 a_sh <= SHIFT_RIGHT( a, 64 );
2794
         when  25 => sum <= sum - a_sh;
2795
                 a_sh <= SHIFT_RIGHT( a, 65 );
2796
         when  26 => sum <= sum - a_sh;
2797
                 a_sh <= SHIFT_RIGHT( a, 66 );
2798
         when  27 => sum <= sum - a_sh;
2799
         when others => sum <= sum;
2800
     end case;
2801
end procedure mult_0_21_27;
2802
 
2803
 
2804
--
2805
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
2806
-- a_sh is a temporary register to store the shifted value, and 
2807
-- sum is a temporary register to sum up the result
2808
--
2809
procedure mult_0_21_28( signal a    : in    signed;
2810
                   signal a_sh : inout signed;
2811
                   signal sum  : inout signed;
2812
                          cnt  : in    natural ) is
2813
   begin
2814
      case cnt is
2815
         when   0 => sum  <= a;
2816
                     a_sh <= SHIFT_RIGHT( a, 2 );
2817
         when   1 => sum  <= sum + a_sh;
2818
                 a_sh <= SHIFT_RIGHT( a, 5 );
2819
         when   2 => sum <= sum - a_sh;
2820
                 a_sh <= SHIFT_RIGHT( a, 7 );
2821
         when   3 => sum <= sum - a_sh;
2822
                 a_sh <= SHIFT_RIGHT( a, 8 );
2823
         when   4 => sum <= sum - a_sh;
2824
                 a_sh <= SHIFT_RIGHT( a, 11 );
2825
         when   5 => sum <= sum + a_sh;
2826
                 a_sh <= SHIFT_RIGHT( a, 16 );
2827
         when   6 => sum <= sum - a_sh;
2828
                 a_sh <= SHIFT_RIGHT( a, 17 );
2829
         when   7 => sum <= sum - a_sh;
2830
                 a_sh <= SHIFT_RIGHT( a, 21 );
2831
         when   8 => sum <= sum + a_sh;
2832
                 a_sh <= SHIFT_RIGHT( a, 24 );
2833
         when   9 => sum <= sum - a_sh;
2834
                 a_sh <= SHIFT_RIGHT( a, 27 );
2835
         when  10 => sum <= sum + a_sh;
2836
                 a_sh <= SHIFT_RIGHT( a, 36 );
2837
         when  11 => sum <= sum + a_sh;
2838
                 a_sh <= SHIFT_RIGHT( a, 40 );
2839
         when  12 => sum <= sum - a_sh;
2840
                 a_sh <= SHIFT_RIGHT( a, 43 );
2841
         when  13 => sum <= sum - a_sh;
2842
                 a_sh <= SHIFT_RIGHT( a, 45 );
2843
         when  14 => sum <= sum - a_sh;
2844
                 a_sh <= SHIFT_RIGHT( a, 51 );
2845
         when  15 => sum <= sum - a_sh;
2846
                 a_sh <= SHIFT_RIGHT( a, 53 );
2847
         when  16 => sum <= sum - a_sh;
2848
                 a_sh <= SHIFT_RIGHT( a, 55 );
2849
         when  17 => sum <= sum - a_sh;
2850
                 a_sh <= SHIFT_RIGHT( a, 57 );
2851
         when  18 => sum <= sum - a_sh;
2852
                 a_sh <= SHIFT_RIGHT( a, 58 );
2853
         when  19 => sum <= sum - a_sh;
2854
                 a_sh <= SHIFT_RIGHT( a, 59 );
2855
         when  20 => sum <= sum - a_sh;
2856
                 a_sh <= SHIFT_RIGHT( a, 60 );
2857
         when  21 => sum <= sum - a_sh;
2858
                 a_sh <= SHIFT_RIGHT( a, 61 );
2859
         when  22 => sum <= sum - a_sh;
2860
                 a_sh <= SHIFT_RIGHT( a, 62 );
2861
         when  23 => sum <= sum - a_sh;
2862
                 a_sh <= SHIFT_RIGHT( a, 63 );
2863
         when  24 => sum <= sum - a_sh;
2864
                 a_sh <= SHIFT_RIGHT( a, 64 );
2865
         when  25 => sum <= sum - a_sh;
2866
                 a_sh <= SHIFT_RIGHT( a, 65 );
2867
         when  26 => sum <= sum - a_sh;
2868
                 a_sh <= SHIFT_RIGHT( a, 66 );
2869
         when  27 => sum <= sum - a_sh;
2870
                 a_sh <= SHIFT_RIGHT( a, 67 );
2871
         when  28 => sum <= sum - a_sh;
2872
         when others => sum <= sum;
2873
     end case;
2874
end procedure mult_0_21_28;
2875
 
2876
 
2877
--
2878
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
2879
-- a_sh is a temporary register to store the shifted value, and 
2880
-- sum is a temporary register to sum up the result
2881
--
2882
procedure mult_0_21_29( signal a    : in    signed;
2883
                   signal a_sh : inout signed;
2884
                   signal sum  : inout signed;
2885
                          cnt  : in    natural ) is
2886
   begin
2887
      case cnt is
2888
         when   0 => sum  <= a;
2889
                     a_sh <= SHIFT_RIGHT( a, 2 );
2890
         when   1 => sum  <= sum + a_sh;
2891
                 a_sh <= SHIFT_RIGHT( a, 5 );
2892
         when   2 => sum <= sum - a_sh;
2893
                 a_sh <= SHIFT_RIGHT( a, 7 );
2894
         when   3 => sum <= sum - a_sh;
2895
                 a_sh <= SHIFT_RIGHT( a, 8 );
2896
         when   4 => sum <= sum - a_sh;
2897
                 a_sh <= SHIFT_RIGHT( a, 11 );
2898
         when   5 => sum <= sum + a_sh;
2899
                 a_sh <= SHIFT_RIGHT( a, 16 );
2900
         when   6 => sum <= sum - a_sh;
2901
                 a_sh <= SHIFT_RIGHT( a, 17 );
2902
         when   7 => sum <= sum - a_sh;
2903
                 a_sh <= SHIFT_RIGHT( a, 21 );
2904
         when   8 => sum <= sum + a_sh;
2905
                 a_sh <= SHIFT_RIGHT( a, 24 );
2906
         when   9 => sum <= sum - a_sh;
2907
                 a_sh <= SHIFT_RIGHT( a, 27 );
2908
         when  10 => sum <= sum + a_sh;
2909
                 a_sh <= SHIFT_RIGHT( a, 36 );
2910
         when  11 => sum <= sum + a_sh;
2911
                 a_sh <= SHIFT_RIGHT( a, 40 );
2912
         when  12 => sum <= sum - a_sh;
2913
                 a_sh <= SHIFT_RIGHT( a, 43 );
2914
         when  13 => sum <= sum - a_sh;
2915
                 a_sh <= SHIFT_RIGHT( a, 45 );
2916
         when  14 => sum <= sum - a_sh;
2917
                 a_sh <= SHIFT_RIGHT( a, 51 );
2918
         when  15 => sum <= sum - a_sh;
2919
                 a_sh <= SHIFT_RIGHT( a, 53 );
2920
         when  16 => sum <= sum - a_sh;
2921
                 a_sh <= SHIFT_RIGHT( a, 55 );
2922
         when  17 => sum <= sum - a_sh;
2923
                 a_sh <= SHIFT_RIGHT( a, 57 );
2924
         when  18 => sum <= sum - a_sh;
2925
                 a_sh <= SHIFT_RIGHT( a, 58 );
2926
         when  19 => sum <= sum - a_sh;
2927
                 a_sh <= SHIFT_RIGHT( a, 59 );
2928
         when  20 => sum <= sum - a_sh;
2929
                 a_sh <= SHIFT_RIGHT( a, 60 );
2930
         when  21 => sum <= sum - a_sh;
2931
                 a_sh <= SHIFT_RIGHT( a, 61 );
2932
         when  22 => sum <= sum - a_sh;
2933
                 a_sh <= SHIFT_RIGHT( a, 62 );
2934
         when  23 => sum <= sum - a_sh;
2935
                 a_sh <= SHIFT_RIGHT( a, 63 );
2936
         when  24 => sum <= sum - a_sh;
2937
                 a_sh <= SHIFT_RIGHT( a, 64 );
2938
         when  25 => sum <= sum - a_sh;
2939
                 a_sh <= SHIFT_RIGHT( a, 65 );
2940
         when  26 => sum <= sum - a_sh;
2941
                 a_sh <= SHIFT_RIGHT( a, 66 );
2942
         when  27 => sum <= sum - a_sh;
2943
                 a_sh <= SHIFT_RIGHT( a, 67 );
2944
         when  28 => sum <= sum - a_sh;
2945
                 a_sh <= SHIFT_RIGHT( a, 68 );
2946
         when  29 => sum <= sum - a_sh;
2947
         when others => sum <= sum;
2948
     end case;
2949
end procedure mult_0_21_29;
2950
 
2951
 
2952
--
2953
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
2954
-- a_sh is a temporary register to store the shifted value, and 
2955
-- sum is a temporary register to sum up the result
2956
--
2957
procedure mult_0_21_30( signal a    : in    signed;
2958
                   signal a_sh : inout signed;
2959
                   signal sum  : inout signed;
2960
                          cnt  : in    natural ) is
2961
   begin
2962
      case cnt is
2963
         when   0 => sum  <= a;
2964
                     a_sh <= SHIFT_RIGHT( a, 2 );
2965
         when   1 => sum  <= sum + a_sh;
2966
                 a_sh <= SHIFT_RIGHT( a, 5 );
2967
         when   2 => sum <= sum - a_sh;
2968
                 a_sh <= SHIFT_RIGHT( a, 7 );
2969
         when   3 => sum <= sum - a_sh;
2970
                 a_sh <= SHIFT_RIGHT( a, 8 );
2971
         when   4 => sum <= sum - a_sh;
2972
                 a_sh <= SHIFT_RIGHT( a, 11 );
2973
         when   5 => sum <= sum + a_sh;
2974
                 a_sh <= SHIFT_RIGHT( a, 16 );
2975
         when   6 => sum <= sum - a_sh;
2976
                 a_sh <= SHIFT_RIGHT( a, 17 );
2977
         when   7 => sum <= sum - a_sh;
2978
                 a_sh <= SHIFT_RIGHT( a, 21 );
2979
         when   8 => sum <= sum + a_sh;
2980
                 a_sh <= SHIFT_RIGHT( a, 24 );
2981
         when   9 => sum <= sum - a_sh;
2982
                 a_sh <= SHIFT_RIGHT( a, 27 );
2983
         when  10 => sum <= sum + a_sh;
2984
                 a_sh <= SHIFT_RIGHT( a, 36 );
2985
         when  11 => sum <= sum + a_sh;
2986
                 a_sh <= SHIFT_RIGHT( a, 40 );
2987
         when  12 => sum <= sum - a_sh;
2988
                 a_sh <= SHIFT_RIGHT( a, 43 );
2989
         when  13 => sum <= sum - a_sh;
2990
                 a_sh <= SHIFT_RIGHT( a, 45 );
2991
         when  14 => sum <= sum - a_sh;
2992
                 a_sh <= SHIFT_RIGHT( a, 51 );
2993
         when  15 => sum <= sum - a_sh;
2994
                 a_sh <= SHIFT_RIGHT( a, 53 );
2995
         when  16 => sum <= sum - a_sh;
2996
                 a_sh <= SHIFT_RIGHT( a, 55 );
2997
         when  17 => sum <= sum - a_sh;
2998
                 a_sh <= SHIFT_RIGHT( a, 57 );
2999
         when  18 => sum <= sum - a_sh;
3000
                 a_sh <= SHIFT_RIGHT( a, 58 );
3001
         when  19 => sum <= sum - a_sh;
3002
                 a_sh <= SHIFT_RIGHT( a, 59 );
3003
         when  20 => sum <= sum - a_sh;
3004
                 a_sh <= SHIFT_RIGHT( a, 60 );
3005
         when  21 => sum <= sum - a_sh;
3006
                 a_sh <= SHIFT_RIGHT( a, 61 );
3007
         when  22 => sum <= sum - a_sh;
3008
                 a_sh <= SHIFT_RIGHT( a, 62 );
3009
         when  23 => sum <= sum - a_sh;
3010
                 a_sh <= SHIFT_RIGHT( a, 63 );
3011
         when  24 => sum <= sum - a_sh;
3012
                 a_sh <= SHIFT_RIGHT( a, 64 );
3013
         when  25 => sum <= sum - a_sh;
3014
                 a_sh <= SHIFT_RIGHT( a, 65 );
3015
         when  26 => sum <= sum - a_sh;
3016
                 a_sh <= SHIFT_RIGHT( a, 66 );
3017
         when  27 => sum <= sum - a_sh;
3018
                 a_sh <= SHIFT_RIGHT( a, 67 );
3019
         when  28 => sum <= sum - a_sh;
3020
                 a_sh <= SHIFT_RIGHT( a, 68 );
3021
         when  29 => sum <= sum - a_sh;
3022
                 a_sh <= SHIFT_RIGHT( a, 69 );
3023
         when  30 => sum <= sum - a_sh;
3024
         when others => sum <= sum;
3025
     end case;
3026
end procedure mult_0_21_30;
3027
 
3028
 
3029
--
3030
-- Auto-generated procedure to multiply "a" with 0.207497 iteratively
3031
-- a_sh is a temporary register to store the shifted value, and 
3032
-- sum is a temporary register to sum up the result
3033
--
3034
procedure mult_0_21( signal   a       : in    signed;
3035
                   signal   a_sh    : inout signed;
3036
                   signal   sum     : inout signed;
3037
                            cnt     : in    natural;
3038
                   constant RM_GAIN : in    natural ) is
3039
   begin
3040
      case RM_GAIN is
3041
         when 1 => mult_0_21_01( a, a_sh, sum, cnt  );
3042
         when 2 => mult_0_21_02( a, a_sh, sum, cnt  );
3043
         when 3 => mult_0_21_03( a, a_sh, sum, cnt  );
3044
         when 4 => mult_0_21_04( a, a_sh, sum, cnt  );
3045
         when 5 => mult_0_21_05( a, a_sh, sum, cnt  );
3046
         when 6 => mult_0_21_06( a, a_sh, sum, cnt  );
3047
         when 7 => mult_0_21_07( a, a_sh, sum, cnt  );
3048
         when 8 => mult_0_21_08( a, a_sh, sum, cnt  );
3049
         when 9 => mult_0_21_09( a, a_sh, sum, cnt  );
3050
         when 10 => mult_0_21_10( a, a_sh, sum, cnt  );
3051
         when 11 => mult_0_21_11( a, a_sh, sum, cnt  );
3052
         when 12 => mult_0_21_12( a, a_sh, sum, cnt  );
3053
         when 13 => mult_0_21_13( a, a_sh, sum, cnt  );
3054
         when 14 => mult_0_21_14( a, a_sh, sum, cnt  );
3055
         when 15 => mult_0_21_15( a, a_sh, sum, cnt  );
3056
         when 16 => mult_0_21_16( a, a_sh, sum, cnt  );
3057
         when 17 => mult_0_21_17( a, a_sh, sum, cnt  );
3058
         when 18 => mult_0_21_18( a, a_sh, sum, cnt  );
3059
         when 19 => mult_0_21_19( a, a_sh, sum, cnt  );
3060
         when 20 => mult_0_21_20( a, a_sh, sum, cnt  );
3061
         when 21 => mult_0_21_21( a, a_sh, sum, cnt  );
3062
         when 22 => mult_0_21_22( a, a_sh, sum, cnt  );
3063
         when 23 => mult_0_21_23( a, a_sh, sum, cnt  );
3064
         when 24 => mult_0_21_24( a, a_sh, sum, cnt  );
3065
         when 25 => mult_0_21_25( a, a_sh, sum, cnt  );
3066
         when 26 => mult_0_21_26( a, a_sh, sum, cnt  );
3067
         when 27 => mult_0_21_27( a, a_sh, sum, cnt  );
3068
         when 28 => mult_0_21_28( a, a_sh, sum, cnt  );
3069
         when 29 => mult_0_21_29( a, a_sh, sum, cnt  );
3070
         when 30 => mult_0_21_30( a, a_sh, sum, cnt  );
3071
         when others => mult_0_21_30( a, a_sh, sum, cnt  );
3072
      end case;
3073
end procedure mult_0_21;
3074
 
3075
 
3076
 
3077
 
3078
end cordic_pkg;

powered by: WebSVN 2.1.0

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