9 USE ieee.std_logic_1164.
all;
10 USE ieee.std_logic_arith.
all;
12 use ipbus_lib.ipbus.
ALL;
13 USE ipbus_lib.ipbus_trans_decl.
all;
14 USE ipbus_lib.mac_arbiter_decl.
all;
18 constant IPBUSBUFWIDTH: positive := 6
21 ipb_clk : IN std_logic;
23 hardware_addr : IN std_logic_vector (11 DOWNTO 0);
24 serial_number : IN std_logic_vector (5 DOWNTO 0) := (others => '0');
25 mac_clk : IN std_logic;
26 mac_rx_data : IN std_logic_vector (7 DOWNTO 0);
27 mac_rx_error : IN std_logic;
28 mac_rx_last : IN std_logic;
29 mac_rx_valid : IN std_logic;
30 mac_tx_ready : IN std_logic;
31 master_tx_data1 : IN std_logic_vector (8 DOWNTO 0);
32 master_tx_data2 : IN std_logic_vector (8 DOWNTO 0);
33 master_tx_data3 : IN std_logic_vector (8 DOWNTO 0);
34 master_tx_data4 : IN std_logic_vector (8 DOWNTO 0);
35 master_tx_err1 : IN std_logic;
36 master_tx_err2 : IN std_logic;
37 master_tx_err3 : IN std_logic;
38 master_tx_err4 : IN std_logic;
39 rst_ipb : IN std_logic;
40 rst_macclk : IN std_logic;
41 p_fpga_reset_125 : IN std_logic_vector(3 downto 0);
42 ipb_out : OUT ipb_wbus;
43 mac_tx_data : OUT std_logic_vector (7 DOWNTO 0);
44 mac_tx_error : OUT std_logic;
45 mac_tx_last : OUT std_logic;
46 mac_tx_valid : OUT std_logic;
47 master_rx_data1 : OUT std_logic_vector (8 DOWNTO 0);
48 master_rx_data2 : OUT std_logic_vector (8 DOWNTO 0);
49 master_rx_data3 : OUT std_logic_vector (8 DOWNTO 0);
50 master_rx_data4 : OUT std_logic_vector (8 DOWNTO 0);
51 master_tx_pause1 : OUT STD_LOGIC;
52 master_tx_pause2 : OUT STD_LOGIC;
53 master_tx_pause3 : OUT STD_LOGIC;
54 master_tx_pause4 : OUT STD_LOGIC;
55 master_link_down1: IN std_logic;
56 master_link_down2: IN std_logic;
57 master_link_down3: IN std_logic;
58 master_link_down4: IN std_logic;
59 got_ip_address : OUT STD_LOGIC;
60 slaves_ipbus_up : OUT std_logic_vector(3 downto 0)
74 SIGNAL Master_got_IP_addr : std_logic;
75 SIGNAL ip_addr, actual_ip_addr : std_logic_vector(31 DOWNTO 0);
76 SIGNAL mac_addr, actual_mac_addr : std_logic_vector(47 DOWNTO 0);
77 SIGNAL enable : std_logic;
78 SIGNAL use_dhcp : std_logic;
79 SIGNAL ipb_grant : std_logic := '1';
80 SIGNAL rarp_rx_data : std_logic_vector(7 DOWNTO 0);
81 SIGNAL rarp_rx_last : std_logic;
82 SIGNAL rarp_rx_valid : std_logic;
83 SIGNAL slaves_Got_IP_addr : std_logic;
84 SIGNAL slaves_Got_IP_addr1 : std_logic;
85 SIGNAL slaves_Got_IP_addr2 : std_logic;
86 SIGNAL slaves_Got_IP_addr3 : std_logic;
87 SIGNAL slaves_Got_IP_addr4 : std_logic;
88 SIGNAL src_tx_data_bus : mac_arbiter_slv_array(4 DOWNTO 0);
89 SIGNAL src_tx_error_bus : mac_arbiter_sl_array(4 DOWNTO 0);
90 SIGNAL src_tx_last_bus : mac_arbiter_sl_array(4 DOWNTO 0);
91 SIGNAL src_tx_ready_bus : mac_arbiter_sl_array(4 DOWNTO 0);
92 SIGNAL src_tx_valid_bus : mac_arbiter_sl_array(4 DOWNTO 0);
100 got_ip_address <= Master_got_IP_addr;
103 slaves_got_IP_addr <= slaves_got_IP_addr1 and slaves_got_IP_addr2 and slaves_got_IP_addr3 and slaves_got_IP_addr4;
105 slaves_ipbus_up <= slaves_got_IP_addr4 & slaves_got_IP_addr3 & slaves_got_IP_addr2 & slaves_got_IP_addr1;
111 IPBUFWIDTH => IPBUSBUFWIDTH
115 mac_rx_data => mac_rx_data,
116 mac_rx_error => mac_rx_error,
117 mac_rx_last => mac_rx_last,
118 mac_rx_valid => mac_rx_valid,
119 mac_tx_ready => src_tx_ready_bus
(1),
120 master_tx_data => master_tx_data1,
121 master_tx_err => master_tx_err1,
122 rarp_rx_data => rarp_rx_data,
123 rarp_rx_last => rarp_rx_last,
124 rarp_rx_valid => rarp_rx_valid,
125 rst_macclk => p_fpga_reset_125
(0),
126 mac_tx_data => src_tx_data_bus
(1),
127 mac_tx_error => src_tx_error_bus
(1),
128 mac_tx_last => src_tx_last_bus
(1),
129 mac_tx_valid => src_tx_valid_bus
(1),
130 master_rx_data => master_rx_data1,
131 master_tx_pause => master_tx_pause1,
132 master_link_down => master_link_down1,
133 slaves_Got_IP_addr => slaves_Got_IP_addr1
137 IPBUFWIDTH => IPBUSBUFWIDTH
141 mac_rx_data => mac_rx_data,
142 mac_rx_error => mac_rx_error,
143 mac_rx_last => mac_rx_last,
144 mac_rx_valid => mac_rx_valid,
145 mac_tx_ready => src_tx_ready_bus
(2),
146 master_tx_data => master_tx_data2,
147 master_tx_err => master_tx_err2,
148 rarp_rx_data => rarp_rx_data,
149 rarp_rx_last => rarp_rx_last,
150 rarp_rx_valid => rarp_rx_valid,
151 rst_macclk => p_fpga_reset_125
(1),
152 mac_tx_data => src_tx_data_bus
(2),
153 mac_tx_error => src_tx_error_bus
(2),
154 mac_tx_last => src_tx_last_bus
(2),
155 mac_tx_valid => src_tx_valid_bus
(2),
156 master_rx_data => master_rx_data2,
157 master_tx_pause => master_tx_pause2,
158 master_link_down => master_link_down2,
159 slaves_Got_IP_addr => slaves_Got_IP_addr2
163 IPBUFWIDTH => IPBUSBUFWIDTH
167 mac_rx_data => mac_rx_data,
168 mac_rx_error => mac_rx_error,
169 mac_rx_last => mac_rx_last,
170 mac_rx_valid => mac_rx_valid,
171 mac_tx_ready => src_tx_ready_bus
(3),
172 master_tx_data => master_tx_data3,
173 master_tx_err => master_tx_err3,
174 rarp_rx_data => rarp_rx_data,
175 rarp_rx_last => rarp_rx_last,
176 rarp_rx_valid => rarp_rx_valid,
177 rst_macclk => p_fpga_reset_125
(2),
178 mac_tx_data => src_tx_data_bus
(3),
179 mac_tx_error => src_tx_error_bus
(3),
180 mac_tx_last => src_tx_last_bus
(3),
181 mac_tx_valid => src_tx_valid_bus
(3),
182 master_rx_data => master_rx_data3,
183 master_tx_pause => master_tx_pause3,
184 master_link_down => master_link_down3,
185 slaves_Got_IP_addr => slaves_Got_IP_addr3
189 IPBUFWIDTH => IPBUSBUFWIDTH
193 mac_rx_data => mac_rx_data,
194 mac_rx_error => mac_rx_error,
195 mac_rx_last => mac_rx_last,
196 mac_rx_valid => mac_rx_valid,
197 mac_tx_ready => src_tx_ready_bus
(4),
198 master_tx_data => master_tx_data4,
199 master_tx_err => master_tx_err4,
200 rarp_rx_data => rarp_rx_data,
201 rarp_rx_last => rarp_rx_last,
202 rarp_rx_valid => rarp_rx_valid,
203 rst_macclk => p_fpga_reset_125
(3),
204 mac_tx_data => src_tx_data_bus
(4),
205 mac_tx_error => src_tx_error_bus
(4),
206 mac_tx_last => src_tx_last_bus
(4),
207 mac_tx_valid => src_tx_valid_bus
(4),
208 master_rx_data => master_rx_data4,
209 master_tx_pause => master_tx_pause4,
210 master_link_down => master_link_down4,
211 slaves_Got_IP_addr => slaves_Got_IP_addr4
213 U_5 :
entity ipbus_lib.ipbus_ctrl
227 SECONDARYPORT => '0',
235 rst_macclk => rst_macclk,
238 mac_rx_data => mac_rx_data,
239 mac_rx_valid => mac_rx_valid,
240 mac_rx_last => mac_rx_last,
241 mac_rx_error => mac_rx_error,
242 mac_tx_data => src_tx_data_bus
(0),
243 mac_tx_valid => src_tx_valid_bus
(0),
244 mac_tx_last => src_tx_last_bus
(0),
245 mac_tx_error => src_tx_error_bus
(0),
246 mac_tx_ready => src_tx_ready_bus
(0),
250 ipb_grant => ipb_grant,
251 mac_addr => mac_addr,
253 ipbus_port => x"C351",
255 ipam_select => use_dhcp,
256 actual_mac_addr => actual_mac_addr,
257 actual_ip_addr => actual_ip_addr,
258 Got_IP_addr => Master_got_IP_addr,
264 U_4 :
entity ipbus_lib.mac_arbiter mac_arbiter
271 src_tx_data_bus => src_tx_data_bus,
272 src_tx_valid_bus => src_tx_valid_bus,
273 src_tx_last_bus => src_tx_last_bus,
274 src_tx_error_bus => src_tx_error_bus,
275 src_tx_ready_bus => src_tx_ready_bus,
276 mac_tx_data => mac_tx_data,
277 mac_tx_valid => mac_tx_valid,
278 mac_tx_last => mac_tx_last,
279 mac_tx_error => mac_tx_error,
280 mac_tx_ready => mac_tx_ready
282 U_6 :
entity ipbus_lib.udp_hub_rarp
285 rst_macclk => rst_macclk,
286 actual_mac_addr => actual_mac_addr,
287 actual_ip_addr => actual_ip_addr,
288 hub_got_IP_addr => Master_got_IP_addr,
289 nodes_got_IP_addr => slaves_Got_IP_addr,
290 rarp_rx_data => rarp_rx_data,
291 rarp_rx_last => rarp_rx_last,
292 rarp_rx_valid => rarp_rx_valid
297 rst_macclk => rst_macclk,
298 hardware_addr => hardware_addr,
299 serial_number => serial_number,
300 mac_addr => mac_addr,