source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Parameters.cpp @ 144

Last change on this file since 144 was 137, checked in by rosiere, 14 years ago

Various modif (add test, and vhdl)

  • Property svn:keywords set to Id
File size: 5.4 KB
Line 
1/*
2 * $Id: Parameters.cpp 137 2010-02-16 12:35:48Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Generic/Shifter/include/Parameters.h"
9
10namespace morpheo {
11namespace behavioural {
12namespace generic {
13namespace shifter {
14
15
16  Parameters::Parameters  (uint32_t    size_data           ,
17                           uint32_t    nb_port             ,
18                           uint32_t    shift_value         ,
19                           rotate_t    rotate              ,
20                           direction_t direction           ,
21                           carry_t     carry               ,
22                           bool        type_completion_bool)
23  {
24    _size_data                     = size_data     ;
25    _nb_port                       = nb_port       ;
26    _shift_value                   = shift_value   ;
27    _rotate                        = rotate        ;
28    _direction                     = direction     ;
29    _carry                         = carry         ;
30    _size_data_completion          = (carry != external_completion)?0:((_shift_value==0)?size_data:_shift_value);
31    _type_completion_bool          = type_completion_bool;
32
33    _size_shift                    = static_cast<uint32_t>(ceil(log2(_size_data)));
34   
35    _internal_direction            = (direction == internal_right_shift)?_right :_left      ;
36    _internal_type                 = (rotate    == internal_rotate     )?_rotate:_shift     ;
37    _internal_carry                = (carry     == internal_logic      )?_logic :_arithmetic;
38
39    _have_shift_logic_left         = ((rotate != internal_rotate)         &&
40                                      (((carry     == external_carry     ) ||
41                                        (carry     == external_completion) ||
42                                        (carry     == internal_logic     )) && 
43                                       ((direction == external_direction ) ||
44                                        (direction == internal_left_shift))));
45    _have_shift_logic_right        = ((rotate != internal_rotate)         &&
46                                      (((carry     == external_carry     ) ||
47                                        (carry     == external_completion) ||
48                                        (carry     == internal_logic     )) && 
49                                       ((direction == external_direction ) ||
50                                        (direction == internal_right_shift))));
51    _have_shift_logic              = _have_shift_logic_left || _have_shift_logic_right;
52
53    _have_shift_arithmetic_left    = ((rotate != internal_rotate)         &&
54                                      (((carry    == external_carry     ) ||
55                                        (carry    == internal_arithmetic )) && 
56                                       ((direction == external_direction ) ||
57                                        (direction == internal_left_shift))));
58    _have_shift_arithmetic_right   = ((rotate != internal_rotate)         &&
59                                      (((carry     == external_carry     ) ||
60                                        (carry     == internal_arithmetic     )) && 
61                                       ((direction == external_direction ) ||
62                                        (direction == internal_right_shift))));
63    _have_shift_arithmetic         = _have_shift_arithmetic_left || _have_shift_arithmetic_right;
64
65    _have_shift                    = _have_shift_logic || _have_shift_arithmetic;
66
67    _have_rotate_left              = ((rotate != without_rotate)         &&
68                                      ((direction == external_direction ) ||
69                                       (direction == internal_left_shift)));
70    _have_rotate_right             = ((rotate != without_rotate)         &&
71                                      ((direction == external_direction ) || 
72                                       (direction == internal_right_shift)));
73    _have_rotate                   = _have_rotate_left || _have_rotate_right;
74   
75    _have_direction_left           = (_have_shift_logic_left       ||
76                                      _have_shift_arithmetic_left  ||
77                                      _have_rotate_left            );
78    _have_direction_right          = (_have_shift_logic_right      ||
79                                      _have_shift_arithmetic_right ||
80                                      _have_rotate_right           );
81
82    test();
83  };
84 
85//   Parameters::Parameters (Parameters & param):
86//     _size_data                   (param._size_data                   ),
87//     _nb_port                     (param._nb_port                     ),
88//     _shift_value                 (param._shift_value                 ),
89//     _rotate                      (param._rotate                      ),
90//     _direction                   (param._direction                   ),
91//     _carry                       (param._carry                       ),
92//     _size_data_completion        (param._size_data_completion        ),
93//     _type_completion_bool        (param._type_completion_bool        ),
94
95//     _internal_direction          (param._internal_direction          ),
96//     _internal_type               (param._internal_type               ),
97//     _internal_carry              (param._internal_carry              ),
98   
99//     _have_shift_logic_left       (param._have_shift_logic_left       ),
100//     _have_shift_logic_right      (param._have_shift_logic_right      ),
101//     _have_shift_logic            (param._have_shift_logic            ),
102//     _have_shift_arithmetic_left  (param._have_shift_arithmetic_left  ),
103//     _have_shift_arithmetic_right (param._have_shift_arithmetic_right ),
104//     _have_shift_arithmetic       (param._have_shift_arithmetic       ),
105//     _have_shift                  (param._have_shift                  ),
106//     _have_rotate_left            (param._have_rotate_left            ),
107//     _have_rotate_right           (param._have_rotate_right           ),
108//     _have_rotate                 (param._have_rotate                 ),
109
110//     _have_direction_left         (param._have_direction_left         ),
111//     _have_direction_right        (param._have_direction_right        )
112
113//   {
114//     test();
115//   };
116
117  Parameters::~Parameters () 
118  {
119  };
120
121  void Parameters::copy (void) 
122  {
123  };
124
125}; // end namespace shifter
126}; // end namespace generic
127}; // end namespace behavioural
128}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.