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

Subversion Repositories neorv32

[/] [neorv32/] [trunk/] [rtl/] [core/] [neorv32_cpu.vhd] - Diff between revs 11 and 12

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

Rev 11 Rev 12
Line 1... Line 1...
-- #################################################################################################
-- #################################################################################################
-- # << NEORV32 - CPU Top Entity >>                                                                #
-- # << NEORV32 - CPU Top Entity >>                                                                #
-- # ********************************************************************************************* #
-- # ********************************************************************************************* #
-- # Top NEORV32 CPU:                                                                              #
-- # Top NEORV32 CPU:                                                                              #
-- # * neorv32_cpu_alu: Arithemtical/logical unit                                                  #
-- # * neorv32_cpu_alu: Arithemtic/logic unit                                                      #
-- # * neorv32_cpu_ctrl: CPU control and CSR system                                                #
-- # * neorv32_cpu_ctrl: CPU control and CSR system                                                #
-- #   * neorv32_cpu_decompressor: Compressed instructions decoder                                 #
-- #   * neorv32_cpu_decompressor: Compressed instructions decoder                                 #
-- # * neorv32_cpu_bus: Memory/IO bus interface unit                                               #
-- # * neorv32_cpu_bus: Instruction and data bus interface unit                                    #
-- # * neorv32_cpu_cp_muldiv: MULDIV co-processor                                                  #
-- # * neorv32_cpu_cp_muldiv: MULDIV co-processor                                                  #
-- # * neorv32_cpu_regfile: Data register file                                                     #
-- # * neorv32_cpu_regfile: Data register file                                                     #
-- # ********************************************************************************************* #
-- # ********************************************************************************************* #
-- # BSD 3-Clause License                                                                          #
-- # BSD 3-Clause License                                                                          #
-- #                                                                                               #
-- #                                                                                               #
Line 48... Line 48...
use neorv32.neorv32_package.all;
use neorv32.neorv32_package.all;
 
 
entity neorv32_cpu is
entity neorv32_cpu is
  generic (
  generic (
    -- General --
    -- General --
    CLOCK_FREQUENCY              : natural := 0; -- clock frequency of clk_i in Hz
 
    HART_ID                      : std_ulogic_vector(31 downto 0) := x"00000000"; -- custom hardware thread ID
 
    BOOTLOADER_USE               : boolean := true;   -- implement processor-internal bootloader?
 
    CSR_COUNTERS_USE             : boolean := true;   -- implement RISC-V perf. counters ([m]instret[h], [m]cycle[h], time[h])?
    CSR_COUNTERS_USE             : boolean := true;   -- implement RISC-V perf. counters ([m]instret[h], [m]cycle[h], time[h])?
 
    HW_THREAD_ID                 : std_ulogic_vector(31 downto 0):= x"00000000"; -- hardware thread id
 
    CPU_BOOT_ADDR                : std_ulogic_vector(31 downto 0):= x"00000000"; -- cpu boot address
    -- RISC-V CPU Extensions --
    -- RISC-V CPU Extensions --
    CPU_EXTENSION_RISCV_C        : boolean := false;  -- implement compressed extension?
    CPU_EXTENSION_RISCV_C        : boolean := false;  -- implement compressed extension?
    CPU_EXTENSION_RISCV_E        : boolean := false;  -- implement embedded RF extension?
    CPU_EXTENSION_RISCV_E        : boolean := false;  -- implement embedded RF extension?
    CPU_EXTENSION_RISCV_M        : boolean := false;  -- implement muld/div extension?
    CPU_EXTENSION_RISCV_M        : boolean := false;  -- implement muld/div extension?
    CPU_EXTENSION_RISCV_Zicsr    : boolean := true;   -- implement CSR system?
    CPU_EXTENSION_RISCV_Zicsr    : boolean := true;   -- implement CSR system?
    CPU_EXTENSION_RISCV_Zifencei : boolean := true;   -- implement instruction stream sync.?
    CPU_EXTENSION_RISCV_Zifencei : boolean := true;   -- implement instruction stream sync.?
    -- Memory configuration: Instruction memory --
 
    MEM_ISPACE_BASE              : std_ulogic_vector(31 downto 0) := x"00000000"; -- base address of instruction memory space
 
    MEM_ISPACE_SIZE              : natural := 8*1024; -- total size of instruction memory space in byte
 
    MEM_INT_IMEM_USE             : boolean := true;   -- implement processor-internal instruction memory
 
    MEM_INT_IMEM_SIZE            : natural := 8*1024; -- size of processor-internal instruction memory in bytes
 
    MEM_INT_IMEM_ROM             : boolean := false;  -- implement processor-internal instruction memory as ROM
 
    -- Memory configuration: Data memory --
 
    MEM_DSPACE_BASE              : std_ulogic_vector(31 downto 0) := x"80000000"; -- base address of data memory space
 
    MEM_DSPACE_SIZE              : natural := 4*1024; -- total size of data memory space in byte
 
    MEM_INT_DMEM_USE             : boolean := true;   -- implement processor-internal data memory
 
    MEM_INT_DMEM_SIZE            : natural := 4*1024; -- size of processor-internal data memory in bytes
 
    -- Memory configuration: External memory interface --
    -- Memory configuration: External memory interface --
    MEM_EXT_USE                  : boolean := false;  -- implement external memory bus interface?
    MEM_EXT_TIMEOUT              : natural := 15     -- cycles after which a valid bus access will timeout
    MEM_EXT_TIMEOUT              : natural := 15;     -- cycles after which a valid bus access will timeout
 
    -- Processor peripherals --
 
    IO_GPIO_USE                  : boolean := true;   -- implement general purpose input/output port unit (GPIO)?
 
    IO_MTIME_USE                 : boolean := true;   -- implement machine system timer (MTIME)?
 
    IO_UART_USE                  : boolean := true;   -- implement universal asynchronous receiver/transmitter (UART)?
 
    IO_SPI_USE                   : boolean := true;   -- implement serial peripheral interface (SPI)?
 
    IO_TWI_USE                   : boolean := true;   -- implement two-wire interface (TWI)?
 
    IO_PWM_USE                   : boolean := true;   -- implement pulse-width modulation unit (PWM)?
 
    IO_WDT_USE                   : boolean := true;   -- implement watch dog timer (WDT)?
 
    IO_CLIC_USE                  : boolean := true;   -- implement core local interrupt controller (CLIC)?
 
    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
    -- bus interface --
    -- instruction bus interface --
    bus_addr_o   : out std_ulogic_vector(data_width_c-1 downto 0); -- bus access address
    i_bus_addr_o   : out std_ulogic_vector(data_width_c-1 downto 0); -- bus access address
    bus_rdata_i  : in  std_ulogic_vector(data_width_c-1 downto 0); -- bus read data
    i_bus_rdata_i  : in  std_ulogic_vector(data_width_c-1 downto 0); -- bus read data
    bus_wdata_o  : out std_ulogic_vector(data_width_c-1 downto 0); -- bus write data
    i_bus_wdata_o  : out std_ulogic_vector(data_width_c-1 downto 0); -- bus write data
    bus_ben_o    : out std_ulogic_vector(03 downto 0); -- byte enable
    i_bus_ben_o    : out std_ulogic_vector(03 downto 0); -- byte enable
    bus_we_o     : out std_ulogic; -- write enable
    i_bus_we_o     : out std_ulogic; -- write enable
    bus_re_o     : out std_ulogic; -- read enable
    i_bus_re_o     : out std_ulogic; -- read enable
    bus_cancel_o : out std_ulogic; -- cancel current bus transaction
    i_bus_cancel_o : out std_ulogic; -- cancel current bus transaction
    bus_ack_i    : in  std_ulogic; -- bus transfer acknowledge
    i_bus_ack_i    : in  std_ulogic; -- bus transfer acknowledge
    bus_err_i    : in  std_ulogic; -- bus transfer error
    i_bus_err_i    : in  std_ulogic; -- bus transfer error
 
    i_bus_fence_o  : out std_ulogic; -- executed FENCEI operation
 
    -- data bus interface --
 
    d_bus_addr_o   : out std_ulogic_vector(data_width_c-1 downto 0); -- bus access address
 
    d_bus_rdata_i  : in  std_ulogic_vector(data_width_c-1 downto 0); -- bus read data
 
    d_bus_wdata_o  : out std_ulogic_vector(data_width_c-1 downto 0); -- bus write data
 
    d_bus_ben_o    : out std_ulogic_vector(03 downto 0); -- byte enable
 
    d_bus_we_o     : out std_ulogic; -- write enable
 
    d_bus_re_o     : out std_ulogic; -- read enable
 
    d_bus_cancel_o : out std_ulogic; -- cancel current bus transaction
 
    d_bus_ack_i    : in  std_ulogic; -- bus transfer acknowledge
 
    d_bus_err_i    : in  std_ulogic; -- bus transfer error
 
    d_bus_fence_o  : out std_ulogic; -- executed FENCE operation
    -- system time input from MTIME --
    -- system time input from MTIME --
    time_i       : in  std_ulogic_vector(63 downto 0); -- current system time
    time_i       : in  std_ulogic_vector(63 downto 0); -- current system time
    -- external interrupts --
    -- external interrupts --
 
    msw_irq_i      : in  std_ulogic; -- software interrupt
    clic_irq_i   : in  std_ulogic; -- CLIC interrupt request
    clic_irq_i   : in  std_ulogic; -- CLIC interrupt request
    mtime_irq_i  : in  std_ulogic  -- machine timer interrupt
    mtime_irq_i  : in  std_ulogic  -- machine timer interrupt
  );
  );
end neorv32_cpu;
end neorv32_cpu;
 
 
Line 118... Line 107...
  signal rs1, rs2    : std_ulogic_vector(data_width_c-1 downto 0); -- source registers
  signal rs1, rs2    : std_ulogic_vector(data_width_c-1 downto 0); -- source registers
  signal alu_res     : std_ulogic_vector(data_width_c-1 downto 0); -- alu result
  signal alu_res     : std_ulogic_vector(data_width_c-1 downto 0); -- alu result
  signal alu_add     : std_ulogic_vector(data_width_c-1 downto 0); -- alu adder result
  signal alu_add     : std_ulogic_vector(data_width_c-1 downto 0); -- alu adder result
  signal rdata       : std_ulogic_vector(data_width_c-1 downto 0); -- memory read data
  signal rdata       : std_ulogic_vector(data_width_c-1 downto 0); -- memory read data
  signal alu_wait    : std_ulogic; -- alu is busy due to iterative unit
  signal alu_wait    : std_ulogic; -- alu is busy due to iterative unit
  signal bus_wait    : std_ulogic; -- wait for bus to finish operation
  signal bus_i_wait : std_ulogic; -- wait for current bus instruction fetch
 
  signal bus_d_wait : std_ulogic; -- wait for current bus data access
  signal csr_rdata   : std_ulogic_vector(data_width_c-1 downto 0); -- csr read data
  signal csr_rdata   : std_ulogic_vector(data_width_c-1 downto 0); -- csr read data
  signal mar         : std_ulogic_vector(data_width_c-1 downto 0); -- current memory address register
  signal mar         : std_ulogic_vector(data_width_c-1 downto 0); -- current memory address register
  signal ma_instr    : std_ulogic; -- misaligned instruction address
  signal ma_instr    : std_ulogic; -- misaligned instruction address
  signal ma_load     : std_ulogic; -- misaligned load data address
  signal ma_load     : std_ulogic; -- misaligned load data address
  signal ma_store    : std_ulogic; -- misaligned store data address
  signal ma_store    : std_ulogic; -- misaligned store data address
  signal be_instr    : std_ulogic; -- bus error on instruction access
  signal be_instr    : std_ulogic; -- bus error on instruction access
  signal be_load     : std_ulogic; -- bus error on load data access
  signal be_load     : std_ulogic; -- bus error on load data access
  signal be_store    : std_ulogic; -- bus error on store data access
  signal be_store    : std_ulogic; -- bus error on store data access
  signal bus_busy    : std_ulogic; -- bus unit is busy
 
  signal fetch_pc    : std_ulogic_vector(data_width_c-1 downto 0); -- pc for instruction fetch
  signal fetch_pc    : std_ulogic_vector(data_width_c-1 downto 0); -- pc for instruction fetch
  signal curr_pc     : std_ulogic_vector(data_width_c-1 downto 0); -- current pc (for current executed instruction)
  signal curr_pc     : std_ulogic_vector(data_width_c-1 downto 0); -- current pc (for current executed instruction)
  signal next_pc     : std_ulogic_vector(data_width_c-1 downto 0); -- next pc (for current executed instruction)
  signal next_pc     : std_ulogic_vector(data_width_c-1 downto 0); -- next pc (for current executed instruction)
 
 
  -- co-processor interface --
  -- co-processor interface --
Line 143... Line 132...
  -- Control Unit ---------------------------------------------------------------------------
  -- Control Unit ---------------------------------------------------------------------------
  -- -------------------------------------------------------------------------------------------
  -- -------------------------------------------------------------------------------------------
  neorv32_cpu_control_inst: neorv32_cpu_control
  neorv32_cpu_control_inst: neorv32_cpu_control
  generic map (
  generic map (
    -- General --
    -- General --
    CLOCK_FREQUENCY              => CLOCK_FREQUENCY,  -- clock frequency of clk_i in Hz
 
    HART_ID                      => HART_ID,          -- custom hardware thread ID
 
    BOOTLOADER_USE               => BOOTLOADER_USE,   -- implement processor-internal bootloader?
 
    CSR_COUNTERS_USE             => CSR_COUNTERS_USE, -- implement RISC-V perf. counters ([m]instret[h], [m]cycle[h], time[h])?
    CSR_COUNTERS_USE             => CSR_COUNTERS_USE, -- implement RISC-V perf. counters ([m]instret[h], [m]cycle[h], time[h])?
 
    HW_THREAD_ID                 => HW_THREAD_ID,     -- hardware thread id
 
    CPU_BOOT_ADDR                => CPU_BOOT_ADDR,    -- cpu boot address
    -- RISC-V CPU Extensions --
    -- RISC-V CPU Extensions --
    CPU_EXTENSION_RISCV_C        => CPU_EXTENSION_RISCV_C,     -- implement compressed extension?
    CPU_EXTENSION_RISCV_C        => CPU_EXTENSION_RISCV_C,     -- implement compressed extension?
    CPU_EXTENSION_RISCV_E        => CPU_EXTENSION_RISCV_E,     -- implement embedded RF extension?
    CPU_EXTENSION_RISCV_E        => CPU_EXTENSION_RISCV_E,     -- implement embedded RF extension?
    CPU_EXTENSION_RISCV_M        => CPU_EXTENSION_RISCV_M,     -- implement muld/div extension?
    CPU_EXTENSION_RISCV_M        => CPU_EXTENSION_RISCV_M,     -- implement muld/div extension?
    CPU_EXTENSION_RISCV_Zicsr    => CPU_EXTENSION_RISCV_Zicsr, -- implement CSR system?
    CPU_EXTENSION_RISCV_Zicsr    => CPU_EXTENSION_RISCV_Zicsr, -- implement CSR system?
    CPU_EXTENSION_RISCV_Zifencei => CPU_EXTENSION_RISCV_Zifencei, -- implement instruction stream sync.?
    CPU_EXTENSION_RISCV_Zifencei => CPU_EXTENSION_RISCV_Zifencei -- implement instruction stream sync.?
    -- Memory configuration: Instruction memory --
 
    MEM_ISPACE_BASE              => MEM_ISPACE_BASE,   -- base address of instruction memory space
 
    MEM_ISPACE_SIZE              => MEM_ISPACE_SIZE,   -- total size of instruction memory space in byte
 
    MEM_INT_IMEM_USE             => MEM_INT_IMEM_USE,  -- implement processor-internal instruction memory
 
    MEM_INT_IMEM_SIZE            => MEM_INT_IMEM_SIZE, -- size of processor-internal instruction memory in bytes
 
    MEM_INT_IMEM_ROM             => MEM_INT_IMEM_ROM,  -- implement processor-internal instruction memory as ROM
 
    -- Memory configuration: Data memory --
 
    MEM_DSPACE_BASE              => MEM_DSPACE_BASE,   -- base address of data memory space
 
    MEM_DSPACE_SIZE              => MEM_DSPACE_SIZE,   -- total size of data memory space in byte
 
    MEM_INT_DMEM_USE             => MEM_INT_DMEM_USE,  -- implement processor-internal data memory
 
    MEM_INT_DMEM_SIZE            => MEM_INT_DMEM_SIZE, -- size of processor-internal data memory in bytes
 
    -- Memory configuration: External memory interface --
 
    MEM_EXT_USE                  => MEM_EXT_USE,       -- implement external memory bus interface?
 
    -- Processor peripherals --
 
    IO_GPIO_USE                  => IO_GPIO_USE,       -- implement general purpose input/output port unit (GPIO)?
 
    IO_MTIME_USE                 => IO_MTIME_USE,      -- implement machine system timer (MTIME)?
 
    IO_UART_USE                  => IO_UART_USE,       -- implement universal asynchronous receiver/transmitter (UART)?
 
    IO_SPI_USE                   => IO_SPI_USE,        -- implement serial peripheral interface (SPI)?
 
    IO_TWI_USE                   => IO_TWI_USE,        -- implement two-wire interface (TWI)?
 
    IO_PWM_USE                   => IO_PWM_USE,        -- implement pulse-width modulation unit (PWM)?
 
    IO_WDT_USE                   => IO_WDT_USE,        -- implement watch dog timer (WDT)?
 
    IO_CLIC_USE                  => IO_CLIC_USE,       -- implement core local interrupt controller (CLIC)?
 
    IO_TRNG_USE                  => IO_TRNG_USE,       -- implement true random number generator (TRNG)?
 
    IO_DEVNULL_USE               => IO_DEVNULL_USE     -- implement dummy device (DEVNULL)?
 
  )
  )
  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        => rstn_i,      -- global reset, low-active, async
    rstn_i        => rstn_i,      -- global reset, low-active, async
    ctrl_o        => ctrl,        -- main control bus
    ctrl_o        => ctrl,        -- main control bus
    -- status input --
    -- status input --
    alu_wait_i    => alu_wait,    -- wait for ALU
    alu_wait_i    => alu_wait,    -- wait for ALU
    bus_wait_i    => bus_wait,    -- wait for bus
    bus_i_wait_i  => bus_i_wait,  -- wait for bus
 
    bus_d_wait_i  => bus_d_wait,  -- wait for bus
    -- data input --
    -- data input --
    instr_i       => instr,       -- instruction
    instr_i       => instr,       -- instruction
    cmp_i         => alu_cmp,     -- comparator status
    cmp_i         => alu_cmp,     -- comparator status
    alu_add_i     => alu_add,     -- ALU.add result
    alu_add_i     => alu_add,     -- ALU.add result
    -- data output --
    -- data output --
Line 199... Line 164...
    next_pc_o     => next_pc,     -- next PC (corresponding to current instruction)
    next_pc_o     => next_pc,     -- next PC (corresponding to current instruction)
    -- csr interface --
    -- csr interface --
    csr_wdata_i   => alu_res,     -- CSR write data
    csr_wdata_i   => alu_res,     -- CSR write data
    csr_rdata_o   => csr_rdata,   -- CSR read data
    csr_rdata_o   => csr_rdata,   -- CSR read data
    -- external interrupt --
    -- external interrupt --
 
    msw_irq_i     => msw_irq_i,   -- software interrupt
    clic_irq_i    => clic_irq_i,  -- CLIC interrupt request
    clic_irq_i    => clic_irq_i,  -- CLIC interrupt request
    mtime_irq_i   => mtime_irq_i, -- machine timer interrupt
    mtime_irq_i   => mtime_irq_i, -- machine timer interrupt
    -- system time input from MTIME --
    -- system time input from MTIME --
    time_i        => time_i,      -- current system time
    time_i        => time_i,      -- current system time
    -- bus access exceptions --
    -- bus access exceptions --
Line 210... Line 176...
    ma_instr_i    => ma_instr,    -- misaligned instruction address
    ma_instr_i    => ma_instr,    -- misaligned instruction address
    ma_load_i     => ma_load,     -- misaligned load data address
    ma_load_i     => ma_load,     -- misaligned load data address
    ma_store_i    => ma_store,    -- misaligned store data address
    ma_store_i    => ma_store,    -- misaligned store data address
    be_instr_i    => be_instr,    -- bus error on instruction access
    be_instr_i    => be_instr,    -- bus error on instruction access
    be_load_i     => be_load,     -- bus error on load data access
    be_load_i     => be_load,     -- bus error on load data access
    be_store_i    => be_store,    -- bus error on store data access
    be_store_i    => be_store     -- bus error on store data access
    bus_busy_i    => bus_busy     -- bus unit is busy
 
  );
  );
 
 
 
 
  -- Register File --------------------------------------------------------------------------
  -- Register File --------------------------------------------------------------------------
  -- -------------------------------------------------------------------------------------------
  -- -------------------------------------------------------------------------------------------
Line 299... Line 264...
  -- -------------------------------------------------------------------------------------------
  -- -------------------------------------------------------------------------------------------
  cp1_data  <= (others => '0');
  cp1_data  <= (others => '0');
  cp1_valid <= '0';
  cp1_valid <= '0';
 
 
 
 
  -- Bus Unit -------------------------------------------------------------------------------
  -- Bus Interface Unit ---------------------------------------------------------------------
  -- -------------------------------------------------------------------------------------------
  -- -------------------------------------------------------------------------------------------
  neorv32_cpu_bus_inst: neorv32_cpu_bus
  neorv32_cpu_bus_inst: neorv32_cpu_bus
  generic map (
  generic map (
    CPU_EXTENSION_RISCV_C => CPU_EXTENSION_RISCV_C, -- implement compressed extension?
    CPU_EXTENSION_RISCV_C => CPU_EXTENSION_RISCV_C, -- implement compressed extension?
    MEM_EXT_TIMEOUT       => MEM_EXT_TIMEOUT -- cycles after which a valid bus access will timeout
    MEM_EXT_TIMEOUT       => MEM_EXT_TIMEOUT -- cycles after which a valid bus access will timeout
Line 311... Line 276...
  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       => rstn_i,        -- global reset, low-active, async
    rstn_i       => rstn_i,        -- global reset, low-active, async
    ctrl_i       => ctrl,          -- main control bus
    ctrl_i       => ctrl,          -- main control bus
    -- data input --
    -- cpu instruction fetch interface --
    wdata_i      => rs2,           -- write data
    fetch_pc_i     => fetch_pc,       -- PC for instruction fetch
    pc_i         => fetch_pc,      -- current PC for instruction fetch
 
    alu_i        => alu_res,       -- ALU result
 
    -- data output --
 
    instr_o      => instr,         -- instruction
    instr_o      => instr,         -- instruction
 
    i_wait_o       => bus_i_wait,     -- wait for fetch to complete
 
    --
 
    ma_instr_o     => ma_instr,       -- misaligned instruction address
 
    be_instr_o     => be_instr,       -- bus error on instruction access
 
    -- cpu data access interface --
 
    addr_i         => alu_add,        -- ALU.add result -> access address
 
    wdata_i        => rs2,            -- write data
    rdata_o      => rdata,         -- read data
    rdata_o      => rdata,         -- read data
    -- status --
 
    mar_o        => mar,           -- current memory address register
    mar_o        => mar,           -- current memory address register
    ma_instr_o   => ma_instr,      -- misaligned instruction address
    d_wait_o       => bus_d_wait,     -- wait for access to complete
 
    --
    ma_load_o    => ma_load,       -- misaligned load data address
    ma_load_o    => ma_load,       -- misaligned load data address
    ma_store_o   => ma_store,      -- misaligned store data address
    ma_store_o   => ma_store,      -- misaligned store data address
    be_instr_o   => be_instr,      -- bus error on instruction access
 
    be_load_o    => be_load,       -- bus error on load data access
    be_load_o    => be_load,       -- bus error on load data access
    be_store_o   => be_store,      -- bus error on store data access
    be_store_o   => be_store,      -- bus error on store data access
    bus_wait_o   => bus_wait,      -- wait for bus operation to finish
    -- instruction bus --
    bus_busy_o   => bus_busy,      -- bus unit is busy
    i_bus_addr_o   => i_bus_addr_o,   -- bus access address
    -- bus system --
    i_bus_rdata_i  => i_bus_rdata_i,  -- bus read data
    bus_addr_o   => bus_addr_o,    -- bus access address
    i_bus_wdata_o  => i_bus_wdata_o,  -- bus write data
    bus_rdata_i  => bus_rdata_i,   -- bus read data
    i_bus_ben_o    => i_bus_ben_o,    -- byte enable
    bus_wdata_o  => bus_wdata_o,   -- bus write data
    i_bus_we_o     => i_bus_we_o,     -- write enable
    bus_ben_o    => bus_ben_o,     -- byte enable
    i_bus_re_o     => i_bus_re_o,     -- read enable
    bus_we_o     => bus_we_o,      -- write enable
    i_bus_cancel_o => i_bus_cancel_o, -- cancel current bus transaction
    bus_re_o     => bus_re_o,      -- read enable
    i_bus_ack_i    => i_bus_ack_i,    -- bus transfer acknowledge
    bus_cancel_o => bus_cancel_o,  -- cancel current bus transaction
    i_bus_err_i    => i_bus_err_i,    -- bus transfer error
    bus_ack_i    => bus_ack_i,     -- bus transfer acknowledge
    i_bus_fence_o  => i_bus_fence_o,  -- fence operation
    bus_err_i    => bus_err_i      -- bus transfer error
    -- data bus --
 
    d_bus_addr_o   => d_bus_addr_o,   -- bus access address
 
    d_bus_rdata_i  => d_bus_rdata_i,  -- bus read data
 
    d_bus_wdata_o  => d_bus_wdata_o,  -- bus write data
 
    d_bus_ben_o    => d_bus_ben_o,    -- byte enable
 
    d_bus_we_o     => d_bus_we_o,     -- write enable
 
    d_bus_re_o     => d_bus_re_o,     -- read enable
 
    d_bus_cancel_o => d_bus_cancel_o, -- cancel current bus transaction
 
    d_bus_ack_i    => d_bus_ack_i,    -- bus transfer acknowledge
 
    d_bus_err_i    => d_bus_err_i,    -- bus transfer error
 
    d_bus_fence_o  => d_bus_fence_o   -- fence operation
  );
  );
 
 
 
 
end neorv32_cpu_rtl;
end neorv32_cpu_rtl;
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

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