diff options
Diffstat (limited to 'usrp2/vrt')
-rw-r--r-- | usrp2/vrt/Makefile.srcs | 1 | ||||
-rw-r--r-- | usrp2/vrt/vita_pkt_gen.v | 42 |
2 files changed, 43 insertions, 0 deletions
diff --git a/usrp2/vrt/Makefile.srcs b/usrp2/vrt/Makefile.srcs index 4851bc924..166ed44ef 100644 --- a/usrp2/vrt/Makefile.srcs +++ b/usrp2/vrt/Makefile.srcs @@ -14,4 +14,5 @@ vita_tx_deframer.v \ vita_tx_chain.v \ gen_context_pkt.v \ trigger_context_pkt.v \ +vita_pkt_gen.v \ )) diff --git a/usrp2/vrt/vita_pkt_gen.v b/usrp2/vrt/vita_pkt_gen.v new file mode 100644 index 000000000..fea312188 --- /dev/null +++ b/usrp2/vrt/vita_pkt_gen.v @@ -0,0 +1,42 @@ + + +module vita_pkt_gen + (input clk, input reset, input clear, + input [15:0] len, + output [35:0] data_o, output src_rdy_o, input dst_rdy_i); + + reg [15:0] state; + reg [31:0] seq, data; + + wire sof = (state == 0); + wire eof = (state == (len-1)); + wire consume = src_rdy_o & dst_rdy_i; + + assign src_rdy_o = 1; + + always @(posedge clk) + if(reset | clear) + begin + state <= 0; + seq <= 0; + end + else + if(consume) + if(eof) + begin + state <= 0; + seq <= seq + 1; + end + else + state <= state + 1; + + always @* + case(state) + 0 : data <= {24'h000,seq[3:0],len}; + 1 : data <= seq; + default : data <= {~state,state}; + endcase // case (state) + + assign data_o = {2'b00, eof, sof, data}; + +endmodule // vita_pkt_gen |