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

Subversion Repositories riscv_vhdl

[/] [riscv_vhdl/] [trunk/] [rtl/] [misclib/] [reset_glb.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 2015 GNSS Sensor Ltd. All right reserved.
4
--! @author     Sergey Khabarov - sergeykhbr@gmail.com
5
--! @brief      System reset former.
6
-----------------------------------------------------------------------------
7
 
8
library ieee;
9
use ieee.std_logic_1164.all;
10
library commonlib;
11
use commonlib.types_common.all;
12
 
13
--! @brief NoC global reset former.
14
--! @details This module produces output reset signal in a case if
15
--!          button 'Reset' was pushed or PLL isn't a 'lock' state.
16
--! param[in]  inSysReset Button generated signal
17
--! param[in]  inSysClk Clock from the PLL. Bus clock.
18
--! param[in]  inPllLock PLL status.
19
--! param[out] outReset Output reset signal with active 'High' (1 = reset).
20
entity reset_global is
21
  port (
22
    inSysReset  : in std_ulogic;
23
    inSysClk    : in std_ulogic;
24
    inPllLock   : in std_ulogic;
25
    outReset    : out std_ulogic
26
    );
27
end;
28
 
29
architecture arch_reset_global of reset_global is
30
 
31
  type reg_type is record
32
    delay_cnt : std_logic_vector(7 downto 0);
33
  end record;
34
 
35
  signal r : reg_type;
36
begin
37
 
38
  proc_rst : process (inSysClk, inSysReset, inPllLock, r)
39
    variable wb_delay_cnt : std_logic_vector(7 downto 0);
40
    variable sys_reset : std_logic;
41
  begin
42
 
43
    sys_reset := inSysReset or not inPllLock;
44
 
45
    wb_delay_cnt := r.delay_cnt;
46
    if r.delay_cnt(7) = '0' then
47
      wb_delay_cnt := r.delay_cnt + 1;
48
    end if;
49
 
50
    if sys_reset = '1' then
51
      r.delay_cnt <= (others => '0');
52
    elsif rising_edge(inSysClk) then
53
      r.delay_cnt  <= wb_delay_cnt;
54
    end if;
55
  end process;
56
 
57
  outReset <= not r.delay_cnt(7);
58
 
59
end;

powered by: WebSVN 2.1.0

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