diff options
author | Josh Blum <josh@joshknows.com> | 2011-03-10 14:57:01 -0800 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2011-03-10 14:57:01 -0800 |
commit | db2b80617d789484b463ab81a94605adfae39de9 (patch) | |
tree | 5f1a85be7a10d76b82ba9c300005573790d1a688 /fpga/usrp2/extramfifo | |
parent | 6d744744d88f8834f91c76742cd190e204f2ae8e (diff) | |
parent | 912a697adbfcf80cc64e9c0884f6d723e6d8f003 (diff) | |
download | uhd-db2b80617d789484b463ab81a94605adfae39de9.tar.gz uhd-db2b80617d789484b463ab81a94605adfae39de9.tar.bz2 uhd-db2b80617d789484b463ab81a94605adfae39de9.zip |
Merge branch 'packet_router_2nd_dsp' into next
Diffstat (limited to 'fpga/usrp2/extramfifo')
-rw-r--r-- | fpga/usrp2/extramfifo/fifo_extram.v | 188 | ||||
-rw-r--r-- | fpga/usrp2/extramfifo/fifo_extram36.v | 47 | ||||
-rwxr-xr-x | fpga/usrp2/extramfifo/fifo_extram36_tb.build | 1 | ||||
-rw-r--r-- | fpga/usrp2/extramfifo/fifo_extram36_tb.v | 475 | ||||
-rwxr-xr-x | fpga/usrp2/extramfifo/fifo_extram_tb.build | 1 | ||||
-rw-r--r-- | fpga/usrp2/extramfifo/fifo_extram_tb.v | 134 |
6 files changed, 0 insertions, 846 deletions
diff --git a/fpga/usrp2/extramfifo/fifo_extram.v b/fpga/usrp2/extramfifo/fifo_extram.v deleted file mode 100644 index 4e1f40371..000000000 --- a/fpga/usrp2/extramfifo/fifo_extram.v +++ /dev/null @@ -1,188 +0,0 @@ - -// Everything on sram_clk - -module fifo_extram - (input reset, input clear, - input [17:0] datain, input src_rdy_i, output dst_rdy_o, output [15:0] space, input [15:0] occ_in, - output [17:0] dataout, output src_rdy_o, input dst_rdy_i, output [15:0] occupied, input [15:0] space_in, - input sram_clk, output [18:0] sram_a, inout [17:0] sram_d, output sram_we, - output [1:0] sram_bw, output sram_adv, output sram_ce, output sram_oe, - output sram_mode, output sram_zz); - - localparam AWIDTH = 19; // 1 MB in x18 - localparam RAMSIZE = ((1<<AWIDTH) - 1); - - wire do_store, do_retrieve; - reg [1:0] do_store_del, do_retr_del; - - reg [AWIDTH-1:0] addr_retrieve, addr_store; - always @(posedge sram_clk) - if(reset | clear) - addr_retrieve <= 0; - else if (do_retrieve) - addr_retrieve <= addr_retrieve + 1; - - always @(posedge sram_clk) - if(reset | clear) - addr_store <= 0; - else if(do_store) - addr_store <= addr_store + 1; - - //wire [AWIDTH-1:0] fullness = (addr_store - addr_retrieve); - reg [AWIDTH-1:0] fullness; - always @(posedge sram_clk) - if(reset | clear) - fullness <= 0; - else if(do_store) - fullness <= fullness + 1; - else if(do_retrieve) - fullness <= fullness - 1; - - // wire empty = (fullness == 0); - //wire full = (fullness == RAMSIZE); // 19'h7FF); - reg empty, full; - - // The math in the following functions is 'AWIDTH wide. Use - // continuous assignments to prevent the numbers from being - // promoted to 32-bit (which would make it wrap wrong). - // - wire [AWIDTH-1:0] addr_retrieve_p1, addr_store_p2; - assign addr_retrieve_p1 = addr_retrieve + 1; - assign addr_store_p2 = addr_store + 2; - - always @(posedge sram_clk) - if(reset | clear) - empty <= 1; - else if(do_store) - empty <= 0; - else if(do_retrieve & (/*(addr_retrieve + 1)*/ addr_retrieve_p1 == addr_store)) - empty <= 1; - - always @(posedge sram_clk) - if(reset | clear) - full <= 0; - else if(do_retrieve) - full <= 0; - else if(do_store & (/*(addr_store+2)*/ addr_store_p2 == addr_retrieve)) - full <= 1; - - reg can_store; - always @* - if(full | ~src_rdy_i) - can_store <= 0; - else if(do_store_del == 0) - can_store <= 1; - else if((do_store_del == 1) || (do_store_del == 2)) - can_store <= (occ_in > 1); - else - can_store <= (occ_in > 2); - - reg can_retrieve; - always @* - if(empty | ~dst_rdy_i) - can_retrieve <= 0; - else if(do_retr_del == 0) - can_retrieve <= 1; - else if((do_retr_del == 1) || (do_retr_del == 2)) - can_retrieve <= (space_in > 1); - else - can_retrieve <= (space_in > 2); - - reg [1:0] state; - localparam IDLE_STORE_NEXT = 0; - localparam STORE = 1; - localparam IDLE_RETR_NEXT = 2; - localparam RETRIEVE = 3; - - reg [7:0] countdown; - wire countdown_done = (countdown == 0); - - localparam CYCLE_SIZE = 6; - - assign do_store = can_store & (state == STORE); - assign do_retrieve = can_retrieve & (state == RETRIEVE); - always @(posedge sram_clk) - if(reset) - do_store_del <= 0; - else - do_store_del <= {do_store_del[0],do_store}; - - always @(posedge sram_clk) - if(reset) - do_retr_del <= 0; - else - do_retr_del <= {do_retr_del[0],do_retrieve}; - - always @(posedge sram_clk) - if(reset | clear) - begin - state <= IDLE_STORE_NEXT; - countdown <= 0; - end - else - case(state) - IDLE_STORE_NEXT : - if(can_store) - begin - state <= STORE; - countdown <= CYCLE_SIZE; - end - else if(can_retrieve) - begin - state <= RETRIEVE; - countdown <= CYCLE_SIZE; - end - STORE : - if(~can_store | (can_retrieve & countdown_done)) - state <= IDLE_RETR_NEXT; - else if(~countdown_done) - countdown <= countdown - 1; - IDLE_RETR_NEXT : - if(can_retrieve) - begin - state <= RETRIEVE; - countdown <= CYCLE_SIZE; - end - else if(can_store) - begin - state <= STORE; - countdown <= CYCLE_SIZE; - end - RETRIEVE : - if(~can_retrieve | (can_store & countdown_done)) - state <= IDLE_STORE_NEXT; - else if(~countdown_done) - countdown <= countdown - 1; - endcase // case (state) - - // RAM wires - assign sram_bw = 0; - assign sram_adv = 0; - assign sram_mode = 0; - assign sram_zz = 0; - assign sram_ce = 0; - - assign sram_a = (state==STORE) ? addr_store : addr_retrieve; - assign sram_we = ~do_store; - assign sram_oe = ~do_retr_del[1]; - assign my_oe = do_store_del[1] & sram_oe; - assign sram_d = my_oe ? datain : 18'bz; - - // FIFO wires - assign dataout = sram_d; - assign src_rdy_o = do_retr_del[1]; - assign dst_rdy_o = do_store_del[1]; - -endmodule // fifo_extram - - - //wire have_1 = (fullness == 1); - //wire have_2 = (fullness == 2); - //wire have_atleast_1 = ~empty; - //wire have_atleast_2 = ~(empty | have_1); - //wire have_atleast_3 = ~(empty | have_1 | have_2); - //wire full_minus_1 = (fullness == (RAMSIZE-1)); // 19'h7FE); - //wire full_minus_2 = (fullness == (RAMSIZE-2)); // 19'h7FD); - //wire spacefor_atleast_1 = ~full; - //wire spacefor_atleast_2 = ~(full | full_minus_1); - //wire spacefor_atleast_3 = ~(full | full_minus_1 | full_minus_2); diff --git a/fpga/usrp2/extramfifo/fifo_extram36.v b/fpga/usrp2/extramfifo/fifo_extram36.v deleted file mode 100644 index 29342fdc4..000000000 --- a/fpga/usrp2/extramfifo/fifo_extram36.v +++ /dev/null @@ -1,47 +0,0 @@ - -// 18 bit interface means we either can't handle errors or can't handle odd lengths -// unless we go to heroic measures - -module fifo_extram36 - (input clk, input reset, input clear, - input [35:0] datain, input src_rdy_i, output dst_rdy_o, output [15:0] space, - output [35:0] dataout, output src_rdy_o, input dst_rdy_i, output [15:0] occupied, - input sram_clk, output [18:0] sram_a, inout [17:0] sram_d, output sram_we, - output [1:0] sram_bw, output sram_adv, output sram_ce, output sram_oe, output sram_mode, - output sram_zz); - - wire [17:0] f18_data_1, f18_data_2, f18_data_3, f18_data_4; - wire f18_src_rdy_1, f18_dst_rdy_1, f18_src_rdy_2, f18_dst_rdy_2; - wire f18_src_rdy_3, f18_dst_rdy_3, f18_src_rdy_4, f18_dst_rdy_4; - - fifo36_to_fifo18 f36_to_f18 - (.clk(clk), .reset(reset), .clear(clear), - .f36_datain(datain), .f36_src_rdy_i(src_rdy_i), .f36_dst_rdy_o(dst_rdy_o), - .f18_dataout(f18_data_1), .f18_src_rdy_o(f18_src_rdy_1), .f18_dst_rdy_i(f18_dst_rdy_1) ); - - wire [15:0] f1_occ, f2_space; - - fifo_2clock_cascade #(.WIDTH(18), .SIZE(4)) fifo_2clock_in - (.wclk(clk), .datain(f18_data_1), .src_rdy_i(f18_src_rdy_1), .dst_rdy_o(f18_dst_rdy_1), .space(), - .rclk(sram_clk), .dataout(f18_data_2), .src_rdy_o(f18_src_rdy_2), .dst_rdy_i(f18_dst_rdy_2), .short_occupied(f1_occ), - .arst(reset) ); - - fifo_extram fifo_extram - (.reset(reset), .clear(clear), - .datain(f18_data_2), .src_rdy_i(f18_src_rdy_2), .dst_rdy_o(f18_dst_rdy_2), .space(), .occ_in(f1_occ), - .dataout(f18_data_3), .src_rdy_o(f18_src_rdy_3), .dst_rdy_i(f18_dst_rdy_3), .occupied(), .space_in(f2_space), - .sram_clk(sram_clk), .sram_a(sram_a), .sram_d(sram_d), .sram_we(sram_we), - .sram_bw(sram_bw), .sram_adv(sram_adv), .sram_ce(sram_ce), .sram_oe(sram_oe), - .sram_mode(sram_mode), .sram_zz(sram_zz)); - - fifo_2clock_cascade #(.WIDTH(18), .SIZE(4)) fifo_2clock_out - (.wclk(sram_clk), .datain(f18_data_3), .src_rdy_i(f18_src_rdy_3), .dst_rdy_o(f18_dst_rdy_3), .short_space(f2_space), - .rclk(clk), .dataout(f18_data_4), .src_rdy_o(f18_src_rdy_4), .dst_rdy_i(f18_dst_rdy_4), .occupied(), - .arst(reset) ); - - fifo18_to_fifo36 f18_to_f36 - (.clk(clk), .reset(reset), .clear(clear), - .f18_datain(f18_data_4), .f18_src_rdy_i(f18_src_rdy_4), .f18_dst_rdy_o(f18_dst_rdy_4), - .f36_dataout(dataout), .f36_src_rdy_o(src_rdy_o), .f36_dst_rdy_i(dst_rdy_i) ); - -endmodule // fifo_extram36 diff --git a/fpga/usrp2/extramfifo/fifo_extram36_tb.build b/fpga/usrp2/extramfifo/fifo_extram36_tb.build deleted file mode 100755 index ac9369758..000000000 --- a/fpga/usrp2/extramfifo/fifo_extram36_tb.build +++ /dev/null @@ -1 +0,0 @@ -iverilog -y ../models -y . -y ../control_lib/ -y ../coregen -y ../fifo -y /opt/Xilinx/10.1/ISE/verilog/src/XilinxCoreLib -y /opt/Xilinx/10.1/ISE/verilog/src/unisims/ -o fifo_extram36_tb fifo_extram36_tb.v diff --git a/fpga/usrp2/extramfifo/fifo_extram36_tb.v b/fpga/usrp2/extramfifo/fifo_extram36_tb.v deleted file mode 100644 index e5f8cef4c..000000000 --- a/fpga/usrp2/extramfifo/fifo_extram36_tb.v +++ /dev/null @@ -1,475 +0,0 @@ -`timescale 1ns/1ns - -module fifo_extram36_tb(); - - reg clk = 0; - reg sram_clk = 0; - reg rst = 1; - reg clear = 0; - - reg Verbose = 0; // - integer ErrorCount = 0; - - initial #1000 rst = 0; -// always #125 clk = ~clk; - task task_CLK; - reg [7:0] ran; - begin - while (1) begin - ran = $random; - if (ran[1]) - #62 clk = ~clk; - else - #63 clk = !clk; - end - end - endtask // task_CLK - initial task_CLK; - -// always #100 sram_clk = ~sram_clk; - task task_SSRAM_clk; - reg [7:0] ran; - begin - while (1) begin - ran = $random; - if (ran[0]) - #49 sram_clk = ~sram_clk; - else - #51 sram_clk = ~sram_clk; - end - end - endtask // task_SSRAM_clk - initial task_SSRAM_clk; - - reg [31:0] f36_data = 32'hX; - reg [1:0] f36_occ = 0; - reg f36_sof = 0, f36_eof = 0; - - wire [35:0] f36_in = {1'b0,f36_occ,f36_eof,f36_sof,f36_data}; - reg src_rdy_f36i = 0; - wire dst_rdy_f36i; - - wire [35:0] f36_out; - wire src_rdy_f36o; - reg dst_rdy_f36o = 0; - - wire [17:0] sram_d; - wire [18:0] sram_a; - wire [1:0] sram_bw; - wire sram_we, sram_adv, sram_ce, sram_oe, sram_mode, sram_zz; - - reg [31:0] ScoreBoard [524288:0]; - reg [18:0] put_index = 0; - reg [18:0] get_index = 0; - -// integer put_index = 0; -// integer get_index = 0; - - wire [15:0] DUT_space, DUT_occupied; - - fifo_extram36 fifo_extram36 - (.clk(clk), .reset(rst), .clear(clear), - .datain(f36_in), .src_rdy_i(src_rdy_f36i), .dst_rdy_o(dst_rdy_f36i), .space(DUT_space), - .dataout(f36_out), .src_rdy_o(src_rdy_f36o), .dst_rdy_i(dst_rdy_f36o), .occupied(DUT_occupied), - .sram_clk(sram_clk), .sram_a(sram_a), .sram_d(sram_d), .sram_we(sram_we), - .sram_bw(sram_bw), .sram_adv(sram_adv), .sram_ce(sram_ce), .sram_oe(sram_oe), - .sram_mode(sram_mode), .sram_zz(sram_zz)); - -`define idt 1 -`ifdef idt - wire [15:0] dummy16; - wire [1:0] dummy2; - - idt71v65603s150 - ram_model(.A(sram_a[17:0]), - .adv_ld_(sram_adv), // advance (high) / load (low) - .bw1_(0), .bw2_(0), .bw3_(0), .bw4_(0), // byte write enables (low) - .ce1_(0), .ce2(1), .ce2_(0), // chip enables - .cen_(sram_ce), // clock enable (low) - .clk(sram_clk), // clock - .IO({dummy16,sram_d[15:0]}), - .IOP({dummy2,sram_d[17:16]}), // data bus - .lbo_(sram_mode), // linear burst order (low) - .oe_(sram_oe), // output enable (low) - .r_w_(sram_we)); // read (high) / write (low) -`else - cy1356 ram_model(.d(sram_d),.clk(~sram_clk),.a(sram_a), - .bws(2'b00),.we_b(sram_we),.adv_lb(sram_adv), - .ce1b(0),.ce2(1),.ce3b(0), - .oeb(sram_oe),.cenb(sram_ce),.mode(sram_mode) ); -`endif - - task task_SSRAMMonitor; - reg last_mode; - reg last_clock; - reg last_load; - reg [18:0] sram_addr; - - begin - last_mode = 1'bX; - last_clock = 1'bX; - last_load = 1'bX; - - @ (posedge Verbose); - $dumpvars(0,fifo_extram36_tb); - - $display("%t:%m\t*** Task Started",$time); - while (1) @ (posedge sram_clk) begin - if (sram_mode !== last_mode) begin - $display("%t:%m\tSSRAM mode: %b",$time,sram_mode); - last_mode = sram_mode; - end - if (sram_adv !== last_load) begin - $display("%t:%m\tSSRAM adv/load: %b",$time,sram_adv); - last_load = sram_adv; - end - if (sram_ce !== last_clock) begin - $display("%t:%m\tSSRAM clock enable: %b",$time,sram_ce); - last_clock = sram_ce; - end - if (sram_ce == 1'b0) begin - if (sram_adv == 1'b0) begin -// $display("%t:%m\tSSRAM Address Load A=%h",$time,sram_a); - sram_addr = sram_a; - end else begin - sram_addr = sram_addr + 1; - end - if (sram_oe == 1'b0) begin - $display("%t:%m\tSSRAM Read Cycle A=%h(%h), D=%o",$time,sram_addr-2,sram_a,sram_d); - end - if (sram_we == 1'b0) begin - $display("%t:%m\tSSRAM Write Cycle A=%h(%h), D=%o",$time,sram_addr-2,sram_a,sram_d); - end - if ((sram_we == 1'b0) && (sram_oe == 1'b0)) begin - $display("%t:%m\t*** ERROR: _oe and _we both active",$time); - end - - end // if (sram_ce == 1'b0) - - end // always @ (posedge sram_clk) - end - endtask // task_SSRAMMonitor - - task ReadFromFIFO36; - begin - $display("%t: Read from FIFO36",$time); - #1 dst_rdy_f36o <= 1; - while(1) - begin - while(~src_rdy_f36o) - @(posedge clk); - $display("%t: Read: %h>",$time,f36_out); - @(posedge clk); - end - end - endtask // ReadFromFIFO36 - - initial dst_rdy_f36o = 0; - - task task_ReadFIFO36; - reg [7:0] ran; - begin - $display("%t:%m\t*** Task Started",$time); - while (1) begin - // Read on one of four clocks - #5 dst_rdy_f36o <= 1; - @(posedge clk); - if (src_rdy_f36o) begin - if (f36_out[31:0] != ScoreBoard[get_index]) begin - $display("%t:%m\tFIFO Get Error: R:%h, E:%h (%h)",$time,f36_out[31:0],ScoreBoard[get_index],get_index); - ErrorCount = ErrorCount + 1; - end else begin - if (Verbose) - $display("%t:%m\t(%5h) %o>",$time,get_index,f36_out); - end - get_index = get_index+1; - end else begin - if (ErrorCount >= 192) - $finish; - end // else: !if(src_rdy_f36o) - - #10; - ran = $random; - if (ran[2:0] != 3'b000) begin - dst_rdy_f36o <= 0; - if (ran[2] != 1'b0) begin - @(posedge clk); - @(posedge clk); - @(posedge clk); - end - if (ran[1] != 1'b0) begin - @(posedge clk); - @(posedge clk); - end - if (ran[0] != 1'b0) begin - @(posedge clk); - end - end - end // while (1) - end - - endtask // task_ReadFIFO36 - - - reg [15:0] count; - - task PutPacketInFIFO36; - input [31:0] data_start; - input [31:0] data_len; - - begin - count = 4; - src_rdy_f36i = 1; - f36_data = data_start; - f36_sof = 1; - f36_eof = 0; - f36_occ = 0; - - $display("%t: Put Packet in FIFO36",$time); - while(~dst_rdy_f36i) - #1; //@(posedge clk); - @(posedge clk); - - $display("%t: <%h PPI_FIFO36: Entered First Line",$time,f36_data); - f36_sof <= 0; - while(count+4 < data_len) - begin - f36_data = f36_data + 32'h01010101; - count = count + 4; - while(~dst_rdy_f36i) - #1; //@(posedge clk); - @(posedge clk); - $display("%t: <%h PPI_FIFO36: Entered New Line",$time,f36_data); - end - f36_data <= f36_data + 32'h01010101; - f36_eof <= 1; - if(count + 4 == data_len) - f36_occ <= 0; - else if(count + 3 == data_len) - f36_occ <= 3; - else if(count + 2 == data_len) - f36_occ <= 2; - else - f36_occ <= 1; - while(~dst_rdy_f36i) - @(posedge clk); - @(posedge clk); - f36_occ <= 0; - f36_eof <= 0; - f36_data <= 0; - src_rdy_f36i <= 0; - $display("%t: <%h PPI_FIFO36: Entered Last Line",$time,f36_data); - end - endtask // PutPacketInFIFO36 - - task task_WriteFIFO36; - integer i; - reg [7:0] ran; - - begin - f36_data = 32'bX; - if (rst != 1'b0) - @ (negedge rst); - $display("%t:%m\t*** Task Started",$time); - #10; - src_rdy_f36i = 1; - f36_data = $random; - for (i=0; i<64; i=i+0 ) begin - @ (posedge clk) ; - if (dst_rdy_f36i) begin - if (Verbose) - $display("%t:%m\t(%5h) %o<",$time,put_index,f36_in); - ScoreBoard[put_index] = f36_in[31:0]; - put_index = put_index + 1; - #5; - f36_data = $random; - i = i + 1; - end - ran = $random; - if (ran[1:0] != 2'b00) begin - @ (negedge clk); - src_rdy_f36i = 0; - #5; - @ (negedge clk) ; - src_rdy_f36i = 1; - end - end - src_rdy_f36i = 0; - f36_data = 32'bX; -// if (put_index > 19'h3ff00) -// Verbose = 1'b1; - - end - endtask // task_WriteFIFO36 - - initial $dumpfile("fifo_extram36_tb.vcd"); -// initial $dumpvars(0,fifo_extram36_tb); - initial $timeformat(-9, 0, " ns", 10); - initial task_SSRAMMonitor; - - initial - begin - @(negedge rst); - #40000; - @(posedge clk); - @(posedge clk); - @(posedge clk); - @(posedge clk); -// ReadFromFIFO36; - task_ReadFIFO36; - - end - - integer i; - - initial - begin - @(negedge rst); - @(posedge clk); - @(posedge clk); - @(posedge clk); - task_WriteFIFO36; - @(posedge clk); - @(posedge clk); - @(posedge clk); -// PutPacketInFIFO36(32'hA0B0C0D0,12); - @(posedge clk); - @(posedge clk); - #10000; - @(posedge clk); -// PutPacketInFIFO36(32'hE0F0A0B0,36); - @(posedge clk); - @(posedge clk); - task_WriteFIFO36; - @(posedge clk); - @(posedge clk); - #10000; - @(posedge clk); - @(posedge clk); - task_WriteFIFO36; -// @(posedge clk); -// #30000; -// @(posedge clk); -// @(posedge clk); - task_WriteFIFO36; -// @(posedge clk); -// #30000; -// @(posedge clk); -// @(posedge clk); - task_WriteFIFO36; -// @(posedge clk); -// #30000; -// @(posedge clk); -// @(posedge clk); - task_WriteFIFO36; - @(posedge clk); - #10000; - @(posedge clk); - @(posedge clk); - task_WriteFIFO36; - for (i=0; i<8192; i = i+1) begin - @(posedge clk); - #10000; - @(posedge clk); - @(posedge clk); - task_WriteFIFO36; - @(posedge clk); - end - -// $dumpvars(0,fifo_extram36_tb); - @(posedge clk); - task_WriteFIFO36; - @(posedge clk); - - #100000000; - $finish; - - end - - - initial - begin - @(negedge rst); - f36_occ <= 0; - repeat (100) - @(posedge clk); - src_rdy_f36i <= 1; - f36_data <= 32'h10203040; - f36_sof <= 1; - f36_eof <= 0; - @(posedge clk); - @(posedge clk); - src_rdy_f36i <= 1; - f36_data <= f36_data + 32'h01010101; - f36_sof <= 0; - f36_eof <= 0; - @(posedge clk); - @(posedge clk); - src_rdy_f36i <= 1; - f36_data <= f36_data + 32'h01010101; - f36_sof <= 0; - f36_eof <= 0; - @(posedge clk); - @(posedge clk); - src_rdy_f36i <= 1; - f36_data <= f36_data + 32'h01010101; - f36_sof <= 0; - f36_eof <= 0; - @(posedge clk); - @(posedge clk); - src_rdy_f36i <= 1; - f36_data <= f36_data + 32'h01010101; - f36_sof <= 0; - f36_eof <= 0; - @(posedge clk); - @(posedge clk); - src_rdy_f36i <= 1; - f36_data <= f36_data + 32'h01010101; - f36_sof <= 0; - f36_eof <= 0; - @(posedge clk); - @(posedge clk); - src_rdy_f36i <= 1; - f36_data <= f36_data + 32'h01010101; - f36_sof <= 0; - f36_eof <= 0; - @(posedge clk); - @(posedge clk); - src_rdy_f36i <= 1; - f36_data <= f36_data + 32'h01010101; - f36_sof <= 0; - f36_eof <= 0; - @(posedge clk); - @(posedge clk); - src_rdy_f36i <= 1; - f36_data <= f36_data + 32'h01010101; - f36_sof <= 0; - f36_eof <= 0; - @(posedge clk); - @(posedge clk); - src_rdy_f36i <= 1; - f36_data <= f36_data + 32'h01010101; - f36_sof <= 0; - f36_eof <= 0; - @(posedge clk); - @(posedge clk); - src_rdy_f36i <= 1; - f36_data <= f36_data + 32'h01010101; - f36_sof <= 0; - f36_eof <= 0; - @(posedge clk); - @(posedge clk); - src_rdy_f36i <= 1; - f36_data <= 32'h1F2F3F4F; - f36_sof <= 0; - f36_eof <= 1; - @(posedge clk); - @(posedge clk); - src_rdy_f36i <= 0; - - - - end - -// initial #500000 $finish; -endmodule // fifo_extram_tb diff --git a/fpga/usrp2/extramfifo/fifo_extram_tb.build b/fpga/usrp2/extramfifo/fifo_extram_tb.build deleted file mode 100755 index 5607c8691..000000000 --- a/fpga/usrp2/extramfifo/fifo_extram_tb.build +++ /dev/null @@ -1 +0,0 @@ -iverilog -y ../models -y . -y ../control_lib/ -y ../coregen -y ../fifo -y /opt/Xilinx/10.1/ISE/verilog/src/XilinxCoreLib -y /opt/Xilinx/10.1/ISE/verilog/src/unisims/ -o fifo_extram_tb fifo_extram_tb.v diff --git a/fpga/usrp2/extramfifo/fifo_extram_tb.v b/fpga/usrp2/extramfifo/fifo_extram_tb.v deleted file mode 100644 index 73550d9ca..000000000 --- a/fpga/usrp2/extramfifo/fifo_extram_tb.v +++ /dev/null @@ -1,134 +0,0 @@ -module fifo_extram_tb(); - - reg clk = 0; - reg sram_clk = 0; - reg reset = 1; - reg clear = 0; - - initial #1000 reset = 0; - always #125 clk = ~clk; - always #100 sram_clk = ~sram_clk; - - reg [15:0] f18_data = 0; - reg f18_sof = 0, f18_eof = 0; - - wire [17:0] f18_in = {f18_eof,f18_sof,f18_data}; - reg src_rdy_f18i = 0; - wire dst_rdy_f18i; - - wire [17:0] f18_out; - wire src_rdy_f18o; - reg dst_rdy_f18o = 0; - - wire [17:0] f18_int; - wire src_rdy_f18int, dst_rdy_f18int; - - wire [17:0] sram_d; - wire [18:0] sram_a; - wire [1:0] sram_bw; - wire sram_we, sram_adv, sram_ce, sram_oe, sram_mode, sram_zz; - wire [15:0] f1_occ; - - fifo_short #(.WIDTH(18)) fifo_short - (.clk(sram_clk), .reset(reset), .clear(clear), - .datain(f18_in), .src_rdy_i(src_rdy_f18i), .dst_rdy_o(dst_rdy_f18i), .space(), - .dataout(f18_int), .src_rdy_o(src_rdy_f18int), .dst_rdy_i(dst_rdy_f18int), .occupied(f1_occ[4:0]) ); - - assign f1_occ[15:5] = 0; - - fifo_extram fifo_extram - (.reset(reset), .clear(clear), - .datain(f18_int), .src_rdy_i(src_rdy_f18int), .dst_rdy_o(dst_rdy_f18int), .space(), .occ_in(f1_occ), - .dataout(f18_out), .src_rdy_o(src_rdy_f18o), .dst_rdy_i(dst_rdy_f18o), .occupied(), .space_in(7), - .sram_clk(sram_clk), .sram_a(sram_a), .sram_d(sram_d), .sram_we(sram_we), - .sram_bw(sram_bw), .sram_adv(sram_adv), .sram_ce(sram_ce), .sram_oe(sram_oe), - .sram_mode(sram_mode), .sram_zz(sram_zz)); - -`define idt 1 -`ifdef idt - wire [15:0] dummy16; - wire [1:0] dummy2; - - idt71v65603s150 - ram_model(.A(sram_a[17:0]), - .adv_ld_(sram_adv), // advance (high) / load (low) - .bw1_(0), .bw2_(0), .bw3_(0), .bw4_(0), // byte write enables (low) - .ce1_(0), .ce2(1), .ce2_(0), // chip enables - .cen_(sram_ce), // clock enable (low) - .clk(sram_clk), // clock - .IO({dummy16,sram_d[15:0]}), - .IOP({dummy2,sram_d[17:16]}), // data bus - .lbo_(sram_mode), // linear burst order (low) - .oe_(sram_oe), // output enable (low) - .r_w_(sram_we)); // read (high) / write (low) -`else - cy1356 ram_model(.d(sram_d),.clk(sram_clk),.a(sram_a), - .bws(2'b00),.we_b(sram_we),.adv_lb(sram_adv), - .ce1b(0),.ce2(1),.ce3b(0), - .oeb(sram_oe),.cenb(sram_ce),.mode(sram_mode) ); -`endif // !`ifdef idt - - always @(posedge sram_clk) - if(dst_rdy_f18o & src_rdy_f18o) - $display("Read: %h",f18_out); - - always @(posedge sram_clk) - if(dst_rdy_f18int & src_rdy_f18int) - $display("Write: %h",f18_int); - - initial $dumpfile("fifo_extram_tb.vcd"); - initial $dumpvars(0,fifo_extram_tb); - - task SendPkt; - input [15:0] data_start; - input [31:0] data_len; - begin - @(posedge sram_clk); - f18_data = data_start; - f18_sof = 1; - f18_eof = 0; - src_rdy_f18i = 1; - while(~dst_rdy_f18i) - #1; - @(posedge sram_clk); - repeat(data_len - 2) - begin - f18_data = f18_data + 16'h0101; - f18_sof = 0; - while(~dst_rdy_f18i) - @(posedge sram_clk); - - @(posedge sram_clk); - end - f18_data = f18_data + 16'h0101; - f18_eof = 1; - while(~dst_rdy_f18i) - #1; - @(posedge sram_clk); - src_rdy_f18i = 0; - f18_data = 0; - f18_eof = 0; - end - endtask // SendPkt - - initial - begin - @(negedge reset); - @(posedge sram_clk); - @(posedge sram_clk); - #10000; - @(posedge sram_clk); - SendPkt(16'hA0B0, 100); - #10000; - //SendPkt(16'hC0D0, 220); - end - - initial - begin - #20000; - dst_rdy_f18o = 1; - end - - initial #200000 $finish; -endmodule // fifo_extram_tb - |