fpga: Multiple X300 FPGA bugfixes and enhancements
- Fixed 10GigE firmware communication issues and sequence errors for TX - Multiple changes to help ease timing closure - Cleaned up build scripts - Switched to Xilinx ISE 14.7 as the default build tool for X300 Original-commit: 64d71dcbc5fa6790385b288de25224d386b047b0
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
//
|
||||
// Copyright 2014 Ettus Research LLC
|
||||
//
|
||||
|
||||
module axis_packet_debug (
|
||||
input clk,
|
||||
input reset,
|
||||
input clear,
|
||||
|
||||
//Packet In
|
||||
input [63:0] tdata,
|
||||
input tlast,
|
||||
input tvalid,
|
||||
input tready,
|
||||
|
||||
//Per packet info
|
||||
output reg pkt_strobe,
|
||||
output reg [15:0] length,
|
||||
output reg [63:0] checksum,
|
||||
|
||||
//Statistics
|
||||
output reg [31:0] pkt_count
|
||||
);
|
||||
|
||||
localparam ST_HEADER = 1'b0;
|
||||
localparam ST_DATA = 1'b1;
|
||||
|
||||
//Packet state logic
|
||||
reg pkt_state;
|
||||
always @(posedge clk) begin
|
||||
if (reset) begin
|
||||
pkt_state <= ST_HEADER;
|
||||
end else if (tvalid & tready) begin
|
||||
pkt_state <= tlast ? ST_HEADER : ST_DATA;
|
||||
end
|
||||
end
|
||||
|
||||
//Trigger logic
|
||||
always @(posedge clk)
|
||||
if (reset)
|
||||
pkt_strobe <= 1'b0;
|
||||
else
|
||||
pkt_strobe <= tvalid & tready & tlast;
|
||||
|
||||
//Length capture
|
||||
always @(posedge clk)
|
||||
if (reset || pkt_state == ST_HEADER)
|
||||
length <= tlast ? 16'd8 : 16'd0;
|
||||
else
|
||||
if (tvalid & tready)
|
||||
length <= length + 16'd8;
|
||||
|
||||
//Checksum capture
|
||||
always @(posedge clk)
|
||||
if (reset || pkt_state == ST_HEADER)
|
||||
checksum <= 64'd0;
|
||||
else
|
||||
if (tvalid & tready)
|
||||
checksum <= checksum ^ tdata;
|
||||
|
||||
//Counts
|
||||
always @(posedge clk)
|
||||
if (reset | clear) begin
|
||||
pkt_count <= 32'd0;
|
||||
end else begin
|
||||
if (tvalid & tready & tlast) begin
|
||||
pkt_count <= pkt_count + 32'd1;
|
||||
end
|
||||
end
|
||||
|
||||
endmodule // cvita_packet_debug
|
||||
Reference in New Issue
Block a user