aboutsummaryrefslogtreecommitdiffstats
path: root/fpga/usrp3/lib/xge_interface/xge_handshake.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/xge_interface/xge_handshake.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/xge_interface/xge_handshake.v')
-rw-r--r--fpga/usrp3/lib/xge_interface/xge_handshake.v60
1 files changed, 60 insertions, 0 deletions
diff --git a/fpga/usrp3/lib/xge_interface/xge_handshake.v b/fpga/usrp3/lib/xge_interface/xge_handshake.v
new file mode 100644
index 000000000..251099f57
--- /dev/null
+++ b/fpga/usrp3/lib/xge_interface/xge_handshake.v
@@ -0,0 +1,60 @@
+//
+// Copyright 2013 Ettus Research LLC
+//
+
+//
+//
+// Provide required handshake to Opencores XGE MAC to initiate Rx of one available packet
+//
+//
+
+
+module xge_handshake
+ (
+ input clk,
+ input reset,
+ output reg pkt_rx_ren,
+ input pkt_rx_avail,
+ input pkt_rx_eop
+ );
+
+ localparam IDLE=0;
+ localparam RX=1;
+
+ reg state;
+
+
+ always @(posedge clk)
+ if (reset) begin
+ pkt_rx_ren <= 0;
+ state <= IDLE;
+ end else begin
+ case (state)
+ //
+ // Wait for pkt_rx_avail to be asserted, then assert pkt_rx_ren next cycle
+ //
+ IDLE: begin
+ if (pkt_rx_avail) begin
+ pkt_rx_ren <= 1;
+ state <= RX;
+ end else begin
+ pkt_rx_ren <= 0;
+ state <= IDLE;
+ end
+ end
+ //
+ // Keep pkt_rx_ren asserted until EOF received.
+ //
+ RX: begin
+ if (pkt_rx_eop) begin
+ pkt_rx_ren <= 0;
+ state <= IDLE;
+ end else begin
+ pkt_rx_ren <= 1;
+ state <= RX;
+ end
+ end
+
+ endcase // case(state)
+ end // else: !if(reset)
+endmodule // xge_handshake