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

Subversion Repositories yac

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

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

powered by: WebSVN 2.1.0

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