Line 338... |
Line 338... |
|
|
-- 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 ext_timeout : std_ulogic;
|
signal ext_timeout : std_ulogic;
|
signal ext_access : std_ulogic;
|
signal ext_access : std_ulogic;
|
|
signal debug_mode : std_ulogic;
|
|
|
begin
|
begin
|
|
|
-- Processor IO/Peripherals Configuration -------------------------------------------------
|
-- Processor IO/Peripherals Configuration -------------------------------------------------
|
-- -------------------------------------------------------------------------------------------
|
-- -------------------------------------------------------------------------------------------
|
Line 490... |
Line 491... |
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 => open, -- cpu is in sleep mode when set
|
sleep_o => open, -- cpu is in sleep mode when set
|
|
debug_o => debug_mode, -- cpu is in debug 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 535... |
Line 537... |
-- advanced memory control --
|
-- advanced memory control --
|
fence_o <= cpu_d.fence; -- indicates an executed FENCE operation
|
fence_o <= cpu_d.fence; -- indicates an executed FENCE operation
|
fencei_o <= cpu_i.fence; -- indicates an executed FENCEI operation
|
fencei_o <= cpu_i.fence; -- indicates an executed FENCEI operation
|
|
|
-- fast interrupt requests (FIRQs) --
|
-- fast interrupt requests (FIRQs) --
|
-- these stay asserted until explicitly acknowledged --
|
-- these signals are single-shot --
|
fast_irq(00) <= wdt_irq; -- HIGHEST PRIORITY - watchdog
|
fast_irq(00) <= wdt_irq; -- HIGHEST PRIORITY - watchdog
|
fast_irq(01) <= cfs_irq; -- custom functions subsystem
|
fast_irq(01) <= cfs_irq; -- custom functions subsystem
|
fast_irq(02) <= uart0_rxd_irq; -- primary UART (UART0) RX
|
fast_irq(02) <= uart0_rxd_irq; -- primary UART (UART0) RX
|
fast_irq(03) <= uart0_txd_irq; -- primary UART (UART0) TX
|
fast_irq(03) <= uart0_txd_irq; -- primary UART (UART0) TX
|
fast_irq(04) <= uart1_rxd_irq; -- secondary UART (UART1) RX
|
fast_irq(04) <= uart1_rxd_irq; -- secondary UART (UART1) RX
|
Line 935... |
Line 937... |
-- Watch Dog Timer (WDT) ------------------------------------------------------------------
|
-- Watch Dog Timer (WDT) ------------------------------------------------------------------
|
-- -------------------------------------------------------------------------------------------
|
-- -------------------------------------------------------------------------------------------
|
neorv32_wdt_inst_true:
|
neorv32_wdt_inst_true:
|
if (IO_WDT_EN = true) generate
|
if (IO_WDT_EN = true) generate
|
neorv32_wdt_inst: neorv32_wdt
|
neorv32_wdt_inst: neorv32_wdt
|
|
generic map(
|
|
DEBUG_EN => ON_CHIP_DEBUGGER_EN -- CPU debug mode implemented?
|
|
)
|
port map (
|
port map (
|
-- host access --
|
-- host access --
|
clk_i => clk_i, -- global clock line
|
clk_i => clk_i, -- global clock line
|
rstn_i => ext_rstn, -- global reset line, low-active
|
rstn_i => ext_rstn, -- global reset line, low-active
|
rden_i => io_rden, -- read enable
|
rden_i => io_rden, -- read enable
|
wren_i => io_wren, -- write enable
|
wren_i => io_wren, -- write enable
|
addr_i => p_bus.addr, -- address
|
addr_i => p_bus.addr, -- address
|
data_i => p_bus.wdata, -- data in
|
data_i => p_bus.wdata, -- data in
|
data_o => resp_bus(RESP_WDT).rdata, -- data out
|
data_o => resp_bus(RESP_WDT).rdata, -- data out
|
ack_o => resp_bus(RESP_WDT).ack, -- transfer acknowledge
|
ack_o => resp_bus(RESP_WDT).ack, -- transfer acknowledge
|
|
-- CPU in debug mode? --
|
|
cpu_debug_i => debug_mode,
|
-- clock generator --
|
-- clock generator --
|
clkgen_en_o => wdt_cg_en, -- enable clock generator
|
clkgen_en_o => wdt_cg_en, -- enable clock generator
|
clkgen_i => clk_gen,
|
clkgen_i => clk_gen,
|
-- timeout event --
|
-- timeout event --
|
irq_o => wdt_irq, -- timeout IRQ
|
irq_o => wdt_irq, -- timeout IRQ
|