M src/jesd204b_link_rx.vhd => src/jesd204b_link_rx.vhd +31 -0
@@ 83,6 83,37 @@ architecture a1 of jesd204b_link_rx is
signal all_ones : std_logic_vector(L-1 downto 0) := (others => '1');
+ function ConfigsMatch (
+ config_array : lane_configs_array)
+ return std_logic is
+ variable matches : std_logic := '1';
+ begin -- function ConfigsMatch
+ for i in 0 to L-2 loop
+ if config_array(i).ADJCNT /= link_config.ADJCNT or
+ config_array(i).LID /= i or
+ config_array(i).ADJDIR /= link_config.ADJDIR or
+ config_array(i).BID /= link_config.BID or
+ config_array(i).CF /= link_config.CF or
+ config_array(i).CS /= link_config.CS or
+ config_array(i).DID /= link_config.DID or
+ config_array(i).F /= link_config.F or
+ config_array(i).HD /= link_config.HD or
+ config_array(i).JESDV /= link_config.JESDV or
+ config_array(i).K /= link_config.K or
+ config_array(i).L /= link_config.L or
+ config_array(i).M /= link_config.M or
+ config_array(i).N /= link_config.N or
+ config_array(i).Nn /= link_config.Nn or
+ config_array(i).PHADJ /= link_config.PHADJ or
+ config_array(i).S /= link_config.S or
+ config_array(i).SCR /= link_config.SCR or
+ config_array(i).SUBCLASSV /= link_config.SUBCLASSV
+ then
+ matches := '0';
+ end if;
+
+ return matches;
+ end loop; -- i
end function ConfigsMatch;
begin -- architecture a1
-- nsynced is active LOW, set '0' if all ready