From 93ff773c8fe2f4e649ac52b132788119daa4b005 Mon Sep 17 00:00:00 2001
From: Eric Kooistra <kooistra@astron.nl>
Date: Wed, 7 Feb 2024 10:48:28 +0100
Subject: [PATCH] Add v2 components.

---
 .../jesd204b/tech_jesd204b_component_pkg.vhd  | 90 +++++++++++++++++--
 1 file changed, 84 insertions(+), 6 deletions(-)

diff --git a/libraries/technology/jesd204b/tech_jesd204b_component_pkg.vhd b/libraries/technology/jesd204b/tech_jesd204b_component_pkg.vhd
index 3661f25e56..890a3ff711 100644
--- a/libraries/technology/jesd204b/tech_jesd204b_component_pkg.vhd
+++ b/libraries/technology/jesd204b/tech_jesd204b_component_pkg.vhd
@@ -47,9 +47,12 @@ package tech_jesd204b_component_pkg is
   );
   port (
     -- JESD204B external signals
-    jesd204b_refclk       : in std_logic := '0';  -- Reference clock. For AD9683 use 200MHz direct from clock reference pin
-    jesd204b_sysref       : in std_logic := '0';  -- SYSREF should drive ADC and FPGA with correct phase wrt jesd204b_device_clk
-    jesd204b_sync_n_arr   : out std_logic_vector(g_nof_sync_n - 1 downto 0);  -- output to control ADC initialization/syncronization phase
+    jesd204b_refclk       : in std_logic := '0';  -- Reference clock. For AD9683 use 200MHz direct from clock
+                                                  -- reference pin
+    jesd204b_sysref       : in std_logic := '0';  -- SYSREF should drive ADC and FPGA with correct phase with
+                                                  -- respect to jesd204b_device_clk
+    jesd204b_sync_n_arr   : out std_logic_vector(g_nof_sync_n - 1 downto 0);  -- output to control ADC initialization /
+                                                                              -- syncronization phase
 
     -- Data to fabric
     rx_src_out_arr        : out t_dp_sosi_arr(g_nof_streams - 1 downto 0);  -- Parallel data out to fabric
@@ -72,6 +75,42 @@ package tech_jesd204b_component_pkg is
   );
   end component;
 
+  component ip_arria10_e1sg_jesd204b_v2 is
+  generic (
+    g_sim                 : boolean := false;
+    g_nof_streams         : natural := 1;
+    g_nof_sync_n          : natural := 1;
+    g_direction           : string  := "RX_ONLY";  -- "TX_RX", "TX_ONLY", "RX_ONLY"
+    g_jesd_freq           : string  := "200MHz"
+  );
+  port (
+    -- JESD204B external signals
+    jesd204b_refclk       : in std_logic := '0';  -- Reference clock. For AD9683 use 200MHz direct from clock
+                                                  -- reference pin
+    jesd204b_sysref       : in std_logic := '0';  -- SYSREF should drive ADC and FPGA with correct phase with
+                                                  -- respect to jesd204b_device_clk
+    jesd204b_sync_n_arr   : out std_logic_vector(g_nof_sync_n - 1 downto 0);  -- output to control ADC initialization /
+                                                                              -- syncronization phase
+
+    -- Data to fabric
+    dp_clk                : in std_logic;
+    dp_rst                : in std_logic;
+    dp_sosi_arr           : out t_dp_sosi_arr(g_nof_streams - 1 downto 0);  -- Parallel data and sync to fabric
+
+    -- MM Control
+    mm_clk                : in  std_logic;
+    mm_rst                : in  std_logic;
+    jesd204b_disable_arr  : in  std_logic_vector(g_nof_streams - 1 downto 0);
+
+    jesd204b_mosi         : in  t_mem_mosi;  -- mm control
+    jesd204b_miso         : out t_mem_miso;
+
+    -- Serial connections to transceiver pins
+    serial_tx_arr         : out std_logic_vector(g_nof_streams - 1 downto 0);  -- Not used for ADC
+    serial_rx_arr         : in  std_logic_vector(g_nof_streams - 1 downto 0)
+  );
+  end component;
+
   ------------------------------------------------------------------------------
   -- TX ONLY, 1 channel
   ------------------------------------------------------------------------------
@@ -142,9 +181,12 @@ package tech_jesd204b_component_pkg is
   );
   port (
     -- JESD204B external signals
-    jesd204b_refclk       : in std_logic := '0';  -- Reference clock. For AD9683 use 200MHz direct from clock reference pin
-    jesd204b_sysref       : in std_logic := '0';  -- SYSREF should drive ADC and FPGA with correct phase wrt jesd204b_device_clk
-    jesd204b_sync_n_arr   : out std_logic_vector(g_nof_sync_n - 1 downto 0);  -- output to control ADC initialization/syncronization phase
+    jesd204b_refclk       : in std_logic := '0';  -- Reference clock. For AD9683 use 200MHz direct from clock
+                                                  -- reference pin
+    jesd204b_sysref       : in std_logic := '0';  -- SYSREF should drive ADC and FPGA with correct phase with
+                                                  -- respet to jesd204b_device_clk
+    jesd204b_sync_n_arr   : out std_logic_vector(g_nof_sync_n - 1 downto 0);  -- output to control ADC initialization /
+                                                                              -- syncronization phase
 
     -- Data to fabric
     rx_src_out_arr        : out t_dp_sosi_arr(g_nof_streams - 1 downto 0);  -- Parallel data out to fabric
@@ -167,6 +209,42 @@ package tech_jesd204b_component_pkg is
   );
   end component;
 
+  component ip_arria10_e2sg_jesd204b_v2 is
+  generic (
+    g_sim                 : boolean := false;
+    g_nof_streams         : natural := 1;
+    g_nof_sync_n          : natural := 1;
+    g_direction           : string  := "RX_ONLY";  -- "TX_RX", "TX_ONLY", "RX_ONLY"
+    g_jesd_freq           : string  := "200MHz"
+  );
+  port (
+    -- JESD204B external signals
+    jesd204b_refclk       : in std_logic := '0';  -- Reference clock. For AD9683 use 200MHz direct from clock
+                                                  -- reference pin
+    jesd204b_sysref       : in std_logic := '0';  -- SYSREF should drive ADC and FPGA with correct phase with
+                                                  -- respect to jesd204b_device_clk
+    jesd204b_sync_n_arr   : out std_logic_vector(g_nof_sync_n - 1 downto 0);  -- output to control ADC initialization /
+                                                                              -- syncronization phase
+
+    -- Data to fabric
+    dp_clk                : in std_logic;
+    dp_rst                : in std_logic;
+    dp_sosi_arr           : out t_dp_sosi_arr(g_nof_streams - 1 downto 0);  -- Parallel data and sync to fabric
+
+    -- MM Control
+    mm_clk                : in  std_logic;
+    mm_rst                : in  std_logic;
+    jesd204b_disable_arr  : in  std_logic_vector(g_nof_streams - 1 downto 0);
+
+    jesd204b_mosi         : in  t_mem_mosi;  -- mm control
+    jesd204b_miso         : out t_mem_miso;
+
+    -- Serial connections to transceiver pins
+    serial_tx_arr         : out std_logic_vector(g_nof_streams - 1 downto 0);  -- Not used for ADC
+    serial_rx_arr         : in  std_logic_vector(g_nof_streams - 1 downto 0)
+  );
+  end component;
+
   -- TX ONLY, 1 channel
   component ip_arria10_e2sg_jesd204b_tx is
   port (
-- 
GitLab