diff options
Diffstat (limited to 'fpga/usrp3/lib/fifo/axi_fifo_short.v')
-rw-r--r-- | fpga/usrp3/lib/fifo/axi_fifo_short.v | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/fpga/usrp3/lib/fifo/axi_fifo_short.v b/fpga/usrp3/lib/fifo/axi_fifo_short.v deleted file mode 100644 index e13993199..000000000 --- a/fpga/usrp3/lib/fifo/axi_fifo_short.v +++ /dev/null @@ -1,110 +0,0 @@ -// -// Copyright 2012 Ettus Research LLC -// - - -// -// 32 word FIFO with AXI4-STREAM interface. -// -// NOTE: This module uses the SRLC32E primitive explicitly and as such -// can only be used with Xilinx technology of the VIRTEX-6/SPARTAN-6/SIERIES-7 or newer. -// - -module axi_fifo_short - #(parameter WIDTH=32) - ( - input clk, - input reset, - input clear, - input [WIDTH-1:0] i_tdata, - input i_tvalid, - output i_tready, - output [WIDTH-1:0] o_tdata, - output o_tvalid, - input o_tready, - - output reg [5:0] space, - output reg [5:0] occupied - ); - - reg full, empty; - wire write = i_tvalid & i_tready; - wire read = o_tready & o_tvalid; - - assign i_tready = ~full; - assign o_tvalid = ~empty; - - reg [4:0] a; - genvar i; - - generate - for (i=0;i<WIDTH;i=i+1) - begin : gen_srlc32e - SRLC32E - srlc32e(.Q(o_tdata[i]), .Q31(), - .A(a), //.A0(a[0]),.A1(a[1]),.A2(a[2]),.A3(a[3]),.A4(a[4]), - .CE(write),.CLK(clk),.D(i_tdata[i])); - end - endgenerate - - always @(posedge clk) - if(reset) - begin - a <= 0; - empty <= 1; - full <= 0; - end - else if(clear) - begin - a <= 0; - empty <= 1; - full<= 0; - end - else if(read & ~write) - begin - full <= 0; - if(a==0) - empty <= 1; - else - a <= a - 1; - end - else if(write & ~read) - begin - empty <= 0; - if(~empty) - a <= a + 1; - if(a == 30) - full <= 1; - end - - // NOTE will fail if you write into a full fifo or read from an empty one - - ////////////////////////////////////////////////////////////// - // space and occupied are used for diagnostics, not - // guaranteed correct - - //assign space = full ? 0 : empty ? 16 : 15-a; - //assign occupied = empty ? 0 : full ? 16 : a+1; - - always @(posedge clk) - if(reset) - space <= 6'd32; - else if(clear) - space <= 6'd32; - else if(read & ~write) - space <= space + 6'd1; - else if(write & ~read) - space <= space - 6'd1; - - always @(posedge clk) - if(reset) - occupied <= 6'd0; - else if(clear) - occupied <= 6'd0; - else if(read & ~write) - occupied <= occupied - 6'd1; - else if(write & ~read) - occupied <= occupied + 6'd1; - -endmodule // axi_fifo_short - |