diff --git a/applications/lofar2/libraries/ddrctrl/src/vhdl/ddrctrl_address_counter.vhd b/applications/lofar2/libraries/ddrctrl/src/vhdl/ddrctrl_address_counter.vhd
index f8d6c54ed0d3a7142a25958812991925c68c01f7..4a7e513d17e7181fe5a3c548a8df4fafa41da956 100644
--- a/applications/lofar2/libraries/ddrctrl/src/vhdl/ddrctrl_address_counter.vhd
+++ b/applications/lofar2/libraries/ddrctrl/src/vhdl/ddrctrl_address_counter.vhd
@@ -45,6 +45,7 @@ ENTITY ddrctrl_address_counter IS
     g_sim_model       : BOOLEAN                           := TRUE                                                                 -- determens if this is a simulation
   );
   PORT (
+    clk               : IN  STD_LOGIC;
     rst               : IN  STD_LOGIC;
     in_sosi           : IN  t_dp_sosi;                                                                                            -- input data
     out_mosi          : OUT t_mem_ctlr_mosi               := c_mem_ctlr_mosi_rst                                                  -- output data
@@ -57,30 +58,30 @@ ARCHITECTURE rtl OF ddrctrl_address_counter IS
   -- constants for readability
   CONSTANT c_data_w   : NATURAL                           := func_tech_ddr_ctlr_data_w( g_tech_ddr );                             -- the with of the input data and output data, 576
   CONSTANT c_adr_w    : NATURAL                           := sel_a_b(g_sim_model, 4, func_tech_ddr_ctlr_address_w( g_tech_ddr )); -- the lengt of the address vector, for simulation this is smaller, otherwise the simulation would take to long, 27
-  CONSTANT c_max_adr  : NATURAL                           := 2**(c_adr_w) - 1;                                                    -- the maximal address that is possible within the vector length of the address
+  CONSTANT c_max_adr  : NATURAL                           := 2**(c_adr_w)-1;                                                      -- the maximal address that is possible within the vector length of the address
 
   -- signal for storing address
   SIGNAL   s_adr      : NATURAL range 0 to 2**(c_adr_w)-1 := 0;                                                                   -- a signal that contains the address
 
 BEGIN
 
-  -- The data is directly put through.
-  out_mosi.wrdata(c_data_w - 1 DOWNTO 0) <= in_sosi.data(c_data_w - 1 DOWNTO 0);
-  out_mosi.wr                            <= in_sosi.valid;
   out_mosi.address(c_adr_w -1 DOWNTO 0)  <= TO_UVEC(s_adr, c_adr_w);
 
   -- Increments the address each time in_sosi.valid = '1', if address = c_max_adr the address is reset to 0.
-  p_adr : PROCESS(rst, in_sosi.valid)
+  p_adr : PROCESS(rst, clk)
   BEGIN
-    IF rst = '1' THEN
-      s_adr <= 0;
-    ELSIF rising_edge(in_sosi.valid) THEN
-      IF s_adr = c_max_adr THEN
+    IF rising_edge(clk) THEN
+      out_mosi.wrdata(c_data_w - 1 DOWNTO 0) <= in_sosi.data(c_data_w - 1 DOWNTO 0);
+      out_mosi.wr                            <= in_sosi.valid;
+      IF rst = '1' THEN
         s_adr <= 0;
-      ELSE
-        s_adr <= s_adr + 1;
+      ELSIF in_sosi.valid = '1' THEN
+        IF s_adr = c_max_adr THEN
+          s_adr <= 0;
+        ELSE
+          s_adr <= s_adr + 1;
+        END IF;
       END IF;
     END IF;
   END PROCESS;
-
 END rtl;
diff --git a/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl_address_counter.vhd b/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl_address_counter.vhd
index 0f3e4d414a0f5f513b4fdfc341698fc4dd164bf5..678abd6b7603a2f60ff99a70d271bea3eb29f651 100644
--- a/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl_address_counter.vhd
+++ b/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl_address_counter.vhd
@@ -62,9 +62,13 @@ ARCHITECTURE tb OF tb_ddrctrl_address_counter IS
 
   -- testbench signals
   SIGNAL    tb_end            : STD_LOGIC       := '0';                                     -- signal to turn the testbench off
-  SIGNAL    in_data           : STD_LOGIC_VECTOR(c_data_w-1 DOWNTO 0);                      -- signal which contains the data that is set as input
-  SIGNAL    in_data_enable    : STD_LOGIC;                                                  -- signal to determen if in_data is ready for reading
+  SIGNAL    in_data           : STD_LOGIC_VECTOR(c_data_w-1 DOWNTO 0) := (OTHERS => '0');   -- signal which contains the data that is set as input
+  SIGNAL    d_in_data         : STD_LOGIC_VECTOR(c_data_w-1 DOWNTO 0) := (OTHERS => '0');
+  SIGNAL    in_data_enable    : STD_LOGIC       := '0';                                     -- signal to determen if in_data is ready for reading
+  SIGNAL    d_in_data_enable  : STD_LOGIC       := '0';
   SIGNAL    lag_due_reset     : NATURAL         := 0;                                       -- signal to hold the address lag after a rest
+  SIGNAL    d_lag_due_reset   : NATURAL         := 0;
+  SIGNAL    d_rst             : STD_LOGIC       := '0';
 
 BEGIN
 
@@ -97,16 +101,29 @@ BEGIN
     -- stopping the test
     WAIT FOR c_clk_period*4;
     tb_end            <= '1';
-    ASSERT FALSE                                                                      REPORT "Test: OK"                                                            SEVERITY FAILURE;
+    ASSERT FALSE                                                                       REPORT "Test: OK"                                                            SEVERITY FAILURE;
   END PROCESS;
 
+  -- generating compare data for out_mosi
+  p_out_mosi : PROCESS
+  BEGIN
+    WAIT UNTIL rising_edge(clk);
+    if rising_edge(clk) THEN
+      d_in_data_enable <= in_data_enable;
+      d_in_data        <= in_data;
+      d_lag_due_reset  <= lag_due_reset;
+      d_rst            <= rst;
+    END IF;
+  END PROCESS;
+      
+
   -- verifying if the data is correct and if valid is correct
   p_verify_data_valid : PROCESS
   BEGIN
     WAIT UNTIL rising_edge(clk);
     IF rising_edge(clk) THEN
-      ASSERT in_sosi.data(c_data_w-1 DOWNTO 0) = out_mosi.wrdata(c_data_w-1 DOWNTO 0) REPORT "in_sosi.data does not match out_mosi.wrdata"                         SEVERITY ERROR;
-      ASSERT in_sosi.valid                     = out_mosi.wr                          REPORT "in_sosi.valid does not match out_mosi.wr"                            SEVERITY ERROR;
+      ASSERT d_in_data(c_data_w-1 DOWNTO 0) = out_mosi.wrdata(c_data_w-1 DOWNTO 0)     REPORT "in_sosi.data does not match out_mosi.wrdata"                         SEVERITY ERROR;
+      ASSERT d_in_data_enable               = out_mosi.wr                              REPORT "in_sosi.valid does not match out_mosi.wr"                            SEVERITY ERROR;
     END IF;
   END PROCESS;
 
@@ -114,12 +131,13 @@ BEGIN
   p_test_reset : PROCESS
   BEGIN
     rst <= '0';
-    WAIT FOR c_clk_period*(c_adr_size+3);
+    --WAIT FOR c_clk_period*1;
     IF lag_due_reset + TO_UINT(out_mosi.address) >= c_adr_size THEN
       lag_due_reset <= lag_due_reset+TO_UINT(out_mosi.address)-c_adr_size;
     ELSE
       lag_due_reset <= lag_due_reset+TO_UINT(out_mosi.address);
     END IF;
+    WAIT FOR c_clk_period*(c_adr_size+3);
     rst <= '1';
     WAIT FOR c_clk_period*1;
   END PROCESS;
@@ -129,13 +147,13 @@ BEGIN
   BEGIN
     FOR I IN 0 TO c_adr_size-1 LOOP
       WAIT UNTIL out_mosi.wr = '1';
-      IF rst = '1' THEN
+      IF d_rst = '1' THEN
         WAIT UNTIL out_mosi.wr = '1';
       END IF;
-      IF I >= lag_due_reset THEN
-        ASSERT I-lag_due_reset   = TO_UINT(out_mosi.address)                           REPORT "Wrong address, 1, I = " & NATURAL'image(I-lag_due_reset) & ", address = " & NATURAL'image(TO_UINT(out_mosi.address))                SEVERITY ERROR;
+      IF I >= d_lag_due_reset THEN
+        ASSERT I-d_lag_due_reset   = TO_UINT(out_mosi.address)                         REPORT "Wrong address, 1, I = " & NATURAL'image(I-d_lag_due_reset) & ", address = " & NATURAL'image(TO_UINT(out_mosi.address))              SEVERITY ERROR;
       ELSE
-        ASSERT (I-lag_due_reset)+c_adr_size = TO_UINT(out_mosi.address)                REPORT "Wrong address, 2, I = " & NATURAL'image((I-lag_due_reset)+c_adr_size) & ", address = " & NATURAL'image(TO_UINT(out_mosi.address))   SEVERITY ERROR;
+        ASSERT (I-d_lag_due_reset)+c_adr_size = TO_UINT(out_mosi.address)                REPORT "Wrong address, 2, I = " & NATURAL'image((I-d_lag_due_reset)+c_adr_size) & ", address = " & NATURAL'image(TO_UINT(out_mosi.address))   SEVERITY ERROR;
       END IF;
     END LOOP;
   END PROCESS;
@@ -148,6 +166,7 @@ BEGIN
     g_sim_model       => g_sim_model
   )
   PORT MAP (
+    clk               => clk,
     rst               => rst,
     in_sosi           => in_sosi,