diff --git a/hdl/combpm_protocol_electron.vhd b/hdl/combpm_protocol_electron.vhd index 636a385178215107cb4e767ed46b41eae5eb476c..8a383f9173a851a0e9695a28cd586f5c10e706bb 100644 --- a/hdl/combpm_protocol_electron.vhd +++ b/hdl/combpm_protocol_electron.vhd @@ -178,23 +178,25 @@ begin crc_reg <= C_CRCINIT; crc_cnt <= (others => '0'); elsif rising_edge(clk) then - if crc_cnt = 0 then - if flag_sop_inc = '1' then + case crc_cnt is + when "0000" => + if flag_sop_inc = '1' then + crc_cnt <= crc_cnt+1; + crc_reg <= C_CRCINIT; + else + crc_cnt <= (others => '0'); + end if; + when "1011" => + crc_reg <= crc_reg; crc_cnt <= crc_cnt+1; - crc_reg <= C_CRCINIT; - else - crc_cnt <= (others => '0'); - end if; - else - if crc_cnt = 10 then + when "1100" => + crc_reg <= crc_reg; crc_cnt <= (others => '0'); - else - crc_cnt <= crc_cnt +1; - end if; - crc_reg <= lfsr_c; - + when others => + crc_reg <= lfsr_c; + crc_cnt <= crc_cnt+1; + end case; - end if; end if; end process p_crc;