aboutsummaryrefslogtreecommitdiffstats
path: root/fpga/usrp3/lib/io_port2/data_swapper_64.v
diff options
context:
space:
mode:
authormichael-west <michael.west@ettus.com>2014-03-25 15:59:03 -0700
committermichael-west <michael.west@ettus.com>2014-03-25 15:59:03 -0700
commit04292f9b109479b639add31f83fd240a6387f488 (patch)
tree4b8723a4ae63626029704f901ee0083bb23bc1e9 /fpga/usrp3/lib/io_port2/data_swapper_64.v
parent09915aa57bc88099cbcbbe925946ae65bc0ad8f0 (diff)
parentff8a1252f3a51369abe0a165d963b781089ec66c (diff)
downloaduhd-04292f9b109479b639add31f83fd240a6387f488.tar.gz
uhd-04292f9b109479b639add31f83fd240a6387f488.tar.bz2
uhd-04292f9b109479b639add31f83fd240a6387f488.zip
Merge branch 'master' into mwest/b200_docs
Diffstat (limited to 'fpga/usrp3/lib/io_port2/data_swapper_64.v')
-rw-r--r--fpga/usrp3/lib/io_port2/data_swapper_64.v22
1 files changed, 22 insertions, 0 deletions
diff --git a/fpga/usrp3/lib/io_port2/data_swapper_64.v b/fpga/usrp3/lib/io_port2/data_swapper_64.v
new file mode 100644
index 000000000..89ae6a7c2
--- /dev/null
+++ b/fpga/usrp3/lib/io_port2/data_swapper_64.v
@@ -0,0 +1,22 @@
+//
+// Copyright 2013 Ettus Research LLC
+//
+
+module data_swapper_64 (
+ input [2:0] swap_lanes,
+
+ input [63:0] i_tdata,
+ output [63:0] o_tdata
+);
+ localparam SWAP_32B = 3'b100;
+ localparam SWAP_16B = 3'b010;
+ localparam SWAP_8B = 3'b001;
+
+ wire [63:0] data_p1, data_p2;
+
+ assign data_p1 = (|(swap_lanes & SWAP_32B)) ? { i_tdata[31:0], i_tdata[63:32] } : i_tdata;
+ assign data_p2 = (|(swap_lanes & SWAP_16B)) ? { data_p1[47:32], data_p1[63:48], data_p1[15:0], data_p1[31:16] } : data_p1;
+ assign o_tdata = (|(swap_lanes & SWAP_8B)) ? { data_p2[55:48], data_p2[63:56], data_p2[39:32], data_p2[47:40],
+ data_p2[23:16], data_p2[31:24], data_p2[7:0], data_p2[15:8] } : data_p2;
+
+endmodule // data_swapper_64