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

Subversion Repositories riscv_vhdl

[/] [riscv_vhdl/] [trunk/] [rtl/] [riverlib/] [core/] [stacktrbuf.vhd] - Blame information for rev 5

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 sergeykhbr
-----------------------------------------------------------------------------
2
--! @file
3
--! @copyright Copyright 2017 GNSS Sensor Ltd. All right reserved.
4
--! @author    Sergey Khabarov - sergeykhbr@gmail.com
5
--! @brief     Stack trace buffer on hardware level.
6
------------------------------------------------------------------------------
7
 
8
library ieee;
9
use ieee.std_logic_1164.all;
10
library commonlib;
11
use commonlib.types_common.all;
12
 
13
entity StackTraceBuffer is
14
  generic (
15
    abits : integer := 5;
16
    dbits : integer := 64
17
  );
18
  port (
19
    i_clk   : in std_logic;
20
    i_raddr : in std_logic_vector(abits-1 downto 0);
21
    o_rdata : out std_logic_vector(dbits-1 downto 0);
22
    i_we    : in std_logic;
23
    i_waddr : in std_logic_vector(abits-1 downto 0);
24
    i_wdata : in std_logic_vector(dbits-1 downto 0)
25
  );
26
end;
27
 
28
architecture arch_StackTraceBuffer of StackTraceBuffer is
29
 
30
  type ram_type is array ((2**abits)-1 downto 0) of std_logic_vector (dbits-1 downto 0);
31
  signal stackbuf    : ram_type;
32
  signal raddr       : std_logic_vector(abits-1 downto 0);
33
 
34
begin
35
 
36
  -- registers:
37
  regs : process(i_clk) begin
38
    if rising_edge(i_clk) then
39
      if i_we = '1' then
40
        stackbuf(conv_integer(i_waddr)) <= i_wdata;
41
      end if;
42
      raddr <= i_raddr;
43
    end if;
44
  end process;
45
 
46
  o_rdata <= stackbuf(conv_integer(raddr));
47
 
48
end;

powered by: WebSVN 2.1.0

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