blob: be798ae45ae3e94fd0f020564ac954851741ad34 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
library ieee;
use ieee.std_logic_1164.all;
entity delay_ul is
generic (
STAGES : natural := 4;
RESET_ACTIVE_LEVEL : std_ulogic := '1'
);
port (
Clock : in std_ulogic;
Reset : in std_ulogic;
Enable : in std_ulogic;
Sig_in : in std_ulogic;
Sig_out : out std_ulogic
);
end entity;
architecture rtl of delay_ul is
begin
gt: if STAGES > 0 generate
reg: process(Clock, Reset, Enable)
variable pl_regs : std_ulogic_vector(1 to STAGES);
begin
if Reset = RESET_ACTIVE_LEVEL then
pl_regs := (others => '0');
elsif rising_edge(Clock) and Enable = '1' then
if STAGES = 1 then
pl_regs(1) := Sig_in;
else
pl_regs := Sig_in & pl_regs(1 to pl_regs'high-1);
end if;
end if;
Sig_out <= pl_regs(pl_regs'high);
end process;
end generate;
gf: if STAGES = 0 generate
Sig_out <= Sig_in;
end generate;
end architecture;
|