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;