linreceiver-vhdl/STDLIB_lib/shift_register.vhd
2023-09-25 18:56:31 +02:00

33 lines
625 B
VHDL

LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
ENTITY shift_register IS
GENERIC(
WIDTH: integer
);
PORT(
H: IN std_logic;
H_EN: IN std_logic;
nRst : IN std_logic;
D: IN std_logic;
Q: OUT std_logic_vector
);
END shift_register;
ARCHITECTURE arch of shift_register IS
SIGNAL data : std_logic_vector(WIDTH-1 downto 0) := (others => '0');
BEGIN
Q <= data;
sr: PROCESS(H, nRst)
BEGIN
if(nRst = '0') THEN
data <= (others => '0');
ELSIF(rising_edge(H) and H_EN = '1') THEN
data <= data(WIDTH-2 downto 0) & D;
END IF;
END PROCESS sr;
END ARCHITECTURE arch;