eFEX firmware  1.7.3
ATLAS l1-calo - electron and tau feature extraction firmware for eFEX boards

Back to eFEX documentation
ctrl_playback_ram.vhd
Go to the documentation of this file.
1 
9 
10 
11 LIBRARY ieee;
12 USE ieee.std_logic_1164.all;
13 USE ieee.std_logic_arith.all;
14 
17  PORT(
19  clk : IN std_logic;
21  rdy : IN std_logic;
23  reset : IN std_logic;
25  bcr : IN std_logic;
27  addr : OUT std_logic_vector (3 DOWNTO 0);
29  en : OUT std_logic
30 
31  );
32 
33 
34 
35 END ENTITY ctrl_playback_ram ;
37 
38 ARCHITECTURE Behavioral OF ctrl_playback_ram IS
39 signal addr_ram:unsigned (3 downto 0):= "0000";
40 
41  TYPE STATE_TYPE IS (
42  idle,
43  rd_en,
44  bcr_done
45  );
46 
47  SIGNAL current_state : STATE_TYPE;
48 
49 BEGIN
50 
51  clocked_proc : PROCESS ( clk,reset)
52 
53  BEGIN
54  IF (reset = '1') THEN
55  current_state <= idle;
56  addr <= (others => '0');
57  en <= '0';
58  ELSIF (clk'EVENT AND clk = '1') THEN
59 
60  CASE current_state IS
61  WHEN idle =>
62  addr <= (others=> '0');
63  addr_ram <= (others=> '0');
64  en <= '0';
65  IF (rdy ='1') THEN
66  current_state <= rd_en;
67  ELSE
68  current_state <= idle;
69  END IF;
70  WHEN rd_en =>
71  addr_ram <= addr_ram +1 ;
72  addr <= std_logic_vector(addr_ram);
73  en <= '1';
74  IF (rdy = '0') THEN
75  current_state <= idle;
76  ELSIF (bcr ='1') THEN
77  current_state <= bcr_done;
78  ELSE
79  current_state <= rd_en;
80  END IF;
81  WHEN bcr_done =>
82  addr <= (others => '0');
83  addr_ram <= "0001";
84  en <= '1';
85  current_state <= rd_en;
86  WHEN OTHERS =>
87  current_state <= idle;
88  END CASE;
89  END IF;
90  END PROCESS clocked_proc;
91 
92 END ARCHITECTURE Behavioral;
control State machine of playback ram
control State machine of playback ram
in reset std_logic
reset
in clk std_logic
rx clock of 40 Mhz
out en std_logic
ram enable
in bcr std_logic
bcr in
out addr std_logic_vector( 3 DOWNTO 0)
ram address for read side
in rdy std_logic
ready