OpenCores
URL https://opencores.org/ocsvn/1g_ethernet_dpi/1g_ethernet_dpi/trunk

Subversion Repositories 1g_ethernet_dpi

[/] [1g_ethernet_dpi/] [tags/] [vmblite_base/] [hw/] [src/] [rtl/] [mblite/] [mblite_unit.vhd] - Blame information for rev 7

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 7 kuzmi4
----------------------------------------------------------------------------------------------
2
--
3
--      Input file         : 
4
--      Design name        : 
5
--      Author             : Tamar Kranenburg
6
--      Company            : Delft University of Technology
7
--                         : Faculty EEMCS, Department ME&CE
8
--                         : Systems and Circuits group
9
--
10
--      Description        : 
11
--
12
----------------------------------------------------------------------------------------------
13
 
14
library ieee;
15
use ieee.std_logic_1164.all;
16
use ieee.std_logic_unsigned.all;
17
 
18
library mblite;
19
use mblite.config_Pkg.all;
20
use mblite.core_Pkg.all;
21
use mblite.std_Pkg.all;
22
 
23
entity mblite_unit is port
24
(   -- SYS_CON
25
    sys_clk_i        : in std_logic;
26
    sys_rst_i        : in std_logic;
27
    -- IRQ
28
    sys_int_i        : in std_logic;
29
    -- WB-master inputs from the wb-slaves
30
    wbm_dat_i : in  std_logic_vector(CFG_DMEM_WIDTH - 1 downto 0); -- databus input
31
    wbm_ack_i : in  std_logic;                                     -- buscycle acknowledge input
32
    -- WB-master outputs to the wb-slaves
33
    wbm_adr_o : out std_logic_vector(CFG_DMEM_SIZE - 1 downto 0);  -- address bits
34
    wbm_dat_o : out std_logic_vector(CFG_DMEM_WIDTH - 1 downto 0); -- databus output
35
    wbm_we_o  : out std_logic;                                     -- write enable output
36
    wbm_stb_o : out std_logic;                                     -- strobe signals
37
    wbm_sel_o : out std_logic_vector(CFG_DMEM_WIDTH/8 - 1 downto 0); -- select output array
38
    wbm_cyc_o : out std_logic                                      -- valid BUS cycle output
39
);
40
end mblite_unit;
41
 
42
architecture arch of mblite_unit is
43
 
44
    signal dmem_o : dmem_out_type;
45
    signal dmem_i : dmem_in_type;
46
    signal imem_o : imem_out_type;
47
    signal imem_i : imem_in_type;
48
    signal s_dmem_o : dmem_out_array_type(CFG_NUM_SLAVES - 1 downto 0);
49
    signal s_dmem_i : dmem_in_array_type(CFG_NUM_SLAVES - 1 downto 0);
50
    signal s_dmem_sel_o : std_logic_vector(3 downto 0);
51
    signal s_dmem_ena_o : std_logic;
52
 
53
    signal m_wb_i : wb_mst_in_type;
54
    signal m_wb_o : wb_mst_out_type;
55
 
56
    constant rom_size : integer := 16;
57
    constant ram_size : integer := 16;
58
 
59
begin
60
 
61
--
62
-- WB route
63
--
64
wbm_adr_o   <= m_wb_o.adr_o;
65
wbm_dat_o   <= m_wb_o.dat_o;
66
wbm_we_o    <= m_wb_o.we_o;
67
wbm_stb_o   <= m_wb_o.stb_o;
68
wbm_sel_o   <= m_wb_o.sel_o;
69
wbm_cyc_o   <= m_wb_o.cyc_o;
70
m_wb_i.dat_i    <= wbm_dat_i;
71
m_wb_i.ack_i    <= wbm_ack_i;
72
m_wb_i.int_i    <= sys_int_i;
73
m_wb_i.clk_i <= sys_clk_i;
74
m_wb_i.rst_i <= sys_rst_i;
75
 
76
--
77
-- ??
78
--
79
    wb_adapter : core_wb_adapter
80
    port map
81
    (
82
        dmem_i => s_dmem_i(1),
83
        wb_o   => m_wb_o,
84
        dmem_o => s_dmem_o(1),
85
        wb_i   => m_wb_i
86
    );
87
 
88
    s_dmem_i(0).ena_i <= '1';
89
    s_dmem_sel_o <= s_dmem_o(0).sel_o when s_dmem_o(0).we_o = '1' else (others => '0');
90
    s_dmem_ena_o <= not sys_rst_i and s_dmem_o(0).ena_o;
91
 
92
    dmem : sram_4en
93
    generic map
94
    (
95
        WIDTH => CFG_DMEM_WIDTH,
96
        SIZE  => ram_size - 2
97
    )
98
    port map
99
    (
100
        dat_o => s_dmem_i(0).dat_i,
101
        dat_i => s_dmem_o(0).dat_o,
102
        adr_i => s_dmem_o(0).adr_o(ram_size - 1 downto 2),
103
        wre_i => s_dmem_sel_o,
104
        ena_i => s_dmem_ena_o,
105
        clk_i => sys_clk_i
106
    );
107
 
108
    decoder : core_address_decoder
109
    generic map
110
    (
111
        G_NUM_SLAVES => CFG_NUM_SLAVES
112
    )
113
    port map
114
    (
115
        m_dmem_i => dmem_i,
116
        s_dmem_o => s_dmem_o,
117
        m_dmem_o => dmem_o,
118
        s_dmem_i => s_dmem_i,
119
        clk_i    => sys_clk_i
120
    );
121
 
122
    imem : sram
123
    generic map
124
    (
125
        FNAME => "rom.mem",
126
        WIDTH => CFG_IMEM_WIDTH,
127
        SIZE  => rom_size - 2
128
    )
129
    port map
130
    (
131
        dat_o => imem_i.dat_i,
132
        dat_i => (others => '0'),
133
        adr_i => imem_o.adr_o(rom_size - 1 downto 2),
134
        wre_i => '0',
135
        ena_i => imem_o.ena_o,
136
        clk_i => sys_clk_i
137
    );
138
 
139
    core0 : core
140
    port map
141
    (
142
        imem_o => imem_o,
143
        dmem_o => dmem_o,
144
        imem_i => imem_i,
145
        dmem_i => dmem_i,
146
        int_i  => sys_int_i,
147
        rst_i  => sys_rst_i,
148
        clk_i  => sys_clk_i
149
    );
150
end arch;

powered by: WebSVN 2.1.0

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