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

Subversion Repositories lxp32

[/] [lxp32/] [trunk/] [rtl/] [lxp32c_top.vhd] - Diff between revs 6 and 9

Only display areas with differences | Details | Blame | View Log

Rev 6 Rev 9
---------------------------------------------------------------------
---------------------------------------------------------------------
-- LXP32C CPU top-level module (C-series, with instruction cache)
-- LXP32C CPU top-level module (C-series, with instruction cache)
--
--
-- Part of the LXP32 CPU
-- Part of the LXP32 CPU
--
--
-- Copyright (c) 2016 by Alex I. Kuznetsov
-- Copyright (c) 2016 by Alex I. Kuznetsov
--
--
-- This version uses Wishbone B3 interface for the instruction bus
-- This version uses Wishbone B3 interface for the instruction bus
-- (IBUS). It is designed for high-latency program memory, such as
-- (IBUS). It is designed for high-latency program memory, such as
-- external SDRAM chips.
-- external SDRAM chips.
--
--
-- Parameters:
-- Parameters:
--     DBUS_RMW:           Use RMW cycle instead of SEL_O() signal
--     DBUS_RMW:           Use RMW cycle instead of SEL_O() signal
--                         for byte-granular access to data bus
--                         for byte-granular access to data bus
--     DIVIDER_EN:         enable divider
--     DIVIDER_EN:         enable divider
--     IBUS_BURST_SIZE:    size of the burst
--     IBUS_BURST_SIZE:    size of the burst
--     IBUS_PREFETCH_SIZE: initiate read burst if number of words
--     IBUS_PREFETCH_SIZE: initiate read burst if number of words
--                         left in the buffer is less than specified
--                         left in the buffer is less than specified
--     MUL_ARCH:           multiplier architecture ("dsp", "opt"
--     MUL_ARCH:           multiplier architecture ("dsp", "opt"
--                         or "seq")
--                         or "seq")
--     START_ADDR:         address in program memory where execution
--     START_ADDR:         address in program memory where execution
--                         starts
--                         starts
---------------------------------------------------------------------
---------------------------------------------------------------------
 
 
library ieee;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_1164.all;
 
 
entity lxp32c_top is
entity lxp32c_top is
        generic(
        generic(
                DBUS_RMW: boolean:=false;
                DBUS_RMW: boolean:=false;
                DIVIDER_EN: boolean:=true;
                DIVIDER_EN: boolean:=true;
                IBUS_BURST_SIZE: integer:=16;
                IBUS_BURST_SIZE: integer:=16;
                IBUS_PREFETCH_SIZE: integer:=32;
                IBUS_PREFETCH_SIZE: integer:=32;
                MUL_ARCH: string:="dsp";
                MUL_ARCH: string:="dsp";
                START_ADDR: std_logic_vector(31 downto 0):=(others=>'0')
                START_ADDR: std_logic_vector(31 downto 0):=(others=>'0')
        );
        );
        port(
        port(
                clk_i: in std_logic;
                clk_i: in std_logic;
                rst_i: in std_logic;
                rst_i: in std_logic;
 
 
                ibus_cyc_o: out std_logic;
                ibus_cyc_o: out std_logic;
                ibus_stb_o: out std_logic;
                ibus_stb_o: out std_logic;
                ibus_cti_o: out std_logic_vector(2 downto 0);
                ibus_cti_o: out std_logic_vector(2 downto 0);
                ibus_bte_o: out std_logic_vector(1 downto 0);
                ibus_bte_o: out std_logic_vector(1 downto 0);
                ibus_ack_i: in std_logic;
                ibus_ack_i: in std_logic;
                ibus_adr_o: out std_logic_vector(29 downto 0);
                ibus_adr_o: out std_logic_vector(29 downto 0);
                ibus_dat_i: in std_logic_vector(31 downto 0);
                ibus_dat_i: in std_logic_vector(31 downto 0);
 
 
                dbus_cyc_o: out std_logic;
                dbus_cyc_o: out std_logic;
                dbus_stb_o: out std_logic;
                dbus_stb_o: out std_logic;
                dbus_we_o: out std_logic;
                dbus_we_o: out std_logic;
                dbus_sel_o: out std_logic_vector(3 downto 0);
                dbus_sel_o: out std_logic_vector(3 downto 0);
                dbus_ack_i: in std_logic;
                dbus_ack_i: in std_logic;
                dbus_adr_o: out std_logic_vector(31 downto 2);
                dbus_adr_o: out std_logic_vector(31 downto 2);
                dbus_dat_o: out std_logic_vector(31 downto 0);
                dbus_dat_o: out std_logic_vector(31 downto 0);
                dbus_dat_i: in std_logic_vector(31 downto 0);
                dbus_dat_i: in std_logic_vector(31 downto 0);
 
 
                irq_i: in std_logic_vector(7 downto 0)
                irq_i: in std_logic_vector(7 downto 0)
        );
        );
end entity;
end entity;
 
 
architecture rtl of lxp32c_top is
architecture rtl of lxp32c_top is
 
 
signal lli_re: std_logic;
signal lli_re: std_logic;
signal lli_adr: std_logic_vector(29 downto 0);
signal lli_adr: std_logic_vector(29 downto 0);
signal lli_dat: std_logic_vector(31 downto 0);
signal lli_dat: std_logic_vector(31 downto 0);
signal lli_busy: std_logic;
signal lli_busy: std_logic;
 
 
begin
begin
 
 
cpu_inst: entity work.lxp32_cpu(rtl)
cpu_inst: entity work.lxp32_cpu(rtl)
        generic map(
        generic map(
                DBUS_RMW=>DBUS_RMW,
                DBUS_RMW=>DBUS_RMW,
                DIVIDER_EN=>DIVIDER_EN,
                DIVIDER_EN=>DIVIDER_EN,
                MUL_ARCH=>MUL_ARCH,
                MUL_ARCH=>MUL_ARCH,
                START_ADDR=>START_ADDR
                START_ADDR=>START_ADDR
        )
        )
        port map(
        port map(
                clk_i=>clk_i,
                clk_i=>clk_i,
                rst_i=>rst_i,
                rst_i=>rst_i,
 
 
                lli_re_o=>lli_re,
                lli_re_o=>lli_re,
                lli_adr_o=>lli_adr,
                lli_adr_o=>lli_adr,
                lli_dat_i=>lli_dat,
                lli_dat_i=>lli_dat,
                lli_busy_i=>lli_busy,
                lli_busy_i=>lli_busy,
 
 
                dbus_cyc_o=>dbus_cyc_o,
                dbus_cyc_o=>dbus_cyc_o,
                dbus_stb_o=>dbus_stb_o,
                dbus_stb_o=>dbus_stb_o,
                dbus_we_o=>dbus_we_o,
                dbus_we_o=>dbus_we_o,
                dbus_sel_o=>dbus_sel_o,
                dbus_sel_o=>dbus_sel_o,
                dbus_ack_i=>dbus_ack_i,
                dbus_ack_i=>dbus_ack_i,
                dbus_adr_o=>dbus_adr_o,
                dbus_adr_o=>dbus_adr_o,
                dbus_dat_o=>dbus_dat_o,
                dbus_dat_o=>dbus_dat_o,
                dbus_dat_i=>dbus_dat_i,
                dbus_dat_i=>dbus_dat_i,
 
 
                irq_i=>irq_i
                irq_i=>irq_i
        );
        );
 
 
icache_inst: entity work.lxp32_icache(rtl)
icache_inst: entity work.lxp32_icache(rtl)
        generic map(
        generic map(
                BURST_SIZE=>IBUS_BURST_SIZE,
                BURST_SIZE=>IBUS_BURST_SIZE,
                PREFETCH_SIZE=>IBUS_PREFETCH_SIZE
                PREFETCH_SIZE=>IBUS_PREFETCH_SIZE
        )
        )
        port map(
        port map(
                clk_i=>clk_i,
                clk_i=>clk_i,
                rst_i=>rst_i,
                rst_i=>rst_i,
 
 
                lli_re_i=>lli_re,
                lli_re_i=>lli_re,
                lli_adr_i=>lli_adr,
                lli_adr_i=>lli_adr,
                lli_dat_o=>lli_dat,
                lli_dat_o=>lli_dat,
                lli_busy_o=>lli_busy,
                lli_busy_o=>lli_busy,
 
 
                wbm_cyc_o=>ibus_cyc_o,
                wbm_cyc_o=>ibus_cyc_o,
                wbm_stb_o=>ibus_stb_o,
                wbm_stb_o=>ibus_stb_o,
                wbm_cti_o=>ibus_cti_o,
                wbm_cti_o=>ibus_cti_o,
                wbm_bte_o=>ibus_bte_o,
                wbm_bte_o=>ibus_bte_o,
                wbm_ack_i=>ibus_ack_i,
                wbm_ack_i=>ibus_ack_i,
                wbm_adr_o=>ibus_adr_o,
                wbm_adr_o=>ibus_adr_o,
                wbm_dat_i=>ibus_dat_i
                wbm_dat_i=>ibus_dat_i
        );
        );
 
 
end architecture;
end architecture;
 
 

powered by: WebSVN 2.1.0

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