Line 102... |
Line 102... |
|
|
-- access control --
|
-- access control --
|
signal acc_en : std_ulogic; -- module access enable
|
signal acc_en : std_ulogic; -- module access enable
|
signal rden : std_ulogic;
|
signal rden : std_ulogic;
|
signal wren : std_ulogic;
|
signal wren : std_ulogic;
|
signal iaddr : std_ulogic_vector(02 downto 0);
|
signal addr : std_ulogic_vector(2 downto 0);
|
|
|
-- system information ROM --
|
-- system information ROM --
|
type info_mem_t is array (0 to 7) of std_ulogic_vector(31 downto 0);
|
type info_mem_t is array (0 to 7) of std_ulogic_vector(31 downto 0);
|
signal sysinfo_mem : info_mem_t;
|
signal sysinfo_mem : info_mem_t;
|
|
|
Line 115... |
Line 115... |
-- Access Control -------------------------------------------------------------------------
|
-- Access Control -------------------------------------------------------------------------
|
-- -------------------------------------------------------------------------------------------
|
-- -------------------------------------------------------------------------------------------
|
acc_en <= '1' when (addr_i(hi_abb_c downto lo_abb_c) = sysinfo_base_c(hi_abb_c downto lo_abb_c)) else '0';
|
acc_en <= '1' when (addr_i(hi_abb_c downto lo_abb_c) = sysinfo_base_c(hi_abb_c downto lo_abb_c)) else '0';
|
rden <= acc_en and rden_i; -- read access
|
rden <= acc_en and rden_i; -- read access
|
wren <= acc_en and wren_i; -- write access
|
wren <= acc_en and wren_i; -- write access
|
iaddr <= addr_i(index_size_f(sysinfo_size_c)-1 downto 2);
|
addr <= addr_i(index_size_f(sysinfo_size_c)-1 downto 2);
|
|
|
|
|
-- Construct Info ROM ---------------------------------------------------------------------
|
-- Construct Info ROM ---------------------------------------------------------------------
|
-- -------------------------------------------------------------------------------------------
|
-- -------------------------------------------------------------------------------------------
|
-- SYSINFO(0): Processor (primary) clock frequency --
|
-- SYSINFO(0): Processor (primary) clock frequency --
|
Line 189... |
Line 189... |
-- -------------------------------------------------------------------------------------------
|
-- -------------------------------------------------------------------------------------------
|
read_access: process(clk_i)
|
read_access: process(clk_i)
|
begin
|
begin
|
if rising_edge(clk_i) then
|
if rising_edge(clk_i) then
|
ack_o <= rden;
|
ack_o <= rden;
|
err_o <= wren;
|
err_o <= wren; -- read-only!
|
data_o <= (others => '0');
|
|
if (rden = '1') then
|
if (rden = '1') then
|
data_o <= sysinfo_mem(to_integer(unsigned(iaddr)));
|
data_o <= sysinfo_mem(to_integer(unsigned(addr)));
|
|
else
|
|
data_o <= (others => '0');
|
end if;
|
end if;
|
end if;
|
end if;
|
end process read_access;
|
end process read_access;
|
|
|
|
|