mirror of
https://github.com/stnolting/neorv32.git
synced 2025-04-24 06:07:52 -04:00
[rtl] add CUSTOM_ID generic
Can be used to set a user-defined identifier or to pass user-defined config flags. Can be retrived by SW from the SYSINFO memory.
This commit is contained in:
parent
d84f56c581
commit
c8ddb6a632
6 changed files with 25 additions and 8 deletions
|
@ -60,10 +60,13 @@ package neorv32_package is
|
|||
constant jtag_tap_idcode_partid_c : std_ulogic_vector(15 downto 0) := x"cafe"; -- part number
|
||||
constant jtag_tap_idcode_manid_c : std_ulogic_vector(10 downto 0) := "00000000000"; -- manufacturer id
|
||||
|
||||
-- chip vendor identifier --
|
||||
constant vendor_id_c : std_ulogic_vector(31 downto 0) := x"00000000"; -- no official vendor
|
||||
|
||||
-- Architecture Constants (do not modify!) ------------------------------------------------
|
||||
-- -------------------------------------------------------------------------------------------
|
||||
constant data_width_c : natural := 32; -- native data path width - do not change!
|
||||
constant hw_version_c : std_ulogic_vector(31 downto 0) := x"01070404"; -- NEORV32 version - no touchy!
|
||||
constant hw_version_c : std_ulogic_vector(31 downto 0) := x"01070405"; -- NEORV32 version - no touchy!
|
||||
constant archid_c : natural := 19; -- official RISC-V architecture ID - hands off!
|
||||
|
||||
-- Check if we're inside the Matrix -------------------------------------------------------
|
||||
|
@ -821,13 +824,14 @@ package neorv32_package is
|
|||
--constant trap_lpf_c : std_ulogic_vector(6 downto 0) := "0" & "0" & "01101"; -- 0.13: load page fault
|
||||
--constant trap_???_c : std_ulogic_vector(6 downto 0) := "0" & "0" & "01110"; -- 0.14: reserved
|
||||
--constant trap_spf_c : std_ulogic_vector(6 downto 0) := "0" & "0" & "01111"; -- 0.15: store page fault
|
||||
-- NEORV32-specific (custom) synchronous exceptions --
|
||||
-- NEORV32-specific (RISC-V custom) synchronous exceptions --
|
||||
-- none implemented yet
|
||||
-- RISC-V compliant asynchronous exceptions (interrupts) --
|
||||
--constant trap_und_c : std_ulogic_vector(6 downto 0) := "1" & "0" & "00000"; -- 1.0: undefined source
|
||||
constant trap_msi_c : std_ulogic_vector(6 downto 0) := "1" & "0" & "00011"; -- 1.3: machine software interrupt
|
||||
constant trap_mti_c : std_ulogic_vector(6 downto 0) := "1" & "0" & "00111"; -- 1.7: machine timer interrupt
|
||||
constant trap_mei_c : std_ulogic_vector(6 downto 0) := "1" & "0" & "01011"; -- 1.11: machine external interrupt
|
||||
-- NEORV32-specific (custom) asynchronous exceptions (interrupts) --
|
||||
-- NEORV32-specific (RISC-V custom) asynchronous exceptions (interrupts) --
|
||||
constant trap_firq0_c : std_ulogic_vector(6 downto 0) := "1" & "0" & "10000"; -- 1.16: fast interrupt 0
|
||||
constant trap_firq1_c : std_ulogic_vector(6 downto 0) := "1" & "0" & "10001"; -- 1.17: fast interrupt 1
|
||||
constant trap_firq2_c : std_ulogic_vector(6 downto 0) := "1" & "0" & "10010"; -- 1.18: fast interrupt 2
|
||||
|
@ -944,6 +948,7 @@ package neorv32_package is
|
|||
-- General --
|
||||
CLOCK_FREQUENCY : natural; -- clock frequency of clk_i in Hz
|
||||
HW_THREAD_ID : natural := 0; -- hardware thread id (32-bit)
|
||||
CUSTOM_ID : std_ulogic_vector(31 downto 0) := x"00000000"; -- custom user-defined ID
|
||||
INT_BOOTLOADER_EN : boolean := false; -- boot configuration: true = boot explicit bootloader; false = boot from int/ext (I)MEM
|
||||
-- On-Chip Debugger (OCD) --
|
||||
ON_CHIP_DEBUGGER_EN : boolean := false; -- implement on-chip debugger
|
||||
|
@ -2055,6 +2060,7 @@ package neorv32_package is
|
|||
generic (
|
||||
-- General --
|
||||
CLOCK_FREQUENCY : natural; -- clock frequency of clk_i in Hz
|
||||
CUSTOM_ID : std_ulogic_vector(31 downto 0) := x"00000000"; -- custom user-defined ID
|
||||
INT_BOOTLOADER_EN : boolean; -- boot configuration: true = boot explicit bootloader; false = boot from int/ext (I)MEM
|
||||
-- Physical memory protection (PMP) --
|
||||
PMP_NUM_REGIONS : natural; -- number of regions (0..16)
|
||||
|
|
|
@ -46,6 +46,7 @@ entity neorv32_sysinfo is
|
|||
generic (
|
||||
-- General --
|
||||
CLOCK_FREQUENCY : natural; -- clock frequency of clk_i in Hz
|
||||
CUSTOM_ID : std_ulogic_vector(31 downto 0) := x"00000000"; -- custom user-defined ID
|
||||
INT_BOOTLOADER_EN : boolean; -- boot configuration: true = boot explicit bootloader; false = boot from int/ext (I)MEM
|
||||
-- Physical memory protection (PMP) --
|
||||
PMP_NUM_REGIONS : natural; -- number of regions (0..64)
|
||||
|
@ -125,8 +126,8 @@ begin
|
|||
-- SYSINFO(0): Processor (primary) clock frequency --
|
||||
sysinfo_mem(0) <= std_ulogic_vector(to_unsigned(CLOCK_FREQUENCY, 32));
|
||||
|
||||
-- SYSINFO(1): reserved --
|
||||
sysinfo_mem(1) <= (others => '0'); -- reserved
|
||||
-- SYSINFO(1): Custom user-defined ID --
|
||||
sysinfo_mem(1) <= CUSTOM_ID;
|
||||
|
||||
-- SYSINFO(2): Implemented processor devices/features --
|
||||
-- Memory --
|
||||
|
|
|
@ -49,6 +49,7 @@ entity neorv32_top is
|
|||
-- General --
|
||||
CLOCK_FREQUENCY : natural; -- clock frequency of clk_i in Hz
|
||||
HW_THREAD_ID : natural := 0; -- hardware thread id (32-bit)
|
||||
CUSTOM_ID : std_ulogic_vector(31 downto 0) := x"00000000"; -- custom user-defined ID
|
||||
INT_BOOTLOADER_EN : boolean := false; -- boot configuration: true = boot explicit bootloader; false = boot from int/ext (I)MEM
|
||||
|
||||
-- On-Chip Debugger (OCD) --
|
||||
|
@ -1545,6 +1546,7 @@ begin
|
|||
generic map (
|
||||
-- General --
|
||||
CLOCK_FREQUENCY => CLOCK_FREQUENCY, -- clock frequency of clk_i in Hz
|
||||
CUSTOM_ID => CUSTOM_ID, -- custom user-defined ID
|
||||
INT_BOOTLOADER_EN => INT_BOOTLOADER_EN, -- implement processor-internal bootloader?
|
||||
-- Physical memory protection (PMP) --
|
||||
PMP_NUM_REGIONS => PMP_NUM_REGIONS, -- number of regions (0..16)
|
||||
|
|
|
@ -44,6 +44,7 @@ entity neorv32_ProcessorTop_stdlogic is
|
|||
-- General --
|
||||
CLOCK_FREQUENCY : natural := 0; -- clock frequency of clk_i in Hz
|
||||
INT_BOOTLOADER_EN : boolean := true; -- boot configuration: true = boot explicit bootloader; false = boot from int/ext (I)MEM
|
||||
CUSTOM_ID : std_logic_vector(31 downto 0) := x"00000000"; -- custom user-defined ID
|
||||
HW_THREAD_ID : natural := 0; -- hardware thread id (32-bit)
|
||||
-- On-Chip Debugger (OCD) --
|
||||
ON_CHIP_DEBUGGER_EN : boolean := false; -- implement on-chip debugger
|
||||
|
@ -202,6 +203,7 @@ end entity;
|
|||
architecture neorv32_ProcessorTop_stdlogic_rtl of neorv32_ProcessorTop_stdlogic is
|
||||
|
||||
-- type conversion --
|
||||
constant CUSTOM_ID_INT : std_ulogic_vector(31 downto 0) := std_ulogic_vector(CUSTOM_ID);
|
||||
constant IO_CFS_CONFIG_INT : std_ulogic_vector(31 downto 0) := std_ulogic_vector(IO_CFS_CONFIG);
|
||||
constant XIRQ_TRIGGER_TYPE_INT : std_ulogic_vector(31 downto 0) := std_ulogic_vector(XIRQ_TRIGGER_TYPE);
|
||||
constant XIRQ_TRIGGER_POLARITY_INT : std_ulogic_vector(31 downto 0) := std_ulogic_vector(XIRQ_TRIGGER_POLARITY);
|
||||
|
@ -285,8 +287,9 @@ begin
|
|||
generic map (
|
||||
-- General --
|
||||
CLOCK_FREQUENCY => CLOCK_FREQUENCY, -- clock frequency of clk_i in Hz
|
||||
INT_BOOTLOADER_EN => INT_BOOTLOADER_EN, -- boot configuration: true = boot explicit bootloader; false = boot from int/ext (I)MEM
|
||||
HW_THREAD_ID => HW_THREAD_ID, -- hardware thread id (hartid) (32-bit)
|
||||
CUSTOM_ID => CUSTOM_ID_INT, -- custom user-defined ID
|
||||
INT_BOOTLOADER_EN => INT_BOOTLOADER_EN, -- boot configuration: true = boot explicit bootloader; false = boot from int/ext (I)MEM
|
||||
-- On-Chip Debugger (OCD) --
|
||||
ON_CHIP_DEBUGGER_EN => ON_CHIP_DEBUGGER_EN, -- implement on-chip debugger
|
||||
-- RISC-V CPU Extensions --
|
||||
|
|
|
@ -47,6 +47,7 @@ entity neorv32_top_avalonmm is
|
|||
-- General --
|
||||
CLOCK_FREQUENCY : natural; -- clock frequency of clk_i in Hz
|
||||
HW_THREAD_ID : natural := 0; -- hardware thread id (32-bit)
|
||||
CUSTOM_ID : std_ulogic_vector(31 downto 0) := x"00000000"; -- custom user-defined ID
|
||||
INT_BOOTLOADER_EN : boolean := false; -- boot configuration: true = boot explicit bootloader; false = boot from int/ext (I)MEM
|
||||
|
||||
-- On-Chip Debugger (OCD) --
|
||||
|
@ -243,6 +244,7 @@ begin
|
|||
-- General --
|
||||
CLOCK_FREQUENCY => CLOCK_FREQUENCY,
|
||||
HW_THREAD_ID => HW_THREAD_ID,
|
||||
CUSTOM_ID => CUSTOM_ID,
|
||||
INT_BOOTLOADER_EN => INT_BOOTLOADER_EN,
|
||||
|
||||
-- On-Chip Debugger (OCD) --
|
||||
|
|
|
@ -49,8 +49,9 @@ entity neorv32_SystemTop_axi4lite is
|
|||
-- ------------------------------------------------------------
|
||||
-- General --
|
||||
CLOCK_FREQUENCY : natural := 0; -- clock frequency of clk_i in Hz
|
||||
INT_BOOTLOADER_EN : boolean := true; -- boot configuration: true = boot explicit bootloader; false = boot from int/ext (I)MEM
|
||||
HW_THREAD_ID : natural := 0; -- hardware thread id (32-bit)
|
||||
CUSTOM_ID : std_logic_vector(31 downto 0) := x"00000000"; -- custom user-defined ID
|
||||
INT_BOOTLOADER_EN : boolean := true; -- boot configuration: true = boot explicit bootloader; false = boot from int/ext (I)MEM
|
||||
-- On-Chip Debugger (OCD) --
|
||||
ON_CHIP_DEBUGGER_EN : boolean := false; -- implement on-chip debugger
|
||||
-- RISC-V CPU Extensions --
|
||||
|
@ -201,6 +202,7 @@ end entity;
|
|||
architecture neorv32_SystemTop_axi4lite_rtl of neorv32_SystemTop_axi4lite is
|
||||
|
||||
-- type conversion --
|
||||
constant CUSTOM_ID_INT : std_ulogic_vector(31 downto 0) := std_ulogic_vector(CUSTOM_ID);
|
||||
constant IO_CFS_CONFIG_INT : std_ulogic_vector(31 downto 0) := std_ulogic_vector(IO_CFS_CONFIG);
|
||||
constant XIRQ_TRIGGER_TYPE_INT : std_ulogic_vector(31 downto 0) := std_ulogic_vector(XIRQ_TRIGGER_TYPE);
|
||||
constant XIRQ_TRIGGER_POLARITY_INT : std_ulogic_vector(31 downto 0) := std_ulogic_vector(XIRQ_TRIGGER_POLARITY);
|
||||
|
@ -283,8 +285,9 @@ begin
|
|||
generic map (
|
||||
-- General --
|
||||
CLOCK_FREQUENCY => CLOCK_FREQUENCY, -- clock frequency of clk_i in Hz
|
||||
INT_BOOTLOADER_EN => INT_BOOTLOADER_EN, -- boot configuration: true = boot explicit bootloader; false = boot from int/ext (I)MEM
|
||||
HW_THREAD_ID => HW_THREAD_ID, -- hardware thread id (hartid)
|
||||
CUSTOM_ID => CUSTOM_ID_INT, -- custom user-defined ID
|
||||
INT_BOOTLOADER_EN => INT_BOOTLOADER_EN, -- boot configuration: true = boot explicit bootloader; false = boot from int/ext (I)MEM
|
||||
-- On-Chip Debugger (OCD) --
|
||||
ON_CHIP_DEBUGGER_EN => ON_CHIP_DEBUGGER_EN, -- implement on-chip debugger
|
||||
-- RISC-V CPU Extensions --
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue