CMX
CMX firmware code in-line documentation
 All Classes Namespaces Files Functions Variables
vme_local_switch.vhd
Go to the documentation of this file.
1 
14 LIBRARY ieee ;
15 USE ieee.std_logic_1164.all;
16 USE ieee.numeric_std.all;
17 
18 
19 use work.CMXpackage.all;
20 --use work.CMX_VME_defs.all;
21 
23  port(
24  data_vme_up : out std_logic_vector (15 downto 0);
35  data_vme_from_below : in arr_16;
37 
38  bus_drive_up : out std_logic;
39 
40  bus_drive_from_below : in std_logic_vector
42 
43  );
44 
45 -- Declarations
46 
47 end vme_local_switch ;
48 
49 ARCHITECTURE rtl OF vme_local_switch IS
50 
52  constant num_regs_below : integer := bus_drive_from_below'length;
53 
54  signal data_vme_up_sig : std_logic_vector(15 downto 0);
55  signal bus_drive_up_sig : std_logic;
56 
57  signal or_all_data_vme_from_below_tmp : arr_16(num_regs_below-1 downto 0);
58  signal or_all_bus_drive_from_below_tmp : std_logic_vector(num_regs_below-1 downto 0);
59 
60 
61 BEGIN
62 
63  assert (bus_drive_from_below'length = data_vme_from_below'length) report "in vme_local_switch number of bus drive requests not equal to the number of vme busses" severity failure;
64 
67 
68  or_gen: for reg_i in 1 to (num_regs_below-1) generate
71  end generate or_gen;
72 
74 
75  --data_vme_up_sig<= bus_drive_up_sig and or_all_data_vme_from_below_tmp(num_regs_below-1);
76 
78 
81 
82 END rtl;
83 
84 
85 
arr_16 (num_regs_below - 1 downto 0) or_all_data_vme_from_below_tmp
in data_vme_from_belowarr_16
--! inputs from local registers and from
std_logic_vector (num_regs_below - 1 downto 0) or_all_bus_drive_from_below_tmp
out data_vme_upstd_logic_vector (15 downto 0)
--! connect this to
out bus_drive_upstd_logic
or of all bus drive requests from below
integer :=bus_drive_from_below' length num_regs_below
how many registers and modules with registers do we have:
std_logic_vector (15 downto 0) data_vme_up_sig
in bus_drive_from_belowstd_logic_vector