diff --git a/libraries/base/dp/src/vhdl/dp_concat_field_blk.vhd b/libraries/base/dp/src/vhdl/dp_concat_field_blk.vhd
index 2e531791bb682356a09e8364d51ae9e7331170e7..7430a6a5c5505714a08db9196d38a85f97aee009 100644
--- a/libraries/base/dp/src/vhdl/dp_concat_field_blk.vhd
+++ b/libraries/base/dp/src/vhdl/dp_concat_field_blk.vhd
@@ -106,8 +106,18 @@ BEGIN
     p_wire_valid : PROCESS(snk_in_arr, hdr_fields_in_arr)
     BEGIN
       FOR i IN 0 TO g_nof_streams-1 LOOP
-        dp_field_blk_snk_in_arr(i).data(field_slv_len(g_hdr_field_arr)-1 DOWNTO 0) <= hdr_fields_in_arr(i)(field_slv_len(g_hdr_field_arr)-1 DOWNTO 0);
-        dp_field_blk_snk_in_arr(i).valid                                           <= snk_in_arr(i).sop;
+        -- default pass on the other snk_in_arr fields as well, especially the sync, bsn and channel can
+        -- be useful to preserve for the packetized output, even though only the sosi.data of the
+        -- packetized output will get transmitted.
+        dp_field_blk_snk_in_arr(i)       <= snk_in_arr(i);
+        -- Prepare packet header as a data block with only one data word, so valid = sop = eop. If
+        -- c_dp_field_blk_snk_data_w > c_dp_field_blk_src_data_w then dp_repack_data in dp_field_blk will
+        -- repack this data word into a multi word header block, else dp_field_blk will pass on the
+        -- dp_field_blk_snk_in_arr as a single word header block.
+        dp_field_blk_snk_in_arr(i).data  <= RESIZE_DP_DATA(hdr_fields_in_arr(i)(field_slv_len(g_hdr_field_arr)-1 DOWNTO 0));
+        dp_field_blk_snk_in_arr(i).valid <= snk_in_arr(i).sop;
+        dp_field_blk_snk_in_arr(i).sop   <= snk_in_arr(i).sop;  -- necessary for single word header block
+        dp_field_blk_snk_in_arr(i).eop   <= snk_in_arr(i).sop;  -- necessary for single word header block
       END LOOP;
     END PROCESS;
 
@@ -146,6 +156,7 @@ BEGIN
 
   END GENERATE;
 
+  -- Prepend the header block to the input block
   gen_dp_concat : FOR i IN 0 TO g_nof_streams-1 GENERATE
 
     dp_concat_snk_in_2arr(i)(0) <= snk_in_arr(i);