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

Subversion Repositories yac

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

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

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

powered by: WebSVN 2.1.0

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