From b523d3ddf40ad13a38e93cab332e246bd8824214 Mon Sep 17 00:00:00 2001 From: Pepping <pepping> Date: Wed, 18 Feb 2015 16:48:41 +0000 Subject: [PATCH] Updated names, libraries and prefixes to RadioHDL environment --- .../src/vhdl/apertif_unb1_fn_beamformer.vhd | 747 +++++------------- ...apertif_unb1_fn_beamformer_udp_offload.vhd | 72 +- ...tif_unb1_fn_beamformer_udp_offload_pkg.vhd | 54 +- .../vhdl/node_apertif_unb1_fn_beamformer.vhd | 36 +- 4 files changed, 292 insertions(+), 617 deletions(-) diff --git a/applications/apertif/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer.vhd b/applications/apertif/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer.vhd index 5a77baba93..46ea2cac16 100644 --- a/applications/apertif/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer.vhd +++ b/applications/apertif/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer.vhd @@ -18,52 +18,37 @@ -- along with this program. If not, see <http://www.gnu.org/licenses/>. -- ------------------------------------------------------------------------------- - -LIBRARY IEEE, common_lib, unb_common_lib, dp_lib, tse_lib, bf_lib, tr_xaui_lib, tr_10GbE_lib; +LIBRARY IEEE, common_lib, unb1_board_lib, dp_lib, eth_lib, tech_tse_lib, bf_lib, tr_10GbE_lib; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.NUMERIC_STD.ALL; USE common_lib.common_pkg.ALL; USE common_lib.common_mem_pkg.ALL; -USE unb_common_lib.unb_common_pkg.ALL; -USE unb_common_lib.unb_peripherals_pkg.ALL; +USE common_lib.common_field_pkg.ALL; +USE common_lib.common_network_layers_pkg.ALL; +USE common_lib.common_interface_layers_pkg.ALL; +USE common_lib.common_network_total_header_pkg.ALL; +USE unb1_board_lib.unb1_board_pkg.ALL; +USE unb1_board_lib.unb1_board_peripherals_pkg.ALL; USE dp_lib.dp_stream_pkg.ALL; -USE tse_lib.eth_layers_pkg.ALL; -USE tse_lib.tse_pkg.ALL; -USE tse_lib.eth_pkg.ALL; +USE eth_lib.eth_pkg.ALL; +USE tech_tse_lib.tech_tse_pkg.ALL; +USE tech_tse_lib.tb_tech_tse_pkg.ALL; USE bf_lib.bf_pkg.ALL; -USE tr_xaui_lib.tr_xaui_pkg.ALL; -USE work.fn_beamformer_udp_offload_pkg.ALL; -USE common_lib.common_field_pkg.ALL; +USE work.apertif_unb1_fn_beamformer_udp_offload_pkg.ALL; -ENTITY fn_beamformer IS + +ENTITY apertif_unb1_fn_beamformer IS GENERIC ( - -- General - g_bf : t_c_bf := c_bf; - g_sim : BOOLEAN := FALSE; - g_design_name : STRING := "fn_beamformer"; -- Set to "fn_beamformer_rev_multi_unb" by revision fn_beamformer_rev_multi - -- Stamps are passed via QIP at compile start if $UNB_COMPILE_STAMPS is set - g_stamp_date : NATURAL := 0; -- Date (YYYYMMDD) - g_stamp_time : NATURAL := 0; -- Time (HHMMSS) - g_stamp_svn : NATURAL := 0; -- SVN revision - -- Development note := "<---------max 32 chars--------->" - g_design_note : STRING := "Apertif subband beamformer"; - - g_fw_version : t_unb_fw_version := (3, 1); -- firmware version x.y - g_use_bf : BOOLEAN := TRUE; - -- Use PHY Interface - -- TYPE t_c_unb_use_phy IS RECORD - -- eth1g : NATURAL; - -- tr_front: NATURAL; - -- tr_mesh : NATURAL; - -- tr_back : NATURAL; - -- ddr3_I : NATURAL; - -- ddr3_II : NATURAL; - -- adc : NATURAL; - -- wdi : NATURAL; - -- END RECORD; - g_use_phy : t_c_unb_use_phy := (1, 1, 1, 0, 0, 0, 0, 1); - g_tr_mesh : t_c_unb_tr := c_unb_tr_mesh; - g_aux : t_c_unb_aux := c_unb_aux + g_design_name : STRING := "fn_beamformer"; --"apertif_unb1_fn_beamformer"; + g_design_note : STRING := "Apertif subband beamformer"; --"UNUSED"; + g_sim : BOOLEAN := FALSE; --Overridden by TB + g_sim_unb_nr : NATURAL := 0; + g_sim_node_nr : NATURAL := 0; + g_stamp_date : NATURAL := 0; -- Date (YYYYMMDD) -- set by QSF + g_stamp_time : NATURAL := 0; -- Time (HHMMSS) -- set by QSF + g_stamp_svn : NATURAL := 0; -- SVN revision -- set by QSF + g_bf : t_c_bf := c_bf; + g_use_bf : BOOLEAN := TRUE ); PORT ( -- GENERAL @@ -74,9 +59,9 @@ ENTITY fn_beamformer IS INTB : INOUT STD_LOGIC; -- FPGA interconnect line -- Others - VERSION : IN STD_LOGIC_VECTOR(g_aux.version_w-1 DOWNTO 0); - ID : IN STD_LOGIC_VECTOR(g_aux.id_w-1 DOWNTO 0); - TESTIO : INOUT STD_LOGIC_VECTOR(g_aux.testio_w-1 DOWNTO 0); + VERSION : IN STD_LOGIC_VECTOR(c_unb1_board_aux.version_w-1 DOWNTO 0); + ID : IN STD_LOGIC_VECTOR(c_unb1_board_aux.id_w-1 DOWNTO 0); + TESTIO : INOUT STD_LOGIC_VECTOR(c_unb1_board_aux.testio_w-1 DOWNTO 0); -- I2C Interface to Sensors sens_sc : INOUT STD_LOGIC; @@ -92,81 +77,45 @@ ENTITY fn_beamformer IS SB_CLK : IN STD_LOGIC := '0'; -- TR clock FN-BN (tr_mesh) -- Mesh Serial I/O - FN_BN_0_TX : OUT STD_LOGIC_VECTOR(g_tr_mesh.bus_w-1 DOWNTO 0); - FN_BN_0_RX : IN STD_LOGIC_VECTOR(g_tr_mesh.bus_w-1 DOWNTO 0) := (OTHERS=>'0'); - FN_BN_1_TX : OUT STD_LOGIC_VECTOR(g_tr_mesh.bus_w-1 DOWNTO 0); - FN_BN_1_RX : IN STD_LOGIC_VECTOR(g_tr_mesh.bus_w-1 DOWNTO 0) := (OTHERS=>'0'); - FN_BN_2_TX : OUT STD_LOGIC_VECTOR(g_tr_mesh.bus_w-1 DOWNTO 0); - FN_BN_2_RX : IN STD_LOGIC_VECTOR(g_tr_mesh.bus_w-1 DOWNTO 0) := (OTHERS=>'0'); - FN_BN_3_TX : OUT STD_LOGIC_VECTOR(g_tr_mesh.bus_w-1 DOWNTO 0); - FN_BN_3_RX : IN STD_LOGIC_VECTOR(g_tr_mesh.bus_w-1 DOWNTO 0) := (OTHERS=>'0'); + FN_BN_0_TX : OUT STD_LOGIC_VECTOR(c_unb1_board_tr_mesh.bus_w-1 DOWNTO 0); + FN_BN_0_RX : IN STD_LOGIC_VECTOR(c_unb1_board_tr_mesh.bus_w-1 DOWNTO 0) := (OTHERS=>'0'); + FN_BN_1_TX : OUT STD_LOGIC_VECTOR(c_unb1_board_tr_mesh.bus_w-1 DOWNTO 0); + FN_BN_1_RX : IN STD_LOGIC_VECTOR(c_unb1_board_tr_mesh.bus_w-1 DOWNTO 0) := (OTHERS=>'0'); + FN_BN_2_TX : OUT STD_LOGIC_VECTOR(c_unb1_board_tr_mesh.bus_w-1 DOWNTO 0); + FN_BN_2_RX : IN STD_LOGIC_VECTOR(c_unb1_board_tr_mesh.bus_w-1 DOWNTO 0) := (OTHERS=>'0'); + FN_BN_3_TX : OUT STD_LOGIC_VECTOR(c_unb1_board_tr_mesh.bus_w-1 DOWNTO 0); + FN_BN_3_RX : IN STD_LOGIC_VECTOR(c_unb1_board_tr_mesh.bus_w-1 DOWNTO 0) := (OTHERS=>'0'); -- Front Serial I/O - SI_FN_0_TX : OUT STD_LOGIC_VECTOR(c_unb_ci.tr.bus_w-1 DOWNTO 0); - SI_FN_0_RX : IN STD_LOGIC_VECTOR(c_unb_ci.tr.bus_w-1 DOWNTO 0); - SI_FN_1_TX : OUT STD_LOGIC_VECTOR(c_unb_ci.tr.bus_w-1 DOWNTO 0); - SI_FN_1_RX : IN STD_LOGIC_VECTOR(c_unb_ci.tr.bus_w-1 DOWNTO 0); - SI_FN_2_TX : OUT STD_LOGIC_VECTOR(c_unb_ci.tr.bus_w-1 DOWNTO 0); - SI_FN_2_RX : IN STD_LOGIC_VECTOR(c_unb_ci.tr.bus_w-1 DOWNTO 0); - SI_FN_3_TX : OUT STD_LOGIC_VECTOR(c_unb_ci.tr.bus_w-1 DOWNTO 0); - SI_FN_3_RX : IN STD_LOGIC_VECTOR(c_unb_ci.tr.bus_w-1 DOWNTO 0); - - SI_FN_0_CNTRL : INOUT STD_LOGIC_VECTOR(c_unb_ci.tr.cntrl_w-1 DOWNTO 0); -- (0 = LASI; 1=MDC; 2=MDIO) - SI_FN_1_CNTRL : INOUT STD_LOGIC_VECTOR(c_unb_ci.tr.cntrl_w-1 DOWNTO 0); - SI_FN_2_CNTRL : INOUT STD_LOGIC_VECTOR(c_unb_ci.tr.cntrl_w-1 DOWNTO 0); - SI_FN_3_CNTRL : INOUT STD_LOGIC_VECTOR(c_unb_ci.tr.cntrl_w-1 DOWNTO 0); + SI_FN_0_TX : OUT STD_LOGIC_VECTOR(c_unb1_board_ci.tr.bus_w-1 DOWNTO 0); + SI_FN_0_RX : IN STD_LOGIC_VECTOR(c_unb1_board_ci.tr.bus_w-1 DOWNTO 0); + SI_FN_1_TX : OUT STD_LOGIC_VECTOR(c_unb1_board_ci.tr.bus_w-1 DOWNTO 0); + SI_FN_1_RX : IN STD_LOGIC_VECTOR(c_unb1_board_ci.tr.bus_w-1 DOWNTO 0); + SI_FN_2_TX : OUT STD_LOGIC_VECTOR(c_unb1_board_ci.tr.bus_w-1 DOWNTO 0); + SI_FN_2_RX : IN STD_LOGIC_VECTOR(c_unb1_board_ci.tr.bus_w-1 DOWNTO 0); + SI_FN_3_TX : OUT STD_LOGIC_VECTOR(c_unb1_board_ci.tr.bus_w-1 DOWNTO 0); + SI_FN_3_RX : IN STD_LOGIC_VECTOR(c_unb1_board_ci.tr.bus_w-1 DOWNTO 0); + + SI_FN_0_CNTRL : INOUT STD_LOGIC_VECTOR(c_unb1_board_ci.tr.cntrl_w-1 DOWNTO 0); -- (0 = LASI; 1=MDC; 2=MDIO) + SI_FN_1_CNTRL : INOUT STD_LOGIC_VECTOR(c_unb1_board_ci.tr.cntrl_w-1 DOWNTO 0); + SI_FN_2_CNTRL : INOUT STD_LOGIC_VECTOR(c_unb1_board_ci.tr.cntrl_w-1 DOWNTO 0); + SI_FN_3_CNTRL : INOUT STD_LOGIC_VECTOR(c_unb1_board_ci.tr.cntrl_w-1 DOWNTO 0); SI_FN_RSTN : OUT STD_LOGIC := '1' -- ResetN is pulled up in the Vitesse chip, but pulled down again by external 1k resistor. -- So we need to assign a '1' to it. ); -END fn_beamformer; - - -ARCHITECTURE str OF fn_beamformer IS - - CONSTANT c_bg_diag_wave_period : POSITIVE := 4; - - -- Actual MM address widths, the MM data width is fixed at the default c_word_w=32 - CONSTANT c_reg_diag_bg_addr_w : NATURAL := 3; - CONSTANT c_ram_diag_bg_addr_w : NATURAL := ceil_log2(c_bg_diag_wave_period) + ceil_log2(g_bf.nof_subbands*g_bf.nof_signal_paths/g_bf.nof_input_streams)+ceil_log2(g_bf.nof_input_streams); - CONSTANT c_ram_ss_ss_wide_addr_w : NATURAL := ceil_log2(c_bf_max_nof_bf_units*g_bf.nof_weights*g_bf.nof_signal_paths); - CONSTANT c_ram_bf_weights_addr_w : NATURAL := ceil_log2(c_bf_max_nof_bf_units*g_bf.nof_signal_paths*g_bf.nof_weights); - CONSTANT c_ram_st_sst_bf_addr_w : NATURAL := ceil_log2(c_bf_max_nof_bf_units*g_bf.stat_data_sz*g_bf.nof_weights*c_nof_complex); - CONSTANT c_reg_st_sst_bf_addr_w : NATURAL := ceil_log2(c_bf_max_nof_bf_units)*2; - CONSTANT c_reg_diag_db_adr_w : NATURAL := 5; - - -- 10GbE offload - CONSTANT c_reg_dp_offload_tx_adr_w : NATURAL := 1; - CONSTANT c_reg_dp_offload_tx_hdr_dat_nof_words : NATURAL := field_nof_words(c_fn_beamformer_udp_offload_hdr_field_arr, c_word_w); -- = 26 32b words - CONSTANT c_reg_dp_offload_tx_hdr_dat_adr_w : NATURAL := ceil_log2(c_reg_dp_offload_tx_hdr_dat_nof_words); -- = 5 - CONSTANT c_reg_dp_offload_tx_hdr_ovr_nof_words : NATURAL := c_fn_beamformer_udp_offload_hdr_field_arr'LENGTH; -- = 23 override bits; one for each field; each bit in its own 32b register. - CONSTANT c_reg_dp_offload_tx_hdr_ovr_adr_w : NATURAL := ceil_log2(c_reg_dp_offload_tx_hdr_ovr_nof_words); -- = 5 - - -- tr_10GbE - CONSTANT c_reg_tr_10GbE_adr_w : NATURAL := 13; - CONSTANT c_nof_mdio : NATURAL := 3; - CONSTANT c_xaui_mosi_addr_w : NATURAL := 9; --2^9 = range of 512 addresses - CONSTANT c_max_nof_xaui_inst : NATURAL := 4; - CONSTANT c_reg_tr_xaui_addr_w : NATURAL := ceil_log2(c_max_nof_xaui_inst* pow2(c_xaui_mosi_addr_w)); -- 4* 512 = 2048 addresses -> 11 address bits. - CONSTANT c_pkt_len : NATURAL := 176; -- Let tr_10GbE FIFO buffer one full packet before releasing it - - -- BF offload - CONSTANT c_hdr_nof_words : NATURAL := c_eth_total_header_nof_words; +END apertif_unb1_fn_beamformer; - CONSTANT c_dp_ram_mm_nof_words : NATURAL := c_hdr_nof_words * (c_tse_data_w/c_word_w); - CONSTANT c_dp_ram_mm_adr_w : NATURAL := ceil_log2(g_bf.nof_bf_units * pow2(ceil_log2(c_dp_ram_mm_nof_words))); - CONSTANT c_dp_reg_mm_nof_words : NATURAL := 1; - CONSTANT c_dp_reg_mm_adr_w : NATURAL := ceil_log2(g_bf.nof_bf_units * pow2(ceil_log2(c_dp_reg_mm_nof_words))); +ARCHITECTURE str OF apertif_unb1_fn_beamformer IS - CONSTANT c_reg_dp_split_nof_words : NATURAL := 1; - CONSTANT c_reg_dp_split_adr_w : NATURAL := ceil_log2(g_bf.nof_bf_units * pow2(ceil_log2(c_reg_dp_split_nof_words))); + CONSTANT c_use_phy : t_c_unb1_board_use_phy := (1, 1, 1, 0, 0, 0, 0, 1); + CONSTANT c_fw_version : t_unb1_board_fw_version := (3, 1); -- firmware version x.y + CONSTANT c_tr_mesh : t_c_unb1_board_tr := c_unb1_board_tr_mesh; - CONSTANT c_reg_dp_pkt_merge_nof_words : NATURAL := 1; - CONSTANT c_reg_dp_pkt_merge_adr_w : NATURAL := ceil_log2(c_eth_nof_udp_ports * pow2(ceil_log2(c_reg_dp_pkt_merge_nof_words))); - -- System SIGNAL cs_sim : STD_LOGIC; SIGNAL xo_clk : STD_LOGIC; + SIGNAL xo_rst : STD_LOGIC; SIGNAL xo_rst_n : STD_LOGIC; SIGNAL cal_clk : STD_LOGIC; SIGNAL mm_clk : STD_LOGIC; @@ -175,8 +124,9 @@ ARCHITECTURE str OF fn_beamformer IS SIGNAL dp_rst : STD_LOGIC; SIGNAL dp_clk : STD_LOGIC; SIGNAL dp_pps : STD_LOGIC; + SIGNAL sa_rst : STD_LOGIC; - SIGNAL this_chip_id : STD_LOGIC_VECTOR(c_unb_nof_chip_w-1 DOWNTO 0); -- [2:0], so range 0-3 for FN and range 4-7 BN + SIGNAL this_chip_id : STD_LOGIC_VECTOR(c_unb1_board_nof_chip_w-1 DOWNTO 0); -- [2:0], so range 0-3 for FN and range 4-7 BN -- PIOs SIGNAL pout_debug_wave : STD_LOGIC_VECTOR(c_word_w-1 DOWNTO 0); @@ -191,11 +141,12 @@ ARCHITECTURE str OF fn_beamformer IS -- Interface: 10GbE CONSTANT c_nof_10GbE_offload_streams : NATURAL := 1; + CONSTANT c_pkt_len : NATURAL := 176; -- Let tr_10GbE FIFO buffer one full packet before releasing it SIGNAL xaui_tx_arr : t_xaui_arr(c_nof_10GbE_offload_streams-1 DOWNTO 0); SIGNAL xaui_rx_arr : t_xaui_arr(c_nof_10GbE_offload_streams-1 DOWNTO 0); - SIGNAL unb_xaui_tx_arr : t_unb_xaui_sl_2arr(c_nof_10GbE_offload_streams-1 DOWNTO 0); - SIGNAL unb_xaui_rx_arr : t_unb_xaui_sl_2arr(c_nof_10GbE_offload_streams-1 DOWNTO 0); + SIGNAL unb_xaui_tx_arr : t_unb1_board_xaui_sl_2arr(c_nof_10GbE_offload_streams-1 DOWNTO 0); + SIGNAL unb_xaui_rx_arr : t_unb1_board_xaui_sl_2arr(c_nof_10GbE_offload_streams-1 DOWNTO 0); SIGNAL mdio_mdc_arr : STD_LOGIC_VECTOR(c_nof_10GbE_offload_streams-1 DOWNTO 0); SIGNAL mdio_mdat_in_arr : STD_LOGIC_VECTOR(c_nof_10GbE_offload_streams-1 DOWNTO 0); SIGNAL mdio_mdat_oen_arr : STD_LOGIC_VECTOR(c_nof_10GbE_offload_streams-1 DOWNTO 0); @@ -230,8 +181,8 @@ ARCHITECTURE str OF fn_beamformer IS SIGNAL eth1g_ram_mosi : t_mem_mosi := c_mem_mosi_rst; SIGNAL eth1g_ram_miso : t_mem_miso; -- . tr_mesh - SIGNAL tx_serial_2arr : t_unb_mesh_sl_2arr; - SIGNAL rx_serial_2arr : t_unb_mesh_sl_2arr; + SIGNAL tx_serial_2arr : t_unb1_board_mesh_sl_2arr; + SIGNAL rx_serial_2arr : t_unb1_board_mesh_sl_2arr; -- . tr_nonbonded with diagnostics SIGNAL reg_tr_nonbonded_mosi : t_mem_mosi := c_mem_mosi_rst; SIGNAL reg_tr_nonbonded_miso : t_mem_miso; @@ -281,15 +232,107 @@ ARCHITECTURE str OF fn_beamformer IS SIGNAL reg_tr_xaui_mosi : t_mem_mosi; SIGNAL reg_tr_xaui_miso : t_mem_miso; - SIGNAL reg_mdio_mosi_arr : t_mem_mosi_arr(c_nof_mdio-1 DOWNTO 0); - SIGNAL reg_mdio_miso_arr : t_mem_miso_arr(c_nof_mdio-1 DOWNTO 0); + SIGNAL reg_mdio_mosi_arr : t_mem_mosi_arr(c_unb1_board_nof_mdio-1 DOWNTO 0); + SIGNAL reg_mdio_miso_arr : t_mem_miso_arr(c_unb1_board_nof_mdio-1 DOWNTO 0); BEGIN + ----------------------------------------------------------------------------- + -- General control function + ----------------------------------------------------------------------------- + u_ctrl : ENTITY unb1_board_lib.ctrl_unb1_board + GENERIC MAP ( + g_sim => g_sim, + g_design_name => g_design_name, + g_design_note => g_design_note, + g_stamp_date => g_stamp_date, + g_stamp_time => g_stamp_time, + g_stamp_svn => g_stamp_svn, + g_fw_version => c_fw_version, + g_mm_clk_freq => c_unb1_board_mm_clk_freq_50M, + g_use_phy => c_use_phy, + g_udp_offload => TRUE, + g_aux => c_unb1_board_aux, + g_udp_offload_nof_streams => c_eth_nof_udp_ports + ) + PORT MAP ( + -- Clock an reset signals + cs_sim => cs_sim, + xo_clk => xo_clk, + xo_rst => xo_rst, + xo_rst_n => xo_rst_n, + + mm_clk => mm_clk, + mm_locked => mm_locked, + mm_rst => mm_rst, + + dp_rst => dp_rst, + dp_clk => dp_clk, + dp_pps => dp_pps, + dp_rst_in => dp_rst, + dp_clk_in => dp_clk, + + this_chip_id => this_chip_id, + + -- Toggle WDI + pout_debug_wave => pout_debug_wave, + pout_wdi => pout_wdi, + pin_pps => pin_pps, + + -- MM buses + -- . Manual WDI override + reg_wdi_mosi => reg_wdi_mosi, + reg_wdi_miso => reg_wdi_miso, + + -- . System_info + reg_unb_system_info_mosi => reg_unb_system_info_mosi, + reg_unb_system_info_miso => reg_unb_system_info_miso, + rom_unb_system_info_mosi => rom_unb_system_info_mosi, + rom_unb_system_info_miso => rom_unb_system_info_miso, + + -- . UniBoard I2C sensors + reg_unb_sens_mosi => reg_unb_sens_mosi, + reg_unb_sens_miso => reg_unb_sens_miso, + + -- eth1g + eth1g_tse_clk => eth1g_tse_clk, -- 125 MHz from xo_clk PLL in SOPC system + eth1g_mm_rst => eth1g_mm_rst, + eth1g_tse_mosi => eth1g_tse_mosi, + eth1g_tse_miso => eth1g_tse_miso, + eth1g_reg_mosi => eth1g_reg_mosi, + eth1g_reg_miso => eth1g_reg_miso, + eth1g_reg_interrupt => eth1g_reg_interrupt, + eth1g_ram_mosi => eth1g_ram_mosi, + eth1g_ram_miso => eth1g_ram_miso, + + -- eth1g UDP streaming ports to offload BF out + udp_tx_sosi_arr => eth1g_udp_tx_sosi_arr, + udp_tx_siso_arr => eth1g_udp_tx_siso_arr, + + -- FPGA pins + -- . General + CLK => CLK, + PPS => PPS, + WDI => WDI, + INTA => INTA, + INTB => INTB, + -- . Others + VERSION => VERSION, + ID => ID, + TESTIO => TESTIO, + -- . I2C Interface to Sensors + sens_sc => sens_sc, + sens_sd => sens_sd, + -- . 1GbE Control Interface + ETH_clk => ETH_clk, + ETH_SGIN => ETH_SGIN, + ETH_SGOUT => ETH_SGOUT + ); + ----------------------------------------------------------------------------- -- Node function ----------------------------------------------------------------------------- - u_node_fn_beamformer : ENTITY work.node_fn_beamformer + u_node_fn_beamformer : ENTITY work.node_apertif_unb1_fn_beamformer GENERIC MAP( g_use_bf => g_use_bf ) @@ -357,407 +400,17 @@ BEGIN rx_serial_2arr => rx_serial_2arr ); - ----------------------------------------------------------------------------- - -- SOPC system - ----------------------------------------------------------------------------- - u_sopc : ENTITY work.sopc_fn_beamformer - PORT MAP ( - -- 1) global signals: - clk_0 => xo_clk, -- PLL reference = 25 MHz from ETH_clk pin - reset_n => xo_rst_n, - mm_clk => mm_clk, -- PLL clk[0] = 125 MHz system clock that the NIOS2 and the MM bus run on - cal_clk => cal_clk, -- PLL clk[1] = 40 MHz calibration clock for the IO reconfiguration - tse_clk => eth1g_tse_clk, -- PLL clk[2] = 125 MHz dedicated clock for the 1 Gbit Ethernet unit - - -- the_altpll_0 - areset_to_the_altpll_0 => '0', - locked_from_the_altpll_0 => mm_locked, - phasedone_from_the_altpll_0 => OPEN, - - -- the_avs_eth_0 - coe_clk_export_from_the_avs_eth_0 => OPEN, - coe_reset_export_from_the_avs_eth_0 => eth1g_mm_rst, - coe_tse_address_export_from_the_avs_eth_0 => eth1g_tse_mosi.address(c_unb_mm_reg_default.reg_tse_adr_w-1 DOWNTO 0), - coe_tse_write_export_from_the_avs_eth_0 => eth1g_tse_mosi.wr, - coe_tse_writedata_export_from_the_avs_eth_0 => eth1g_tse_mosi.wrdata(c_word_w-1 DOWNTO 0), - coe_tse_read_export_from_the_avs_eth_0 => eth1g_tse_mosi.rd, - coe_tse_readdata_export_to_the_avs_eth_0 => eth1g_tse_miso.rddata(c_word_w-1 DOWNTO 0), - coe_tse_waitrequest_export_to_the_avs_eth_0 => eth1g_tse_miso.waitrequest, - coe_reg_address_export_from_the_avs_eth_0 => eth1g_reg_mosi.address(c_unb_mm_reg_default.reg_eth_adr_w-1 DOWNTO 0), - coe_reg_write_export_from_the_avs_eth_0 => eth1g_reg_mosi.wr, - coe_reg_writedata_export_from_the_avs_eth_0 => eth1g_reg_mosi.wrdata(c_word_w-1 DOWNTO 0), - coe_reg_read_export_from_the_avs_eth_0 => eth1g_reg_mosi.rd, - coe_reg_readdata_export_to_the_avs_eth_0 => eth1g_reg_miso.rddata(c_word_w-1 DOWNTO 0), - coe_irq_export_to_the_avs_eth_0 => eth1g_reg_interrupt, - coe_ram_address_export_from_the_avs_eth_0 => eth1g_ram_mosi.address(c_unb_mm_reg_default.ram_eth_adr_w-1 DOWNTO 0), - coe_ram_write_export_from_the_avs_eth_0 => eth1g_ram_mosi.wr, - coe_ram_writedata_export_from_the_avs_eth_0 => eth1g_ram_mosi.wrdata(c_word_w-1 DOWNTO 0), - coe_ram_read_export_from_the_avs_eth_0 => eth1g_ram_mosi.rd, - coe_ram_readdata_export_to_the_avs_eth_0 => eth1g_ram_miso.rddata(c_word_w-1 DOWNTO 0), - - -- the_reg_unb_sens - coe_address_export_from_the_reg_unb_sens => reg_unb_sens_mosi.address(c_unb_mm_reg_default.reg_unb_sens_adr_w-1 DOWNTO 0), - coe_clk_export_from_the_reg_unb_sens => OPEN, - coe_read_export_from_the_reg_unb_sens => reg_unb_sens_mosi.rd, - coe_readdata_export_to_the_reg_unb_sens => reg_unb_sens_miso.rddata(c_word_w-1 DOWNTO 0), - coe_reset_export_from_the_reg_unb_sens => OPEN, - coe_write_export_from_the_reg_unb_sens => reg_unb_sens_mosi.wr, - coe_writedata_export_from_the_reg_unb_sens => reg_unb_sens_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_reg_tr_nonbonded_mesh - coe_address_export_from_the_reg_tr_nonbonded_mesh => reg_tr_nonbonded_mosi.address(c_unb_mm_reg_default.reg_tr_nonbonded_adr_w-1 DOWNTO 0), - coe_clk_export_from_the_reg_tr_nonbonded_mesh => OPEN, - coe_read_export_from_the_reg_tr_nonbonded_mesh => reg_tr_nonbonded_mosi.rd, - coe_readdata_export_to_the_reg_tr_nonbonded_mesh => reg_tr_nonbonded_miso.rddata(c_word_w-1 DOWNTO 0), - coe_reset_export_from_the_reg_tr_nonbonded_mesh => OPEN, - coe_write_export_from_the_reg_tr_nonbonded_mesh => reg_tr_nonbonded_mosi.wr, - coe_writedata_export_from_the_reg_tr_nonbonded_mesh => reg_tr_nonbonded_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_reg_diagnostics_mesh - coe_address_export_from_the_reg_diagnostics_mesh => reg_diagnostics_mosi.address(c_unb_mm_reg_default.reg_diagnostics_adr_w-1 DOWNTO 0), - coe_clk_export_from_the_reg_diagnostics_mesh => OPEN, - coe_read_export_from_the_reg_diagnostics_mesh => reg_diagnostics_mosi.rd, - coe_readdata_export_to_the_reg_diagnostics_mesh => reg_diagnostics_miso.rddata(c_word_w-1 DOWNTO 0), - coe_reset_export_from_the_reg_diagnostics_mesh => OPEN, - coe_write_export_from_the_reg_diagnostics_mesh => reg_diagnostics_mosi.wr, - coe_writedata_export_from_the_reg_diagnostics_mesh => reg_diagnostics_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_ram_diag_data_buffer - coe_address_export_from_the_ram_diag_data_buffer => ram_diag_data_buf_mosi.address(c_unb_mm_reg_default.ram_diag_db_adr_w-1 DOWNTO 0), - coe_clk_export_from_the_ram_diag_data_buffer => OPEN, - coe_read_export_from_the_ram_diag_data_buffer => ram_diag_data_buf_mosi.rd, - coe_readdata_export_to_the_ram_diag_data_buffer => ram_diag_data_buf_miso.rddata(c_word_w-1 DOWNTO 0), - coe_reset_export_from_the_ram_diag_data_buffer => OPEN, - coe_write_export_from_the_ram_diag_data_buffer => ram_diag_data_buf_mosi.wr, - coe_writedata_export_from_the_ram_diag_data_buffer => ram_diag_data_buf_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_reg_diag_data_buffer - coe_address_export_from_the_reg_diag_data_buffer => reg_diag_data_buf_mosi.address(c_reg_diag_db_adr_w-1 DOWNTO 0), - coe_clk_export_from_the_reg_diag_data_buffer => OPEN, - coe_read_export_from_the_reg_diag_data_buffer => reg_diag_data_buf_mosi.rd, - coe_readdata_export_to_the_reg_diag_data_buffer => reg_diag_data_buf_miso.rddata(c_word_w-1 DOWNTO 0), - coe_reset_export_from_the_reg_diag_data_buffer => OPEN, - coe_write_export_from_the_reg_diag_data_buffer => reg_diag_data_buf_mosi.wr, - coe_writedata_export_from_the_reg_diag_data_buffer => reg_diag_data_buf_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_reg_bsn_monitor - coe_address_export_from_the_reg_bsn_monitor => reg_bsn_monitor_mosi.address(c_unb_mm_reg_default.reg_bsn_monitor_adr_w-1 DOWNTO 0), - coe_clk_export_from_the_reg_bsn_monitor => OPEN, - coe_read_export_from_the_reg_bsn_monitor => reg_bsn_monitor_mosi.rd, - coe_readdata_export_to_the_reg_bsn_monitor => reg_bsn_monitor_miso.rddata(c_word_w-1 DOWNTO 0), - coe_reset_export_from_the_reg_bsn_monitor => OPEN, - coe_write_export_from_the_reg_bsn_monitor => reg_bsn_monitor_mosi.wr, - coe_writedata_export_from_the_reg_bsn_monitor => reg_bsn_monitor_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_pio_debug_wave - out_port_from_the_pio_debug_wave => pout_debug_wave, - - -- the_pio_pps - in_port_to_the_pio_pps => pin_pps, - - -- the_pio_system_info: actually a avs_common_mm instance - coe_clk_export_from_the_pio_system_info => OPEN, - coe_reset_export_from_the_pio_system_info => OPEN, - coe_address_export_from_the_pio_system_info => reg_unb_system_info_mosi.address(c_unb_mm_reg_default.reg_unb_system_info_adr_w-1 DOWNTO 0), - coe_read_export_from_the_pio_system_info => reg_unb_system_info_mosi.rd, - coe_readdata_export_to_the_pio_system_info => reg_unb_system_info_miso.rddata(c_word_w-1 DOWNTO 0), - coe_write_export_from_the_pio_system_info => reg_unb_system_info_mosi.wr, - coe_writedata_export_from_the_pio_system_info => reg_unb_system_info_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_rom_system_info - coe_clk_export_from_the_rom_system_info => OPEN, - coe_reset_export_from_the_rom_system_info => OPEN, - coe_address_export_from_the_rom_system_info => rom_unb_system_info_mosi.address(c_unb_mm_reg_default.rom_unb_system_info_adr_w-1 DOWNTO 0), - coe_read_export_from_the_rom_system_info => rom_unb_system_info_mosi.rd, - coe_readdata_export_to_the_rom_system_info => rom_unb_system_info_miso.rddata(c_word_w-1 DOWNTO 0), - coe_write_export_from_the_rom_system_info => rom_unb_system_info_mosi.wr, - coe_writedata_export_from_the_rom_system_info => rom_unb_system_info_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_pio_wdi - out_port_from_the_pio_wdi => pout_wdi, - - -- the_reg_wdi: Manual WDI override; causes FPGA reconfiguration if WDI is enabled (g_use_phy). - coe_clk_export_from_the_reg_wdi => OPEN, - coe_reset_export_from_the_reg_wdi => OPEN, - coe_address_export_from_the_reg_wdi => reg_wdi_mosi.address(0), - coe_read_export_from_the_reg_wdi => reg_wdi_mosi.rd, - coe_readdata_export_to_the_reg_wdi => reg_wdi_miso.rddata(c_word_w-1 DOWNTO 0), - coe_write_export_from_the_reg_wdi => reg_wdi_mosi.wr, - coe_writedata_export_from_the_reg_wdi => reg_wdi_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_ram_st_sst - coe_address_export_from_the_ram_st_sst => ram_st_sst_bf_mosi.address(c_ram_st_sst_bf_addr_w-1 DOWNTO 0), - coe_clk_export_from_the_ram_st_sst => OPEN, - coe_read_export_from_the_ram_st_sst => ram_st_sst_bf_mosi.rd, - coe_readdata_export_to_the_ram_st_sst => ram_st_sst_bf_miso.rddata(c_word_w-1 DOWNTO 0), - coe_reset_export_from_the_ram_st_sst => OPEN, - coe_write_export_from_the_ram_st_sst => ram_st_sst_bf_mosi.wr, - coe_writedata_export_from_the_ram_st_sst => ram_st_sst_bf_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_reg_st_sst - coe_address_export_from_the_reg_st_sst => reg_st_sst_bf_mosi.address(c_reg_st_sst_bf_addr_w-1 DOWNTO 0), - coe_clk_export_from_the_reg_st_sst => OPEN, - coe_read_export_from_the_reg_st_sst => reg_st_sst_bf_mosi.rd, - coe_readdata_export_to_the_reg_st_sst => reg_st_sst_bf_miso.rddata(c_word_w-1 DOWNTO 0), - coe_reset_export_from_the_reg_st_sst => OPEN, - coe_write_export_from_the_reg_st_sst => reg_st_sst_bf_mosi.wr, - coe_writedata_export_from_the_reg_st_sst => reg_st_sst_bf_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_ram_ss_ss_wide - coe_address_export_from_the_ram_ss_ss_wide => ram_ss_ss_wide_mosi.address(c_ram_ss_ss_wide_addr_w-1 DOWNTO 0), - coe_clk_export_from_the_ram_ss_ss_wide => OPEN, - coe_read_export_from_the_ram_ss_ss_wide => ram_ss_ss_wide_mosi.rd, - coe_readdata_export_to_the_ram_ss_ss_wide => ram_ss_ss_wide_miso.rddata(c_word_w-1 DOWNTO 0), - coe_reset_export_from_the_ram_ss_ss_wide => OPEN, - coe_write_export_from_the_ram_ss_ss_wide => ram_ss_ss_wide_mosi.wr, - coe_writedata_export_from_the_ram_ss_ss_wide => ram_ss_ss_wide_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_ram_bf_weights - coe_address_export_from_the_ram_bf_weights => ram_bf_weights_mosi.address(c_ram_bf_weights_addr_w-1 DOWNTO 0), - coe_clk_export_from_the_ram_bf_weights => OPEN, - coe_read_export_from_the_ram_bf_weights => ram_bf_weights_mosi.rd, - coe_readdata_export_to_the_ram_bf_weights => ram_bf_weights_miso.rddata(c_word_w-1 DOWNTO 0), - coe_reset_export_from_the_ram_bf_weights => OPEN, - coe_write_export_from_the_ram_bf_weights => ram_bf_weights_mosi.wr, - coe_writedata_export_from_the_ram_bf_weights => ram_bf_weights_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_reg_bg_diag_bg - coe_address_export_from_the_reg_diag_bg => reg_diag_bg_mosi.address(c_reg_diag_bg_addr_w-1 DOWNTO 0), - coe_clk_export_from_the_reg_diag_bg => OPEN, - coe_read_export_from_the_reg_diag_bg => reg_diag_bg_mosi.rd, - coe_readdata_export_to_the_reg_diag_bg => reg_diag_bg_miso.rddata(c_word_w-1 DOWNTO 0), - coe_reset_export_from_the_reg_diag_bg => OPEN, - coe_write_export_from_the_reg_diag_bg => reg_diag_bg_mosi.wr, - coe_writedata_export_from_the_reg_diag_bg => reg_diag_bg_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_ram_diag_bg - coe_address_export_from_the_ram_diag_bg => ram_diag_bg_mosi.address(c_ram_diag_bg_addr_w-1 DOWNTO 0), - coe_clk_export_from_the_ram_diag_bg => OPEN, - coe_read_export_from_the_ram_diag_bg => ram_diag_bg_mosi.rd, - coe_readdata_export_to_the_ram_diag_bg => ram_diag_bg_miso.rddata(c_word_w-1 DOWNTO 0), - coe_reset_export_from_the_ram_diag_bg => OPEN, - coe_write_export_from_the_ram_diag_bg => ram_diag_bg_mosi.wr, - coe_writedata_export_from_the_ram_diag_bg => ram_diag_bg_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_reg_dp_ram_from_mm - coe_clk_export_from_the_reg_dp_ram_from_mm => OPEN, - coe_reset_export_from_the_reg_dp_ram_from_mm => OPEN, - coe_address_export_from_the_reg_dp_ram_from_mm => reg_dp_ram_from_mm_mosi.address(c_dp_reg_mm_adr_w-1 DOWNTO 0), - coe_read_export_from_the_reg_dp_ram_from_mm => reg_dp_ram_from_mm_mosi.rd, - coe_readdata_export_to_the_reg_dp_ram_from_mm => reg_dp_ram_from_mm_miso.rddata(c_word_w-1 DOWNTO 0), - coe_write_export_from_the_reg_dp_ram_from_mm => reg_dp_ram_from_mm_mosi.wr, - coe_writedata_export_from_the_reg_dp_ram_from_mm => reg_dp_ram_from_mm_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_ram_dp_ram_from_mm - coe_clk_export_from_the_ram_dp_ram_from_mm => OPEN, - coe_reset_export_from_the_ram_dp_ram_from_mm => OPEN, - coe_address_export_from_the_ram_dp_ram_from_mm => ram_dp_ram_from_mm_mosi.address(c_dp_ram_mm_adr_w-1 DOWNTO 0), - coe_read_export_from_the_ram_dp_ram_from_mm => ram_dp_ram_from_mm_mosi.rd, - coe_readdata_export_to_the_ram_dp_ram_from_mm => ram_dp_ram_from_mm_miso.rddata(c_word_w-1 DOWNTO 0), - coe_write_export_from_the_ram_dp_ram_from_mm => ram_dp_ram_from_mm_mosi.wr, - coe_writedata_export_from_the_ram_dp_ram_from_mm => ram_dp_ram_from_mm_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_reg_dp_split - coe_clk_export_from_the_reg_dp_split => OPEN, - coe_reset_export_from_the_reg_dp_split => OPEN, - coe_address_export_from_the_reg_dp_split => reg_dp_split_mosi.address(c_reg_dp_split_adr_w-1 DOWNTO 0), - coe_read_export_from_the_reg_dp_split => reg_dp_split_mosi.rd, - coe_readdata_export_to_the_reg_dp_split => reg_dp_split_miso.rddata(c_word_w-1 DOWNTO 0), - coe_write_export_from_the_reg_dp_split => reg_dp_split_mosi.wr, - coe_writedata_export_from_the_reg_dp_split => reg_dp_split_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_reg_dp_pkt_merge - coe_clk_export_from_the_reg_dp_pkt_merge => OPEN, - coe_reset_export_from_the_reg_dp_pkt_merge => OPEN, - coe_address_export_from_the_reg_dp_pkt_merge => reg_dp_pkt_merge_mosi.address(c_reg_dp_pkt_merge_adr_w-1 DOWNTO 0), - coe_read_export_from_the_reg_dp_pkt_merge => reg_dp_pkt_merge_mosi.rd, - coe_readdata_export_to_the_reg_dp_pkt_merge => reg_dp_pkt_merge_miso.rddata(c_word_w-1 DOWNTO 0), - coe_write_export_from_the_reg_dp_pkt_merge => reg_dp_pkt_merge_mosi.wr, - coe_writedata_export_from_the_reg_dp_pkt_merge => reg_dp_pkt_merge_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_reg_dp_offload_tx - coe_address_export_from_the_reg_dp_offload_tx => reg_dp_offload_tx_mosi.address(0), - coe_clk_export_from_the_reg_dp_offload_tx => OPEN, - coe_read_export_from_the_reg_dp_offload_tx => reg_dp_offload_tx_mosi.rd, - coe_readdata_export_to_the_reg_dp_offload_tx => reg_dp_offload_tx_miso.rddata(c_word_w-1 DOWNTO 0), - coe_reset_export_from_the_reg_dp_offload_tx => OPEN, - coe_write_export_from_the_reg_dp_offload_tx => reg_dp_offload_tx_mosi.wr, - coe_writedata_export_from_the_reg_dp_offload_tx => reg_dp_offload_tx_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_reg_dp_offload_tx_hdr_dat - coe_address_export_from_the_reg_dp_offload_tx_hdr_dat => reg_dp_offload_tx_hdr_dat_mosi.address(c_reg_dp_offload_tx_hdr_dat_adr_w-1 DOWNTO 0), - coe_clk_export_from_the_reg_dp_offload_tx_hdr_dat => OPEN, - coe_read_export_from_the_reg_dp_offload_tx_hdr_dat => reg_dp_offload_tx_hdr_dat_mosi.rd, - coe_readdata_export_to_the_reg_dp_offload_tx_hdr_dat => reg_dp_offload_tx_hdr_dat_miso.rddata(c_word_w-1 DOWNTO 0), - coe_reset_export_from_the_reg_dp_offload_tx_hdr_dat => OPEN, - coe_write_export_from_the_reg_dp_offload_tx_hdr_dat => reg_dp_offload_tx_hdr_dat_mosi.wr, - coe_writedata_export_from_the_reg_dp_offload_tx_hdr_dat => reg_dp_offload_tx_hdr_dat_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_reg_dp_offload_tx_hdr_ovr - coe_address_export_from_the_reg_dp_offload_tx_hdr_ovr => reg_dp_offload_tx_hdr_ovr_mosi.address(c_reg_dp_offload_tx_hdr_ovr_adr_w-1 DOWNTO 0), - coe_clk_export_from_the_reg_dp_offload_tx_hdr_ovr => OPEN, - coe_read_export_from_the_reg_dp_offload_tx_hdr_ovr => reg_dp_offload_tx_hdr_ovr_mosi.rd, - coe_readdata_export_to_the_reg_dp_offload_tx_hdr_ovr => reg_dp_offload_tx_hdr_ovr_miso.rddata(c_word_w-1 DOWNTO 0), - coe_reset_export_from_the_reg_dp_offload_tx_hdr_ovr => OPEN, - coe_write_export_from_the_reg_dp_offload_tx_hdr_ovr => reg_dp_offload_tx_hdr_ovr_mosi.wr, - coe_writedata_export_from_the_reg_dp_offload_tx_hdr_ovr => reg_dp_offload_tx_hdr_ovr_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_reg_tr_10GbE - coe_clk_export_from_the_reg_tr_10GbE => OPEN, - coe_reset_export_from_the_reg_tr_10GbE => OPEN, - coe_address_export_from_the_reg_tr_10GbE => reg_tr_10GbE_mosi.address(c_reg_tr_10GbE_adr_w-1 DOWNTO 0), - coe_read_export_from_the_reg_tr_10GbE => reg_tr_10GbE_mosi.rd, - coe_readdata_export_to_the_reg_tr_10GbE => reg_tr_10GbE_miso.rddata(c_word_w-1 DOWNTO 0), - coe_waitrequest_export_to_the_reg_tr_10GbE => reg_tr_10GbE_miso.waitrequest, - coe_write_export_from_the_reg_tr_10GbE => reg_tr_10GbE_mosi.wr, - coe_writedata_export_from_the_reg_tr_10GbE => reg_tr_10GbE_mosi.wrdata(c_word_w-1 DOWNTO 0), - - -- the_reg_mdio_0 - coe_clk_export_from_the_reg_mdio_0 => OPEN, - coe_reset_export_from_the_reg_mdio_0 => OPEN, - coe_address_export_from_the_reg_mdio_0 => reg_mdio_mosi_arr(0).address(c_unb_mm_reg_default.reg_mdio_adr_w-1 DOWNTO 0), - coe_read_export_from_the_reg_mdio_0 => reg_mdio_mosi_arr(0).rd, - coe_readdata_export_to_the_reg_mdio_0 => reg_mdio_miso_arr(0).rddata(c_word_w-1 DOWNTO 0), - coe_write_export_from_the_reg_mdio_0 => reg_mdio_mosi_arr(0).wr, - coe_writedata_export_from_the_reg_mdio_0 => reg_mdio_mosi_arr(0).wrdata(c_word_w-1 DOWNTO 0), - - -- the_reg_mdio_1 - coe_clk_export_from_the_reg_mdio_1 => OPEN, - coe_reset_export_from_the_reg_mdio_1 => OPEN, - coe_address_export_from_the_reg_mdio_1 => reg_mdio_mosi_arr(1).address(c_unb_mm_reg_default.reg_mdio_adr_w-1 DOWNTO 0), - coe_read_export_from_the_reg_mdio_1 => reg_mdio_mosi_arr(1).rd, - coe_readdata_export_to_the_reg_mdio_1 => reg_mdio_miso_arr(1).rddata(c_word_w-1 DOWNTO 0), - coe_write_export_from_the_reg_mdio_1 => reg_mdio_mosi_arr(1).wr, - coe_writedata_export_from_the_reg_mdio_1 => reg_mdio_mosi_arr(1).wrdata(c_word_w-1 DOWNTO 0), - - -- the_reg_mdio_2 - coe_clk_export_from_the_reg_mdio_2 => OPEN, - coe_reset_export_from_the_reg_mdio_2 => OPEN, - coe_address_export_from_the_reg_mdio_2 => reg_mdio_mosi_arr(2).address(c_unb_mm_reg_default.reg_mdio_adr_w-1 DOWNTO 0), - coe_read_export_from_the_reg_mdio_2 => reg_mdio_mosi_arr(2).rd, - coe_readdata_export_to_the_reg_mdio_2 => reg_mdio_miso_arr(2).rddata(c_word_w-1 DOWNTO 0), - coe_write_export_from_the_reg_mdio_2 => reg_mdio_mosi_arr(2).wr, - coe_writedata_export_from_the_reg_mdio_2 => reg_mdio_mosi_arr(2).wrdata(c_word_w-1 DOWNTO 0), - - -- the_reg_tr_xaui - coe_clk_export_from_the_reg_tr_xaui => OPEN, - coe_reset_export_from_the_reg_tr_xaui => OPEN, - coe_address_export_from_the_reg_tr_xaui => reg_tr_xaui_mosi.address(c_reg_tr_xaui_addr_w-1 DOWNTO 0), - coe_read_export_from_the_reg_tr_xaui => reg_tr_xaui_mosi.rd, - coe_readdata_export_to_the_reg_tr_xaui => reg_tr_xaui_miso.rddata(c_word_w-1 DOWNTO 0), - coe_waitrequest_export_to_the_reg_tr_xaui => reg_tr_xaui_miso.waitrequest, - coe_write_export_from_the_reg_tr_xaui => reg_tr_xaui_mosi.wr, - coe_writedata_export_from_the_reg_tr_xaui => reg_tr_xaui_mosi.wrdata(c_word_w-1 DOWNTO 0) - ); - - ----------------------------------------------------------------------------- - -- General control function - ----------------------------------------------------------------------------- - u_ctrl : ENTITY unb_common_lib.ctrl_unb_common - GENERIC MAP ( - -- General - g_design_name => g_design_name, - g_stamp_date => g_stamp_date, - g_stamp_time => g_stamp_time, - g_stamp_svn => g_stamp_svn, - g_design_note => g_design_note, - g_fw_version => g_fw_version, - -- Use PHY Interface - g_use_phy => g_use_phy, - -- Auxiliary Interface - g_aux => g_aux, - -- Offload BF out(0) - g_udp_offload => TRUE - ) - PORT MAP ( - -- - -- >>> SOPC system with conduit peripheral MM bus - -- - -- System - cs_sim => cs_sim, - xo_clk => xo_clk, - xo_rst_n => xo_rst_n, - mm_clk => mm_clk, - mm_locked => mm_locked, - mm_rst => mm_rst, - - dp_rst => dp_rst, - dp_clk => dp_clk, - dp_pps => dp_pps, - dp_rst_in => dp_rst, - dp_clk_in => dp_clk, - - this_chip_id => this_chip_id, - - -- PIOs - pout_debug_wave => pout_debug_wave, - pout_wdi => pout_wdi, - pin_pps => pin_pps, - - -- System_info - reg_unb_system_info_mosi => reg_unb_system_info_mosi, - reg_unb_system_info_miso => reg_unb_system_info_miso, - rom_unb_system_info_mosi => rom_unb_system_info_mosi, - rom_unb_system_info_miso => rom_unb_system_info_miso, - - -- Manual WDI override - reg_wdi_mosi => reg_wdi_mosi, - reg_wdi_miso => reg_wdi_miso, - - -- UniBoard I2C sensors - reg_unb_sens_mosi => reg_unb_sens_mosi, - reg_unb_sens_miso => reg_unb_sens_miso, - - -- eth1g - eth1g_tse_clk => eth1g_tse_clk, - eth1g_mm_rst => eth1g_mm_rst, - eth1g_tse_mosi => eth1g_tse_mosi, - eth1g_tse_miso => eth1g_tse_miso, - eth1g_reg_mosi => eth1g_reg_mosi, - eth1g_reg_miso => eth1g_reg_miso, - eth1g_reg_interrupt => eth1g_reg_interrupt, - eth1g_ram_mosi => eth1g_ram_mosi, - eth1g_ram_miso => eth1g_ram_miso, - - -- eth1g UDP streaming ports to offload BF out - udp_tx_sosi_arr => eth1g_udp_tx_sosi_arr, - udp_tx_siso_arr => eth1g_udp_tx_siso_arr, - - -- - -- >>> Ctrl FPGA pins - -- - -- General - CLK => CLK, - PPS => PPS, - WDI => WDI, - INTA => INTA, - INTB => INTB, - - -- Others - VERSION => VERSION, - ID => ID, - TESTIO => TESTIO, - - -- I2C Interface to Sensors - sens_sc => sens_sc, - sens_sd => sens_sd, - - ETH_clk => ETH_clk, - ETH_SGIN => ETH_SGIN, - ETH_SGOUT => ETH_SGOUT - ); - ----------------------------------------------------------------------------- -- Mesh I/O ----------------------------------------------------------------------------- - no_tr_mesh : IF g_use_phy.tr_mesh=0 GENERATE + no_tr_mesh : IF c_use_phy.tr_mesh=0 GENERATE rx_serial_2arr <= (OTHERS=>(OTHERS=>'0')); END GENERATE; - gen_tr_mesh : IF g_use_phy.tr_mesh/=0 GENERATE - u_mesh_io : ENTITY unb_common_lib.unb_mesh_io + gen_tr_mesh : IF c_use_phy.tr_mesh/=0 GENERATE + u_mesh_io : ENTITY unb1_board_lib.unb1_board_mesh_io GENERIC MAP ( - g_bus_w => g_tr_mesh.bus_w + g_bus_w => c_tr_mesh.bus_w ) PORT MAP ( tx_serial_2arr => tx_serial_2arr, @@ -778,42 +431,65 @@ BEGIN ----------------------------------------------------------------------------- -- Interface : 10GbE ----------------------------------------------------------------------------- + u_areset_sa_rst : ENTITY common_lib.common_areset + GENERIC MAP( + g_rst_level => '1', + g_delay_len => 4 + ) + PORT MAP( + clk => SA_CLK, + in_rst => '0', + out_rst => sa_rst + ); + u_tr_10GbE: ENTITY tr_10GbE_lib.tr_10GbE GENERIC MAP( - g_sim => g_sim, - g_sim_level => 0, - g_nof_macs => c_nof_10GbE_offload_streams, - g_use_mdio => TRUE, - g_pkt_len => c_pkt_len + g_sim => g_sim, + g_sim_level => 0, + g_nof_macs => c_nof_10GbE_offload_streams, + g_use_mdio => TRUE, + g_tx_fifo_fill => c_pkt_len, + g_tx_fifo_size => 2*c_pkt_len, + g_rx_fifo_size => 2*c_pkt_len ) - PORT MAP ( - mm_rst => mm_rst, - mm_clk => mm_clk, + + PORT MAP ( + -- Transceiver PLL reference clock + tr_ref_clk_156 => SA_CLK, + tr_ref_rst_156 => sa_rst, - tr_clk => SA_CLK, + -- Calibration & reconfig clock + cal_rec_clk => mm_clk, --cal_clk, # required for XAUI + + -- MM interface + mm_rst => mm_rst, + mm_clk => mm_clk, - cal_rec_clk => mm_clk, --cal_clk, # required for XAUI + reg_mac_mosi => reg_tr_10GbE_mosi, + reg_mac_miso => reg_tr_10GbE_miso, - dp_rst => dp_rst, - dp_clk => dp_clk, + xaui_mosi => reg_tr_xaui_mosi, + xaui_miso => reg_tr_xaui_miso, - snk_out_arr => dp_offload_tx_src_in_arr, - snk_in_arr => dp_offload_tx_src_out_arr, + mdio_mosi_arr => reg_mdio_mosi_arr(c_nof_10GbE_offload_streams-1 DOWNTO 0), + mdio_miso_arr => reg_mdio_miso_arr(c_nof_10GbE_offload_streams-1 DOWNTO 0), - reg_mac_mosi => reg_tr_10GbE_mosi, - reg_mac_miso => reg_tr_10GbE_miso, - xaui_mosi => reg_tr_xaui_mosi, - xaui_miso => reg_tr_xaui_miso, - mdio_mosi_arr => reg_mdio_mosi_arr(c_nof_10GbE_offload_streams-1 DOWNTO 0), - mdio_miso_arr => reg_mdio_miso_arr(c_nof_10GbE_offload_streams-1 DOWNTO 0), + -- DP interface + dp_rst => dp_rst, + dp_clk => dp_clk, - xaui_tx_out_arr => xaui_tx_arr, - xaui_rx_in_arr => xaui_rx_arr, + snk_out_arr => dp_offload_tx_src_in_arr, + snk_in_arr => dp_offload_tx_src_out_arr, - mdio_rst => SI_FN_RSTN, - mdio_mdc_arr => mdio_mdc_arr, - mdio_mdat_in_arr => mdio_mdat_in_arr, - mdio_mdat_oen_arr => mdio_mdat_oen_arr + -- Serial XAUI IO + xaui_tx_arr => xaui_tx_arr, + xaui_rx_arr => xaui_rx_arr, + + -- MDIO interface + mdio_rst => SI_FN_RSTN, + mdio_mdc_arr => mdio_mdc_arr, + mdio_mdat_in_arr => mdio_mdat_in_arr, + mdio_mdat_oen_arr => mdio_mdat_oen_arr ); -- Wire together different types @@ -822,7 +498,7 @@ BEGIN xaui_rx_arr(i) <= unb_xaui_rx_arr(i); END GENERATE; - u_front_io : ENTITY unb_common_lib.unb_front_io + u_front_io : ENTITY unb1_board_lib.unb1_board_front_io GENERIC MAP ( g_nof_xaui => c_nof_10GbE_offload_streams ) @@ -851,7 +527,7 @@ BEGIN ----------------------------------------------------------------------------- -- DP offload TX : BF out -> 10GbE ----------------------------------------------------------------------------- - u_fn_beamformer_udp_offload : ENTITY work.fn_beamformer_udp_offload + u_fn_beamformer_udp_offload : ENTITY work.apertif_unb1_fn_beamformer_udp_offload PORT MAP ( mm_rst => mm_rst, mm_clk => mm_clk, @@ -873,8 +549,7 @@ BEGIN reg_dp_offload_tx_hdr_ovr_mosi => reg_dp_offload_tx_hdr_ovr_mosi, reg_dp_offload_tx_hdr_ovr_miso => reg_dp_offload_tx_hdr_ovr_miso ); - - + END; diff --git a/applications/apertif/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer_udp_offload.vhd b/applications/apertif/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer_udp_offload.vhd index 5127be33e7..c9317b9bc0 100644 --- a/applications/apertif/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer_udp_offload.vhd +++ b/applications/apertif/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer_udp_offload.vhd @@ -26,36 +26,38 @@ -- because the same header field definition is also used by dp_offload_rx in -- design apertif_fn_qdcor. -LIBRARY IEEE, common_lib, work, mm_lib, unb_common_lib, tse_lib, dp_lib; +LIBRARY IEEE, common_lib, unb1_board_lib, tech_tse_lib, dp_lib; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.NUMERIC_STD.ALL; USE common_lib.common_pkg.ALL; USE common_lib.common_mem_pkg.ALL; -USE dp_lib.dp_stream_pkg.ALL; USE common_lib.common_field_pkg.ALL; -USE unb_common_lib.unb_common_pkg.ALL; -USE tse_lib.tse_pkg.ALL; -USE tse_lib.eth_layers_pkg.ALL; -USE tse_lib.eth_pkg.ALL; -USE work.fn_beamformer_udp_offload_pkg.ALL; +USE common_lib.common_network_layers_pkg.ALL; +USE common_lib.common_network_total_header_pkg.ALL; +USE unb1_board_lib.unb1_board_pkg.ALL; +USE unb1_board_lib.unb1_board_peripherals_pkg.ALL; +USE tech_tse_lib.tech_tse_pkg.ALL; +USE tech_tse_lib.tb_tech_tse_pkg.ALL; +USE dp_lib.dp_stream_pkg.ALL; +USE work.apertif_unb1_fn_beamformer_udp_offload_pkg.ALL; -ENTITY fn_beamformer_udp_offload IS +ENTITY apertif_unb1_fn_beamformer_udp_offload IS PORT ( - mm_rst : IN STD_LOGIC; - mm_clk : IN STD_LOGIC; - - dp_rst : IN STD_LOGIC; - dp_clk : IN STD_LOGIC; - - snk_in_arr : IN t_dp_sosi_arr(3 DOWNTO 0); -- 4 BF unit outputs - - src_out_arr : OUT t_dp_sosi_arr(0 DOWNTO 0); - src_in_arr : IN t_dp_siso_arr(0 DOWNTO 0) := (OTHERS=>c_dp_siso_rdy); - - ID : IN STD_LOGIC_VECTOR(c_unb_aux.id_w-1 DOWNTO 0); - - reg_dp_offload_tx_mosi : IN t_mem_mosi := c_mem_mosi_rst; - reg_dp_offload_tx_miso : OUT t_mem_miso := c_mem_miso_rst; + mm_rst : IN STD_LOGIC; + mm_clk : IN STD_LOGIC; + + dp_rst : IN STD_LOGIC; + dp_clk : IN STD_LOGIC; + + snk_in_arr : IN t_dp_sosi_arr(3 DOWNTO 0); -- 4 BF unit outputs + + src_out_arr : OUT t_dp_sosi_arr(0 DOWNTO 0); + src_in_arr : IN t_dp_siso_arr(0 DOWNTO 0) := (OTHERS=>c_dp_siso_rdy); + + ID : IN STD_LOGIC_VECTOR(c_unb1_board_aux.id_w-1 DOWNTO 0); + + reg_dp_offload_tx_mosi : IN t_mem_mosi := c_mem_mosi_rst; + reg_dp_offload_tx_miso : OUT t_mem_miso := c_mem_miso_rst; reg_dp_offload_tx_hdr_dat_mosi : IN t_mem_mosi := c_mem_mosi_rst; reg_dp_offload_tx_hdr_dat_miso : OUT t_mem_miso := c_mem_miso_rst; @@ -63,25 +65,25 @@ ENTITY fn_beamformer_udp_offload IS reg_dp_offload_tx_hdr_ovr_mosi : IN t_mem_mosi := c_mem_mosi_rst; reg_dp_offload_tx_hdr_ovr_miso : OUT t_mem_miso := c_mem_miso_rst ); -END fn_beamformer_udp_offload; +END apertif_unb1_fn_beamformer_udp_offload; -ARCHITECTURE wrap OF fn_beamformer_udp_offload IS +ARCHITECTURE wrap OF apertif_unb1_fn_beamformer_udp_offload IS CONSTANT c_nof_offload_streams : NATURAL := 1; -- Override ('1') only the Ethernet fields so we can use MM defaults there. - CONSTANT c_hdr_field_ovr_init : STD_LOGIC_VECTOR(c_fn_beamformer_udp_offload_nof_hdr_fields-1 DOWNTO 0) := "101"&"111111111101"&"0011"&"100"; + CONSTANT c_hdr_field_ovr_init : STD_LOGIC_VECTOR(c_apertif_unb1_fn_beamformer_udp_offload_nof_hdr_fields-1 DOWNTO 0) := "101"&"111111111101"&"0011"&"100"; CONSTANT c_bf_out_compl_dat_w : NATURAL := 8; CONSTANT c_data_w : NATURAL := 64; -- 4 BF units * 8b complex - CONSTANT c_header_overhead_bytes : NATURAL := field_slv_out_len(c_fn_beamformer_udp_offload_hdr_field_arr) / c_byte_w; + CONSTANT c_header_overhead_bytes : NATURAL := field_slv_out_len(c_apertif_unb1_fn_beamformer_udp_offload_hdr_field_arr) / c_byte_w; CONSTANT c_max_frame_len : NATURAL := 9018; CONSTANT c_frame_nof_words : NATURAL := (c_max_frame_len * c_byte_w ) / c_data_w; - CONSTANT c_max_udp_payload_len : NATURAL := c_max_frame_len-c_header_overhead_bytes-c_eth_crc_len; + CONSTANT c_max_udp_payload_len : NATURAL := c_max_frame_len - c_header_overhead_bytes - c_network_eth_crc_len; CONSTANT c_max_udp_payload_nof_words : NATURAL := (c_max_udp_payload_len * c_byte_w) / c_data_w; CONSTANT c_max_nof_words_per_block : NATURAL := 256; @@ -127,7 +129,7 @@ BEGIN g_max_nof_blocks_per_packet => c_max_nof_blocks_per_packet, g_def_nof_blocks_per_packet => c_def_nof_blocks_per_packet, g_output_fifo_depth => c_frame_nof_words, - g_hdr_field_arr => c_fn_beamformer_udp_offload_hdr_field_arr, + g_hdr_field_arr => c_apertif_unb1_fn_beamformer_udp_offload_hdr_field_arr, g_hdr_field_ovr_init => c_hdr_field_ovr_init ) PORT MAP ( @@ -165,13 +167,13 @@ BEGIN -- Wire the hardwired header fields to DP signals and ID --------------------------------------------------------------------------------------- gen_slv_hard_fields : FOR i IN 0 TO c_nof_offload_streams-1 GENERATE - hdr_fields_in_arr(i)(field_hi(c_fn_beamformer_udp_offload_hdr_field_arr, "eth_src_mac" ) DOWNTO field_lo(c_fn_beamformer_udp_offload_hdr_field_arr, "eth_src_mac" )) <= x"00228608" & id_backplane & id_chip; - hdr_fields_in_arr(i)(field_hi(c_fn_beamformer_udp_offload_hdr_field_arr, "udp_src_port" ) DOWNTO field_lo(c_fn_beamformer_udp_offload_hdr_field_arr, "udp_src_port" )) <= x"D0" & ID; - hdr_fields_in_arr(i)(field_hi(c_fn_beamformer_udp_offload_hdr_field_arr, "udp_dst_port" ) DOWNTO field_lo(c_fn_beamformer_udp_offload_hdr_field_arr, "udp_dst_port" )) <= x"D0" & ID; - hdr_fields_in_arr(i)(field_hi(c_fn_beamformer_udp_offload_hdr_field_arr, "ip_src_addr" ) DOWNTO field_lo(c_fn_beamformer_udp_offload_hdr_field_arr, "ip_src_addr" )) <= x"0A63" & id_backplane & INCR_UVEC(id_chip, 1); + hdr_fields_in_arr(i)(field_hi(c_apertif_unb1_fn_beamformer_udp_offload_hdr_field_arr, "eth_src_mac" ) DOWNTO field_lo(c_apertif_unb1_fn_beamformer_udp_offload_hdr_field_arr, "eth_src_mac" )) <= x"00228608" & id_backplane & id_chip; + hdr_fields_in_arr(i)(field_hi(c_apertif_unb1_fn_beamformer_udp_offload_hdr_field_arr, "udp_src_port" ) DOWNTO field_lo(c_apertif_unb1_fn_beamformer_udp_offload_hdr_field_arr, "udp_src_port" )) <= x"D0" & ID; + hdr_fields_in_arr(i)(field_hi(c_apertif_unb1_fn_beamformer_udp_offload_hdr_field_arr, "udp_dst_port" ) DOWNTO field_lo(c_apertif_unb1_fn_beamformer_udp_offload_hdr_field_arr, "udp_dst_port" )) <= x"D0" & ID; + hdr_fields_in_arr(i)(field_hi(c_apertif_unb1_fn_beamformer_udp_offload_hdr_field_arr, "ip_src_addr" ) DOWNTO field_lo(c_apertif_unb1_fn_beamformer_udp_offload_hdr_field_arr, "ip_src_addr" )) <= x"0A63" & id_backplane & INCR_UVEC(id_chip, 1); - hdr_fields_in_arr(i)(field_hi(c_fn_beamformer_udp_offload_hdr_field_arr, "dp_sync" ) DOWNTO field_lo(c_fn_beamformer_udp_offload_hdr_field_arr, "dp_sync" )) <= slv(dp_offload_tx_snk_in_arr(i).sync); - hdr_fields_in_arr(i)(field_hi(c_fn_beamformer_udp_offload_hdr_field_arr, "dp_bsn" ) DOWNTO field_lo(c_fn_beamformer_udp_offload_hdr_field_arr, "dp_bsn" )) <= dp_offload_tx_snk_in_arr(i).bsn(63 DOWNTO 0); + hdr_fields_in_arr(i)(field_hi(c_apertif_unb1_fn_beamformer_udp_offload_hdr_field_arr, "dp_sync" ) DOWNTO field_lo(c_apertif_unb1_fn_beamformer_udp_offload_hdr_field_arr, "dp_sync" )) <= slv(dp_offload_tx_snk_in_arr(i).sync); + hdr_fields_in_arr(i)(field_hi(c_apertif_unb1_fn_beamformer_udp_offload_hdr_field_arr, "dp_bsn" ) DOWNTO field_lo(c_apertif_unb1_fn_beamformer_udp_offload_hdr_field_arr, "dp_bsn" )) <= dp_offload_tx_snk_in_arr(i).bsn(63 DOWNTO 0); END GENERATE; END wrap; diff --git a/applications/apertif/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer_udp_offload_pkg.vhd b/applications/apertif/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer_udp_offload_pkg.vhd index 4317253534..4d9d8349f1 100644 --- a/applications/apertif/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer_udp_offload_pkg.vhd +++ b/applications/apertif/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer_udp_offload_pkg.vhd @@ -25,37 +25,37 @@ USE IEEE.NUMERIC_STD.ALL; USE common_lib.common_pkg.ALL; USE common_lib.common_field_pkg.ALL; -PACKAGE fn_beamformer_udp_offload_pkg IS +PACKAGE apertif_unb1_fn_beamformer_udp_offload_pkg IS - CONSTANT c_fn_beamformer_udp_offload_nof_hdr_fields : NATURAL := 3+12+4+3; -- 448b; 7 64b words + CONSTANT c_apertif_unb1_fn_beamformer_udp_offload_nof_hdr_fields : NATURAL := 3+12+4+3; -- 448b; 7 64b words -- Notes: -- . pre-calculated ip_header_checksum is valid only for UNB0, FN0 targeting IP 10.10.10.10 -- . Default ip_total_length and udp_total_length valid for 188 beamlets * 64b - CONSTANT c_fn_beamformer_udp_offload_hdr_field_arr : t_common_field_arr(c_fn_beamformer_udp_offload_nof_hdr_fields-1 DOWNTO 0) := ( ( field_name_pad("eth_dst_mac" ), "RW", 48, field_default(x"AABBCCDDEEFF") ), - ( field_name_pad("eth_src_mac" ), "RW", 48, field_default(0) ), - ( field_name_pad("eth_type" ), "RW", 16, field_default(x"0800") ), - ( field_name_pad("ip_version" ), "RW", 4, field_default(4) ), - ( field_name_pad("ip_header_length" ), "RW", 4, field_default(5) ), - ( field_name_pad("ip_services" ), "RW", 8, field_default(0) ), - ( field_name_pad("ip_total_length" ), "RW", 16, field_default(1546) ), - ( field_name_pad("ip_identification" ), "RW", 16, field_default(0) ), - ( field_name_pad("ip_flags" ), "RW", 3, field_default(2) ), - ( field_name_pad("ip_fragment_offset" ), "RW", 13, field_default(0) ), - ( field_name_pad("ip_time_to_live" ), "RW", 8, field_default(127) ), - ( field_name_pad("ip_protocol" ), "RW", 8, field_default(17) ), - ( field_name_pad("ip_header_checksum" ), "RW", 16, field_default(55147) ), - ( field_name_pad("ip_src_addr" ), "RW", 32, field_default(0) ), - ( field_name_pad("ip_dst_addr" ), "RW", 32, field_default(x"0A0A0A0A") ), - ( field_name_pad("udp_src_port" ), "RW", 16, field_default(0) ), - ( field_name_pad("udp_dst_port" ), "RW", 16, field_default(0) ), - ( field_name_pad("udp_total_length" ), "RW", 16, field_default(1526) ), - ( field_name_pad("udp_checksum" ), "RW", 16, field_default(0) ), - ( field_name_pad("dp_reserved" ), "RW", 47, field_default(0) ), - ( field_name_pad("dp_sync" ), "RW", 1, field_default(0) ), - ( field_name_pad("dp_bsn" ), "RW", 64, field_default(0) ) ); + CONSTANT c_apertif_unb1_fn_beamformer_udp_offload_hdr_field_arr : t_common_field_arr(c_apertif_unb1_fn_beamformer_udp_offload_nof_hdr_fields-1 DOWNTO 0) := ( ( field_name_pad("eth_dst_mac" ), "RW", 48, field_default(x"AABBCCDDEEFF") ), + ( field_name_pad("eth_src_mac" ), "RW", 48, field_default(0) ), + ( field_name_pad("eth_type" ), "RW", 16, field_default(x"0800") ), + ( field_name_pad("ip_version" ), "RW", 4, field_default(4) ), + ( field_name_pad("ip_header_length" ), "RW", 4, field_default(5) ), + ( field_name_pad("ip_services" ), "RW", 8, field_default(0) ), + ( field_name_pad("ip_total_length" ), "RW", 16, field_default(1546) ), + ( field_name_pad("ip_identification" ), "RW", 16, field_default(0) ), + ( field_name_pad("ip_flags" ), "RW", 3, field_default(2) ), + ( field_name_pad("ip_fragment_offset" ), "RW", 13, field_default(0) ), + ( field_name_pad("ip_time_to_live" ), "RW", 8, field_default(127) ), + ( field_name_pad("ip_protocol" ), "RW", 8, field_default(17) ), + ( field_name_pad("ip_header_checksum" ), "RW", 16, field_default(55147) ), + ( field_name_pad("ip_src_addr" ), "RW", 32, field_default(0) ), + ( field_name_pad("ip_dst_addr" ), "RW", 32, field_default(x"0A0A0A0A") ), + ( field_name_pad("udp_src_port" ), "RW", 16, field_default(0) ), + ( field_name_pad("udp_dst_port" ), "RW", 16, field_default(0) ), + ( field_name_pad("udp_total_length" ), "RW", 16, field_default(1526) ), + ( field_name_pad("udp_checksum" ), "RW", 16, field_default(0) ), + ( field_name_pad("dp_reserved" ), "RW", 47, field_default(0) ), + ( field_name_pad("dp_sync" ), "RW", 1, field_default(0) ), + ( field_name_pad("dp_bsn" ), "RW", 64, field_default(0) ) ); -END fn_beamformer_udp_offload_pkg; +END apertif_unb1_fn_beamformer_udp_offload_pkg; -PACKAGE BODY fn_beamformer_udp_offload_pkg IS -END fn_beamformer_udp_offload_pkg; +PACKAGE BODY apertif_unb1_fn_beamformer_udp_offload_pkg IS +END apertif_unb1_fn_beamformer_udp_offload_pkg; diff --git a/applications/apertif/apertif_unb1_fn_beamformer/src/vhdl/node_apertif_unb1_fn_beamformer.vhd b/applications/apertif/apertif_unb1_fn_beamformer/src/vhdl/node_apertif_unb1_fn_beamformer.vhd index 85d2097889..58e7487da1 100644 --- a/applications/apertif/apertif_unb1_fn_beamformer/src/vhdl/node_apertif_unb1_fn_beamformer.vhd +++ b/applications/apertif/apertif_unb1_fn_beamformer/src/vhdl/node_apertif_unb1_fn_beamformer.vhd @@ -19,20 +19,20 @@ -- ------------------------------------------------------------------------------- -LIBRARY IEEE, common_lib, dp_lib, bf_lib, unb_common_lib, tse_lib, diag_lib, fn_bf_lib, fn_terminal_db_lib; +LIBRARY IEEE, common_lib, unb1_board_lib, eth_lib, tech_tse_lib, dp_lib, bf_lib, unb1_fn_bf_lib, unb1_fn_terminal_db_lib; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.NUMERIC_STD.ALL; USE common_lib.common_pkg.ALL; USE common_lib.common_mem_pkg.ALL; +USE unb1_board_lib.unb1_board_pkg.ALL; +USE unb1_board_lib.unb1_board_peripherals_pkg.ALL; +USE eth_lib.eth_pkg.ALL; +USE tech_tse_lib.tech_tse_pkg.ALL; +USE tech_tse_lib.tb_tech_tse_pkg.ALL; USE dp_lib.dp_stream_pkg.ALL; USE bf_lib.bf_pkg.ALL; -USE tse_lib.tse_pkg.ALL; -USE unb_common_lib.unb_common_pkg.ALL; -USE tse_lib.eth_layers_pkg.ALL; -USE tse_lib.eth_pkg.ALL; -b -hdl_lib_uses = common technology m -ENTITY node_fn_beamformer IS + +ENTITY node_apertif_unb1_fn_beamformer IS GENERIC( g_sim : BOOLEAN := FALSE; g_sim_level : NATURAL := 0; @@ -42,16 +42,14 @@ ENTITY node_fn_beamformer IS g_use_block_gen : BOOLEAN := FALSE; -- TRUE overrides terminal output and feeds BG output to the BF instead. -- Stream properties g_nof_streams : NATURAL := 16; --- g_data_w : NATURAL := 32; g_bf : t_c_bf := c_bf; - g_bf_weights_file_name : STRING := "../../../../../dsp/bf/build/data/weights"; -- default file location for synthesis + g_bf_weights_file_name : STRING := "../../../../../dsp/bf/build/data/weights" -- default file location for synthesis -- Auxiliary Interface - g_aux : t_c_unb_aux := c_unb_aux ); PORT( -- System - chip_id : IN STD_LOGIC_VECTOR(g_aux.chip_id_w-1 DOWNTO 0); -- [2:0] + chip_id : IN STD_LOGIC_VECTOR(c_unb1_board_aux.chip_id_w-1 DOWNTO 0); -- [2:0] mm_rst : IN STD_LOGIC; mm_clk : IN STD_LOGIC; -- 50 MHz from xo_clk PLL in SOPC system @@ -108,12 +106,12 @@ ENTITY node_fn_beamformer IS -- Mesh interface level -- . Serial (tr_nonbonded) - tx_serial_2arr : OUT t_unb_mesh_sl_2arr; -- Tx - rx_serial_2arr : IN t_unb_mesh_sl_2arr:= (OTHERS=>(OTHERS=>'0')) -- Rx support for diagnostics + tx_serial_2arr : OUT t_unb1_board_mesh_sl_2arr; -- Tx + rx_serial_2arr : IN t_unb1_board_mesh_sl_2arr:= (OTHERS=>(OTHERS=>'0')) -- Rx support for diagnostics ); -END node_fn_beamformer; +END node_apertif_unb1_fn_beamformer; -ARCHITECTURE str OF node_fn_beamformer IS +ARCHITECTURE str OF node_apertif_unb1_fn_beamformer IS CONSTANT c_weights_write_only : BOOLEAN := TRUE; -- Use default RAM init files. The RAM init file for simulation lies one ../ level further way then for synthesis @@ -131,7 +129,7 @@ BEGIN ----------------------------------------------------------------------------- -- Node function: Beam Former + BF UDP offload + block generator ----------------------------------------------------------------------------- - u_node_fn_bf : ENTITY fn_bf_lib.node_fn_bf + u_node_fn_bf : ENTITY unb1_fn_bf_lib.node_unb1_fn_bf GENERIC MAP( g_bf => c_bf, g_bf_offload => g_use_bf_offload, @@ -191,7 +189,7 @@ BEGIN ----------------------------------------------------------------------------- -- Node function: Terminals + data buffer ----------------------------------------------------------------------------- - u_node_fn_terminal_db : ENTITY fn_terminal_db_lib.node_fn_terminal_db + u_node_fn_terminal_db : ENTITY unb1_fn_terminal_db_lib.node_unb1_fn_terminal_db GENERIC MAP( g_sim => g_sim, g_sim_level => g_sim_level, @@ -199,7 +197,7 @@ BEGIN -- Terminals interface g_multi_unb => TRUE, -- Auxiliary Interface - g_aux => c_unb_aux + g_aux => c_unb1_board_aux ) PORT MAP( -- System -- GitLab