diff --git a/applications/apertif/designs/apertif_unb1_fn_beamformer/revisions/apertif_unb1_fn_beamformer_tp_bg/apertif_unb1_fn_beamformer_tp_bg.vhd b/applications/apertif/designs/apertif_unb1_fn_beamformer/revisions/apertif_unb1_fn_beamformer_tp_bg/apertif_unb1_fn_beamformer_tp_bg.vhd new file mode 100644 index 0000000000000000000000000000000000000000..771b6ace6f76fbb22079481055a6791ada71d8c9 --- /dev/null +++ b/applications/apertif/designs/apertif_unb1_fn_beamformer/revisions/apertif_unb1_fn_beamformer_tp_bg/apertif_unb1_fn_beamformer_tp_bg.vhd @@ -0,0 +1,160 @@ +------------------------------------------------------------------------------ +-- +-- Copyright (C) 2013 +-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/> +-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- +------------------------------------------------------------------------------- +LIBRARY IEEE, unb1_board_lib, tech_ddr_lib; +USE IEEE.STD_LOGIC_1164.ALL; +USE unb1_board_lib.unb1_board_pkg.ALL; +USE tech_ddr_lib.tech_ddr_pkg.ALL; + +ENTITY apertif_unb1_fn_beamformer_tp_bg IS + GENERIC ( + g_design_name : STRING := "apertif_unb1_fn_beamformer_tp_bg"; + g_design_note : STRING := "transpose revision with BGs"; + g_sim : BOOLEAN := FALSE; + g_sim_unb_nr : NATURAL := 0; + g_sim_node_nr : NATURAL := 0; + g_stamp_date : NATURAL := 0; + g_stamp_time : NATURAL := 0; + g_stamp_svn : NATURAL := 0 + ); + PORT ( + -- GENERAL + CLK : IN STD_LOGIC; -- System Clock + PPS : IN STD_LOGIC; -- System Sync + WDI : OUT STD_LOGIC; -- Watchdog Clear + INTA : INOUT STD_LOGIC; -- FPGA interconnect line + INTB : INOUT STD_LOGIC; -- FPGA interconnect line + + -- Others + 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; + sens_sd : INOUT STD_LOGIC; + + -- 1GbE Control Interface + ETH_clk : IN STD_LOGIC; + ETH_SGIN : IN STD_LOGIC; + ETH_SGOUT : OUT STD_LOGIC; + + -- Transceiver clocks + SA_CLK : IN STD_LOGIC := '0'; -- TR clock BN-BI (tr_back) / SI_FN (tr_front) + SB_CLK : IN STD_LOGIC := '0'; -- TR clock FN-BN (tr_mesh) + + -- Mesh Serial I/O + 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_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. + MB_I_IN : IN t_tech_ddr3_phy_in; + MB_I_IO : INOUT t_tech_ddr3_phy_io; + MB_I_OU : OUT t_tech_ddr3_phy_ou + + ); +END apertif_unb1_fn_beamformer_tp_bg; + +ARCHITECTURE str OF apertif_unb1_fn_beamformer_tp_bg IS + +BEGIN + + u_revision : ENTITY work.apertif_unb1_fn_beamformer + GENERIC MAP ( + g_design_name => g_design_name, + g_design_note => g_design_note, + g_sim => g_sim, + g_sim_unb_nr => g_sim_unb_nr, + g_sim_node_nr => g_sim_node_nr, + g_stamp_date => g_stamp_date, + g_stamp_time => g_stamp_time, + g_stamp_svn => g_stamp_svn + ) + PORT MAP ( + CLK => CLK, + PPS => PPS, + WDI => WDI, + INTA => INTA, + INTB => INTB, + + VERSION => VERSION, + ID => ID, + TESTIO => TESTIO, + + sens_sc => sens_sc, + sens_sd => sens_sd, + + ETH_clk => ETH_clk, + ETH_SGIN => ETH_SGIN, + ETH_SGOUT => ETH_SGOUT, + + SA_CLK => SA_CLK, + SB_CLK => SB_CLK, + + FN_BN_0_TX => FN_BN_0_TX, + FN_BN_0_RX => FN_BN_0_RX, + FN_BN_1_TX => FN_BN_1_TX, + FN_BN_1_RX => FN_BN_1_RX, + FN_BN_2_TX => FN_BN_2_TX, + FN_BN_2_RX => FN_BN_2_RX, + FN_BN_3_TX => FN_BN_3_TX, + FN_BN_3_RX => FN_BN_3_RX, + + SI_FN_0_TX => SI_FN_0_TX, + SI_FN_0_RX => SI_FN_0_RX, + SI_FN_1_TX => SI_FN_1_TX, + SI_FN_1_RX => SI_FN_1_RX, + SI_FN_2_TX => SI_FN_2_TX, + SI_FN_2_RX => SI_FN_2_RX, + SI_FN_3_TX => SI_FN_3_TX, + SI_FN_3_RX => SI_FN_3_RX, + + SI_FN_0_CNTRL => SI_FN_0_CNTRL, + SI_FN_1_CNTRL => SI_FN_1_CNTRL, + SI_FN_2_CNTRL => SI_FN_2_CNTRL, + SI_FN_3_CNTRL => SI_FN_3_CNTRL, + SI_FN_RSTN => SI_FN_RSTN, + + MB_I_IN => MB_I_IN, + MB_I_IO => MB_I_IO, + MB_I_OU => MB_I_OU + ); +END str; diff --git a/applications/apertif/designs/apertif_unb1_fn_beamformer/revisions/apertif_unb1_fn_beamformer_tp_bg/apertif_unb1_fn_beamformer_tp_bg_pins.tcl b/applications/apertif/designs/apertif_unb1_fn_beamformer/revisions/apertif_unb1_fn_beamformer_tp_bg/apertif_unb1_fn_beamformer_tp_bg_pins.tcl new file mode 100644 index 0000000000000000000000000000000000000000..d02f346f72e0c52f519152e9b5afbf55dfd4ef24 --- /dev/null +++ b/applications/apertif/designs/apertif_unb1_fn_beamformer/revisions/apertif_unb1_fn_beamformer_tp_bg/apertif_unb1_fn_beamformer_tp_bg_pins.tcl @@ -0,0 +1,10 @@ +source $::env(UNB)/Firmware/designs/unb_common/src/tcl/COMMON_NODE_general_pins.tcl +source $::env(UNB)/Firmware/designs/unb_common/src/tcl/COMMON_NODE_other_pins.tcl +source $::env(UNB)/Firmware/designs/unb_common/src/tcl/COMMON_NODE_sensor_pins.tcl +source $::env(UNB)/Firmware/designs/unb_common/src/tcl/COMMON_NODE_1Gbe_pins.tcl +#source $::env(UNB)/Firmware/designs/unb_common/src/tcl/COMMON_NODE_mesh_tr_clk_pin.tcl +#source $::env(UNB)/Firmware/designs/unb_common/src/tcl/FRONT_NODE_mesh_nocmu_pins.tcl +source $::env(UNB)/Firmware/designs/unb_common/src/tcl/pins_tr_front_pcs_clk.tcl +source $::env(UNB)/Firmware/designs/unb_common/src/tcl/pins_tr_front_pcs_0.tcl +# -- include ddr3 pins +source $::env(RADIOHDL)/boards/uniboard1/libraries/unb1_board/src/tcl/COMMON_NODE_ddr_I_rec_pins.tcl diff --git a/applications/apertif/designs/apertif_unb1_fn_beamformer/revisions/apertif_unb1_fn_beamformer_tp_bg/hdllib.cfg b/applications/apertif/designs/apertif_unb1_fn_beamformer/revisions/apertif_unb1_fn_beamformer_tp_bg/hdllib.cfg new file mode 100644 index 0000000000000000000000000000000000000000..0eed003f8721a147764c3f49ed45925a5eb918cb --- /dev/null +++ b/applications/apertif/designs/apertif_unb1_fn_beamformer/revisions/apertif_unb1_fn_beamformer_tp_bg/hdllib.cfg @@ -0,0 +1,38 @@ +hdl_lib_name = apertif_unb1_fn_beamformer_tp_bg +hdl_library_clause_name = apertif_unb1_fn_beamformer_tp_bg_lib +hdl_lib_uses_synth = common technology tech_mac_10g tr_10GbE mm i2c unb1_board bf apertif tech_ddr io_ddr +hdl_lib_technology = ip_stratixiv +hdl_lib_excludes = ip_stratixiv_ddr3_uphy_4g_800_slave + +synth_top_level_entity = apertif_unb1_fn_beamformer_tp_bg + +synth_files = + $HDL_BUILD_DIR/unb1/quartus/apertif_unb1_fn_beamformer_tp_bg/sopc_apertif_unb1_fn_beamformer.vhd + ../../src/vhdl/apertif_unb1_fn_beamformer_udp_offload.vhd + ../../src/vhdl/mmm_apertif_unb1_fn_beamformer.vhd + ../../src/vhdl/node_apertif_unb1_fn_beamformer.vhd + ../../src/vhdl/apertif_unb1_fn_beamformer.vhd + apertif_unb1_fn_beamformer_tp_bg.vhd + +test_bench_files = + tb_apertif_unb1_fn_beamformer_tp_bg.vhd + +modelsim_copy_files = ../../src/hex hex + +quartus_copy_files = ../../quartus/sopc_apertif_unb1_fn_beamformer.sopc . + +quartus_qsf_files = + $RADIOHDL/boards/uniboard1/libraries/unb1_board/quartus/unb1_board.qsf + +quartus_tcl_files = + apertif_unb1_fn_beamformer_tp_bg_pins.tcl + apertif_unb1_fn_beamformer_trans_pin_constraints.tcl + ../../quartus/apertif_unb1_bf_constraints.tcl + +quartus_qip_files = + $HDL_BUILD_DIR/unb1/quartus/apertif_unb1_fn_beamformer_tp_bg/sopc_apertif_unb1_fn_beamformer.qip + +modelsim_search_libraries = + altera_ver lpm_ver sgate_ver altera_mf_ver altera_lnsim_ver stratixiv_ver stratixiv_hssi_ver stratixiv_pcie_hip_ver + altera lpm sgate altera_mf altera_lnsim stratixiv stratixiv_hssi stratixiv_pcie_hip + diff --git a/applications/apertif/designs/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer.vhd b/applications/apertif/designs/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer.vhd index 8d5359e145a726dd4966ad152b32061bcfef0cdd..bcf03fb810434be4f0f78f888fff98ffbc511520 100644 --- a/applications/apertif/designs/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer.vhd +++ b/applications/apertif/designs/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer.vhd @@ -113,8 +113,9 @@ END apertif_unb1_fn_beamformer; ARCHITECTURE str OF apertif_unb1_fn_beamformer IS - CONSTANT c_use_transpose : BOOLEAN := g_design_name="apertif_unb1_fn_beamformer_trans"; - CONSTANT c_use_phy : t_c_unb1_board_use_phy := (1, 1, 1, 0, sel_a_b(c_use_transpose, 1, 0), 0, 0, 1); + CONSTANT c_use_transpose : BOOLEAN := g_design_name="apertif_unb1_fn_beamformer_trans"; -- Also use DDR3 + CONSTANT c_use_bg : BOOLEAN := g_design_name="apertif_unb1_fn_beamformer_tp_bg"; -- Also use DDR3, but no mesh terminals + CONSTANT c_use_phy : t_c_unb1_board_use_phy := (1, 1, sel_a_b(c_use_bg, 0, 1), 0, sel_a_b(c_use_transpose, 1, 0), 0, 0, 1); CONSTANT c_fw_version : t_unb1_board_fw_version := (3, 4); -- firmware version x.y CONSTANT c_tr_mesh : t_c_unb1_board_tr := c_unb1_board_tr_mesh; CONSTANT c_dp_clk_use_pll : BOOLEAN := g_design_name="apertif_unb1_fn_beamformer_base"; @@ -389,7 +390,7 @@ BEGIN ----------------------------------------------------------------------------- u_node_fn_beamformer : ENTITY work.node_apertif_unb1_fn_beamformer GENERIC MAP( - g_use_block_gen => FALSE, -- TRUE overrides terminal output and feeds BG output to the BF instead. + g_use_block_gen => c_use_bg, -- TRUE overrides terminal output and feeds BG output to the BF instead. g_use_bf => g_use_bf ) PORT MAP(