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

Subversion Repositories neorv32

[/] [neorv32/] [trunk/] [rtl/] [core/] [neorv32_package.vhd] - Diff between revs 2 and 3

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 2 Rev 3
Line 39... Line 39...
package neorv32_package is
package neorv32_package is
 
 
  -- Architecture Constants -----------------------------------------------------------------
  -- Architecture Constants -----------------------------------------------------------------
  -- -------------------------------------------------------------------------------------------
  -- -------------------------------------------------------------------------------------------
  constant data_width_c : natural := 32; -- data width - FIXED!
  constant data_width_c : natural := 32; -- data width - FIXED!
  constant hw_version_c : std_ulogic_vector(31 downto 0) := x"00000203"; -- no touchy!
  constant hw_version_c : std_ulogic_vector(31 downto 0) := x"00000204"; -- no touchy!
 
 
  -- Internal Functions ---------------------------------------------------------------------
  -- Internal Functions ---------------------------------------------------------------------
  -- -------------------------------------------------------------------------------------------
  -- -------------------------------------------------------------------------------------------
  function index_size_f(input : natural) return natural;
  function index_size_f(input : natural) return natural;
  function cond_sel_natural_f(cond : boolean; val_t : natural; val_f : natural) return natural;
  function cond_sel_natural_f(cond : boolean; val_t : natural; val_f : natural) return natural;
Line 123... Line 123...
  constant trng_ctrl_addr_c     : std_ulogic_vector(31 downto 0) := std_ulogic_vector(unsigned(trng_base_c) + x"00000000");
  constant trng_ctrl_addr_c     : std_ulogic_vector(31 downto 0) := std_ulogic_vector(unsigned(trng_base_c) + x"00000000");
  constant trng_data_addr_c     : std_ulogic_vector(31 downto 0) := std_ulogic_vector(unsigned(trng_base_c) + x"00000004");
  constant trng_data_addr_c     : std_ulogic_vector(31 downto 0) := std_ulogic_vector(unsigned(trng_base_c) + x"00000004");
 
 
  -- RESERVED --
  -- RESERVED --
--constant ???_base_c           : std_ulogic_vector(data_width_c-1 downto 0) := x"FFFFFFC8"; -- base address, fixed!
--constant ???_base_c           : std_ulogic_vector(data_width_c-1 downto 0) := x"FFFFFFC8"; -- base address, fixed!
--constant ???_size_c           : natural := 14*4; -- bytes, fixed!
--constant ???_size_c           : natural := 13*4; -- bytes, fixed!
 
 
 
  -- Dummy Device (with SIM output) (DEVNULL) --
 
  constant devnull_base_c       : std_ulogic_vector(data_width_c-1 downto 0) := x"FFFFFFFC"; -- base address, fixed!
 
  constant devnull_size_c       : natural := 1*4; -- bytes, fixed!
 
  constant devnull_data_addr_c  : std_ulogic_vector(31 downto 0) := std_ulogic_vector(unsigned(devnull_base_c) + x"00000000");
 
 
  -- Main Control Bus -----------------------------------------------------------------------
  -- Main Control Bus -----------------------------------------------------------------------
  -- -------------------------------------------------------------------------------------------
  -- -------------------------------------------------------------------------------------------
  -- register file --
  -- register file --
  constant ctrl_rf_in_mux_lsb_c   : natural :=  0; -- input source select lsb (00=ALU, 01=MEM)
  constant ctrl_rf_in_mux_lsb_c   : natural :=  0; -- input source select lsb (00=ALU, 01=MEM)
Line 359... Line 364...
      IO_SPI_USE                : boolean := true;   -- implement serial peripheral interface (SPI)?
      IO_SPI_USE                : boolean := true;   -- implement serial peripheral interface (SPI)?
      IO_TWI_USE                : boolean := true;   -- implement two-wire interface (TWI)?
      IO_TWI_USE                : boolean := true;   -- implement two-wire interface (TWI)?
      IO_PWM_USE                : boolean := true;   -- implement pulse-width modulation unit (PWM)?
      IO_PWM_USE                : boolean := true;   -- implement pulse-width modulation unit (PWM)?
      IO_WDT_USE                : boolean := true;   -- implement watch dog timer (WDT)?
      IO_WDT_USE                : boolean := true;   -- implement watch dog timer (WDT)?
      IO_CLIC_USE               : boolean := true;   -- implement core local interrupt controller (CLIC)?
      IO_CLIC_USE               : boolean := true;   -- implement core local interrupt controller (CLIC)?
      IO_TRNG_USE               : boolean := false   -- implement true random number generator (TRNG)?
      IO_TRNG_USE               : boolean := false;  -- implement true random number generator (TRNG)?
 
      IO_DEVNULL_USE            : boolean := true    -- implement dummy device (DEVNULL)?
    );
    );
    port (
    port (
      -- Global control --
      -- Global control --
      clk_i      : in  std_ulogic := '0'; -- global clock, rising edge
      clk_i      : in  std_ulogic := '0'; -- global clock, rising edge
      rstn_i     : in  std_ulogic := '0'; -- global reset, low-active, async
      rstn_i     : in  std_ulogic := '0'; -- global reset, low-active, async
Line 432... Line 438...
      IO_SPI_USE                : boolean := true;   -- implement serial peripheral interface (SPI)?
      IO_SPI_USE                : boolean := true;   -- implement serial peripheral interface (SPI)?
      IO_TWI_USE                : boolean := true;   -- implement two-wire interface (TWI)?
      IO_TWI_USE                : boolean := true;   -- implement two-wire interface (TWI)?
      IO_PWM_USE                : boolean := true;   -- implement pulse-width modulation unit (PWM)?
      IO_PWM_USE                : boolean := true;   -- implement pulse-width modulation unit (PWM)?
      IO_WDT_USE                : boolean := true;   -- implement watch dog timer (WDT)?
      IO_WDT_USE                : boolean := true;   -- implement watch dog timer (WDT)?
      IO_CLIC_USE               : boolean := true;   -- implement core local interrupt controller (CLIC)?
      IO_CLIC_USE               : boolean := true;   -- implement core local interrupt controller (CLIC)?
      IO_TRNG_USE               : boolean := true    -- implement true random number generator (TRNG)?
      IO_TRNG_USE               : boolean := true;   -- implement true random number generator (TRNG)?
 
      IO_DEVNULL_USE            : boolean := true    -- implement dummy device (DEVNULL)?
    );
    );
    port (
    port (
      -- global control --
      -- global control --
      clk_i         : in  std_ulogic; -- global clock, rising edge
      clk_i         : in  std_ulogic; -- global clock, rising edge
      rstn_i        : in  std_ulogic; -- global reset, low-active, async
      rstn_i        : in  std_ulogic; -- global reset, low-active, async
Line 629... Line 636...
      IO_SPI_USE                : boolean := true;   -- implement serial peripheral interface (SPI)?
      IO_SPI_USE                : boolean := true;   -- implement serial peripheral interface (SPI)?
      IO_TWI_USE                : boolean := true;   -- implement two-wire interface (TWI)?
      IO_TWI_USE                : boolean := true;   -- implement two-wire interface (TWI)?
      IO_PWM_USE                : boolean := true;   -- implement pulse-width modulation unit (PWM)?
      IO_PWM_USE                : boolean := true;   -- implement pulse-width modulation unit (PWM)?
      IO_WDT_USE                : boolean := true;   -- implement watch dog timer (WDT)?
      IO_WDT_USE                : boolean := true;   -- implement watch dog timer (WDT)?
      IO_CLIC_USE               : boolean := true;   -- implement core local interrupt controller (CLIC)?
      IO_CLIC_USE               : boolean := true;   -- implement core local interrupt controller (CLIC)?
      IO_TRNG_USE               : boolean := true    -- implement true random number generator (TRNG)?
      IO_TRNG_USE               : boolean := true;   -- implement true random number generator (TRNG)?
 
      IO_DEVNULL_USE            : boolean := true    -- implement dummy device (DEVNULL)?
    );
    );
    port (
    port (
      -- global control --
      -- global control --
      clk_i       : in  std_ulogic; -- global clock, rising edge
      clk_i       : in  std_ulogic; -- global clock, rising edge
      rstn_i      : in  std_ulogic; -- global reset, low-active, async
      rstn_i      : in  std_ulogic; -- global reset, low-active, async
Line 939... Line 947...
      wb_ack_i : in  std_ulogic; -- transfer acknowledge
      wb_ack_i : in  std_ulogic; -- transfer acknowledge
      wb_err_i : in  std_ulogic  -- transfer error
      wb_err_i : in  std_ulogic  -- transfer error
    );
    );
  end component;
  end component;
 
 
 
  -- Component: Dummy Device with SIM Output (DEVNULL) -------------------------------------
 
  -- -------------------------------------------------------------------------------------------
 
  component neorv32_devnull
 
    port (
 
      -- host access --
 
      clk_i  : in  std_ulogic; -- global clock line
 
      addr_i : in  std_ulogic_vector(31 downto 0); -- address
 
      rden_i : in  std_ulogic; -- read enable
 
      wren_i : in  std_ulogic; -- write enable
 
      ben_i  : in  std_ulogic_vector(03 downto 0); -- byte write enable
 
      data_i : in  std_ulogic_vector(31 downto 0); -- data in
 
      data_o : out std_ulogic_vector(31 downto 0); -- data out
 
      ack_o  : out std_ulogic  -- transfer acknowledge
 
    );
 
  end component;
 
 
end neorv32_package;
end neorv32_package;
 
 
package body neorv32_package is
package body neorv32_package is
 
 
  -- Function: Minimal required bit width ---------------------------------------------------
  -- Function: Minimal required bit width ---------------------------------------------------

powered by: WebSVN 2.1.0

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