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

Subversion Repositories riscv_vhdl

[/] [riscv_vhdl/] [trunk/] [rtl/] [riverlib/] [core/] [arith/] [shift.vhd] - Blame information for rev 5

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 sergeykhbr
-----------------------------------------------------------------------------
2
--! @file
3
--! @copyright Copyright 2016 GNSS Sensor Ltd. All right reserved.
4
--! @author    Sergey Khabarov - sergeykhbr@gmail.com
5
--! @brief     Left/Right shifter arithmetic/logic 32/64 bits.
6
--! 
7
--! @details   Vivado synthesizer (2016.2) doesn't support shift
8
--!            from dynamic value, so implement this mux.
9
------------------------------------------------------------------------------
10
 
11
library ieee;
12
use ieee.std_logic_1164.all;
13
library commonlib;
14
use commonlib.types_common.all;
15
--! RIVER CPU specific library.
16
library riverlib;
17
--! RIVER CPU configuration constants.
18
use riverlib.river_cfg.all;
19
 
20
 
21
entity Shifter is
22
  port (
23
    i_a1 : in std_logic_vector(RISCV_ARCH-1 downto 0);     -- Operand 1
24
    i_a2 : in std_logic_vector(5 downto 0);                -- Shift bits number
25
    o_sll : out std_logic_vector(RISCV_ARCH-1 downto 0);   -- Logical shift left 64-bits operand
26
    o_sllw : out std_logic_vector(RISCV_ARCH-1 downto 0);  -- Logical shift left 32-bits operand
27
    o_srl : out std_logic_vector(RISCV_ARCH-1 downto 0);   -- Logical shift 64 bits
28
    o_sra : out std_logic_vector(RISCV_ARCH-1 downto 0);   -- Arith. shift 64 bits
29
    o_srlw : out std_logic_vector(RISCV_ARCH-1 downto 0);  -- Logical shift 32 bits
30
    o_sraw : out std_logic_vector(RISCV_ARCH-1 downto 0)   -- Arith. shift 32 bits
31
  );
32
end;
33
 
34
architecture arch_Shifter of Shifter is
35
 
36
begin
37
 
38
  comb : process(i_a1, i_a2)
39
    variable wb_sll : std_logic_vector(63 downto 0);
40
    variable wb_srl : std_logic_vector(63 downto 0);
41
    variable wb_sra : std_logic_vector(63 downto 0);
42
    variable wb_srlw : std_logic_vector(31 downto 0);
43
    variable wb_sraw : std_logic_vector(63 downto 0);
44
    variable v64 : std_logic_vector(63 downto 0);
45
    variable v32 : std_logic_vector(31 downto 0);
46
    variable msk64 : std_logic_vector(63 downto 0);
47
    variable msk32 : std_logic_vector(63 downto 0);
48
    variable shift64 : integer range 0 to 63;
49
    variable shift32 : integer range 0 to 31;
50
  begin
51
 
52
    v64 := i_a1;
53
    v32 := i_a1(31 downto 0);
54
    msk64 := (others => i_a1(63));
55
    msk32 := (others => i_a1(31));
56
    shift64 := conv_integer(i_a2);
57
    shift32 := conv_integer(i_a2(4 downto 0));
58
 
59
    case shift64 is
60
    when 0 =>
61
        wb_sll := v64;
62
        wb_srl := v64;
63
        wb_sra := v64;
64
    when 1 =>
65
        wb_sll := v64(62 downto 0) & "0";
66
        wb_srl := "0" & v64(63 downto 1);
67
        wb_sra := (msk64(63 downto 63) & v64(63 downto 1));
68
    when 2 =>
69
        wb_sll := v64(61 downto 0) & "00";
70
        wb_srl := "00" & v64(63 downto 2);
71
        wb_sra := (msk64(63 downto 62) & v64(63 downto 2));
72
    when 3 =>
73
        wb_sll := v64(60 downto 0) & "000";
74
        wb_srl := "000" & v64(63 downto 3);
75
        wb_sra := (msk64(63 downto 61) & v64(63 downto 3));
76
    when 4 =>
77
        wb_sll := v64(59 downto 0) & X"0";
78
        wb_srl := X"0" & v64(63 downto 4);
79
        wb_sra := (msk64(63 downto 60) & v64(63 downto 4));
80
    when 5 =>
81
        wb_sll := v64(58 downto 0) & X"0" & "0";
82
        wb_srl :=  X"0" & "0" & v64(63 downto 5);
83
        wb_sra := (msk64(63 downto 59) & v64(63 downto 5));
84
    when 6 =>
85
        wb_sll := v64(57 downto 0) & X"0" & "00";
86
        wb_srl := X"0" & "00" & v64(63 downto 6);
87
        wb_sra := (msk64(63 downto 58) & v64(63 downto 6));
88
    when 7 =>
89
        wb_sll := v64(56 downto 0) & X"0" & "000";
90
        wb_srl := X"0" & "000" & v64(63 downto 7);
91
        wb_sra := (msk64(63 downto 57) & v64(63 downto 7));
92
    when 8 =>
93
        wb_sll := v64(55 downto 0) & X"00";
94
        wb_srl := X"00" & v64(63 downto 8);
95
        wb_sra := (msk64(63 downto 56) & v64(63 downto 8));
96
    when 9 =>
97
        wb_sll := v64(54 downto 0) & X"00" & "0";
98
        wb_srl := X"00" & "0" & v64(63 downto 9);
99
        wb_sra := (msk64(63 downto 55) & v64(63 downto 9));
100
    when 10 =>
101
        wb_sll := v64(53 downto 0) & X"00" & "00";
102
        wb_srl := X"00" & "00" & v64(63 downto 10);
103
        wb_sra := (msk64(63 downto 54) & v64(63 downto 10));
104
    when 11 =>
105
        wb_sll := v64(52 downto 0) & X"00" & "000";
106
        wb_srl := X"00" & "000" & v64(63 downto 11);
107
        wb_sra := (msk64(63 downto 53) & v64(63 downto 11));
108
    when 12 =>
109
        wb_sll := v64(51 downto 0) & X"000";
110
        wb_srl := X"000" & v64(63 downto 12);
111
        wb_sra := (msk64(63 downto 52) & v64(63 downto 12));
112
    when 13 =>
113
        wb_sll := v64(50 downto 0) & X"000" & "0";
114
        wb_srl := X"000" & "0" & v64(63 downto 13);
115
        wb_sra := (msk64(63 downto 51) & v64(63 downto 13));
116
    when 14 =>
117
        wb_sll := v64(49 downto 0) & X"000" & "00";
118
        wb_srl := X"000" & "00" & v64(63 downto 14);
119
        wb_sra := (msk64(63 downto 50) & v64(63 downto 14));
120
    when 15 =>
121
        wb_sll := v64(48 downto 0) & X"000" & "000";
122
        wb_srl := X"000" & "000" & v64(63 downto 15);
123
        wb_sra := (msk64(63 downto 49) & v64(63 downto 15));
124
    when 16 =>
125
        wb_sll := v64(47 downto 0) & X"0000";
126
        wb_srl := X"0000" & v64(63 downto 16);
127
        wb_sra := (msk64(63 downto 48) & v64(63 downto 16));
128
    when 17 =>
129
        wb_sll := v64(46 downto 0) & X"0000" & "0";
130
        wb_srl := X"0000" & "0" & v64(63 downto 17);
131
        wb_sra := (msk64(63 downto 47) & v64(63 downto 17));
132
    when 18 =>
133
        wb_sll := v64(45 downto 0) & X"0000" & "00";
134
        wb_srl := X"0000" & "00" & v64(63 downto 18);
135
        wb_sra := (msk64(63 downto 46) & v64(63 downto 18));
136
    when 19 =>
137
        wb_sll := v64(44 downto 0) & X"0000" & "000";
138
        wb_srl := X"0000" & "000" & v64(63 downto 19);
139
        wb_sra := (msk64(63 downto 45) & v64(63 downto 19));
140
    when 20 =>
141
        wb_sll := v64(43 downto 0) & X"00000";
142
        wb_srl := X"00000" & v64(63 downto 20);
143
        wb_sra := (msk64(63 downto 44) & v64(63 downto 20));
144
    when 21 =>
145
        wb_sll := v64(42 downto 0) & X"00000" & "0";
146
        wb_srl := X"00000" & "0" & v64(63 downto 21);
147
        wb_sra := (msk64(63 downto 43) & v64(63 downto 21));
148
    when 22 =>
149
        wb_sll := v64(41 downto 0) & X"00000" & "00";
150
        wb_srl := X"00000" & "00" & v64(63 downto 22);
151
        wb_sra := (msk64(63 downto 42) & v64(63 downto 22));
152
    when 23 =>
153
        wb_sll := v64(40 downto 0) & X"00000" & "000";
154
        wb_srl := X"00000" & "000" & v64(63 downto 23);
155
        wb_sra := (msk64(63 downto 41) & v64(63 downto 23));
156
    when 24 =>
157
        wb_sll := v64(39 downto 0) & X"000000";
158
        wb_srl := X"000000" & v64(63 downto 24);
159
        wb_sra := (msk64(63 downto 40) & v64(63 downto 24));
160
    when 25 =>
161
        wb_sll := v64(38 downto 0) & X"000000" & "0";
162
        wb_srl := X"000000" & "0" & v64(63 downto 25);
163
        wb_sra := (msk64(63 downto 39) & v64(63 downto 25));
164
    when 26 =>
165
        wb_sll := v64(37 downto 0) & X"000000" & "00";
166
        wb_srl := X"000000" & "00" & v64(63 downto 26);
167
        wb_sra := (msk64(63 downto 38) & v64(63 downto 26));
168
    when 27 =>
169
        wb_sll := v64(36 downto 0) & X"000000" & "000";
170
        wb_srl := X"000000" & "000" & v64(63 downto 27);
171
        wb_sra := (msk64(63 downto 37) & v64(63 downto 27));
172
    when 28 =>
173
        wb_sll := v64(35 downto 0) & X"0000000";
174
        wb_srl := X"0000000" & v64(63 downto 28);
175
        wb_sra := (msk64(63 downto 36) & v64(63 downto 28));
176
    when 29 =>
177
        wb_sll := v64(34 downto 0) & X"0000000" & "0";
178
        wb_srl := X"0000000" & "0" & v64(63 downto 29);
179
        wb_sra := (msk64(63 downto 35) & v64(63 downto 29));
180
    when 30 =>
181
        wb_sll := v64(33 downto 0) & X"0000000" & "00";
182
        wb_srl := X"0000000" & "00" & v64(63 downto 30);
183
        wb_sra := (msk64(63 downto 34) & v64(63 downto 30));
184
    when 31 =>
185
        wb_sll := v64(32 downto 0) & X"0000000" & "000";
186
        wb_srl := X"0000000" & "000" & v64(63 downto 31);
187
        wb_sra := (msk64(63 downto 33) & v64(63 downto 31));
188
    when 32 =>
189
        wb_sll := v64(31 downto 0) & X"00000000";
190
        wb_srl := X"00000000" & v64(63 downto 32);
191
        wb_sra := (msk64(63 downto 32) & v64(63 downto 32));
192
    when 33 =>
193
        wb_sll := v64(30 downto 0) & X"00000000" & "0";
194
        wb_srl := X"00000000" & "0" & v64(63 downto 33);
195
        wb_sra := (msk64(63 downto 31) & v64(63 downto 33));
196
    when 34 =>
197
        wb_sll := v64(29 downto 0) & X"00000000" & "00";
198
        wb_srl := X"00000000" & "00" & v64(63 downto 34);
199
        wb_sra := (msk64(63 downto 30) & v64(63 downto 34));
200
    when 35 =>
201
        wb_sll := v64(28 downto 0) & X"00000000" & "000";
202
        wb_srl := X"00000000" & "000" & v64(63 downto 35);
203
        wb_sra := (msk64(63 downto 29) & v64(63 downto 35));
204
    when 36 =>
205
        wb_sll := v64(27 downto 0) & X"000000000";
206
        wb_srl := X"000000000" & v64(63 downto 36);
207
        wb_sra := (msk64(63 downto 28) & v64(63 downto 36));
208
    when 37 =>
209
        wb_sll := v64(26 downto 0) & X"000000000" & "0";
210
        wb_srl := X"000000000" & "0" & v64(63 downto 37);
211
        wb_sra := (msk64(63 downto 27) & v64(63 downto 37));
212
    when 38 =>
213
        wb_sll := v64(25 downto 0) & X"000000000" & "00";
214
        wb_srl := X"000000000" & "00" & v64(63 downto 38);
215
        wb_sra := (msk64(63 downto 26) & v64(63 downto 38));
216
    when 39 =>
217
        wb_sll := v64(24 downto 0) & X"000000000" & "000";
218
        wb_srl := X"000000000" & "000" & v64(63 downto 39);
219
        wb_sra := (msk64(63 downto 25) & v64(63 downto 39));
220
    when 40 =>
221
        wb_sll := v64(23 downto 0) & X"0000000000";
222
        wb_srl := X"0000000000" & v64(63 downto 40);
223
        wb_sra := (msk64(63 downto 24) & v64(63 downto 40));
224
    when 41 =>
225
        wb_sll := v64(22 downto 0) & X"0000000000" & "0";
226
        wb_srl := X"0000000000" & "0" & v64(63 downto 41);
227
        wb_sra := (msk64(63 downto 23) & v64(63 downto 41));
228
    when 42 =>
229
        wb_sll := v64(21 downto 0) & X"0000000000" & "00";
230
        wb_srl := X"0000000000" & "00" & v64(63 downto 42);
231
        wb_sra := (msk64(63 downto 22) & v64(63 downto 42));
232
    when 43 =>
233
        wb_sll := v64(20 downto 0) & X"0000000000" & "000";
234
        wb_srl := X"0000000000" & "000" & v64(63 downto 43);
235
        wb_sra := (msk64(63 downto 21) & v64(63 downto 43));
236
    when 44 =>
237
        wb_sll := v64(19 downto 0) & X"00000000000";
238
        wb_srl := X"00000000000" & v64(63 downto 44);
239
        wb_sra := (msk64(63 downto 20) & v64(63 downto 44));
240
    when 45 =>
241
        wb_sll := v64(18 downto 0) & X"00000000000" & "0";
242
        wb_srl := X"00000000000" & "0" & v64(63 downto 45);
243
        wb_sra := (msk64(63 downto 19) & v64(63 downto 45));
244
    when 46 =>
245
        wb_sll := v64(17 downto 0) & X"00000000000" & "00";
246
        wb_srl := X"00000000000" & "00" & v64(63 downto 46);
247
        wb_sra := (msk64(63 downto 18) & v64(63 downto 46));
248
    when 47 =>
249
        wb_sll := v64(16 downto 0) & X"00000000000" & "000";
250
        wb_srl := X"00000000000" & "000" & v64(63 downto 47);
251
        wb_sra := (msk64(63 downto 17) & v64(63 downto 47));
252
    when 48 =>
253
        wb_sll := v64(15 downto 0) & X"000000000000";
254
        wb_srl := X"000000000000" & v64(63 downto 48);
255
        wb_sra := (msk64(63 downto 16) & v64(63 downto 48));
256
    when 49 =>
257
        wb_sll := v64(14 downto 0) & X"000000000000" & "0";
258
        wb_srl := X"000000000000" & "0" & v64(63 downto 49);
259
        wb_sra := (msk64(63 downto 15) & v64(63 downto 49));
260
    when 50 =>
261
        wb_sll := v64(13 downto 0) & X"000000000000" & "00";
262
        wb_srl := X"000000000000" & "00" & v64(63 downto 50);
263
        wb_sra := (msk64(63 downto 14) & v64(63 downto 50));
264
    when 51 =>
265
        wb_sll := v64(12 downto 0) & X"000000000000" & "000";
266
        wb_srl := X"000000000000" & "000" & v64(63 downto 51);
267
        wb_sra := (msk64(63 downto 13) & v64(63 downto 51));
268
    when 52 =>
269
        wb_sll := v64(11 downto 0) & X"0000000000000";
270
        wb_srl := X"0000000000000" & v64(63 downto 52);
271
        wb_sra := (msk64(63 downto 12) & v64(63 downto 52));
272
    when 53 =>
273
        wb_sll := v64(10 downto 0) & X"0000000000000" & "0";
274
        wb_srl := X"0000000000000" & "0" & v64(63 downto 53);
275
        wb_sra := (msk64(63 downto 11) & v64(63 downto 53));
276
    when 54 =>
277
        wb_sll := v64(9 downto 0) & X"0000000000000" & "00";
278
        wb_srl := X"0000000000000" & "00" & v64(63 downto 54);
279
        wb_sra := (msk64(63 downto 10) & v64(63 downto 54));
280
    when 55 =>
281
        wb_sll := v64(8 downto 0) & X"0000000000000" & "000";
282
        wb_srl := X"0000000000000" & "000" & v64(63 downto 55);
283
        wb_sra := (msk64(63 downto 9) & v64(63 downto 55));
284
    when 56 =>
285
        wb_sll := v64(7 downto 0) & X"00000000000000";
286
        wb_srl := X"00000000000000" & v64(63 downto 56);
287
        wb_sra := (msk64(63 downto 8) & v64(63 downto 56));
288
    when 57 =>
289
        wb_sll := v64(6 downto 0) & X"00000000000000" & "0";
290
        wb_srl := X"00000000000000" & "0" & v64(63 downto 57);
291
        wb_sra := (msk64(63 downto 7) & v64(63 downto 57));
292
    when 58 =>
293
        wb_sll := v64(5 downto 0) & X"00000000000000" & "00";
294
        wb_srl := X"00000000000000" & "00" & v64(63 downto 58);
295
        wb_sra := (msk64(63 downto 6) & v64(63 downto 58));
296
    when 59 =>
297
        wb_sll := v64(4 downto 0) & X"00000000000000" & "000";
298
        wb_srl := X"00000000000000" & "000" & v64(63 downto 59);
299
        wb_sra := (msk64(63 downto 5) & v64(63 downto 59));
300
    when 60 =>
301
        wb_sll := v64(3 downto 0) & X"000000000000000";
302
        wb_srl := X"000000000000000" & v64(63 downto 60);
303
        wb_sra := (msk64(63 downto 4) & v64(63 downto 60));
304
    when 61 =>
305
        wb_sll := v64(2 downto 0) & X"000000000000000" & "0";
306
        wb_srl := X"000000000000000" & "0" & v64(63 downto 61);
307
        wb_sra := (msk64(63 downto 3) & v64(63 downto 61));
308
    when 62 =>
309
        wb_sll := v64(1 downto 0) & X"000000000000000" & "00";
310
        wb_srl := X"000000000000000" & "00" & v64(63 downto 62);
311
        wb_sra := (msk64(63 downto 2) & v64(63 downto 62));
312
    when 63 =>
313
        wb_sll := v64(0) & X"000000000000000" & "000";
314
        wb_srl := X"000000000000000" & "000" & v64(63);
315
        wb_sra := (msk64(63 downto 1) & v64(63));
316
    end case;
317
 
318
    case shift32 is
319
    when 0 =>
320
        wb_srlw := v32;
321
        wb_sraw := (msk32(63 downto 32) & v32);
322
    when 1 =>
323
        wb_srlw := "0" & v32(31 downto 1);
324
        wb_sraw := (msk32(63 downto 31) & v32(31 downto 1));
325
    when 2 =>
326
        wb_srlw := "00" & v32(31 downto 2);
327
        wb_sraw := (msk32(63 downto 30) & v32(31 downto 2));
328
    when 3 =>
329
        wb_srlw := "000" & v32(31 downto 3);
330
        wb_sraw := (msk32(63 downto 29) & v32(31 downto 3));
331
    when 4 =>
332
        wb_srlw := X"0" & v32(31 downto 4);
333
        wb_sraw := (msk32(63 downto 28) & v32(31 downto 4));
334
    when 5 =>
335
        wb_srlw := X"0" & "0" & v32(31 downto 5);
336
        wb_sraw := (msk32(63 downto 27) & v32(31 downto 5));
337
    when 6 =>
338
        wb_srlw := X"0" & "00" & v32(31 downto 6);
339
        wb_sraw := (msk32(63 downto 26) & v32(31 downto 6));
340
    when 7 =>
341
        wb_srlw := X"0" & "000" & v32(31 downto 7);
342
        wb_sraw := (msk32(63 downto 25) & v32(31 downto 7));
343
    when 8 =>
344
        wb_srlw := X"00" & v32(31 downto 8);
345
        wb_sraw := (msk32(63 downto 24) & v32(31 downto 8));
346
    when 9 =>
347
        wb_srlw := X"00" & "0" & v32(31 downto 9);
348
        wb_sraw := (msk32(63 downto 23) & v32(31 downto 9));
349
    when 10 =>
350
        wb_srlw := X"00" & "00" & v32(31 downto 10);
351
        wb_sraw := (msk32(63 downto 22) & v32(31 downto 10));
352
    when 11 =>
353
        wb_srlw := X"00" & "000" & v32(31 downto 11);
354
        wb_sraw := (msk32(63 downto 21) & v32(31 downto 11));
355
    when 12 =>
356
        wb_srlw := X"000" & v32(31 downto 12);
357
        wb_sraw := (msk32(63 downto 20) & v32(31 downto 12));
358
    when 13 =>
359
        wb_srlw := X"000" & "0" & v32(31 downto 13);
360
        wb_sraw := (msk32(63 downto 19) & v32(31 downto 13));
361
    when 14 =>
362
        wb_srlw := X"000" & "00" & v32(31 downto 14);
363
        wb_sraw := (msk32(63 downto 18) & v32(31 downto 14));
364
    when 15 =>
365
        wb_srlw := X"000" & "000" & v32(31 downto 15);
366
        wb_sraw := (msk32(63 downto 17) & v32(31 downto 15));
367
    when 16 =>
368
        wb_srlw := X"0000" & v32(31 downto 16);
369
        wb_sraw := (msk32(63 downto 16) & v32(31 downto 16));
370
    when 17 =>
371
        wb_srlw := X"0000" & "0" & v32(31 downto 17);
372
        wb_sraw := (msk32(63 downto 15) & v32(31 downto 17));
373
    when 18 =>
374
        wb_srlw := X"0000" & "00" & v32(31 downto 18);
375
        wb_sraw := (msk32(63 downto 14) & v32(31 downto 18));
376
    when 19 =>
377
        wb_srlw := X"0000" & "000" & v32(31 downto 19);
378
        wb_sraw := (msk32(63 downto 13) & v32(31 downto 19));
379
    when 20 =>
380
        wb_srlw := X"00000" & v32(31 downto 20);
381
        wb_sraw := (msk32(63 downto 12) & v32(31 downto 20));
382
    when 21 =>
383
        wb_srlw := X"00000" & "0" & v32(31 downto 21);
384
        wb_sraw := (msk32(63 downto 11) & v32(31 downto 21));
385
    when 22 =>
386
        wb_srlw := X"00000" & "00" & v32(31 downto 22);
387
        wb_sraw := (msk32(63 downto 10) & v32(31 downto 22));
388
    when 23 =>
389
        wb_srlw := X"00000" & "000" & v32(31 downto 23);
390
        wb_sraw := (msk32(63 downto 9) & v32(31 downto 23));
391
    when 24 =>
392
        wb_srlw := X"000000" & v32(31 downto 24);
393
        wb_sraw := (msk32(63 downto 8) & v32(31 downto 24));
394
    when 25 =>
395
        wb_srlw := X"000000" & "0" & v32(31 downto 25);
396
        wb_sraw := (msk32(63 downto 7) & v32(31 downto 25));
397
    when 26 =>
398
        wb_srlw := X"000000" & "00" & v32(31 downto 26);
399
        wb_sraw := (msk32(63 downto 6) & v32(31 downto 26));
400
    when 27 =>
401
        wb_srlw := X"000000" & "000" & v32(31 downto 27);
402
        wb_sraw := (msk32(63 downto 5) & v32(31 downto 27));
403
    when 28 =>
404
        wb_srlw := X"0000000" & v32(31 downto 28);
405
        wb_sraw := (msk32(63 downto 4) & v32(31 downto 28));
406
    when 29 =>
407
        wb_srlw := X"0000000" & "0" & v32(31 downto 29);
408
        wb_sraw := (msk32(63 downto 3) & v32(31 downto 29));
409
    when 30 =>
410
        wb_srlw := X"0000000" & "00" & v32(31 downto 30);
411
        wb_sraw := (msk32(63 downto 2) & v32(31 downto 30));
412
    when 31 =>
413
        wb_srlw := X"0000000" & "000" & v32(31 downto 31);
414
        wb_sraw := (msk32(63 downto 1) & v32(31 downto 31));
415
    end case;
416
 
417
    o_sll <= wb_sll;
418
    o_sllw(31 downto 0) <= wb_sll(31 downto 0);
419
    o_sllw(63 downto 32) <= (others => wb_sll(31));
420
    o_srl <= wb_srl;
421
    o_sra <= wb_sra;
422
    o_srlw <= X"00000000" & wb_srlw;
423
    o_sraw <= wb_sraw;
424
  end process;
425
 
426
end;

powered by: WebSVN 2.1.0

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