diff --git a/boards/uniboard2/libraries/unb2_board/src/vhdl/unb2_board_front_io.vhd b/boards/uniboard2/libraries/unb2_board/src/vhdl/unb2_board_front_io.vhd index ec46518bd35820b315fc5357a3ce687181177574..a20c7dff0c20264cf75cd47b395321ba95c95968 100644 --- a/boards/uniboard2/libraries/unb2_board/src/vhdl/unb2_board_front_io.vhd +++ b/boards/uniboard2/libraries/unb2_board/src/vhdl/unb2_board_front_io.vhd @@ -69,8 +69,8 @@ BEGIN gen_wire_bus : FOR i IN 0 TO g_nof_qsfp-1 GENERATE gen_wire_signals : FOR j IN 0 TO c_unb2_board_tr_qsfp.bus_w-1 GENERATE - si_tx_2arr(i)(j) <= serial_tx_arr(i*c_unb2_board_tr_qsfp.bus_w); - serial_rx_arr(i*c_unb2_board_tr_qsfp.bus_w) <= si_rx_2arr(i)(j); + si_tx_2arr(i)(j) <= serial_tx_arr(i*c_unb2_board_tr_qsfp.bus_w + j); + serial_rx_arr(i*c_unb2_board_tr_qsfp.bus_w + j) <= si_rx_2arr(i)(j); END GENERATE; END GENERATE; diff --git a/boards/uniboard2/libraries/unb2_board/src/vhdl/unb2_board_ring_io.vhd b/boards/uniboard2/libraries/unb2_board/src/vhdl/unb2_board_ring_io.vhd index f68e84df81e458456d5acd97e1219183278dae09..107618feaadd8e1c9cc126a1d31bd598448d3980 100644 --- a/boards/uniboard2/libraries/unb2_board/src/vhdl/unb2_board_ring_io.vhd +++ b/boards/uniboard2/libraries/unb2_board/src/vhdl/unb2_board_ring_io.vhd @@ -25,83 +25,40 @@ USE work.unb2_board_pkg.ALL; ENTITY unb2_board_ring_io IS + GENERIC ( + g_nof_ring_io : NATURAL := c_unb2_board_tr_ring.nof_bus + ); PORT ( - serial_tx_arr : IN STD_LOGIC_VECTOR(c_unb2_board_tr_ring_hw_nof_lines-1 DOWNTO 0); - serial_rx_arr : OUT STD_LOGIC_VECTOR(c_unb2_board_tr_ring_hw_nof_lines-1 DOWNTO 0); + serial_tx_arr : IN STD_LOGIC_VECTOR(g_nof_ring_io * c_unb2_board_tr_ring.bus_w-1 DOWNTO 0) := (OTHERS=>'0'); + serial_rx_arr : OUT STD_LOGIC_VECTOR(g_nof_ring_io * c_unb2_board_tr_ring.bus_w-1 DOWNTO 0); -- ring transceivers - RING_0_RX : IN STD_LOGIC_VECTOR(c_unb2_board_tr_ring.bus_w-1 downto 0); - RING_0_TX : OUT STD_LOGIC_VECTOR(c_unb2_board_tr_ring.bus_w-1 downto 0); - RING_1_RX : IN STD_LOGIC_VECTOR(c_unb2_board_tr_ring.bus_w-1 downto 0); - RING_1_TX : OUT STD_LOGIC_VECTOR(c_unb2_board_tr_ring.bus_w-1 downto 0) + RING_RX : IN t_unb2_board_ring_bus_2arr(g_nof_ring_io-1 DOWNTO 0) := (OTHERS=>(OTHERS=>'0')); + RING_TX : OUT t_unb2_board_ring_bus_2arr(g_nof_ring_io-1 DOWNTO 0) ); END unb2_board_ring_io; ARCHITECTURE str OF unb2_board_ring_io IS -- help signals so we can iterate through buses - SIGNAL si_tx_arr : STD_LOGIC_VECTOR(c_unb2_board_tr_ring_hw_nof_lines-1 DOWNTO 0) := (OTHERS=>'0'); - SIGNAL si_rx_arr : STD_LOGIC_VECTOR(c_unb2_board_tr_ring_hw_nof_lines-1 DOWNTO 0); + SIGNAL si_tx_2arr : t_unb2_board_ring_bus_2arr(g_nof_ring_io-1 DOWNTO 0); + SIGNAL si_rx_2arr : t_unb2_board_ring_bus_2arr(g_nof_ring_io-1 DOWNTO 0); BEGIN - RING_0_TX(0) <= si_tx_arr(0); - RING_0_TX(1) <= si_tx_arr(1); - RING_0_TX(2) <= si_tx_arr(2); - RING_0_TX(3) <= si_tx_arr(3); - RING_0_TX(4) <= si_tx_arr(4); - RING_0_TX(5) <= si_tx_arr(5); - RING_0_TX(6) <= si_tx_arr(6); - RING_0_TX(7) <= si_tx_arr(7); - RING_0_TX(8) <= si_tx_arr(8); - RING_0_TX(9) <= si_tx_arr(9); - RING_0_TX(10) <= si_tx_arr(10); - RING_0_TX(11) <= si_tx_arr(11); - - RING_1_TX(0) <= si_tx_arr(12); - RING_1_TX(1) <= si_tx_arr(13); - RING_1_TX(2) <= si_tx_arr(14); - RING_1_TX(3) <= si_tx_arr(15); - RING_1_TX(4) <= si_tx_arr(16); - RING_1_TX(5) <= si_tx_arr(17); - RING_1_TX(6) <= si_tx_arr(18); - RING_1_TX(7) <= si_tx_arr(19); - RING_1_TX(8) <= si_tx_arr(20); - RING_1_TX(9) <= si_tx_arr(21); - RING_1_TX(10) <= si_tx_arr(22); - RING_1_TX(11) <= si_tx_arr(23); - + gen_buses : FOR i IN 0 TO g_nof_ring_io-1 GENERATE + RING_TX(i) <= si_tx_2arr(i); + si_rx_2arr(i) <= RING_RX(i); + END GENERATE; - si_rx_arr(0) <= RING_0_RX(0); - si_rx_arr(1) <= RING_0_RX(1); - si_rx_arr(2) <= RING_0_RX(2); - si_rx_arr(3) <= RING_0_RX(3); - si_rx_arr(4) <= RING_0_RX(4); - si_rx_arr(5) <= RING_0_RX(5); - si_rx_arr(6) <= RING_0_RX(6); - si_rx_arr(7) <= RING_0_RX(7); - si_rx_arr(8) <= RING_0_RX(8); - si_rx_arr(9) <= RING_0_RX(9); - si_rx_arr(10) <= RING_0_RX(10); - si_rx_arr(11) <= RING_0_RX(11); - si_rx_arr(12) <= RING_1_RX(0); - si_rx_arr(13) <= RING_1_RX(1); - si_rx_arr(14) <= RING_1_RX(2); - si_rx_arr(15) <= RING_1_RX(3); - si_rx_arr(16) <= RING_1_RX(4); - si_rx_arr(17) <= RING_1_RX(5); - si_rx_arr(18) <= RING_1_RX(6); - si_rx_arr(19) <= RING_1_RX(7); - si_rx_arr(20) <= RING_1_RX(8); - si_rx_arr(21) <= RING_1_RX(9); - si_rx_arr(22) <= RING_1_RX(10); - si_rx_arr(23) <= RING_1_RX(11); + gen_wire_bus : FOR i IN 0 TO g_nof_ring_io-1 GENERATE + gen_wire_signals : FOR j IN 0 TO c_unb2_board_tr_ring.bus_w-1 GENERATE + si_tx_2arr(i)(j) <= serial_tx_arr(i*c_unb2_board_tr_ring.bus_w + j); + serial_rx_arr(i*c_unb2_board_tr_ring.bus_w + j) <= si_rx_2arr(i)(j); - wire_signals : FOR i IN 0 TO c_unb2_board_tr_ring_hw_nof_lines-1 GENERATE - si_tx_arr(i) <= serial_tx_arr(i); - serial_rx_arr(i) <= si_rx_arr(i); + END GENERATE; END GENERATE; END;