Files
lt16lab/soc/core/corewrapper.vhd
Thomas Fehmel 657a54ba18 Initial Commit
2016-10-18 14:21:45 +02:00

143 lines
2.9 KiB
VHDL

-- See the file "LICENSE" for the full license governing this code. --
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use work.lt16x32_internal.all;
use work.lt16x32_global.all;
use work.wishbone.all;
use work.config.all;
-- TODO: check core(big/little endian) -> assume as little !!
entity corewrapper is
port(
clk : in std_logic;
rst : in std_logic;
in_imem : in imem_core;
out_imem : out core_imem;
in_proc : in irq_core;
out_proc : out core_irq;
hardfault : out std_logic;
-- wb master port
wmsti : in wb_mst_in_type;
wmsto : out wb_mst_out_type
);
end entity corewrapper;
architecture RTL of corewrapper is
signal wbmo : wb_mst_out_type := wbm_out_none;
--signal indmem : dmem_core;
signal in_dmem : dmem_core;
signal out_dmem : core_dmem;
-- signal inimem : imem_core;
-- signal outimem : core_imem;
--//////////////////////////////////////////////////////
-- component
--//////////////////////////////////////////////////////
component core
port(
clk : in std_logic;
rst : in std_logic;
stall : in std_logic;
in_dmem : in dmem_core;
out_dmem : out core_dmem;
in_imem : in imem_core;
out_imem : out core_imem;
in_irq : in irq_core;
out_irq : out core_irq;
hardfault : out std_logic
);
end component;
component core2wb
port(
clk : in std_logic;
rst : in std_logic;
in_dmem : out dmem_core;
out_dmem : in core_dmem;
-- wb master port
wmsti : in wb_mst_in_type;
wmsto : out wb_mst_out_type
);
end component;
begin
--//////////////////////////////////////////////////////
-- Instantiate
--//////////////////////////////////////////////////////
--
core_inst: core
port map(
clk => clk,
rst => rst,
stall => '0', -- no stall for now -- wmsti.stall
in_dmem => in_dmem,
out_dmem => out_dmem,
in_imem => in_imem, -- inimem,
out_imem => out_imem, -- outimem,
in_irq => in_proc,
out_irq => out_proc,
hardfault => hardfault
);
core2wb_inst: core2wb
port map(
clk => clk,
rst => rst,
in_dmem => in_dmem,
out_dmem => out_dmem,
-- wb master port
wmsti => wmsti,
wmsto => wmsto
);
--//////////////////////////////////////////////////////
-- I - mem
--//////////////////////////////////////////////////////
-- core connect directly to the mem
-- imem: process(clk)
-- begin
-- if rising_edge(clk) then
-- if rst = '1' then
-- -- to core
-- inimem.read_data <= (others=>'-');
-- inimem.ready <= '0';
-- -- out from core
-- outimem.read_addr <= (others=>'0');
-- outimem.read_en <= '0';
--
-- out_imem.read_addr <= (others=>'0');
-- out_imem.read_en <= '0';
-- else
-- -- to core
-- inimem <= in_imem;
-- -- out from core
-- out_imem <= outimem;
-- end if;
-- end if;
-- end process;
end architecture RTL;