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 1046f9ee81e0e3d025399dbae6ebfce54a27f948..44858d8b7a700ea534716c61e3fd524aa0c70bc1 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 e49282da0874a9ad81d443ee0b3991ff8042f242..cf0fd6e3b47648701766d7995c2a946f51a637d4 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 0c8ab4246b3823be04a822d3e9604dfad5a75f70..1279e699baa38ce62f44d16f77c940699a5ee676 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;