aboutsummaryrefslogtreecommitdiffstats
path: root/fpga/usrp3/lib/vita/context_packet_gen.v
diff options
context:
space:
mode:
authorBen Hilburn <ben.hilburn@ettus.com>2013-10-10 10:17:27 -0700
committerBen Hilburn <ben.hilburn@ettus.com>2013-10-10 10:17:27 -0700
commit0df4b801a34697f2058b4a7b95e08d2a0576c9db (patch)
treebe10e78d1a97c037a9e7492360a178d1873b9c09 /fpga/usrp3/lib/vita/context_packet_gen.v
parent6e7bc850b66e8188718248b76b729c7cf9c89700 (diff)
downloaduhd-0df4b801a34697f2058b4a7b95e08d2a0576c9db.tar.gz
uhd-0df4b801a34697f2058b4a7b95e08d2a0576c9db.tar.bz2
uhd-0df4b801a34697f2058b4a7b95e08d2a0576c9db.zip
Squashed B200 FPGA Source. Code from Josh Blum, Ian Buckley, and Matt Ettus.
Diffstat (limited to 'fpga/usrp3/lib/vita/context_packet_gen.v')
-rw-r--r--fpga/usrp3/lib/vita/context_packet_gen.v51
1 files changed, 51 insertions, 0 deletions
diff --git a/fpga/usrp3/lib/vita/context_packet_gen.v b/fpga/usrp3/lib/vita/context_packet_gen.v
new file mode 100644
index 000000000..2782f66df
--- /dev/null
+++ b/fpga/usrp3/lib/vita/context_packet_gen.v
@@ -0,0 +1,51 @@
+
+module context_packet_gen
+ (input clk, input reset, input clear,
+ input trigger,
+ input [11:0] seqnum,
+ input [31:0] sid,
+ input [63:0] body,
+ input [63:0] vita_time,
+
+ output done,
+ output reg [63:0] o_tdata, output o_tlast, output o_tvalid, input o_tready);
+
+ reg [1:0] cp_state;
+ localparam CP_IDLE = 2'd0;
+ localparam CP_HEAD = 2'd1;
+ localparam CP_TIME = 2'd2;
+ localparam CP_DATA = 2'd3;
+
+ always @(posedge clk)
+ if(reset|clear)
+ cp_state <= CP_IDLE;
+ else
+ case(cp_state)
+ CP_IDLE :
+ if(trigger)
+ cp_state <= CP_HEAD;
+ CP_HEAD :
+ if(o_tready)
+ cp_state <= CP_TIME;
+ CP_TIME :
+ if(o_tready)
+ cp_state <= CP_DATA;
+ CP_DATA :
+ if(o_tready)
+ cp_state <= CP_IDLE;
+ endcase // case (cp_state)
+
+ assign o_tvalid = (cp_state != CP_IDLE);
+ assign o_tlast = (cp_state == CP_DATA);
+
+ always @*
+ case(cp_state)
+ CP_HEAD : o_tdata <= { 4'hA, seqnum, 16'd24, sid };
+ CP_TIME : o_tdata <= vita_time;
+ CP_DATA : o_tdata <= body;
+ default : o_tdata <= body;
+ endcase // case (cp_state)
+
+ assign done = o_tlast & o_tvalid & o_tready;
+
+endmodule // context_packet_gen