From 43d0276a035ff42ccbd86b58cbf75cbb04a20ebe Mon Sep 17 00:00:00 2001 From: Eric Kooistra <kooistra@astron.nl> Date: Tue, 31 May 2022 18:06:17 +0200 Subject: [PATCH] Explained that JESD2044 MM registers have 256 bytes, so span_w = 6 would be enough, but 8 is fine too. --- .../jesd204b/ip_arria10_e1sg_jesd204b.vhd | 14 ++++++++------ .../jesd204b/ip_arria10_e2sg_jesd204b.vhd | 14 ++++++++------ .../technology/jesd204b/tech_jesd204b_pkg.vhd | 15 ++++++++++----- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/libraries/technology/ip_arria10_e1sg/jesd204b/ip_arria10_e1sg_jesd204b.vhd b/libraries/technology/ip_arria10_e1sg/jesd204b/ip_arria10_e1sg_jesd204b.vhd index 1046f9ee81..44858d8b7a 100644 --- a/libraries/technology/ip_arria10_e1sg/jesd204b/ip_arria10_e1sg_jesd204b.vhd +++ b/libraries/technology/ip_arria10_e1sg/jesd204b/ip_arria10_e1sg_jesd204b.vhd @@ -73,12 +73,14 @@ END ip_arria10_e1sg_jesd204b; ARCHITECTURE str OF ip_arria10_e1sg_jesd204b IS -- JESD IP constants - CONSTANT c_jesd204b_mm_addr_w : NATURAL :=8; - CONSTANT c_jesd204b_rx_data_w : NATURAL :=32; - CONSTANT c_jesd204b_rx_framer_data_w : NATURAL :=c_jesd204b_rx_data_w/2; -- IP outputs two samples in parallel - CONSTANT c_jesd204b_rx_somf_w : NATURAL :=c_jesd204b_rx_data_w/8; -- One somf bit per octet - CONSTANT c_jesd204b_rx_framer_somf_w : NATURAL :=c_jesd204b_rx_somf_w/2; -- IP outputs two samples in parallel - CONSTANT c_nof_sync_n_per_group : NATURAL :=sel_a_b(g_nof_streams / g_nof_sync_n = 0, 1, g_nof_streams / g_nof_sync_n); + -- . JESD204B MM has 256 bytes = 64 words, so mm_addr_w = 6 would be enough, + -- but using mm_addr_w = 8 and span = 256 words is fine too. + CONSTANT c_jesd204b_mm_addr_w : NATURAL := 8; + CONSTANT c_jesd204b_rx_data_w : NATURAL := 32; + CONSTANT c_jesd204b_rx_framer_data_w : NATURAL := c_jesd204b_rx_data_w/2; -- IP outputs two samples in parallel + CONSTANT c_jesd204b_rx_somf_w : NATURAL := c_jesd204b_rx_data_w/8; -- One somf bit per octet + CONSTANT c_jesd204b_rx_framer_somf_w : NATURAL := c_jesd204b_rx_somf_w/2; -- IP outputs two samples in parallel + CONSTANT c_nof_sync_n_per_group : NATURAL := sel_a_b(g_nof_streams / g_nof_sync_n = 0, 1, g_nof_streams / g_nof_sync_n); -- JESD204 control status registers SIGNAL jesd204b_mosi_arr : t_mem_mosi_arr(g_nof_streams-1 DOWNTO 0); diff --git a/libraries/technology/ip_arria10_e2sg/jesd204b/ip_arria10_e2sg_jesd204b.vhd b/libraries/technology/ip_arria10_e2sg/jesd204b/ip_arria10_e2sg_jesd204b.vhd index e49282da08..cf0fd6e3b4 100644 --- a/libraries/technology/ip_arria10_e2sg/jesd204b/ip_arria10_e2sg_jesd204b.vhd +++ b/libraries/technology/ip_arria10_e2sg/jesd204b/ip_arria10_e2sg_jesd204b.vhd @@ -73,12 +73,14 @@ END ip_arria10_e2sg_jesd204b; ARCHITECTURE str OF ip_arria10_e2sg_jesd204b IS -- JESD IP constants - CONSTANT c_jesd204b_mm_addr_w : NATURAL :=8; - CONSTANT c_jesd204b_rx_data_w : NATURAL :=32; - CONSTANT c_jesd204b_rx_framer_data_w : NATURAL :=c_jesd204b_rx_data_w/2; -- IP outputs two samples in parallel - CONSTANT c_jesd204b_rx_somf_w : NATURAL :=c_jesd204b_rx_data_w/8; -- One somf bit per octet - CONSTANT c_jesd204b_rx_framer_somf_w : NATURAL :=c_jesd204b_rx_somf_w/2; -- IP outputs two samples in parallel - CONSTANT c_nof_sync_n_per_group : NATURAL :=sel_a_b(g_nof_streams / g_nof_sync_n = 0, 1, g_nof_streams / g_nof_sync_n); + -- . JESD204B MM has 256 bytes = 64 words, so mm_addr_w = 6 would be enough, + -- but using mm_addr_w = 8 and span = 256 words is fine too. + CONSTANT c_jesd204b_mm_addr_w : NATURAL := 8; + CONSTANT c_jesd204b_rx_data_w : NATURAL := 32; + CONSTANT c_jesd204b_rx_framer_data_w : NATURAL := c_jesd204b_rx_data_w/2; -- IP outputs two samples in parallel + CONSTANT c_jesd204b_rx_somf_w : NATURAL := c_jesd204b_rx_data_w/8; -- One somf bit per octet + CONSTANT c_jesd204b_rx_framer_somf_w : NATURAL := c_jesd204b_rx_somf_w/2; -- IP outputs two samples in parallel + CONSTANT c_nof_sync_n_per_group : NATURAL := sel_a_b(g_nof_streams / g_nof_sync_n = 0, 1, g_nof_streams / g_nof_sync_n); -- JESD204 control status registers SIGNAL jesd204b_mosi_arr : t_mem_mosi_arr(g_nof_streams-1 DOWNTO 0); diff --git a/libraries/technology/jesd204b/tech_jesd204b_pkg.vhd b/libraries/technology/jesd204b/tech_jesd204b_pkg.vhd index 0c8ab4246b..1279e699ba 100644 --- a/libraries/technology/jesd204b/tech_jesd204b_pkg.vhd +++ b/libraries/technology/jesd204b/tech_jesd204b_pkg.vhd @@ -22,7 +22,10 @@ -- Purpose: Test bench parameters for the JESD204B IP. -- Description: -- Remark: --- . From registermap-jesd-rx.xlsx +-- . From: +-- - registermap-jesd-rx.xlsx +-- - JESD204B Intel® FPGA IP User Guide, Updated for Intel® Quartus® Prime +-- Design Suite: 19.4, IP Version: 19.2.0 ------------------------------------------------------------------------------- LIBRARY IEEE, technology_lib; @@ -31,13 +34,15 @@ USE IEEE.std_logic_1164.ALL; PACKAGE tech_jesd204b_pkg IS -- Intel ARRIA10 IP MM interface + -- . JESD204B MM has 256 bytes = 64 words, so span_w = 6 would be enough, + -- but using span_w = 8 and span = 256 words is fine too. CONSTANT tech_jesd204b_port_span_w : NATURAL := 8; CONSTANT tech_jesd204b_port_span : NATURAL := 2**tech_jesd204b_port_span_w; - CONSTANT tech_jesd204b_field_rx_syncn_sysref_ctrl_adr : NATURAL := 16#54# / 4; - CONSTANT tech_jesd204b_field_rx_syncn_sysref_ctrl_link_reinit : NATURAL := 1; - CONSTANT tech_jesd204b_field_rx_syncn_sysref_ctrl_singled : NATURAL := 2; - CONSTANT tech_jesd204b_field_rx_syncn_sysref_ctrl_alwayson : NATURAL := 4; + CONSTANT tech_jesd204b_field_rx_syncn_sysref_ctrl_adr : NATURAL := 16#54# / 4; + CONSTANT tech_jesd204b_field_rx_syncn_sysref_ctrl_link_reinit : NATURAL := 1; + CONSTANT tech_jesd204b_field_rx_syncn_sysref_ctrl_sysref_singled : NATURAL := 2; + CONSTANT tech_jesd204b_field_rx_syncn_sysref_ctrl_sysref_alwayson : NATURAL := 4; CONSTANT tech_jesd204b_field_rx_err0_adr : NATURAL := 16#60# / 4; CONSTANT tech_jesd204b_field_rx_err0_w : NATURAL := 9; -- GitLab