From 28290c77d4ebb6f89e7e0e6fac08e21e15511c7f Mon Sep 17 00:00:00 2001
From: Reinier van der Walle <walle@astron.nl>
Date: Mon, 7 Aug 2017 08:54:53 +0000
Subject: [PATCH] added mm interface for reconfiguration logic in the
 ip_arria_10_e3sge3_phy_10gbase_r_24 ip

---
 libraries/io/tr_10GbE/src/vhdl/tr_10GbE.vhd    |  6 ++++++
 .../technology/10gbase_r/tech_10gbase_r.vhd    | 12 +++++++++++-
 .../tech_10gbase_r_arria10_e3sge3.vhd          | 18 +++++++++++++++++-
 libraries/technology/eth_10g/tech_eth_10g.vhd  |  6 ++++++
 .../eth_10g/tech_eth_10g_arria10_e3sge3.vhd    | 10 +++++++++-
 5 files changed, 49 insertions(+), 3 deletions(-)

diff --git a/libraries/io/tr_10GbE/src/vhdl/tr_10GbE.vhd b/libraries/io/tr_10GbE/src/vhdl/tr_10GbE.vhd
index cf39343a10..b887771c9c 100644
--- a/libraries/io/tr_10GbE/src/vhdl/tr_10GbE.vhd
+++ b/libraries/io/tr_10GbE/src/vhdl/tr_10GbE.vhd
@@ -99,6 +99,9 @@ ENTITY tr_10GbE IS
     mdio_mosi_arr       : IN  t_mem_mosi_arr(g_nof_macs-1 DOWNTO 0) := (OTHERS=>c_mem_mosi_rst);
     mdio_miso_arr       : OUT t_mem_miso_arr(g_nof_macs-1 DOWNTO 0);
 
+    reg_ip_arria10_e3sge3_phy_10gbase_r_24_mosi   : IN  t_mem_mosi := c_mem_mosi_rst; 
+    reg_ip_arria10_e3sge3_phy_10gbase_r_24_miso   : OUT t_mem_miso;
+
     -- DP interface
     dp_rst              : IN  STD_LOGIC := '0';
     dp_clk              : IN  STD_LOGIC := '0';
@@ -264,6 +267,9 @@ BEGIN
     
     reg_eth10g_mosi  => reg_eth10g_mosi, -- ETH10G (link status register)
     reg_eth10g_miso  => reg_eth10g_miso,
+
+    reg_ip_arria10_e3sge3_phy_10gbase_r_24_mosi => reg_ip_arria10_e3sge3_phy_10gbase_r_24_mosi,
+    reg_ip_arria10_e3sge3_phy_10gbase_r_24_miso => reg_ip_arria10_e3sge3_phy_10gbase_r_24_miso,      
       
     -- ST
     tx_snk_in_arr    => dp_fifo_fill_tx_src_out_arr,      -- 64 bit data @ 156 MHz
diff --git a/libraries/technology/10gbase_r/tech_10gbase_r.vhd b/libraries/technology/10gbase_r/tech_10gbase_r.vhd
index f1ea244a9f..ef96ec07e2 100644
--- a/libraries/technology/10gbase_r/tech_10gbase_r.vhd
+++ b/libraries/technology/10gbase_r/tech_10gbase_r.vhd
@@ -25,6 +25,7 @@ USE IEEE.STD_LOGIC_1164.ALL;
 USE technology_lib.technology_pkg.ALL;
 USE technology_lib.technology_select_pkg.ALL;
 USE common_lib.common_pkg.ALL;
+USE common_lib.common_mem_pkg.ALL;
 USE common_lib.common_interface_layers_pkg.ALL;
 
 ENTITY tech_10gbase_r IS
@@ -35,6 +36,12 @@ ENTITY tech_10gbase_r IS
     g_nof_channels   : NATURAL := 1
   );
   PORT (
+    -- MM
+    mm_clk            : IN  STD_LOGIC := '0';
+    mm_rst            : IN  STD_LOGIC := '0';
+    reg_ip_arria10_e3sge3_phy_10gbase_r_24_mosi   : IN  t_mem_mosi := c_mem_mosi_rst; 
+    reg_ip_arria10_e3sge3_phy_10gbase_r_24_miso   : OUT t_mem_miso;
+
     -- Transceiver ATX PLL reference clock
     tr_ref_clk_644          : IN  STD_LOGIC;   -- 644.531250 MHz
     
@@ -74,7 +81,10 @@ BEGIN
   gen_ip_arria10_e3sge3 : IF c_use_technology=TRUE AND g_technology=c_tech_arria10_e3sge3 GENERATE
     u0 : ENTITY work.tech_10gbase_r_arria10_e3sge3
     GENERIC MAP (g_sim, g_nof_channels)
-    PORT MAP (tr_ref_clk_644,
+    PORT MAP (mm_clk, mm_rst,
+              reg_ip_arria10_e3sge3_phy_10gbase_r_24_mosi,
+              reg_ip_arria10_e3sge3_phy_10gbase_r_24_miso,   
+              tr_ref_clk_644,
               clk_156, rst_156,
               xgmii_tx_ready_arr, xgmii_rx_ready_arr, xgmii_tx_dc_arr, xgmii_rx_dc_arr,
               tx_serial_arr, rx_serial_arr);
diff --git a/libraries/technology/10gbase_r/tech_10gbase_r_arria10_e3sge3.vhd b/libraries/technology/10gbase_r/tech_10gbase_r_arria10_e3sge3.vhd
index 1abb0b5408..6c3d90d34b 100644
--- a/libraries/technology/10gbase_r/tech_10gbase_r_arria10_e3sge3.vhd
+++ b/libraries/technology/10gbase_r/tech_10gbase_r_arria10_e3sge3.vhd
@@ -36,6 +36,7 @@ LIBRARY ip_arria10_e3sge3_transceiver_reset_controller_48_altera_xcvr_reset_cont
 LIBRARY IEEE, tech_pll_lib, common_lib;
 USE IEEE.STD_LOGIC_1164.ALL;
 USE common_lib.common_pkg.ALL;
+USE common_lib.common_mem_pkg.ALL;
 USE common_lib.common_interface_layers_pkg.ALL;
 USE tech_pll_lib.tech_pll_component_pkg.ALL;
 USE work.tech_10gbase_r_component_pkg.ALL;
@@ -46,10 +47,16 @@ ENTITY tech_10gbase_r_arria10_e3sge3 IS
     g_nof_channels        : NATURAL := 1
   );
   PORT (
+    -- MM
+    mm_clk            : IN  STD_LOGIC := '0';
+    mm_rst            : IN  STD_LOGIC := '0';
+    reg_ip_arria10_e3sge3_phy_10gbase_r_24_mosi   : IN  t_mem_mosi:= c_mem_mosi_rst; 
+    reg_ip_arria10_e3sge3_phy_10gbase_r_24_miso   : OUT t_mem_miso;
+
     -- Transceiver ATX PLL reference clock
     tr_ref_clk_644          : IN  STD_LOGIC;   -- 644.531250 MHz
     
-    -- XGMII clocks
+    -- XGMII clocksi
     clk_156                 : IN STD_LOGIC;    -- 156.25 MHz
     rst_156                 : IN STD_LOGIC;
 
@@ -390,6 +397,15 @@ BEGIN
     
     u_ip_arria10_e3sge3_phy_10gbase_r_24 : ip_arria10_e3sge3_phy_10gbase_r_24
     PORT MAP (
+      reconfig_write(0)       => reg_ip_arria10_e3sge3_phy_10gbase_r_24_mosi.wr,                          -- in  std_logic_vector(0 downto 0)
+      reconfig_read(0)        => reg_ip_arria10_e3sge3_phy_10gbase_r_24_mosi.rd,                          -- in  std_logic_vector(0 downto 0)    
+      reconfig_address        => reg_ip_arria10_e3sge3_phy_10gbase_r_24_mosi.address(14 DOWNTO 0),        -- in  std_logic_vector(14 downto 0)   
+      reconfig_writedata      => reg_ip_arria10_e3sge3_phy_10gbase_r_24_mosi.wrdata(c_word_w-1 DOWNTO 0), -- in  std_logic_vector(31 downto 0)   
+      reconfig_readdata       => reg_ip_arria10_e3sge3_phy_10gbase_r_24_miso.rddata(c_word_w-1 DOWNTO 0), -- out std_logic_vector(31 downto 0);  
+      reconfig_waitrequest(0) => reg_ip_arria10_e3sge3_phy_10gbase_r_24_miso.waitrequest,                 -- out std_logic_vector(0 downto 0);   
+      reconfig_clk(0)         => mm_clk,                                                                  -- in  std_logic_vector(0 downto 0)    
+      reconfig_reset(0)       => mm_rst,                                                                -- in  std_logic_vector(0 downto 0)     
+
       tx_analogreset          => tx_analogreset_arr(IP_SIZE-1 DOWNTO 0),          -- in  std_logic_vector(11 downto 0)   := (others => '0'); --          tx_analogreset.tx_analogreset
       tx_digitalreset         => tx_digitalreset_arr(IP_SIZE-1 DOWNTO 0),         -- in  std_logic_vector(11 downto 0)   := (others => '0'); --         tx_digitalreset.tx_digitalreset
       rx_analogreset          => rx_analogreset_arr(IP_SIZE-1 DOWNTO 0),          -- in  std_logic_vector(11 downto 0)   := (others => '0'); --          rx_analogreset.rx_analogreset
diff --git a/libraries/technology/eth_10g/tech_eth_10g.vhd b/libraries/technology/eth_10g/tech_eth_10g.vhd
index 5270cb8e4c..b53ebc0458 100644
--- a/libraries/technology/eth_10g/tech_eth_10g.vhd
+++ b/libraries/technology/eth_10g/tech_eth_10g.vhd
@@ -107,6 +107,9 @@ ENTITY tech_eth_10g IS
     
     reg_eth10g_mosi  : IN  t_mem_mosi := c_mem_mosi_rst;  -- ETH10G (link status register)
     reg_eth10g_miso  : OUT t_mem_miso; 
+   
+    reg_ip_arria10_e3sge3_phy_10gbase_r_24_mosi   : IN  t_mem_mosi := c_mem_mosi_rst; 
+    reg_ip_arria10_e3sge3_phy_10gbase_r_24_miso   : OUT t_mem_miso;
     
     -- ST
     tx_snk_in_arr    : IN  t_dp_sosi_arr(g_nof_channels-1 DOWNTO 0);      -- 64 bit data @ 156 MHz
@@ -245,6 +248,9 @@ BEGIN
       
       reg_eth10g_mosi  => reg_eth10g_mosi,
       reg_eth10g_miso  => reg_eth10g_miso,
+
+      reg_ip_arria10_e3sge3_phy_10gbase_r_24_mosi => reg_ip_arria10_e3sge3_phy_10gbase_r_24_mosi,
+      reg_ip_arria10_e3sge3_phy_10gbase_r_24_miso => reg_ip_arria10_e3sge3_phy_10gbase_r_24_miso,
       
       -- ST
       tx_snk_in_arr    => tx_snk_in_arr,       -- 64 bit data @ tr_ref_clk_156
diff --git a/libraries/technology/eth_10g/tech_eth_10g_arria10_e3sge3.vhd b/libraries/technology/eth_10g/tech_eth_10g_arria10_e3sge3.vhd
index 02c58f8cc5..895226b7c0 100644
--- a/libraries/technology/eth_10g/tech_eth_10g_arria10_e3sge3.vhd
+++ b/libraries/technology/eth_10g/tech_eth_10g_arria10_e3sge3.vhd
@@ -117,7 +117,10 @@ ENTITY tech_eth_10g_arria10_e3sge3 IS
     mac_miso         : OUT t_mem_miso; 
     
     reg_eth10g_mosi  : IN  t_mem_mosi;         -- ETH10G (link status register)
-    reg_eth10g_miso  : OUT t_mem_miso; 
+    reg_eth10g_miso  : OUT t_mem_miso;
+
+    reg_ip_arria10_e3sge3_phy_10gbase_r_24_mosi   : IN  t_mem_mosi := c_mem_mosi_rst; 
+    reg_ip_arria10_e3sge3_phy_10gbase_r_24_miso   : OUT t_mem_miso;
     
     -- ST
     tx_snk_in_arr    : IN  t_dp_sosi_arr(g_nof_channels-1 DOWNTO 0);      -- 64 bit data @ clk_156
@@ -233,6 +236,11 @@ BEGIN
     g_nof_channels   => g_nof_channels
   )
   PORT MAP (
+   mm_clk              => mm_clk,
+   mm_rst              => mm_rst, 
+   reg_ip_arria10_e3sge3_phy_10gbase_r_24_mosi =>  reg_ip_arria10_e3sge3_phy_10gbase_r_24_mosi,
+   reg_ip_arria10_e3sge3_phy_10gbase_r_24_miso =>  reg_ip_arria10_e3sge3_phy_10gbase_r_24_miso,
+
     -- Transceiver PLL reference clock
     tr_ref_clk_644     => tr_ref_clk_644,
     
-- 
GitLab