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

Subversion Repositories riscompatible

[/] [riscompatible/] [trunk/] [rtl/] [ud.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 borin
-------------------------------------------------------------------------------------------------------------------
2
library ieee;
3
use ieee.std_logic_1164.all;
4
use ieee.numeric_std.all;
5
use work.riscompatible_package.all;
6
use work.ud_package.all;
7
-------------------------------------------------------------------------------------------------------------------
8
entity UD is
9
    port
10
    (
11
        InputData_I   : in TRiscoWord;
12
        ShiftAmount_I : in std_logic_vector(4 downto 0);
13
        OutputData_o  : out TRiscoWord;
14
        Function_I    : in std_logic_vector(4 downto 0);
15
        Cy_I          : in std_logic;
16
        Cy_O          : out std_logic
17
    );
18
end UD;
19
-------------------------------------------------------------------------------------------------------------------
20
architecture behavioral of UD is
21
    signal OutputData_w : TRiscoWordPlusCarry;
22
begin
23
    with Function_I select
24
        OutputData_w <=
25
                        Cy_I & SRL_F(InputData_I,ShiftAmount_I)        when C_SRL,
26
                        Cy_I & SLL_F(InputData_I,ShiftAmount_I)        when C_SLL,
27
                        Cy_I & SRA_F(InputData_I,ShiftAmount_I)        when C_SRA,
28
                        Cy_I & SLA_F(InputData_I,ShiftAmount_I)        when C_SLA,
29
                        Cy_I & RRL_F(InputData_I,ShiftAmount_I)        when C_RRL,
30
                        Cy_I & RLL_F(InputData_I,ShiftAmount_I)        when C_RLL,
31
                        Cy_I & RRA_F(InputData_I,ShiftAmount_I)        when C_RRA,
32
                        Cy_I & RLA_F(InputData_I,ShiftAmount_I)        when C_RLA,
33
                         SRLC_F(InputData_I,ShiftAmount_I,Cy_I)        when C_SRLC,
34
                         SLLC_F(InputData_I,ShiftAmount_I,Cy_I)        when C_SLLC,
35
                         SRAC_F(InputData_I,ShiftAmount_I,Cy_I)        when C_SRAC,
36
                         SLAC_F(InputData_I,ShiftAmount_I,Cy_I)        when C_SLAC,
37
                         RRLC_F(InputData_I,ShiftAmount_I,Cy_I)        when C_RRLC,
38
                         RLLC_F(InputData_I,ShiftAmount_I,Cy_I)        when C_RLLC,
39
                         RRAC_F(InputData_I,ShiftAmount_I,Cy_I)        when C_RRAC,
40
                         RLAC_F(InputData_I,ShiftAmount_I,Cy_I)        when C_RLAC,
41
                                                (others => '0')        when others;
42
 
43
    OutputData_O <= OutputData_w(OutputData_O'high downto 0);
44
    Cy_O <= OutputData_w(OutputData_w'high);
45
end behavioral;
46
-------------------------------------------------------------------------------------------------------------------

powered by: WebSVN 2.1.0

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