diff options
Diffstat (limited to 'fpga/usrp3/lib/sim/axi_probe_tb.v')
-rw-r--r-- | fpga/usrp3/lib/sim/axi_probe_tb.v | 238 |
1 files changed, 0 insertions, 238 deletions
diff --git a/fpga/usrp3/lib/sim/axi_probe_tb.v b/fpga/usrp3/lib/sim/axi_probe_tb.v deleted file mode 100644 index 4d531492c..000000000 --- a/fpga/usrp3/lib/sim/axi_probe_tb.v +++ /dev/null @@ -1,238 +0,0 @@ -// -// Copyright 2012 Ettus Research LLC -// - - -// -// This module is a SIMULATION ONLY bus monitor that probes AXI4-STREAM bus -// that transfer ETTUS non-CHDR VITA49.0 data, providing logging and diagnostoic info. -// - -module axi_probe_tb - #( - parameter FILENAME="probe.txt", - parameter VITA_PORT0=0, // UDP ports to identify VITA - parameter VITA_PORT1=0, // UDP ports to identify VITA - parameter START_AT_VRL=0 // Flags already stripped back to VRL. - ) - ( - input clk, - input reset, - input clear, - input [63:0] tdata, - input tvalid, - input tready, - input tlast - ); - - localparam ARP = 16'h0806; - localparam IPv4 = 16'h0800; - localparam UDP = 8'h11; - localparam VRL = 1; - - - - - localparam WAIT_SOF = 0; - localparam LINE1 = 1; - localparam LINE2 = 2; - localparam LINE3 = 3; - localparam LINE4 = 4; - localparam LINE5 = 5; - localparam LINE6 = 6; - localparam LINE7 = 7; - - localparam WAIT_EOF = 15; - - reg [3:0] out_state; - - reg [63:0] last_line; - reg [15:0] eth_proto; - reg [7:0] ip_proto; - reg vita_proto; - - - - integer dump_file; - - initial - begin - dump_file = $fopen(FILENAME,"w"); - end - - // - // Monitor packets leaving FIFO - // - always @(posedge clk) - if (reset | clear) begin - out_state <= WAIT_SOF; - end else - case(out_state) - // - // After RESET or the EOF of previous packet, the first cycle with - // output valid asserted is the SOF and presents the Header word. - // The cycle following the concurrent presentation of asserted output - // valid and output ready presents the word following the header. - // - WAIT_SOF: - if (tvalid && tready) begin - last_line <= 0; - eth_proto <= 0; - ip_proto <= 0; - vita_proto <= 0; - - $fdisplay(dump_file,"------------------------------------------"); - $fdisplay(dump_file,"Time = %1d",$time); - if (START_AT_VRL) begin - if (tdata[63:32] == "VRLP") begin - $fdisplay(dump_file,"VRL VITA49 PAYLOAD"); - vita_proto <= VRL; - end - out_state <= LINE7; - end - else out_state <= LINE1; - - last_line <= tdata; - end else begin - out_state <= WAIT_SOF; - end - // - LINE1: if (tvalid && tready) begin - $fdisplay(dump_file,"Dst MAC: %x:%x:%x:%x:%x:%x", - last_line[15:8],last_line[7:0],tdata[63:56],tdata[55:48],tdata[47:40],tdata[39:32]); - last_line = tdata; - out_state <= LINE2; - if (tlast) begin - $fdisplay(dump_file,"------------------------------------------"); - out_state <= WAIT_SOF; - end - end - // - LINE2: if (tvalid && tready) begin - $fdisplay(dump_file,"Src MAC: %x:%x:%x:%x:%x:%x", - last_line[31:24],last_line[23:16],last_line[15:8],last_line[7:0], - tdata[63:56],tdata[55:48]); - eth_proto = tdata[47:32]; - // Protocol?? - if (tdata[47:32] == ARP) begin - //ARP - $fdisplay(dump_file,"ARP packet"); - if (tdata[31:16] == 'h0001) - $fdisplay(dump_file,"HTYPE = 1 (Ethernet)"); - if (tdata[31:16] == 'h0800) - $fdisplay(dump_file,"PTYPE = 0x0800 (IPv4)"); - out_state <= LINE3; - end else if (tdata[47:32] == IPv4) begin - // IPv4 - $fdisplay(dump_file,"IPv4 packet"); - $fdisplay(dump_file,"Packet Length: %1d",tdata[15:0]); - out_state <= LINE3; - end else - out_state <= WAIT_EOF; - if (tlast) begin - $fdisplay(dump_file,"------------------------------------------"); - out_state <= WAIT_SOF; - end - end // case: LINE2 - // - LINE3: - if (tvalid && tready) begin - // Protocol?? - if (eth_proto == ARP) begin - $fdisplay(dump_file,"HLEN: %d PLEN: %d",tdata[63:56],tdata[55:48]); - if (tdata[47:32] == 1) $fdisplay(dump_file,"Operation: ARP REQUEST"); - else if (tdata[47:32] == 2) $fdisplay(dump_file,"Operation: ARP REPLY"); - else $fdisplay(dump_file,"Operation: UNKNOWN"); - last_line = tdata; - // out_state <= LINE4; - out_state <= WAIT_EOF; // Add further ARP decode later if desired. - - end else if (eth_proto == IPv4) begin - ip_proto = tdata[23:16]; - if (tdata[23:16] == UDP) $fdisplay(dump_file,"IPv4 Protocol: UDP"); - else $fdisplay(dump_file,"IPv4 Protocol: %x",tdata[23:16]); - out_state <= LINE4; - end else - out_state <= WAIT_EOF; - if (tlast) begin - $fdisplay(dump_file,"------------------------------------------"); - out_state <= WAIT_SOF; - end - end // if (tvalid && tready) - // - LINE4: - if (tvalid && tready) begin - // Protocol?? - if (eth_proto == IPv4) begin - $fdisplay(dump_file,"IP Src Address: %1d.%1d.%1d.%1d IP Dst Address: %1d.%1d.%1d.%1d", - tdata[63:56],tdata[55:48],tdata[47:40],tdata[39:32], - tdata[31:24],tdata[23:16],tdata[15:8],tdata[7:0]); - if (ip_proto == UDP) - out_state <= LINE5; - else - out_state <= WAIT_EOF; - end - if (tlast) begin - $fdisplay(dump_file,"------------------------------------------"); - out_state <= WAIT_SOF; - end - end // if (tvalid && tready) - // - LINE5: - if (tvalid && tready) begin - // Protocol?? - if (ip_proto == UDP) begin - $fdisplay(dump_file,"UDP Src Port: %d UDP Dst Port: %d", - tdata[63:48],tdata[47:32]); - $fdisplay(dump_file,"UDP Length: %1d",tdata[31:16]); - - last_line = tdata; - out_state <= LINE6; - end - if (tlast) begin - $fdisplay(dump_file,"------------------------------------------"); - out_state <= WAIT_SOF; - end - end // if (tvalid && tready) - // - LINE6: - if (tvalid && tready) begin - // Protocol?? - if (tdata[63:32] == "VRLP") begin - $fdisplay(dump_file,"VRL VITA49 PAYLOAD"); - // Expand VITA decode later - vita_proto <= VRL; - out_state <= LINE7; - end - if (tlast) begin - $fdisplay(dump_file,"------------------------------------------"); - out_state <= WAIT_SOF; - end - end // if (tvalid && tready) - // - LINE7: - if (tvalid && tready) begin - // Protocol?? - if (vita_proto == VRL) begin - $fdisplay(dump_file,"VRT: Packet Size: %1d StreamID: %x",tdata[47:32],tdata[31:0]); - out_state <= WAIT_EOF; - end - if (tlast) begin - $fdisplay(dump_file,"------------------------------------------"); - out_state <= WAIT_SOF; - end - end // if (tvalid && tready) - - - // - // EOF is signalled by o_tlast asserted whilst output valid and ready asserted. - // - WAIT_EOF: - if (tlast && tvalid && tready) begin - out_state <= WAIT_SOF; - end else begin - out_state <= WAIT_EOF; - end - endcase // case(in_state) - -endmodule // axi_probe_tb |