p_DE_FSM : process (pi_SystemClk, pi_aRst )
begin
if pi_aRst = c_RstActive then
EdgeState <= e_Zero;
elsif rising_edge (pi_SystemClk) then
EdgeState <= NextState;
end if;
end process p_DE_FSM;
p_DE_StateMachine : process (EdgeState, pi_InterfaceFromSerDes.Valid)
begin
NextState <= EdgeState;
DataEnable <= false;
case EdgeState is
when e_Zero =>
if pi_InterfaceFromSerDes.Valid = '1' then
NextState <= e_Edge;
end if;
when e_Edge =>
DataEnable <= true;
if pi_InterfaceFromSerDes.Valid = '1' then
NextState <= e_One;
else
NextState <= e_Zero;
end if;
when e_One =>
if pi_InterfaceFromSerDes.Valid = '0' then
NextState <= e_Zero;
end if;
end case;
end process p_DE_StateMachine;