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

Subversion Repositories neorv32

[/] [neorv32/] [trunk/] [rtl/] [core/] [neorv32_top.vhd] - Diff between revs 64 and 65

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

Rev 64 Rev 65
Line 118... Line 118...
 
 
    -- Processor peripherals --
    -- Processor peripherals --
    IO_GPIO_EN                   : boolean := false;  -- implement general purpose input/output port unit (GPIO)?
    IO_GPIO_EN                   : boolean := false;  -- implement general purpose input/output port unit (GPIO)?
    IO_MTIME_EN                  : boolean := false;  -- implement machine system timer (MTIME)?
    IO_MTIME_EN                  : boolean := false;  -- implement machine system timer (MTIME)?
    IO_UART0_EN                  : boolean := false;  -- implement primary universal asynchronous receiver/transmitter (UART0)?
    IO_UART0_EN                  : boolean := false;  -- implement primary universal asynchronous receiver/transmitter (UART0)?
 
    IO_UART0_RX_FIFO             : natural := 1;      -- RX fifo depth, has to be a power of two, min 1
 
    IO_UART0_TX_FIFO             : natural := 1;      -- TX fifo depth, has to be a power of two, min 1
    IO_UART1_EN                  : boolean := false;  -- implement secondary universal asynchronous receiver/transmitter (UART1)?
    IO_UART1_EN                  : boolean := false;  -- implement secondary universal asynchronous receiver/transmitter (UART1)?
 
    IO_UART1_RX_FIFO             : natural := 1;      -- RX fifo depth, has to be a power of two, min 1
 
    IO_UART1_TX_FIFO             : natural := 1;      -- TX fifo depth, has to be a power of two, min 1
    IO_SPI_EN                    : boolean := false;  -- implement serial peripheral interface (SPI)?
    IO_SPI_EN                    : boolean := false;  -- implement serial peripheral interface (SPI)?
    IO_TWI_EN                    : boolean := false;  -- implement two-wire interface (TWI)?
    IO_TWI_EN                    : boolean := false;  -- implement two-wire interface (TWI)?
    IO_PWM_NUM_CH                : natural := 0;      -- number of PWM channels to implement (0..60); 0 = disabled
    IO_PWM_NUM_CH                : natural := 0;      -- number of PWM channels to implement (0..60); 0 = disabled
    IO_WDT_EN                    : boolean := false;  -- implement watch dog timer (WDT)?
    IO_WDT_EN                    : boolean := false;  -- implement watch dog timer (WDT)?
    IO_TRNG_EN                   : boolean := false;  -- implement true random number generator (TRNG)?
    IO_TRNG_EN                   : boolean := false;  -- implement true random number generator (TRNG)?
Line 328... Line 332...
  signal slink_rx_irq  : std_ulogic;
  signal slink_rx_irq  : std_ulogic;
  signal xirq_irq      : std_ulogic;
  signal xirq_irq      : std_ulogic;
 
 
  -- misc --
  -- misc --
  signal mtime_time     : std_ulogic_vector(63 downto 0); -- current system time from MTIME
  signal mtime_time     : std_ulogic_vector(63 downto 0); -- current system time from MTIME
  signal cpu_sleep      : std_ulogic; -- CPU is in sleep mode when set
 
  signal bus_keeper_err : std_ulogic; -- bus keeper: bus access timeout
  signal bus_keeper_err : std_ulogic; -- bus keeper: bus access timeout
 
 
begin
begin
 
 
  -- Processor IO/Peripherals Configuration -------------------------------------------------
  -- Processor IO/Peripherals Configuration -------------------------------------------------
Line 477... Line 480...
  )
  )
  port map (
  port map (
    -- global control --
    -- global control --
    clk_i          => clk_i,        -- global clock, rising edge
    clk_i          => clk_i,        -- global clock, rising edge
    rstn_i         => sys_rstn,     -- global reset, low-active, async
    rstn_i         => sys_rstn,     -- global reset, low-active, async
    sleep_o        => cpu_sleep,    -- cpu is in sleep mode when set
    sleep_o        => open,         -- cpu is in sleep mode when set
    -- instruction bus interface --
    -- instruction bus interface --
    i_bus_addr_o   => cpu_i.addr,   -- bus access address
    i_bus_addr_o   => cpu_i.addr,   -- bus access address
    i_bus_rdata_i  => cpu_i.rdata,  -- bus read data
    i_bus_rdata_i  => cpu_i.rdata,  -- bus read data
    i_bus_wdata_o  => cpu_i.wdata,  -- bus write data
    i_bus_wdata_o  => cpu_i.wdata,  -- bus write data
    i_bus_ben_o    => cpu_i.ben,    -- byte enable
    i_bus_ben_o    => cpu_i.ben,    -- byte enable
Line 866... Line 869...
      data_o      => resp_bus(RESP_CFS).rdata, -- data out
      data_o      => resp_bus(RESP_CFS).rdata, -- data out
      ack_o       => resp_bus(RESP_CFS).ack,   -- transfer acknowledge
      ack_o       => resp_bus(RESP_CFS).ack,   -- transfer acknowledge
      -- clock generator --
      -- clock generator --
      clkgen_en_o => cfs_cg_en,                -- enable clock generator
      clkgen_en_o => cfs_cg_en,                -- enable clock generator
      clkgen_i    => clk_gen,                  -- "clock" inputs
      clkgen_i    => clk_gen,                  -- "clock" inputs
      -- CPU state --
 
      sleep_i     => cpu_sleep,                -- set if cpu is in sleep mode
 
      -- interrupt --
      -- interrupt --
      irq_o       => cfs_irq,                  -- interrupt request
      irq_o       => cfs_irq,                  -- interrupt request
      -- custom io (conduit) --
      -- custom io (conduit) --
      cfs_in_i    => cfs_in_i,                 -- custom inputs
      cfs_in_i    => cfs_in_i,                 -- custom inputs
      cfs_out_o   => cfs_out_o                 -- custom outputs
      cfs_out_o   => cfs_out_o                 -- custom outputs
Line 1004... Line 1005...
  -- -------------------------------------------------------------------------------------------
  -- -------------------------------------------------------------------------------------------
  neorv32_uart0_inst_true:
  neorv32_uart0_inst_true:
  if (IO_UART0_EN = true) generate
  if (IO_UART0_EN = true) generate
    neorv32_uart0_inst: neorv32_uart
    neorv32_uart0_inst: neorv32_uart
    generic map (
    generic map (
      UART_PRIMARY => true -- true = primary UART (UART0), false = secondary UART (UART1)
      UART_PRIMARY => true,             -- true = primary UART (UART0), false = secondary UART (UART1)
 
      UART_RX_FIFO => IO_UART0_RX_FIFO, -- RX fifo depth, has to be a power of two, min 1
 
      UART_TX_FIFO => IO_UART0_TX_FIFO  -- TX fifo depth, has to be a power of two, min 1
    )
    )
    port map (
    port map (
      -- host access --
      -- host access --
      clk_i       => clk_i,                      -- global clock line
      clk_i       => clk_i,                      -- global clock line
      addr_i      => p_bus.addr,                 -- address
      addr_i      => p_bus.addr,                 -- address
Line 1048... Line 1051...
  -- -------------------------------------------------------------------------------------------
  -- -------------------------------------------------------------------------------------------
  neorv32_uart1_inst_true:
  neorv32_uart1_inst_true:
  if (IO_UART1_EN = true) generate
  if (IO_UART1_EN = true) generate
    neorv32_uart1_inst: neorv32_uart
    neorv32_uart1_inst: neorv32_uart
    generic map (
    generic map (
      UART_PRIMARY => false -- true = primary UART (UART0), false = secondary UART (UART1)
      UART_PRIMARY => false,            -- true = primary UART (UART0), false = secondary UART (UART1)
 
      UART_RX_FIFO => IO_UART1_RX_FIFO, -- RX fifo depth, has to be a power of two, min 1
 
      UART_TX_FIFO => IO_UART1_TX_FIFO  -- TX fifo depth, has to be a power of two, min 1
    )
    )
    port map (
    port map (
      -- host access --
      -- host access --
      clk_i       => clk_i,                      -- global clock line
      clk_i       => clk_i,                      -- global clock line
      addr_i      => p_bus.addr,                 -- address
      addr_i      => p_bus.addr,                 -- address
Line 1154... Line 1159...
  end generate;
  end generate;
 
 
  neorv32_twi_inst_false:
  neorv32_twi_inst_false:
  if (IO_TWI_EN = false) generate
  if (IO_TWI_EN = false) generate
    resp_bus(RESP_TWI) <= resp_bus_entry_terminate_c;
    resp_bus(RESP_TWI) <= resp_bus_entry_terminate_c;
--  twi_sda_io <= 'Z'; -- FIXME?
    twi_sda_io <= 'Z';
--  twi_scl_io <= 'Z'; -- FIXME?
    twi_scl_io <= 'Z';
    twi_cg_en  <= '0';
    twi_cg_en  <= '0';
    twi_irq    <= '0';
    twi_irq    <= '0';
  end generate;
  end generate;
 
 
 
 

powered by: WebSVN 2.1.0

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