Index: /firmware/FTM/FTM_central_control.vhd
===================================================================
--- /firmware/FTM/FTM_central_control.vhd	(revision 10802)
+++ /firmware/FTM/FTM_central_control.vhd	(revision 10803)
@@ -70,5 +70,5 @@
     dna_ready            : in  std_logic;
     crate_reset          : IN  std_logic;
-    crate_reset_ack      : OUT std_logic := '1';
+    crate_reset_ack      : OUT std_logic := '0';
     crate_reset_param    : IN  std_logic_vector (15 DOWNTO 0);
     start_run            : IN  std_logic;
@@ -104,4 +104,5 @@
   signal prescaling_FTU01_sig  : std_logic_vector(7 downto 0) := "00100111";
   signal reset_cnt_sig         : integer range 0 to RESET_TIME := 0;
+  signal crate_reset_param_sig : std_logic_vector (15 DOWNTO 0) := (others => '0');
   
   type state_central_proc_type is (CP_INIT, CP_INIT_DNA, CP_INIT_TIMER,
@@ -114,5 +115,5 @@
                                    CP_IDLE, CP_PING, CP_START_RATES, CP_READ_RATES, CP_READ_RATES_01,
                                    CP_SEND_START, CP_SEND_END,
-                                   CP_CRATE_RESET, CP_CRATE_RESET_ACK);
+                                   CP_CRATE_RESET, CP_CRATE_RESET_01, CP_CRATE_RESET_ACK);
   signal state_central_proc : state_central_proc_type := CP_INIT;
 
@@ -177,4 +178,5 @@
             --state_central_proc <= CP_CONFIG_SCALER;
             --state_central_proc <= CP_IDLE;
+            --state_central_proc <= CP_CRATE_RESET;
           end if;
 
@@ -280,4 +282,5 @@
             end if;
           elsif (crate_reset = '1') then
+            crate_reset_param_sig <= crate_reset_param;
             crate_reset_ack <= '1';
             state_central_proc <= CP_CRATE_RESET;
@@ -413,9 +416,31 @@
           if (crate_reset = '0') then
             crate_reset_ack <= '0';
+            state_central_proc <= CP_CRATE_RESET_01;
+          end if;
+
+        when CP_CRATE_RESET_01 =>
+          cc_state_test <= X"1A";
+          if (reset_cnt_sig < RESET_TIME) then
+            reset_cnt_sig <= reset_cnt_sig + 1;
+            if    (crate_reset_param_sig = "0000000000000001") then
+              crate_res_0 <= '0';
+            elsif (crate_reset_param_sig = "0000000000000010") then
+              crate_res_1 <= '0';
+            elsif (crate_reset_param_sig = "0000000000000100") then
+              crate_res_2 <= '0';
+            elsif (crate_reset_param_sig = "0000000000001000") then
+              crate_res_3 <= '0';
+            end if;
+          else
+            reset_cnt_sig <= 0;
+            crate_res_0 <= '1';
+            crate_res_1 <= '1';
+            crate_res_2 <= '1';
+            crate_res_3 <= '1';
             state_central_proc <= CP_IDLE;
           end if;
-          
+              
         when others =>
-          cc_state_test <= X"1A";
+          cc_state_test <= X"1B";
           
       end case;
Index: /firmware/FTM/ethernet/w5300_modul.vhd
===================================================================
--- /firmware/FTM/ethernet/w5300_modul.vhd	(revision 10802)
+++ /firmware/FTM/ethernet/w5300_modul.vhd	(revision 10803)
@@ -18,4 +18,5 @@
 --
 ----------------------------------------------------------------------------------
+
 LIBRARY IEEE;
 USE IEEE.STD_LOGIC_1164.all;
@@ -109,5 +110,4 @@
     crate_reset_param         : OUT std_logic_vector (15 DOWNTO 0) := (others => '0')
   );
-
 END w5300_modul ;
 
@@ -606,5 +606,5 @@
                 if (dd_write_general_ready = '1') then
                   data_package_type <= FTM_PACKAGE_TYPE_DD;
-                  data_package_length <= DD_BLOCK_SIZE + 1; -- +1 := package end
+                  data_package_length <= X"0" & (DD_BLOCK_SIZE + 1); -- +1 := package end
                   read_addr_state <= READ_FROM_DD_ADDR;
                   local_sd_addr <= X"000"; -- start at address 0x000
@@ -640,5 +640,5 @@
                 next_state <= SEND_FTU_ERROR;
                 data_package_type <= FTM_PACKAGE_TYPE_FTU_ERR;
-                data_package_length <= FTU_ERROR_LENGTH + 1; -- +1 := package end
+                data_package_length <= X"0" & (FTU_ERROR_LENGTH + 1); -- +1 := package end
                 read_addr_state <= READ_FTU_ERROR;
                 local_sd_addr <= X"000";
@@ -851,5 +851,5 @@
                     state_read_data <= RD_5;
                     data_package_type <= FTM_PACKAGE_TYPE_FTU_LIST;
-                    data_package_length <= FL_BLOCK_SIZE + 1; -- +1 := package end
+                    data_package_length <= X"0" & (FL_BLOCK_SIZE + 1); -- +1 := package end
                     read_addr_state <= READ_FROM_FL_ADDR;
                     local_sd_addr <= X"000"; --start at address 0x000
@@ -863,5 +863,5 @@
               when RD_READ_SD_BLOCK =>
                 data_package_type <= FTM_PACKAGE_TYPE_SD;
-                data_package_length <= SD_BLOCK_SIZE + 1; -- +1 := package end
+                data_package_length <= X"0" & (SD_BLOCK_SIZE + 1); -- +1 := package end
                 state_read_data <= RD_5;
                 read_addr_state <= READ_FROM_SD_ADDR;
@@ -875,5 +875,5 @@
               when RD_READ_SD_ADDR =>
                 data_package_type <= FTM_PACKAGE_TYPE_SD_WORD;
-                data_package_length <= SD_SINGLE_WORD_SIZE + 1; -- +1 := package end
+                data_package_length <= X"0" & (SD_SINGLE_WORD_SIZE + 1); -- +1 := package end
                 state_read_data <= RD_5;
                 read_addr_state <= READ_FROM_SD_ADDR;
Index: /firmware/FTM/ftm_definitions.vhd
===================================================================
--- /firmware/FTM/ftm_definitions.vhd	(revision 10802)
+++ /firmware/FTM/ftm_definitions.vhd	(revision 10803)
@@ -234,5 +234,5 @@
   -- crate reset
   constant CMD_CRESET         : std_logic_vector := X"0020";
-  constant RESET_TIME         : integer := 1000;
+  constant RESET_TIME         : integer := 50;  -- hold reset line for 1us (@ 50MHz clk)
   
   -- start and end of package
