From a051c62b9fd99a100eb98756b60df54b68160888 Mon Sep 17 00:00:00 2001
From: Reinier van der Walle <walle@astron.nl>
Date: Thu, 1 Jun 2023 13:18:57 +0200
Subject: [PATCH] added byte order inversion

---
 .../src/vhdl/rdma_demo_eth_tester_wrapper.vhd    | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/applications/rdma_demo/src/vhdl/rdma_demo_eth_tester_wrapper.vhd b/applications/rdma_demo/src/vhdl/rdma_demo_eth_tester_wrapper.vhd
index a870885c29..4f50982eae 100644
--- a/applications/rdma_demo/src/vhdl/rdma_demo_eth_tester_wrapper.vhd
+++ b/applications/rdma_demo/src/vhdl/rdma_demo_eth_tester_wrapper.vhd
@@ -152,6 +152,8 @@ END rdma_demo_eth_tester_wrapper;
 
 
 ARCHITECTURE str OF rdma_demo_eth_tester_wrapper IS
+  CONSTANT c_nof_byte                   : NATURAL := c_rdma_demo_nof_octet_output_100gbe;
+
   SIGNAL rx_udp_sosi_arr                : t_dp_sosi_arr(0 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
   SIGNAL rx_udp_siso_arr                : t_dp_siso_arr(0 DOWNTO 0) := (OTHERS => c_dp_siso_rdy);
   SIGNAL tx_udp_sosi_arr                : t_dp_sosi_arr(0 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
@@ -274,25 +276,31 @@ BEGIN
   tx_udp_axi4_siso.tready <= tx_udp_tready;
 
   tx_udp_tvalid <= tx_udp_axi4_sosi.tvalid;
-  tx_udp_tdata  <= tx_udp_axi4_sosi.tdata;
   tx_udp_tstrb  <= tx_udp_axi4_sosi.tstrb;
-  tx_udp_tkeep  <= tx_udp_axi4_sosi.tkeep;
   tx_udp_tlast  <= tx_udp_axi4_sosi.tlast;
   tx_udp_tid    <= tx_udp_axi4_sosi.tid;
   tx_udp_tdest  <= tx_udp_axi4_sosi.tdest;
   tx_udp_tuser  <= tx_udp_axi4_sosi.tuser;
+  -- reverse order of bytes
+  gen_tx_data : FOR I IN 0 TO c_nof_byte - 1 GENERATE
+    tx_udp_tdata( (I+1) * c_octet_w - 1 DOWNTO I * c_octet_w) <= tx_udp_axi4_sosi.tdata((c_nof_byte - I) * c_octet_w - 1 DOWNTO (c_nof_byte - 1 - I) * c_octet_w);
+    tx_udp_tkeep(I) <= tx_udp_axi4_sosi.tkeep(c_nof_byte - 1 - I);
+  END GENERATE;
 
   -- rx_udp
   rx_udp_tready <= rx_udp_axi4_siso.tready;
 
   rx_udp_axi4_sosi.tvalid <= rx_udp_tvalid;
-  rx_udp_axi4_sosi.tdata  <= rx_udp_tdata;
   rx_udp_axi4_sosi.tstrb  <= rx_udp_tstrb;
-  rx_udp_axi4_sosi.tkeep  <= rx_udp_tkeep;
   rx_udp_axi4_sosi.tlast  <= rx_udp_tlast;
   rx_udp_axi4_sosi.tid    <= rx_udp_tid;
   rx_udp_axi4_sosi.tdest  <= rx_udp_tdest;
   rx_udp_axi4_sosi.tuser  <= rx_udp_tuser;
+  -- reverse order of bytes
+  gen_rx_data : FOR I IN 0 TO c_nof_byte - 1 GENERATE
+    rx_udp_axi4_sosi.tdata( (I+1) * c_octet_w - 1 DOWNTO I * c_octet_w) <= rx_udp_tdata((c_nof_byte - I) * c_octet_w - 1 DOWNTO (c_nof_byte - 1 - I) * c_octet_w);
+    rx_udp_axi4_sosi.tkeep(I) <= rx_udp_tkeep(c_nof_byte - 1 - I);
+  END GENERATE;
 
   -- reg_bg_ctrl
   -- copi
-- 
GitLab