From 84e3253cf8ed00973a61f72cd6b7aa5c0e7ef445 Mon Sep 17 00:00:00 2001 From: Jonathan Hargreaves <hargreaves@jive.eu> Date: Fri, 7 Feb 2020 14:45:22 +0100 Subject: [PATCH] Wrappers for the one_node and full revisions of the lofar2_unb2b_adc design --- .../lofar2_unb2b_adc_full/hdllib.cfg | 68 +++ .../lofar2_unb2b_adc_full.vhd | 136 ++++++ .../quartus/lofar2_unb2b_adc_full.sdc | 1 + .../quartus/lofar2_unb2b_adc_full_pins.tcl | 23 + .../lofar2_unb2b_adc_one_node.vhd | 133 +----- .../lofar2_unb2b_adc_one_node_pins.tcl | 5 +- .../src/vhdl/lofar2_unb2b_adc.vhd | 439 +++++++++++++++--- 7 files changed, 627 insertions(+), 178 deletions(-) create mode 100644 applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_full/hdllib.cfg create mode 100644 applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_full/lofar2_unb2b_adc_full.vhd create mode 100644 applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_full/quartus/lofar2_unb2b_adc_full.sdc create mode 100644 applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_full/quartus/lofar2_unb2b_adc_full_pins.tcl diff --git a/applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_full/hdllib.cfg b/applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_full/hdllib.cfg new file mode 100644 index 0000000000..1cbac2db80 --- /dev/null +++ b/applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_full/hdllib.cfg @@ -0,0 +1,68 @@ +hdl_lib_name = lofar2_unb2b_adc_full +hdl_library_clause_name = lofar2_unb2b_adc_full_lib +hdl_lib_uses_synth = common mm technology unb2b_board lofar2_unb2b_adc +hdl_lib_uses_sim = +hdl_lib_technology = ip_arria10_e1sg + + synth_files = + lofar2_unb2b_adc_full.vhd + +test_bench_files = + + + +[modelsim_project_file] +modelsim_copy_files = +# Pinning design only intended for synthesis + + +[quartus_project_file] +synth_top_level_entity = + +quartus_copy_files = + ../../quartus . + ../../src/hex hex + +quartus_qsf_files = + $RADIOHDL_WORK/boards/uniboard2b/libraries/unb2c_board/quartus/unb2c_board.qsf + +quartus_sdc_pre_files = + quartus/lofar_unb2b_adc_full.sdc + +quartus_sdc_files = + $RADIOHDL_WORK/boards/uniboard2b/libraries/unb2b_board/quartus/unb2b_board.sdc + +quartus_tcl_files = + quartus/lofar_unb2b_adc_full_pins.tcl + +quartus_vhdl_files = + +quartus_qip_files = + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar_unb2b_adc_full/qsys_lofar_unb2b_adc/qsys_lofar_unb2b_adc.qip + +quartus_ip_files = + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_avs_eth_0.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_avs_common_mm_0.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_avs_common_mm_1.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_clk_0.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_cpu_0.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_jtag_uart_0.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_onchip_memory2_0.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_pio_pps.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_pio_system_info.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_pio_wdi.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_reg_dpmm_ctrl.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_reg_dpmm_data.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_reg_epcs.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_reg_fpga_temp_sens.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_reg_fpga_voltage_sens.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_reg_mmdp_ctrl.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_reg_mmdp_data.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_reg_remu.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_reg_unb_pmbus.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_reg_unb_sens.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_reg_wdi.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_rom_system_info.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/lofar2_unb2b_adc/ip/qsys_unb2b_minimal/qsys_unb2b_minimal_timer_0.ip + +nios2_app_userflags = -DCOMPILE_FOR_GEN2_UNB2 diff --git a/applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_full/lofar2_unb2b_adc_full.vhd b/applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_full/lofar2_unb2b_adc_full.vhd new file mode 100644 index 0000000000..77466af45d --- /dev/null +++ b/applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_full/lofar2_unb2b_adc_full.vhd @@ -0,0 +1,136 @@ +------------------------------------------------------------------------------- +-- +-- Copyright (C) 2015 +-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/> +-- JIVE (Joint Institute for VLBI in Europe) <http://www.jive.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, common_lib, unb2b_board_lib, technology_lib, diag_lib, dp_lib, tech_jesd204b_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 technology_lib.technology_pkg.ALL; +USE unb2b_board_lib.unb2b_board_pkg.ALL; +USE diag_lib.diag_pkg.ALL; +USE dp_lib.dp_stream_pkg.ALL; + +ENTITY lofar2_unb2b_adc_full IS + GENERIC ( + g_design_name : STRING := "lofar2_unb2b_adc_full"; + g_design_note : STRING := "Lofar2 adc with one node"; + 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_revision_id : STRING := "" -- revision ID -- set by QSF + ); + 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_unb2b_board_aux.version_w-1 DOWNTO 0); + ID : IN STD_LOGIC_VECTOR(c_unb2b_board_aux.id_w-1 DOWNTO 0); + TESTIO : INOUT STD_LOGIC_VECTOR(c_unb2b_board_aux.testio_w-1 DOWNTO 0); + + -- I2C Interface to Sensors + SENS_SC : INOUT STD_LOGIC; + SENS_SD : INOUT STD_LOGIC; + + PMBUS_SC : INOUT STD_LOGIC; + PMBUS_SD : INOUT STD_LOGIC; + PMBUS_ALERT : IN STD_LOGIC := '0'; + + -- 1GbE Control Interface + ETH_CLK : IN STD_LOGIC; + ETH_SGIN : IN STD_LOGIC_VECTOR(c_unb2b_board_nof_eth-1 DOWNTO 0); + ETH_SGOUT : OUT STD_LOGIC_VECTOR(c_unb2b_board_nof_eth-1 DOWNTO 0); + + -- LEDs + QSFP_LED : OUT STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp_nof_leds-1 DOWNTO 0); + + -- back transceivers + BCK_RX : IN STD_LOGIC_VECTOR((c_unb2b_board_tr_jesd204b.bus_w * c_unb2b_board_tr_jesd204b.nof_bus)-1 downto 0); + BCK_REF_CLK : IN STD_LOGIC; -- Use as JESD204B_REFCLK + + -- jesd204b syncronization signals + JESD204B_SYSREF : IN STD_LOGIC; + JESD204B_SYNC : OUT STD_LOGIC_VECTOR((c_unb2b_board_tr_jesd204b.nof_bus * c_unb2b_board_tr_jesd204b.bus_w)-1 DOWNTO 0) + ); +END lofar2_unb2b_adc_full; + + +ARCHITECTURE str OF lofar2_unb2b_adc_full IS + +BEGIN + + u_revision : ENTITY unb2b_test_lib.unb2b_test + 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_revision_id => g_revision_id + ) + PORT MAP ( + -- 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, + + PMBUS_SC => PMBUS_SC, + PMBUS_SD => PMBUS_SD, + PMBUS_ALERT => PMBUS_ALERT, + + -- 1GbE Control Interface + ETH_clk => ETH_clk, + ETH_SGIN => ETH_SGIN, + ETH_SGOUT => ETH_SGOUT, + + -- LEDs + QSFP_LED => QSFP_LED + + -- back transceivers + BCK_RX => BCK_RX_INTERNAL, + BCK_REF_CLK => BCK_REF_CLK, + + -- jesd204b syncronization signals + JESD204B_SYSREF => JESD204B_SYSREF, + JESD204B_SYNC => JESD204B_SYNC + ); +END str; diff --git a/applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_full/quartus/lofar2_unb2b_adc_full.sdc b/applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_full/quartus/lofar2_unb2b_adc_full.sdc new file mode 100644 index 0000000000..e0a8d1b581 --- /dev/null +++ b/applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_full/quartus/lofar2_unb2b_adc_full.sdc @@ -0,0 +1 @@ +#Placeholder diff --git a/applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_full/quartus/lofar2_unb2b_adc_full_pins.tcl b/applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_full/quartus/lofar2_unb2b_adc_full_pins.tcl new file mode 100644 index 0000000000..da85c19f65 --- /dev/null +++ b/applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_full/quartus/lofar2_unb2b_adc_full_pins.tcl @@ -0,0 +1,23 @@ +############################################################################### +# +# Copyright (C) 2014 +# 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/>. +# +############################################################################### + +source $::env(RADIOHDL_WORK)/boards/uniboard2b/libraries/unb2b_board/quartus/pinning/unb2b_minimal_pins.tcl +source $::env(RADIOHDL_WORK)/boards/uniboard2b/libraries/unb2b_board/quartus/pinning/unb2b_jesd204b_pins.tcl diff --git a/applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_one_node/lofar2_unb2b_adc_one_node.vhd b/applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_one_node/lofar2_unb2b_adc_one_node.vhd index 9cc06592a2..f7211d878f 100644 --- a/applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_one_node/lofar2_unb2b_adc_one_node.vhd +++ b/applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_one_node/lofar2_unb2b_adc_one_node.vhd @@ -20,14 +20,15 @@ -- ------------------------------------------------------------------------------- -LIBRARY IEEE, common_lib, unb2b_board_lib, unb2b_test_lib, technology_lib, tech_ddr_lib; +LIBRARY IEEE, common_lib, unb2b_board_lib, technology_lib, diag_lib, dp_lib, tech_jesd204b_lib; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.NUMERIC_STD.ALL; USE common_lib.common_pkg.ALL; -USE unb2b_board_lib.unb2b_board_pkg.ALL; -- use the original package +USE common_lib.common_mem_pkg.ALL; USE technology_lib.technology_pkg.ALL; -USE tech_ddr_lib.tech_ddr_pkg.ALL; - +USE unb2b_board_lib.unb2b_board_pkg.ALL; +USE diag_lib.diag_pkg.ALL; +USE dp_lib.dp_stream_pkg.ALL; ENTITY lofar2_unb2b_adc_one_node IS GENERIC ( @@ -57,79 +58,33 @@ ENTITY lofar2_unb2b_adc_one_node IS SENS_SC : INOUT STD_LOGIC; SENS_SD : INOUT STD_LOGIC; + PMBUS_SC : INOUT STD_LOGIC; + PMBUS_SD : INOUT STD_LOGIC; + PMBUS_ALERT : IN STD_LOGIC := '0'; + -- 1GbE Control Interface ETH_CLK : IN STD_LOGIC; ETH_SGIN : IN STD_LOGIC_VECTOR(c_unb2b_board_nof_eth-1 DOWNTO 0); ETH_SGOUT : OUT STD_LOGIC_VECTOR(c_unb2b_board_nof_eth-1 DOWNTO 0); - -- Transceiver clocks - SA_CLK : IN STD_LOGIC; -- Clock 10GbE front (qsfp) and ring lines - SB_CLK : IN STD_LOGIC; -- Clock 10GbE back. From on-board XTAL - BCK_REF_CLK : IN STD_LOGIC; -- Use as JESD204B_REFCLK + -- LEDs + QSFP_LED : OUT STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp_nof_leds-1 DOWNTO 0); - -- DDR reference clocks - MB_I_REF_CLK : IN STD_LOGIC; -- Reference clock for MB_I - MB_II_REF_CLK : IN STD_LOGIC; -- Reference clock for MB_II - - -- back transceivers + -- back transceivers BCK_RX : IN STD_LOGIC_VECTOR((c_unb2b_board_tr_jesd204b.bus_w * c_unb2b_board_tr_jesd204b.nof_bus)-1 downto 0); - --BCK_TX : OUT STD_LOGIC_VECTOR((c_unb2b_board_tr_back.bus_w * c_unb2b_board_tr_back.nof_bus)-1 downto 0); + BCK_REF_CLK : IN STD_LOGIC; -- Use as JESD204B_REFCLK -- jesd204b syncronization signals JESD204B_SYSREF : IN STD_LOGIC; - JESD204B_SYNC : OUT STD_LOGIC_VECTOR((c_unb2b_board_tr_jesd204b.nof_bus * c_unb2b_board_tr_jesd204b.bus_w)-1 DOWNTO 0); - - -- ring transceivers - RING_0_RX : IN STD_LOGIC_VECTOR(c_unb2b_board_tr_ring.bus_w-1 downto 0); - RING_0_TX : OUT STD_LOGIC_VECTOR(c_unb2b_board_tr_ring.bus_w-1 downto 0); - RING_1_RX : IN STD_LOGIC_VECTOR(c_unb2b_board_tr_ring.bus_w-1 downto 0); - RING_1_TX : OUT STD_LOGIC_VECTOR(c_unb2b_board_tr_ring.bus_w-1 downto 0); - -- pmbus - PMBUS_SC : INOUT STD_LOGIC; - PMBUS_SD : INOUT STD_LOGIC; - PMBUS_ALERT : IN STD_LOGIC; - -- front transceivers - QSFP_0_RX : IN STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0); - QSFP_0_TX : OUT STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0); - QSFP_1_RX : IN STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0); - QSFP_1_TX : OUT STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0); - QSFP_2_RX : IN STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0); - QSFP_2_TX : OUT STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0); - QSFP_3_RX : IN STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0); - QSFP_3_TX : OUT STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0); - QSFP_4_RX : IN STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0); - QSFP_4_TX : OUT STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0); - QSFP_5_RX : IN STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0); - QSFP_5_TX : OUT STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0); - - QSFP_SDA : INOUT STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.i2c_w-1 downto 0); - QSFP_SCL : INOUT STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.i2c_w-1 downto 0); - - -- SO-DIMM Memory Bank I - MB_I_IN : IN t_tech_ddr4_phy_in; - MB_I_IO : INOUT t_tech_ddr4_phy_io; - MB_I_OU : OUT t_tech_ddr4_phy_ou; - - -- SO-DIMM Memory Bank II - MB_II_IN : IN t_tech_ddr4_phy_in; - MB_II_IO : INOUT t_tech_ddr4_phy_io; - MB_II_OU : OUT t_tech_ddr4_phy_ou; - - QSFP_LED : OUT STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp_nof_leds-1 DOWNTO 0) + JESD204B_SYNC : OUT STD_LOGIC_VECTOR((c_unb2b_board_tr_jesd204b.nof_bus * c_unb2b_board_tr_jesd204b.bus_w)-1 DOWNTO 0) ); END lofar2_unb2b_adc_one_node; ARCHITECTURE str OF lofar2_unb2b_adc_one_node IS - SIGNAL BCK_RX_INTERNAL : STD_LOGIC_VECTOR((c_unb2b_board_tr_back.bus_w * c_unb2b_board_tr_back.nof_bus)-1 downto 0) := (others => '0'); - BEGIN - gen_bck_to_jesd204b : FOR i IN 0 TO (c_unb2b_board_tr_jesd204b.nof_bus * c_unb2b_board_tr_jesd204b.bus_w)-1 GENERATE - BCK_RX_INTERNAL(i) <= BCK_RX(0); - END GENERATE; - u_revision : ENTITY unb2b_test_lib.unb2b_test GENERIC MAP ( g_design_name => g_design_name, @@ -158,66 +113,24 @@ BEGIN SENS_SC => SENS_SC, SENS_SD => SENS_SD, + PMBUS_SC => PMBUS_SC, + PMBUS_SD => PMBUS_SD, + PMBUS_ALERT => PMBUS_ALERT, + -- 1GbE Control Interface ETH_clk => ETH_clk, ETH_SGIN => ETH_SGIN, ETH_SGOUT => ETH_SGOUT, - -- Transceiver clocks - SA_CLK => SA_CLK, - SB_CLK => SB_CLK, - BCK_REF_CLK => BCK_REF_CLK, + -- LEDs + QSFP_LED => QSFP_LED - -- DDR reference clocks - MB_I_REF_CLK => MB_I_REF_CLK, - MB_II_REF_CLK => MB_II_REF_CLK, - -- back transceivers BCK_RX => BCK_RX_INTERNAL, - BCK_TX => open, - - -- ring transceivers - RING_0_RX => RING_0_RX, - RING_0_TX => RING_0_TX, - RING_1_RX => RING_1_RX, - RING_1_TX => RING_1_TX, - + BCK_REF_CLK => BCK_REF_CLK, + -- jesd204b syncronization signals JESD204B_SYSREF => JESD204B_SYSREF, - JESD204B_SYNC => JESD204B_SYNC, - - -- pmbus - PMBUS_SC => PMBUS_SC, - PMBUS_SD => PMBUS_SD, - PMBUS_ALERT => PMBUS_ALERT, - - -- front transceivers - QSFP_0_RX => QSFP_0_RX, - QSFP_0_TX => QSFP_0_TX, - QSFP_1_RX => QSFP_1_RX, - QSFP_1_TX => QSFP_1_TX, - QSFP_2_RX => QSFP_2_RX, - QSFP_2_TX => QSFP_2_TX, - QSFP_3_RX => QSFP_3_RX, - QSFP_3_TX => QSFP_3_TX, - QSFP_4_RX => QSFP_4_RX, - QSFP_4_TX => QSFP_4_TX, - QSFP_5_RX => QSFP_5_RX, - QSFP_5_TX => QSFP_5_TX, - - QSFP_SDA => QSFP_SDA, - QSFP_SCL => QSFP_SCL, - - -- SO-DIMM Memory Bank I - MB_I_IN => MB_I_IN, - MB_I_IO => MB_I_IO, - MB_I_OU => MB_I_OU, - - -- SO-DIMM Memory Bank II - MB_II_IN => MB_II_IN, - MB_II_IO => MB_II_IO, - MB_II_OU => MB_II_OU, - - QSFP_LED => QSFP_LED + JESD204B_SYNC => JESD204B_SYNC ); END str; diff --git a/applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_one_node/quartus/lofar2_unb2b_adc_one_node_pins.tcl b/applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_one_node/quartus/lofar2_unb2b_adc_one_node_pins.tcl index 18a4560ef5..da85c19f65 100644 --- a/applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_one_node/quartus/lofar2_unb2b_adc_one_node_pins.tcl +++ b/applications/lofar2/designs/lofar2_unb2b_adc/revisions/lofar2_unb2b_adc_one_node/quartus/lofar2_unb2b_adc_one_node_pins.tcl @@ -19,6 +19,5 @@ # ############################################################################### -source $::env(RADIOHDL_WORK)/boards/uniboard2c/libraries/unb2c_board/quartus/pinning/unb2c_minimal_pins.tcl -source $::env(RADIOHDL_WORK)/boards/uniboard2c/libraries/unb2c_board/quartus/pinning/unb2c_jesd204b_pins.tcl -source $::env(RADIOHDL_WORK)/boards/uniboard2c/libraries/unb2c_board/quartus/pinning/unb2c_ddr_pins.tcl +source $::env(RADIOHDL_WORK)/boards/uniboard2b/libraries/unb2b_board/quartus/pinning/unb2b_minimal_pins.tcl +source $::env(RADIOHDL_WORK)/boards/uniboard2b/libraries/unb2b_board/quartus/pinning/unb2b_jesd204b_pins.tcl diff --git a/applications/lofar2/designs/lofar2_unb2b_adc/src/vhdl/lofar2_unb2b_adc.vhd b/applications/lofar2/designs/lofar2_unb2b_adc/src/vhdl/lofar2_unb2b_adc.vhd index 57bfac6eca..48e1837197 100644 --- a/applications/lofar2/designs/lofar2_unb2b_adc/src/vhdl/lofar2_unb2b_adc.vhd +++ b/applications/lofar2/designs/lofar2_unb2b_adc/src/vhdl/lofar2_unb2b_adc.vhd @@ -20,21 +20,15 @@ -- ------------------------------------------------------------------------------- -LIBRARY IEEE, common_lib, unb2b_board_lib, unb2b_board_10gbe_lib, dp_lib, eth_lib, tr_10GbE_lib, diag_lib, technology_lib, tech_ddr_lib, io_ddr_lib; +LIBRARY IEEE, common_lib, unb2b_board_lib, technology_lib, diag_lib, dp_lib, tech_jesd204b_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 common_lib.common_interface_layers_pkg.ALL; -USE common_lib.common_network_layers_pkg.ALL; -USE common_lib.common_field_pkg.ALL; USE technology_lib.technology_pkg.ALL; USE unb2b_board_lib.unb2b_board_pkg.ALL; -USE dp_lib.dp_stream_pkg.ALL; USE diag_lib.diag_pkg.ALL; -USE eth_lib.eth_pkg.ALL; -USE tech_ddr_lib.tech_ddr_pkg.ALL; -USE work.unb2b_test_pkg.ALL; +USE dp_lib.dp_stream_pkg.ALL; ENTITY lofar2_unb2b_adc IS GENERIC ( @@ -49,6 +43,7 @@ ENTITY lofar2_unb2b_adc IS g_stamp_time : NATURAL := 0; -- Time (HHMMSS) -- set by QSF g_revision_id : STRING := "" -- revision ID -- set by QSF g_factory_image : BOOLEAN := FALSE + g_protect_addr_range: BOOLEAN := FALSE ); PORT ( -- GENERAL @@ -67,80 +62,394 @@ ENTITY lofar2_unb2b_adc IS SENS_SC : INOUT STD_LOGIC; SENS_SD : INOUT STD_LOGIC; + PMBUS_SC : INOUT STD_LOGIC; + PMBUS_SD : INOUT STD_LOGIC; + PMBUS_ALERT : IN STD_LOGIC := '0'; + -- 1GbE Control Interface ETH_CLK : IN STD_LOGIC; ETH_SGIN : IN STD_LOGIC_VECTOR(c_unb2b_board_nof_eth-1 DOWNTO 0); ETH_SGOUT : OUT STD_LOGIC_VECTOR(c_unb2b_board_nof_eth-1 DOWNTO 0); - -- Transceiver clocks - SA_CLK : IN STD_LOGIC := '0'; -- Clock 10GbE front (qsfp) and ring lines - SB_CLK : IN STD_LOGIC := '0'; -- Clock 10GbE back upper 24 lines - BCK_REF_CLK : IN STD_LOGIC := '0'; -- Clock 10GbE back lower 24 lines + -- LEDs + QSFP_LED : OUT STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp_nof_leds-1 DOWNTO 0); + + -- back transceivers + BCK_RX : IN STD_LOGIC_VECTOR((c_unb2b_board_tr_jesd204b.bus_w * c_unb2b_board_tr_jesd204b.nof_bus)-1 downto 0); + BCK_REF_CLK : IN STD_LOGIC; -- Use as JESD204B_REFCLK + + -- jesd204b syncronization signals + JESD204B_SYSREF : IN STD_LOGIC; + JESD204B_SYNC : OUT STD_LOGIC_VECTOR((c_unb2b_board_tr_jesd204b.nof_bus * c_unb2b_board_tr_jesd204b.bus_w)-1 DOWNTO 0) + ); +END lofar2_unb2b_adc; - -- DDR reference clocks - MB_I_REF_CLK : IN STD_LOGIC := '0'; -- Reference clock for MB_I - MB_II_REF_CLK : IN STD_LOGIC := '0'; -- Reference clock for MB_II - -- back transceivers - --BCK_RX : IN STD_LOGIC_VECTOR((c_unb2b_board_tr_back.bus_w * c_unb2b_board_tr_back.nof_bus)-1 downto 0) := (OTHERS=>'0'); - --BCK_TX : OUT STD_LOGIC_VECTOR((c_unb2b_board_tr_back.bus_w * c_unb2b_board_tr_back.nof_bus)-1 downto 0); - --BCK_RX : IN STD_LOGIC_VECTOR(4-1 downto 0) := (OTHERS=>'0'); - --BCK_TX : OUT STD_LOGIC_VECTOR(4-1 downto 0); +ARCHITECTURE str OF lofar2_unb2b_adc IS - BCK_SDA : INOUT STD_LOGIC_VECTOR(c_unb2b_board_tr_back.i2c_w-1 downto 0); - BCK_SCL : INOUT STD_LOGIC_VECTOR(c_unb2b_board_tr_back.i2c_w-1 downto 0); - BCK_ERR : INOUT STD_LOGIC_VECTOR(c_unb2b_board_tr_back.i2c_w-1 downto 0); + -- Firmware version x.y + CONSTANT c_fw_version : t_unb2b_board_fw_version := (1, 1); + CONSTANT c_mm_clk_freq : NATURAL := c_unb2b_board_mm_clk_freq_100M; + CONSTANT c_nof_streams_jesd204b : NATURAL := 12; + CONSTANT c_nof_streams_db : NATURAL := 2; - -- ring transceivers - --RING_0_RX : IN STD_LOGIC_VECTOR(c_unb2b_board_tr_ring.bus_w-1 downto 0) := (OTHERS=>'0'); - --RING_0_TX : OUT STD_LOGIC_VECTOR(c_unb2b_board_tr_ring.bus_w-1 downto 0); - --RING_1_RX : IN STD_LOGIC_VECTOR(c_unb2b_board_tr_ring.bus_w-1 downto 0) := (OTHERS=>'0'); - --RING_1_TX : OUT STD_LOGIC_VECTOR(c_unb2b_board_tr_ring.bus_w-1 downto 0); + -- System + SIGNAL cs_sim : STD_LOGIC; + SIGNAL xo_ethclk : STD_LOGIC; + SIGNAL xo_rst : STD_LOGIC; + SIGNAL xo_rst_n : STD_LOGIC; + SIGNAL mm_clk : STD_LOGIC; + SIGNAL mm_rst : STD_LOGIC; + + SIGNAL st_rst : STD_LOGIC; + SIGNAL st_clk : STD_LOGIC; + SIGNAL st_pps : STD_LOGIC; - -- pmbus - PMBUS_SC : INOUT STD_LOGIC; - PMBUS_SD : INOUT STD_LOGIC; - PMBUS_ALERT : IN STD_LOGIC := '0'; + -- PIOs + SIGNAL pout_wdi : STD_LOGIC; - -- front transceivers - QSFP_0_RX : IN STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0) := (OTHERS=>'0'); - QSFP_0_TX : OUT STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0); - QSFP_1_RX : IN STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0) := (OTHERS=>'0'); - QSFP_1_TX : OUT STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0); - QSFP_2_RX : IN STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0) := (OTHERS=>'0'); - QSFP_2_TX : OUT STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0); - QSFP_3_RX : IN STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0) := (OTHERS=>'0'); - QSFP_3_TX : OUT STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0); - QSFP_4_RX : IN STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0) := (OTHERS=>'0'); - QSFP_4_TX : OUT STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0); - QSFP_5_RX : IN STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0) := (OTHERS=>'0'); - QSFP_5_TX : OUT STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.bus_w-1 downto 0); - - QSFP_SDA : INOUT STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.i2c_w-1 downto 0); - QSFP_SCL : INOUT STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.i2c_w-1 downto 0); - QSFP_RST : INOUT STD_LOGIC; - - -- SO-DIMM Memory Bank I - MB_I_IN : IN t_tech_ddr4_phy_in := c_tech_ddr4_phy_in_x; - MB_I_IO : INOUT t_tech_ddr4_phy_io; - MB_I_OU : OUT t_tech_ddr4_phy_ou; - - -- SO-DIMM Memory Bank II - MB_II_IN : IN t_tech_ddr4_phy_in := c_tech_ddr4_phy_in_x; - MB_II_IO : INOUT t_tech_ddr4_phy_io; - MB_II_OU : OUT t_tech_ddr4_phy_ou; - - -- Leds - QSFP_LED : OUT STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp_nof_leds-1 DOWNTO 0) - ); -END lofar2_unb2b_adc; + -- WDI override + SIGNAL reg_wdi_mosi : t_mem_mosi; + SIGNAL reg_wdi_miso : t_mem_miso; + -- PPSH + SIGNAL reg_ppsh_mosi : t_mem_mosi; + SIGNAL reg_ppsh_miso : t_mem_miso; + + -- UniBoard system info + SIGNAL reg_unb_system_info_mosi : t_mem_mosi; + SIGNAL reg_unb_system_info_miso : t_mem_miso; + SIGNAL rom_unb_system_info_mosi : t_mem_mosi; + SIGNAL rom_unb_system_info_miso : t_mem_miso; -ARCHITECTURE str OF lofar2_unb2b_adc IS + -- UniBoard I2C sens + SIGNAL reg_unb_sens_mosi : t_mem_mosi; + SIGNAL reg_unb_sens_miso : t_mem_miso; + + -- pm bus + SIGNAL reg_unb_pmbus_mosi : t_mem_mosi; + SIGNAL reg_unb_pmbus_miso : t_mem_miso; + + -- FPGA sensors + SIGNAL reg_fpga_temp_sens_mosi : t_mem_mosi; + SIGNAL reg_fpga_temp_sens_miso : t_mem_miso; + SIGNAL reg_fpga_voltage_sens_mosi : t_mem_mosi; + SIGNAL reg_fpga_voltage_sens_miso : t_mem_miso; + + -- eth1g + SIGNAL eth1g_mm_rst : STD_LOGIC; + SIGNAL eth1g_tse_mosi : t_mem_mosi; -- ETH TSE MAC registers + SIGNAL eth1g_tse_miso : t_mem_miso; + SIGNAL eth1g_reg_mosi : t_mem_mosi; -- ETH control and status registers + SIGNAL eth1g_reg_miso : t_mem_miso; + SIGNAL eth1g_reg_interrupt : STD_LOGIC; -- Interrupt + SIGNAL eth1g_ram_mosi : t_mem_mosi; -- ETH rx frame and tx frame memory + SIGNAL eth1g_ram_miso : t_mem_miso; + + -- EPCS read + SIGNAL reg_dpmm_data_mosi : t_mem_mosi; + SIGNAL reg_dpmm_data_miso : t_mem_miso; + SIGNAL reg_dpmm_ctrl_mosi : t_mem_mosi; + SIGNAL reg_dpmm_ctrl_miso : t_mem_miso; + + -- EPCS write + SIGNAL reg_mmdp_data_mosi : t_mem_mosi; + SIGNAL reg_mmdp_data_miso : t_mem_miso; + SIGNAL reg_mmdp_ctrl_mosi : t_mem_mosi; + SIGNAL reg_mmdp_ctrl_miso : t_mem_miso; + + -- EPCS status/control + SIGNAL reg_epcs_mosi : t_mem_mosi; + SIGNAL reg_epcs_miso : t_mem_miso; + + -- Remote Update + SIGNAL reg_remu_mosi : t_mem_mosi; + SIGNAL reg_remu_miso : t_mem_miso; + + -- JESD + SIGNAL jesd204b_mosi : t_mem_mosi; + SIGNAL jesd204b_miso : t_mem_miso; + + -- QSFP leds + SIGNAL qsfp_green_led_arr : STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.nof_bus-1 DOWNTO 0); + SIGNAL qsfp_red_led_arr : STD_LOGIC_VECTOR(c_unb2b_board_tr_qsfp.nof_bus-1 DOWNTO 0); + + -- JESD signals + SIGNAL ram_diag_data_buf_jesd_mosi : t_mem_mosi; + SIGNAL ram_diag_data_buf_jesd_miso : t_mem_miso; + SIGNAL reg_diag_data_buf_jesd_mosi : t_mem_mosi; + SIGNAL reg_diag_data_buf_jesd_miso : t_mem_miso; + SIGNAL diag_data_buf_snk_in_arr : t_dp_sosi_arr(c_nof_streams_db-1 DOWNTO 0); + SIGNAL jesd204b_rx_src_out_arr : t_dp_sosi_arr(c_nof_streams_jesd204b-1 DOWNTO 0); + SIGNAL jesd204b_frame_clk : STD_LOGIC; BEGIN + ----------------------------------------------------------------------------- + -- General control function + ----------------------------------------------------------------------------- + u_ctrl : ENTITY unb2b_board_lib.ctrl_unb2b_board + GENERIC MAP ( + g_sim => g_sim, + g_technology => g_technology, + 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_revision_id => g_revision_id, + g_fw_version => c_fw_version, + g_mm_clk_freq => c_mm_clk_freq, + g_eth_clk_freq => c_unb2b_board_eth_clk_freq_125M, + g_aux => c_unb2b_board_aux, + g_factory_image => g_factory_image, + g_protect_addr_range => g_protect_addr_range, + g_dp_clk_use_pll => FALSE + ) + PORT MAP ( + -- Clock an reset signals + cs_sim => cs_sim, + xo_ethclk => xo_ethclk, + xo_rst => xo_rst, + xo_rst_n => xo_rst_n, + + mm_clk => mm_clk, + mm_rst => mm_rst, + + dp_rst => st_rst, + dp_clk => st_clk, + dp_pps => st_pps, + dp_rst_in => st_rst, + dp_clk_in => st_clk, + + -- Toggle WDI + pout_wdi => pout_wdi, + + -- MM buses + -- REMU + reg_remu_mosi => reg_remu_mosi, + reg_remu_miso => reg_remu_miso, + + -- EPCS read + reg_dpmm_data_mosi => reg_dpmm_data_mosi, + reg_dpmm_data_miso => reg_dpmm_data_miso, + reg_dpmm_ctrl_mosi => reg_dpmm_ctrl_mosi, + reg_dpmm_ctrl_miso => reg_dpmm_ctrl_miso, + + -- EPCS write + reg_mmdp_data_mosi => reg_mmdp_data_mosi, + reg_mmdp_data_miso => reg_mmdp_data_miso, + reg_mmdp_ctrl_mosi => reg_mmdp_ctrl_mosi, + reg_mmdp_ctrl_miso => reg_mmdp_ctrl_miso, + + -- EPCS status/control + reg_epcs_mosi => reg_epcs_mosi, + reg_epcs_miso => reg_epcs_miso, + + -- . 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, + + -- . FPGA sensors + reg_fpga_temp_sens_mosi => reg_fpga_temp_sens_mosi, + reg_fpga_temp_sens_miso => reg_fpga_temp_sens_miso, + reg_fpga_voltage_sens_mosi => reg_fpga_voltage_sens_mosi, + reg_fpga_voltage_sens_miso => reg_fpga_voltage_sens_miso, + + reg_unb_pmbus_mosi => reg_unb_pmbus_mosi, + reg_unb_pmbus_miso => reg_unb_pmbus_miso, + + -- . PPSH + reg_ppsh_mosi => reg_ppsh_mosi, + reg_ppsh_miso => reg_ppsh_miso, + + -- eth1g + 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, + + -- FPGA pins + -- . General + CLK => jesd204b_frame_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, + -- PM bus + PMBUS_SC => PMBUS_SC, + PMBUS_SD => PMBUS_SD, + PMBUS_ALERT => PMBUS_ALERT, + + -- . 1GbE Control Interface + ETH_clk => ETH_CLK, + ETH_SGIN => ETH_SGIN, + ETH_SGOUT => ETH_SGOUT + ); + + ----------------------------------------------------------------------------- + -- MM master + ----------------------------------------------------------------------------- + u_mmm : ENTITY work.mmm_unb2b_jesd_simple + GENERIC MAP ( + g_sim => g_sim, + g_sim_unb_nr => g_sim_unb_nr, + g_sim_node_nr => g_sim_node_nr + ) + PORT MAP( + mm_rst => mm_rst, + mm_clk => mm_clk, + + -- PIOs + pout_wdi => pout_wdi, + + -- 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, + + reg_unb_pmbus_mosi => reg_unb_pmbus_mosi, + reg_unb_pmbus_miso => reg_unb_pmbus_miso, + + -- FPGA sensors + reg_fpga_temp_sens_mosi => reg_fpga_temp_sens_mosi, + reg_fpga_temp_sens_miso => reg_fpga_temp_sens_miso, + reg_fpga_voltage_sens_mosi => reg_fpga_voltage_sens_mosi, + reg_fpga_voltage_sens_miso => reg_fpga_voltage_sens_miso, + + -- PPSH + reg_ppsh_mosi => reg_ppsh_mosi, + reg_ppsh_miso => reg_ppsh_miso, + + -- eth1g + 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, + + -- EPCS read + reg_dpmm_data_mosi => reg_dpmm_data_mosi, + reg_dpmm_data_miso => reg_dpmm_data_miso, + reg_dpmm_ctrl_mosi => reg_dpmm_ctrl_mosi, + reg_dpmm_ctrl_miso => reg_dpmm_ctrl_miso, + + -- EPCS write + reg_mmdp_data_mosi => reg_mmdp_data_mosi, + reg_mmdp_data_miso => reg_mmdp_data_miso, + reg_mmdp_ctrl_mosi => reg_mmdp_ctrl_mosi, + reg_mmdp_ctrl_miso => reg_mmdp_ctrl_miso, + + -- EPCS status/control + reg_epcs_mosi => reg_epcs_mosi, + reg_epcs_miso => reg_epcs_miso, + + -- Remote Update + reg_remu_mosi => reg_remu_mosi, + reg_remu_miso => reg_remu_miso, + + -- + ram_diag_data_buf_jesd_mosi => ram_diag_data_buf_jesd_mosi, + ram_diag_data_buf_jesd_miso => ram_diag_data_buf_jesd_miso, + reg_diag_data_buf_jesd_mosi => reg_diag_data_buf_jesd_mosi, + reg_diag_data_buf_jesd_miso => reg_diag_data_buf_jesd_miso, + + jesd204b_mosi => jesd204b_mosi, + jesd204b_miso => jesd204b_miso + ); + + u_jesd204b: ENTITY tech_jesd204b_lib.tech_jesd204b + GENERIC MAP( + g_sim => g_sim, + g_sim_level => 1, + g_nof_channels => c_nof_streams_jesd204b + ) + PORT MAP( + jesd204b_refclk => BCK_REF_CLK, + jesd204b_sysref => JESD204B_SYSREF, + jesd204b_sync_n_arr => JESD204B_SYNC, + + rx_src_out_arr => jesd204b_rx_src_out_arr, + jesd204b_frame_clk => jesd204b_frame_clk, + + -- MM + mm_clk => mm_clk, + mm_rst => mm_rst, + + jesd204b_mosi => jesd204b_mosi, + jesd204b_miso => jesd204b_miso, + + -- Serial + serial_tx_arr => open, + serial_rx_arr => BCK_RX(c_nof_streams_jesd204b-1 downto 0) + ); + + + gen_jesd_mon_in : FOR i IN 0 TO c_nof_streams_db-1 GENERATE + diag_data_buf_snk_in_arr(i).data(15 downto 0) <= jesd204b_rx_src_out_arr(i).data(15 downto 0); + diag_data_buf_snk_in_arr(i).valid <= jesd204b_rx_src_out_arr(i).valid; + diag_data_buf_snk_in_arr(i).sop <= '0'; + diag_data_buf_snk_in_arr(i).eop <= '0'; + diag_data_buf_snk_in_arr(i).err <= (OTHERS=>'0'); + END GENERATE; + + + u_diag_data_buffer : ENTITY diag_lib.mms_diag_data_buffer + GENERIC MAP ( + g_technology => g_technology, + g_nof_streams => c_nof_streams_db, + g_data_w => 16, + g_buf_nof_data => 8192, --8192, + g_buf_use_sync => TRUE, -- when TRUE start filling the buffer at the in_sync, else after the last word was read + g_use_rx_seq => FALSE + ) + PORT MAP ( + mm_rst => mm_rst, + mm_clk => mm_clk, + dp_rst => st_rst, + dp_clk => jesd204b_frame_clk, + + ram_data_buf_mosi => ram_diag_data_buf_jesd_mosi, + ram_data_buf_miso => ram_diag_data_buf_jesd_miso, + reg_data_buf_mosi => reg_diag_data_buf_jesd_mosi, + reg_data_buf_miso => reg_diag_data_buf_jesd_miso, + + in_sosi_arr => diag_data_buf_snk_in_arr, + in_sync => st_pps + ); END str; -- GitLab