Line 64... |
Line 64... |
clkgen_i : in std_ulogic_vector(07 downto 0); -- "clock" inputs
|
clkgen_i : in std_ulogic_vector(07 downto 0); -- "clock" inputs
|
-- CPU state --
|
-- CPU state --
|
sleep_i : in std_ulogic; -- set if cpu is in sleep mode
|
sleep_i : in std_ulogic; -- set if cpu is in sleep mode
|
-- interrupt --
|
-- interrupt --
|
irq_o : out std_ulogic; -- interrupt request
|
irq_o : out std_ulogic; -- interrupt request
|
irq_ack_i : in std_ulogic; -- interrupt acknowledge
|
|
-- custom io (conduits) --
|
-- custom io (conduits) --
|
cfs_in_i : in std_ulogic_vector(CFS_IN_SIZE-1 downto 0); -- custom inputs
|
cfs_in_i : in std_ulogic_vector(CFS_IN_SIZE-1 downto 0); -- custom inputs
|
cfs_out_o : out std_ulogic_vector(CFS_OUT_SIZE-1 downto 0) -- custom outputs
|
cfs_out_o : out std_ulogic_vector(CFS_OUT_SIZE-1 downto 0) -- custom outputs
|
);
|
);
|
end neorv32_cfs;
|
end neorv32_cfs;
|
Line 155... |
Line 154... |
-- end if;
|
-- end if;
|
-- end if;
|
-- end if;
|
--
|
--
|
-- The clkgen_i input clocks are available when at least one IO/peripheral device (for example the UART) requires the clocks generated by the
|
-- The clkgen_i input clocks are available when at least one IO/peripheral device (for example the UART) requires the clocks generated by the
|
-- clock generator. The CFS can enable the clock generator by itself by setting the clkgen_en_o signal high.
|
-- clock generator. The CFS can enable the clock generator by itself by setting the clkgen_en_o signal high.
|
-- The CFS cannot ensure to deactive the clock generator by setting the clkgen_en_o signal low as other peripherals might still keep the generator activated.
|
-- The CFS cannot ensure to deactivate the clock generator by setting the clkgen_en_o signal low as other peripherals might still keep the generator activated.
|
-- Make sure to deactivate the CFS's clkgen_en_o if no clocks are required in here to reduce dynamic power consumption.
|
-- Make sure to deactivate the CFS's clkgen_en_o if no clocks are required in here to reduce dynamic power consumption.
|
|
|
clkgen_en_o <= '0'; -- not used for this minimal example
|
clkgen_en_o <= '0'; -- not used for this minimal example
|
|
|
|
|
Line 188... |
Line 187... |
-- modules of the NEORV32 can only be written in full word mode (32-bit). Any other write access (half-word or byte)
|
-- modules of the NEORV32 can only be written in full word mode (32-bit). Any other write access (half-word or byte)
|
-- will trigger a store bus access fault exception.
|
-- will trigger a store bus access fault exception.
|
--
|
--
|
-- The CFS provides up to 32 memory-mapped 32-bit interface register. For instance, these could be used to provide
|
-- The CFS provides up to 32 memory-mapped 32-bit interface register. For instance, these could be used to provide
|
-- a <control register> for global control of the unit, a <data register> for reading/writing from/to a data FIFO, a <command register>
|
-- a <control register> for global control of the unit, a <data register> for reading/writing from/to a data FIFO, a <command register>
|
-- for issueing commands and a <status register> for status information.
|
-- for issuing commands and a <status register> for status information.
|
--
|
--
|
-- Following the interface protocol, each read or write access has to be acknowledged in the following cycle using the ack_o signal (or even later
|
-- Following the interface protocol, each read or write access has to be acknowledged in the following cycle using the ack_o signal (or even later
|
-- if the module needs additional time; the maximumx latency until an unacknwoledged access will trigger a bus exception is defined via the package's
|
-- if the module needs additional time; the maximum latency until an unacknowledged access will trigger a bus exception is defined via the package's
|
-- gloabl "bus_timeout_c" constant). If no ACK is generated, the bus access will time out and cause a store bus access fault exception.
|
-- global "bus_timeout_c" constant). If no ACK is generated, the bus access will time out and cause a store bus access fault exception.
|
|
|
-- Host access: Read and write access to the interface registers + bus transfer acknowledge.
|
-- Host access: Read and write access to the interface registers + bus transfer acknowledge.
|
-- This example only implements four physical r/w register (the four lowest CF register). The remaining addresses of the CFS are not
|
-- This example only implements four physical r/w register (the four lowest CF register). The remaining addresses of the CFS are not
|
-- associated with any writable or readable register - an access to those is simply ignored but still acknowledged.
|
-- associated with any writable or readable register - an access to those is simply ignored but still acknowledged.
|
|
|