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

Subversion Repositories neorv32

[/] [neorv32/] [trunk/] [rtl/] [core/] [neorv32_sysinfo.vhd] - Diff between revs 72 and 73

Show entire file | Details | Blame | View Log

Rev 72 Rev 73
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;
 
 
 
 

powered by: WebSVN 2.1.0

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