diff options
| author | Josh Blum <josh@joshknows.com> | 2010-01-22 11:56:55 -0800 | 
|---|---|---|
| committer | Josh Blum <josh@joshknows.com> | 2010-01-22 11:56:55 -0800 | 
| commit | 7bf8a6df381a667134b55701993c6770d32bc76b (patch) | |
| tree | 4a298fb5450f7277b5aaf5210740ae18f818c9aa /control_lib | |
| parent | 8f2c33eab9396185df259639082b7d1618585973 (diff) | |
| download | uhd-7bf8a6df381a667134b55701993c6770d32bc76b.tar.gz uhd-7bf8a6df381a667134b55701993c6770d32bc76b.tar.bz2 uhd-7bf8a6df381a667134b55701993c6770d32bc76b.zip | |
Moved usrp2 fpga files into usrp2 subdir.
Diffstat (limited to 'control_lib')
79 files changed, 0 insertions, 11481 deletions
| diff --git a/control_lib/.gitignore b/control_lib/.gitignore deleted file mode 100644 index 025385cff..000000000 --- a/control_lib/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -/a.out -/*.vcd -/*.lxt -/*.sav -/*.log diff --git a/control_lib/CRC16_D16.v b/control_lib/CRC16_D16.v deleted file mode 100644 index 7e2816af1..000000000 --- a/control_lib/CRC16_D16.v +++ /dev/null @@ -1,89 +0,0 @@ -/////////////////////////////////////////////////////////////////////// -// File:  CRC16_D16.v                              -// Date:  Sun Jun 17 06:42:55 2007                                                       -//                                                                      -// Copyright (C) 1999-2003 Easics NV.                  -// This source file may be used and distributed without restriction     -// provided that this copyright statement is not removed from the file  -// and that any derivative work contains the original copyright notice -// and the associated disclaimer. -// -// THIS SOURCE FILE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS -// OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED -// WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. -// -// Purpose: Verilog module containing a synthesizable CRC function -//   * polynomial: (0 5 12 16) -//   * data width: 16 -//                                                                      -// Info: tools@easics.be -//       http://www.easics.com                                   -/////////////////////////////////////////////////////////////////////// - - -module CRC16_D16 -  (input [15:0] Data, -   input [15:0] CRC, -   output [15:0] NewCRC); - -   assign 	 NewCRC = nextCRC16_D16(Data,CRC); -    -  // polynomial: (0 5 12 16) -  // data width: 16 -  // convention: the first serial data bit is D[15] -  function [15:0] nextCRC16_D16; - -    input [15:0] Data; -    input [15:0] CRC; - -    reg [15:0] D; -    reg [15:0] C; -    reg [15:0] NewCRC; - -  begin - -    D = Data; -    C = CRC; - -    NewCRC[0] = D[12] ^ D[11] ^ D[8] ^ D[4] ^ D[0] ^ C[0] ^ C[4] ^  -                C[8] ^ C[11] ^ C[12]; -    NewCRC[1] = D[13] ^ D[12] ^ D[9] ^ D[5] ^ D[1] ^ C[1] ^ C[5] ^  -                C[9] ^ C[12] ^ C[13]; -    NewCRC[2] = D[14] ^ D[13] ^ D[10] ^ D[6] ^ D[2] ^ C[2] ^ C[6] ^  -                C[10] ^ C[13] ^ C[14]; -    NewCRC[3] = D[15] ^ D[14] ^ D[11] ^ D[7] ^ D[3] ^ C[3] ^ C[7] ^  -                C[11] ^ C[14] ^ C[15]; -    NewCRC[4] = D[15] ^ D[12] ^ D[8] ^ D[4] ^ C[4] ^ C[8] ^ C[12] ^  -                C[15]; -    NewCRC[5] = D[13] ^ D[12] ^ D[11] ^ D[9] ^ D[8] ^ D[5] ^ D[4] ^  -                D[0] ^ C[0] ^ C[4] ^ C[5] ^ C[8] ^ C[9] ^ C[11] ^ C[12] ^  -                C[13]; -    NewCRC[6] = D[14] ^ D[13] ^ D[12] ^ D[10] ^ D[9] ^ D[6] ^ D[5] ^  -                D[1] ^ C[1] ^ C[5] ^ C[6] ^ C[9] ^ C[10] ^ C[12] ^  -                C[13] ^ C[14]; -    NewCRC[7] = D[15] ^ D[14] ^ D[13] ^ D[11] ^ D[10] ^ D[7] ^ D[6] ^  -                D[2] ^ C[2] ^ C[6] ^ C[7] ^ C[10] ^ C[11] ^ C[13] ^  -                C[14] ^ C[15]; -    NewCRC[8] = D[15] ^ D[14] ^ D[12] ^ D[11] ^ D[8] ^ D[7] ^ D[3] ^  -                C[3] ^ C[7] ^ C[8] ^ C[11] ^ C[12] ^ C[14] ^ C[15]; -    NewCRC[9] = D[15] ^ D[13] ^ D[12] ^ D[9] ^ D[8] ^ D[4] ^ C[4] ^  -                C[8] ^ C[9] ^ C[12] ^ C[13] ^ C[15]; -    NewCRC[10] = D[14] ^ D[13] ^ D[10] ^ D[9] ^ D[5] ^ C[5] ^ C[9] ^  -                 C[10] ^ C[13] ^ C[14]; -    NewCRC[11] = D[15] ^ D[14] ^ D[11] ^ D[10] ^ D[6] ^ C[6] ^ C[10] ^  -                 C[11] ^ C[14] ^ C[15]; -    NewCRC[12] = D[15] ^ D[8] ^ D[7] ^ D[4] ^ D[0] ^ C[0] ^ C[4] ^ C[7] ^  -                 C[8] ^ C[15]; -    NewCRC[13] = D[9] ^ D[8] ^ D[5] ^ D[1] ^ C[1] ^ C[5] ^ C[8] ^ C[9]; -    NewCRC[14] = D[10] ^ D[9] ^ D[6] ^ D[2] ^ C[2] ^ C[6] ^ C[9] ^ C[10]; -    NewCRC[15] = D[11] ^ D[10] ^ D[7] ^ D[3] ^ C[3] ^ C[7] ^ C[10] ^  -                 C[11]; - -    nextCRC16_D16 = NewCRC; - -  end - -  endfunction - -endmodule - diff --git a/control_lib/SYSCTRL.sav b/control_lib/SYSCTRL.sav deleted file mode 100644 index 43bfef10e..000000000 --- a/control_lib/SYSCTRL.sav +++ /dev/null @@ -1,24 +0,0 @@ -[size] 1400 971 -[pos] -1 -1 -*-11.026821 2450 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -@28 -system_control_tb.aux_clk -@29 -system_control_tb.clk_fpga -@28 -system_control_tb.dsp_clk -system_control_tb.dsp_rst -system_control_tb.proc_rst -system_control_tb.rl_done -system_control_tb.rl_rst -system_control_tb.wb_clk -system_control_tb.wb_rst -system_control_tb.system_control.POR -@22 -system_control_tb.system_control.POR_ctr[3:0] -@28 -system_control_tb.clock_ready -system_control_tb.system_control.half_clk -system_control_tb.system_control.fin_ret_half -system_control_tb.system_control.fin_ret_aux -system_control_tb.system_control.gate_dsp_clk diff --git a/control_lib/WB_SIM.sav b/control_lib/WB_SIM.sav deleted file mode 100644 index 467cd35ef..000000000 --- a/control_lib/WB_SIM.sav +++ /dev/null @@ -1,47 +0,0 @@ -[size] 1400 971 -[pos] -1 -1 -*-6.099828 350 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -@28 -wb_sim.wb_rst -wb_sim.wb_clk -@23 -wb_sim.rom_data[47:0] -@22 -wb_sim.rom_addr[15:0] -@28 -wb_sim.start -wb_sim.wb_ack -@22 -wb_sim.wb_adr[15:0] -@28 -wb_sim.wb_cyc -@22 -wb_sim.wb_dat[31:0] -wb_sim.wb_sel[3:0] -@28 -wb_sim.wb_stb -wb_sim.wb_we -@22 -wb_sim.port_output[31:0] -@28 -wb_sim.system_control.POR -wb_sim.system_control.aux_clk -wb_sim.system_control.clk_fpga -@29 -wb_sim.system_control.done -@28 -wb_sim.system_control.dsp_clk -wb_sim.system_control.fin_del1 -wb_sim.system_control.fin_del2 -wb_sim.system_control.fin_del3 -wb_sim.system_control.fin_ret_aux -@29 -wb_sim.system_control.fin_ret_fpga -@28 -wb_sim.system_control.finished -wb_sim.system_control.reset_out -wb_sim.system_control.start -wb_sim.system_control.started -wb_sim.system_control.wb_clk_o -wb_sim.system_control.wb_rst_o -wb_sim.system_control.wb_rst_o_alt diff --git a/control_lib/atr_controller.v b/control_lib/atr_controller.v deleted file mode 100644 index fed2791f9..000000000 --- a/control_lib/atr_controller.v +++ /dev/null @@ -1,57 +0,0 @@ - -// Automatic transmit/receive switching of control pins to daughterboards -// Store everything in registers for now, but could use a RAM for more -// complex state machines in the future - -module atr_controller -  (input clk_i, input rst_i, -   input [5:0] adr_i, input [3:0] sel_i, input [31:0] dat_i, output reg [31:0] dat_o, -   input we_i, input stb_i, input cyc_i, output reg ack_o, -   input run_rx, input run_tx, input [31:0] master_time, -   output [31:0] ctrl_lines); -    -   reg [3:0] state; -   reg [31:0] atr_ram [0:15];  // DP distributed RAM - -   // WB Interface -   always @(posedge clk_i) -     if(we_i & stb_i & cyc_i) -       begin -	  if(sel_i[3]) -	    atr_ram[adr_i[5:2]][31:24] <= dat_i[31:24]; -	  if(sel_i[2]) -	    atr_ram[adr_i[5:2]][23:16] <= dat_i[23:16]; -	  if(sel_i[1]) -	    atr_ram[adr_i[5:2]][15:8] <= dat_i[15:8]; -	  if(sel_i[0]) -	    atr_ram[adr_i[5:2]][7:0] <= dat_i[7:0]; -       end // if (we_i & stb_i & cyc_i) - -   always @(posedge clk_i) -     dat_o <= atr_ram[adr_i[5:2]]; -    -   always @(posedge clk_i) -     ack_o <= stb_i & cyc_i & ~ack_o; - -   // Control side of DP RAM -   assign     ctrl_lines = atr_ram[state]; - -   // Put a more complex state machine with time delays and multiple states here -   //  if daughterboard requires more complex sequencing -   localparam ATR_IDLE = 4'd0; -   localparam ATR_TX = 4'd1; -   localparam ATR_RX = 4'd2; -   localparam ATR_FULL_DUPLEX = 4'd3; -    -   always @(posedge clk_i) -     if(rst_i) -       state <= ATR_IDLE; -     else -       case ({run_rx,run_tx}) -	 2'b00 : state <= ATR_IDLE; -	 2'b01 : state <= ATR_TX; -	 2'b10 : state <= ATR_RX; -	 2'b11 : state <= ATR_FULL_DUPLEX; -       endcase // case({run_rx,run_tx}) -    -endmodule // atr_controller diff --git a/control_lib/bin2gray.v b/control_lib/bin2gray.v deleted file mode 100644 index 513402163..000000000 --- a/control_lib/bin2gray.v +++ /dev/null @@ -1,10 +0,0 @@ - - -module bin2gray -  #(parameter WIDTH=8) -    (input [WIDTH-1:0] bin, -     output [WIDTH-1:0] gray); - -   assign 		gray = (bin >> 1) ^ bin; -    -endmodule // bin2gray diff --git a/control_lib/bootrom.mem b/control_lib/bootrom.mem deleted file mode 100644 index d688b4342..000000000 --- a/control_lib/bootrom.mem +++ /dev/null @@ -1,26 +0,0 @@ -00000C000F03 -101400000000 -    //  SPI: Set Divider to div by 2 -//  Both clk sel choose ext ref (0), both are enabled (1), turn off SERDES, ADCs, turn on leds -1018_0000_0001    //  SPI: Choose AD9510 -1010_0000_3418    //  SPI: Auto-slave select, interrupt when done, TX_NEG, 24-bit word -1000_0000_0010    //  SPI: AD9510 A:0 D:10  Set up AD9510 SPI -1010_0000_3518    //  SPI: SEND IT Auto-slave select, interrupt when done, TX_NEG, 24-bit word -ffff_ffff_ffff  // terminate -#//  First 16 bits are address, last 32 are data -#//  First 4 bits of address select which slave -//		 6'd01 : addr_data = {13'h45,8'h00};   // CLK2 drives distribution, everything on -//		 6'd02 : addr_data = {13'h3D,8'h80};   // Turn on output 1, normal levels -//		 6'd03 : addr_data = {13'h4B,8'h80};   // Bypass divider 1 (div by 1) -//		 6'd04 : addr_data = {13'h08,8'h47};   // POS PFD, Dig LK Det, Charge Pump normal	 -//		 6'd05 : addr_data = {13'h09,8'h70};   // Max Charge Pump current -//		 6'd06 : addr_data = {13'h0A,8'h04};   // Normal operation, Prescalar Div by 2, PLL On -//		 6'd07 : addr_data = {13'h0B,8'h00};   // RDIV MSB (6 bits) -//		 6'd08 : addr_data = {13'h0C,8'h01};   // RDIV LSB (8 bits), Div by 1 -//		 6'd09 : addr_data = {13'h0D,8'h00};   // Everything normal, Dig Lock Det -//		 6'd10 : addr_data = {13'h07,8'h00};	// Disable LOR detect - LOR causes failure... -//		 6'd11 : addr_data = {13'h04,8'h00};	// A Counter = Don't Care -//		 6'd12 : addr_data = {13'h05,8'h00};	// B Counter MSB = 0 -//		 6'd13 : addr_data = {13'h06,8'h05};   // B Counter LSB = 5 - //      default : addr_data = {13'h5A,8'h01}; // Register Update -// @ 55        // Jump to new address 8'h55 diff --git a/control_lib/clock_bootstrap_rom.v b/control_lib/clock_bootstrap_rom.v deleted file mode 100644 index 46563db65..000000000 --- a/control_lib/clock_bootstrap_rom.v +++ /dev/null @@ -1,34 +0,0 @@ - - -module clock_bootstrap_rom(input [15:0] addr, output [47:0] data); - -   reg [47:0] rom [0:15]; -    -   //initial -   //  $readmemh("bootrom.mem", rom); - -   assign     data = rom[addr]; - -   initial  -     begin -	//  First 16 bits are address, last 32 are data -	//  First 4 bits of address select which slave -	rom[0] = 48'h0000_0C00_0F03;  //  Both clk sel choose ext ref (0), both are enabled (1), turn off SERDES, ADCs, turn on leds -	rom[1] = 48'h1014_0000_0000;  //  SPI: Set Divider to div by 2 -	rom[2] = 48'h1018_0000_0001;  //  SPI: Choose AD9510 -	rom[3] = 48'h1010_0000_3418;  //  SPI: Auto-slave select, interrupt when done, TX_NEG, 24-bit word -	rom[4] = 48'h1000_0000_0010;  //  SPI: AD9510 A:0 D:10  Set up AD9510 SPI -	rom[5] = 48'h1010_0000_3518;  //  SPI: SEND IT Auto-slave select, interrupt when done, TX_NEG, 24-bit word -	rom[6] = 48'hffff_ffff_ffff;  // terminate -	rom[7] = 48'hffff_ffff_ffff;  // terminate -	rom[8] = 48'hffff_ffff_ffff;  // terminate -	rom[9] = 48'hffff_ffff_ffff;  // terminate -	rom[10] = 48'hffff_ffff_ffff;  // terminate -	rom[11] = 48'hffff_ffff_ffff;  // terminate -	rom[12] = 48'hffff_ffff_ffff;  // terminate -	rom[13] = 48'hffff_ffff_ffff;  // terminate -	rom[14] = 48'hffff_ffff_ffff;  // terminate -	rom[15] = 48'hffff_ffff_ffff;  // terminate -     end // initial begin -    -endmodule // clock_bootstrap_rom diff --git a/control_lib/clock_control.v b/control_lib/clock_control.v deleted file mode 100644 index 1bbe6bd75..000000000 --- a/control_lib/clock_control.v +++ /dev/null @@ -1,115 +0,0 @@ - - -// AD9510 Register Map (from datasheet Rev. A) - -/* INSTRUCTION word format (16 bits) - * 15       Read = 1, Write = 0 - * 14:13    W1/W0,  Number of bytes 00 - 1, 01 - 2, 10 - 3, 11 - stream - * 12:0     Address - */ - -/* ADDR     Contents             Value (hex) - * 00       Serial Config Port   10 (def) -- MSB first, SDI/SDO separate - * 04       A Counter - * 05-06    B Counter - * 07-0A    PLL Control - * 0B-0C    R Divider - * 0D       PLL Control - * 34-3A    Fine Delay - * 3C-3F    LVPECL Outs - * 40-43    LVDS/CMOS Outs - * 45       Clock select, power down - * 48-57    Dividers - * 58       Func and Sync - * 5A       Update regs - */ - - -module clock_control -  (input reset, -   input aux_clk,            // 25MHz, for before fpga clock is active -   input clk_fpga,           // real 100 MHz FPGA clock -   output [1:0] clk_en,      // controls source of reference clock -   output [1:0] clk_sel,     // controls source of reference clock -   input clk_func,          // FIXME needs to be some kind of out SYNC or reset to 9510 -   input clk_status,         // Monitor PLL or SYNC status -    -   output sen,        // Enable for the AD9510 -   output sclk,       // FIXME these need to be shared -   input sdi, -   output sdo -   ); -    -   wire   read = 1'b0;    // Always write for now -   wire [1:0] w = 2'b00;  // Always send 1 byte at a time -    -   assign     clk_sel = 2'b00;  // Both outputs from External Ref (SMA) -   assign     clk_en = 2'b11;   // Both outputs enabled -    -   reg [20:0] addr_data; - -   reg [5:0]  entry; -   reg 	      start; -   reg [7:0]  counter; -   reg [23:0] command; -    -   always @* -     case(entry) -       6'd00 : addr_data = {13'h00,8'h10};   // Serial setup -       6'd01 : addr_data = {13'h45,8'h00};   // CLK2 drives distribution, everything on -       6'd02 : addr_data = {13'h3D,8'h80};   // Turn on output 1, normal levels -       6'd03 : addr_data = {13'h4B,8'h80};   // Bypass divider 1 (div by 1) -       6'd04 : addr_data = {13'h08,8'h47};   // POS PFD, Dig LK Det, Charge Pump normal	 -       6'd05 : addr_data = {13'h09,8'h70};   // Max Charge Pump current -       6'd06 : addr_data = {13'h0A,8'h04};   // Normal operation, Prescalar Div by 2, PLL On -       6'd07 : addr_data = {13'h0B,8'h00};   // RDIV MSB (6 bits) -       6'd08 : addr_data = {13'h0C,8'h01};   // RDIV LSB (8 bits), Div by 1 -       6'd09 : addr_data = {13'h0D,8'h00};   // Everything normal, Dig Lock Det -       6'd10 : addr_data = {13'h07,8'h00};	// Disable LOR detect - LOR causes failure... -       6'd11 : addr_data = {13'h04,8'h00};	// A Counter = Don't Care -       6'd12 : addr_data = {13'h05,8'h00};	// B Counter MSB = 0 -       6'd13 : addr_data = {13'h06,8'h05};   // B Counter LSB = 5 -       default : addr_data = {13'h5A,8'h01}; // Register Update -     endcase // case(entry) - -   wire [5:0]  lastentry = 6'd15; -   wire        done = (counter == 8'd49); -    -   always @(posedge aux_clk) -     if(reset) -       begin -	  entry <= #1 6'd0; -	  start <= #1 1'b1; -       end -     else if(start) -       start <= #1 1'b0; -     else if(done && (entry<lastentry)) -       begin -	  entry <= #1 entry + 6'd1; -	  start <= #1 1'b1; -       end -    -   always @(posedge aux_clk) -     if(reset) -       begin -	  counter <= #1 7'd0; -	  command <= #1 20'd0; -       end -     else if(start) -       begin -	  counter <= #1 7'd1; -	  command <= #1 {read,w,addr_data}; -       end -     else if( |counter && ~done ) -       begin -	  counter <= #1 counter + 7'd1; -	  if(~counter[0]) -	    command <= {command[22:0],1'b0}; -       end -    -    -   assign sen = (done | counter == 8'd0);  // CSB is high when we're not doing anything -   assign sclk = ~counter[0]; -   assign sdo = command[23]; -    -endmodule // clock_control diff --git a/control_lib/clock_control_tb.sav b/control_lib/clock_control_tb.sav deleted file mode 100644 index be4001dc5..000000000 --- a/control_lib/clock_control_tb.sav +++ /dev/null @@ -1,28 +0,0 @@ -[size] 1400 971 -[pos] -1 -1 -*-7.848898 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -@28 -clock_control_tb.aux_clk -clock_control_tb.reset -clock_control_tb.sclk -clock_control_tb.sdi -clock_control_tb.sdo -clock_control_tb.sen -@22 -clock_control_tb.clock_control.counter[7:0] -@28 -clock_control_tb.clock_control.done -@22 -clock_control_tb.clock_control.entry[5:0] -@28 -clock_control_tb.clock_control.read -clock_control_tb.clock_control.reset -clock_control_tb.clock_control.sclk -clock_control_tb.clock_control.w[1:0] -clock_control_tb.sen -clock_control_tb.sdo -clock_control_tb.sclk -clock_control_tb.clock_control.done -clock_control_tb.clock_control.start -@22 -clock_control_tb.clock_control.addr_data[20:0] diff --git a/control_lib/clock_control_tb.v b/control_lib/clock_control_tb.v deleted file mode 100644 index 4e705cf23..000000000 --- a/control_lib/clock_control_tb.v +++ /dev/null @@ -1,35 +0,0 @@ - - -module clock_control_tb(); -    -  clock_control clock_control -    (.reset(reset), -     .aux_clk(aux_clk),   -     .clk_fpga(clk_fpga), -     .clk_en(clk_en),     -     .clk_sel(clk_sel),   -     .clk_func(clk_func),  -     .clk_status(clk_status), -      -     .sen(sen),    -     .sclk(sclk),  -     .sdi(sdi), -     .sdo(sdo) -     ); - -   reg reset, aux_clk; -    -   wire [1:0] clk_sel, clk_en; -    -   initial reset = 1'b1; -   initial #1000 reset = 1'b0; -    -   initial aux_clk = 1'b0; -   always #10 aux_clk = ~aux_clk; -    -   initial $dumpfile("clock_control_tb.vcd"); -   initial $dumpvars(0,clock_control_tb); -    -   initial #10000 $finish; -    -endmodule // clock_control_tb diff --git a/control_lib/cmdfile b/control_lib/cmdfile deleted file mode 100644 index cb3756cfc..000000000 --- a/control_lib/cmdfile +++ /dev/null @@ -1,18 +0,0 @@ -# My stuff --y . --y ../u2_basic --y ../control_lib --y ../sdr_lib - -# Models --y ../models - -# Open Cores --y ../opencores/spi/rtl/verilog -+incdir+../opencores/spi/rtl/verilog --y ../opencores/wb_conbus/rtl/verilog -+incdir+../opencores/wb_conbus/rtl/verilog --y ../opencores/i2c/rtl/verilog -+incdir+../opencores/i2c/rtl/verilog --y ../opencores/aemb/rtl/verilog --y ../opencores/simple_gpio/rtl diff --git a/control_lib/dcache.v b/control_lib/dcache.v deleted file mode 100644 index 9063bf02a..000000000 --- a/control_lib/dcache.v +++ /dev/null @@ -1,165 +0,0 @@ - -module dcache -  #(parameter AWIDTH=14, -    parameter CWIDTH=6) -    (input wb_clk_i, -     input wb_rst_i, -      -     input [AWIDTH-1:0] dwb_adr_i, -     input dwb_stb_i, -     input dwb_we_i, -     input [3:0] dwb_sel_i, -     input [31:0] dwb_dat_i, -     output [31:0] dwb_dat_o, -     output dwb_ack_o, -      -     input [31:0] dram_dat_i, -     output [31:0] dram_dat_o, -     output [AWIDTH-1:0] dram_adr_o, -     output dram_we_o, -     output dram_en_o, -     output [3:0] dram_sel_o ); - -   localparam TAGWIDTH = AWIDTH-CWIDTH-2; -   reg 	      stb_d1, ack_d1, miss_d1; -   reg [AWIDTH-1:0] held_addr; -   reg [31:0] 	    ddata [0:(1<<CWIDTH)-1]; -   reg [TAGWIDTH-1:0] dtags [0:(1<<CWIDTH)-1]; -   reg 		      dvalid [0:(1<<CWIDTH)-1]; -    -   wire [CWIDTH-1:0]  rd_line, wr_line; -   wire [TAGWIDTH-1:0] wr_tags; -   wire 	       cache_write, invalidate; -   wire [31:0] 	       wr_data; -    -   // ///////////////////////////////////// -   // Write into cache -   integer 	      i; -   always @(posedge wb_clk_i) -     if(wb_rst_i) -       for(i=0;i<(1<<CWIDTH);i=i+1) -	 dvalid[i] <= 0; -     else -       if(invalidate) -	 dvalid[wr_line] <= 1'b0; -       else if(cache_write) -	 dvalid[wr_line] <= 1'b1; -    -   always @(posedge wb_clk_i) -     if(cache_write) -       begin -	  ddata[wr_line] <= wr_data; -	  dtags[wr_line] <= wr_tags; -       end -    -   // ////////////////////////////////////// -   // Read from Cache -   wire [TAGWIDTH-1:0] tag_out = dtags[rd_line]; -   wire 	       valid_out = dvalid[rd_line]; -   wire [31:0] 	       data_out	= ddata[rd_line]; -   wire 	       cache_hit = valid_out & (tag_out == dwb_adr_i[AWIDTH-1:CWIDTH+2]); -   wire 	       cache_miss = ~cache_hit; - -   // ////////////////////////////////////// -   // Handle 1-cycle delay of Block-RAM -   always @(posedge wb_clk_i) -     if(wb_rst_i) -       stb_d1 <= 0; -     else -       stb_d1 <= dwb_stb_i; -    -   always @(posedge wb_clk_i) -     if(wb_rst_i) -       held_addr <= 0; -     else -       held_addr <= dwb_adr_i; -    -   always @(posedge wb_clk_i)  -     if(wb_rst_i) -       ack_d1 <= 1'b0; -     else  -       ack_d1 <= dwb_ack_o; - -   always @(posedge wb_clk_i)  -     if(wb_rst_i) -       miss_d1 <= 0; -     else  -       miss_d1 <= cache_miss; - -`define DC_NOCACHE -//`define DC_BASIC -//`define DC_FORWARDING_DP -//`define DC_FORWARDING_SP -//`define DC_PREFETCH - -`ifdef DC_NOCACHE -   assign 	       dwb_dat_o = dram_dat_i; -   assign 	       dwb_ack_o = dwb_stb_i & (dwb_we_i | (stb_d1 & ~ack_d1)); -   assign 	       dram_adr_o = dwb_adr_i; -   assign 	       dram_en_o = dwb_stb_i; -   assign 	       dram_dat_o = dwb_dat_i; -   assign 	       dram_we_o = dwb_we_i; -   assign 	       dram_sel_o = dwb_sel_i;	        -   assign 	       rd_line = 0; -   assign 	       wr_line = 0; -   assign 	       wr_tags = 0; -   assign 	       wr_data = 0; -   assign 	       cache_write = 0; -   assign 	       invalidate = 0; 	        -`endif -    -`ifdef DC_BASIC    // Very basic, no forwarding, 2 wait states on miss -   assign 	       dwb_dat_o = data_out; -   assign 	       dwb_ack_o = dwb_stb_i & cache_hit; -   assign 	       dram_adr_o = dwb_adr_i; -   assign 	       dram_en_o = dwb_stb_i; -   assign 	       dram_dat_o = dwb_dat_i; -   assign 	       dram_we_o = dwb_we_i; -   assign 	       dram_sel_o = dwb_sel_i;	        -   assign 	       rd_line = dwb_adr_i[CWIDTH+1:2]; -   assign 	       wr_line = rd_line; -   assign 	       wr_tags = dwb_adr_i[AWIDTH-1:CWIDTH+2]; -   assign 	       wr_data = dwb_we_i ? dwb_dat_i : dram_dat_i; -   assign 	       cache_write = dwb_stb_i & (dwb_we_i | (stb_d1 & miss_d1)); -   assign 	       invalidate = dwb_we_i & ~(&dwb_sel_i); -`endif -    -`ifdef DC_FORWARDING_DP   // Simple forwarding, 1 wait state on miss, dual-port ram -   assign 	       dwb_dat_o = cache_hit ? data_out : dram_dat_i; -   assign 	       dwb_ack_o = dwb_stb_i & (cache_hit | (stb_d1 & ~ack_d1)); -   assign 	       dram_adr_o = dwb_adr_i; -   assign 	       dram_en_o = 1'b1; -   assign 	       dram_dat_o = dwb_dat_i; -   assign 	       dram_we_o = dwb_we_i; -   assign 	       dram_sel_o = dwb_sel_i;	        -   assign 	       rd_line = dwb_adr_i[CWIDTH+1:2]; -   assign 	       wr_line = held_addr[CWIDTH+1:2]; -   assign 	       wr_tags = held_addr[AWIDTH-1:CWIDTH+2];	        -   assign 	       wr_data = dram_dat_i; -   assign 	       cache_write = dwb_stb_i & stb_d1 & miss_d1 & ~ack_d1; -   assign 	       invalidate = 0; 	        -`endif - -`ifdef DC_FORWARDING_SP   // Simple forwarding, 1 wait state on miss, single-port ram -   assign 	       dwb_dat_o = cache_hit ? data_out : dram_dat_i; -   assign 	       dwb_ack_o = dwb_stb_i & (cache_hit | (stb_d1 & ~ack_d1)); -   assign 	       dram_adr_o = dwb_adr_i; -   assign 	       dram_en_o = 1'b1; -   assign 	       dram_dat_o = dwb_dat_i; -   assign 	       dram_we_o = dwb_we_i; -   assign 	       dram_sel_o = dwb_sel_i;	        -   assign 	       rd_line = dwb_adr_i[CWIDTH+1:2]; -   assign 	       wr_line = rd_line; -   assign 	       wr_tags = dwb_adr_i[AWIDTH-1:CWIDTH+2]; -   assign 	       wr_data = dram_dat_i; -   assign 	       cache_write = dwb_stb_i & stb_d1 & miss_d1 & ~ack_d1; -   assign 	       invalidate = 0; 	        -`endif - -`ifdef DC_PREFETCH   // Forwarding plus prefetch - -`endif -    -    -endmodule // dcache - diff --git a/control_lib/decoder_3_8.v b/control_lib/decoder_3_8.v deleted file mode 100644 index 729b45d18..000000000 --- a/control_lib/decoder_3_8.v +++ /dev/null @@ -1,21 +0,0 @@ - -module decoder_3_8  -  (input [2:0] sel,  -   output reg [7:0] res); - -   always @(sel or res) -     begin -        case (sel) -          3'b000 : res = 8'b00000001; -          3'b001 : res = 8'b00000010; -          3'b010 : res = 8'b00000100; -          3'b011 : res = 8'b00001000; -          3'b100 : res = 8'b00010000; -          3'b101 : res = 8'b00100000; -          3'b110 : res = 8'b01000000; -          default : res = 8'b10000000; -        endcase // case(sel) -     end // always @ (sel or res) - -endmodule // decoder_3_8 - diff --git a/control_lib/dpram32.v b/control_lib/dpram32.v deleted file mode 100644 index 4da621823..000000000 --- a/control_lib/dpram32.v +++ /dev/null @@ -1,82 +0,0 @@ - -// Dual ported RAM -//    Addresses are byte-oriented, so botton 2 address bits are ignored. -//    AWIDTH of 13 allows you to address 8K bytes.   -//    For Spartan 3, if the total RAM size is not a multiple of 8K then BRAM space is wasted -// RAM_SIZE parameter allows odd-sized RAMs, like 24K - -module dpram32 #(parameter AWIDTH=15,  -		 parameter RAM_SIZE=16384) -  (input clk, -    -   input [AWIDTH-1:0] adr1_i, -   input [31:0] dat1_i, -   output reg [31:0] dat1_o, -   input we1_i, -   input en1_i, -   input [3:0] sel1_i, - -   input [AWIDTH-1:0] adr2_i, -   input [31:0] dat2_i, -   output reg [31:0] dat2_o, -   input we2_i, -   input en2_i, -   input [3:0] sel2_i ); -    -   reg [7:0]   ram0 [0:(RAM_SIZE/4)-1]; -   reg [7:0]   ram1 [0:(RAM_SIZE/4)-1]; -   reg [7:0]   ram2 [0:(RAM_SIZE/4)-1]; -   reg [7:0]   ram3 [0:(RAM_SIZE/4)-1]; - -   //  This is how we used to size the RAM -->   -   //      reg [7:0]   ram3 [0:(1<<(AWIDTH-2))-1]; -    -   // Port 1 -   always @(posedge clk) -     if(en1_i) dat1_o[31:24] <= ram3[adr1_i[AWIDTH-1:2]]; -   always @(posedge clk) -     if(en1_i) dat1_o[23:16] <= ram2[adr1_i[AWIDTH-1:2]]; -   always @(posedge clk) -     if(en1_i) dat1_o[15:8] <= ram1[adr1_i[AWIDTH-1:2]]; -   always @(posedge clk) -     if(en1_i) dat1_o[7:0] <= ram0[adr1_i[AWIDTH-1:2]]; -    -   always @(posedge clk) -     if(we1_i & en1_i & sel1_i[3]) -       ram3[adr1_i[AWIDTH-1:2]] <= dat1_i[31:24]; -   always @(posedge clk) -     if(we1_i & en1_i & sel1_i[2]) -       ram2[adr1_i[AWIDTH-1:2]] <= dat1_i[23:16]; -   always @(posedge clk) -     if(we1_i & en1_i & sel1_i[1]) -       ram1[adr1_i[AWIDTH-1:2]] <= dat1_i[15:8]; -   always @(posedge clk) -     if(we1_i & en1_i & sel1_i[0]) -       ram0[adr1_i[AWIDTH-1:2]] <= dat1_i[7:0]; -    -   // Port 2 -   always @(posedge clk) -     if(en2_i) dat2_o[31:24] <= ram3[adr2_i[AWIDTH-1:2]]; -   always @(posedge clk) -     if(en2_i) dat2_o[23:16] <= ram2[adr2_i[AWIDTH-1:2]]; -   always @(posedge clk) -     if(en2_i) dat2_o[15:8] <= ram1[adr2_i[AWIDTH-1:2]]; -   always @(posedge clk) -     if(en2_i) dat2_o[7:0] <= ram0[adr2_i[AWIDTH-1:2]]; -    -   always @(posedge clk) -     if(we2_i & en2_i & sel2_i[3]) -       ram3[adr2_i[AWIDTH-1:2]] <= dat2_i[31:24]; -   always @(posedge clk) -     if(we2_i & en2_i & sel2_i[2]) -       ram2[adr2_i[AWIDTH-1:2]] <= dat2_i[23:16]; -   always @(posedge clk) -     if(we2_i & en2_i & sel2_i[1]) -       ram1[adr2_i[AWIDTH-1:2]] <= dat2_i[15:8]; -   always @(posedge clk) -     if(we2_i & en2_i & sel2_i[0]) -       ram0[adr2_i[AWIDTH-1:2]] <= dat2_i[7:0]; -    -endmodule // dpram32 - - diff --git a/control_lib/fifo_tb.v b/control_lib/fifo_tb.v deleted file mode 100644 index 616fe4ee7..000000000 --- a/control_lib/fifo_tb.v +++ /dev/null @@ -1,151 +0,0 @@ -module fifo_tb(); -    -   reg clk, rst; -   wire short_full, short_empty, long_full, long_empty; -   wire casc2_full, casc2_empty; -   reg 	read, write; -    -   wire [7:0] short_do, long_do; -   wire [7:0] casc2_do; -   reg [7:0]  di; - -   reg 	      clear = 0; -    -   shortfifo #(.WIDTH(8)) shortfifo -     (.clk(clk),.rst(rst),.datain(di),.dataout(short_do),.clear(clear), -      .read(read),.write(write),.full(short_full),.empty(short_empty)); -    -   longfifo #(.WIDTH(8), .SIZE(4)) longfifo -     (.clk(clk),.rst(rst),.datain(di),.dataout(long_do),.clear(clear), -      .read(read),.write(write),.full(long_full),.empty(long_empty)); -    -   cascadefifo2 #(.WIDTH(8), .SIZE(4)) cascadefifo2 -     (.clk(clk),.rst(rst),.datain(di),.dataout(casc2_do),.clear(clear), -      .read(read),.write(write),.full(casc2_full),.empty(casc2_empty)); -    -   initial rst = 1; -   initial #1000 rst = 0; -   initial clk = 0; -   always #50 clk = ~clk; -    -   initial di = 8'hAE; -   initial read = 0; -   initial write = 0; - -   always @(posedge clk) -     if(write) -       di <= di + 1; -    -   always @(posedge clk) -     begin -	if(short_full != long_full) -	  $display("Error: FULL mismatch"); -	if(short_empty != long_empty) -	  $display("Note: EMPTY mismatch, usually not a problem (longfifo has 2 cycle latency)"); -	if(read & (short_do != long_do)) -	  $display("Error: DATA mismatch"); -     end -    -   initial $dumpfile("fifo_tb.vcd"); -   initial $dumpvars(0,fifo_tb); - -   initial -     begin -	@(negedge rst); -	@(posedge clk); -	repeat (10) -	  @(posedge clk); -	write <= 1; -	@(posedge clk); -	write <= 0; -	@(posedge clk); -	@(posedge clk); -	@(posedge clk); -	@(posedge clk); -	@(posedge clk); -	@(posedge clk); -	@(posedge clk); -	@(posedge clk); -	read <= 1; -	@(posedge clk); -	read <= 0; -	@(posedge clk); -	@(posedge clk); -	@(posedge clk); -	@(posedge clk); -	@(posedge clk); - -	repeat(10) -	  begin -	     write <= 1; -	     @(posedge clk); -	     write <= 0; -	     @(posedge clk); -	     @(posedge clk); -	     @(posedge clk); -	     read <= 1; -	     @(posedge clk); -	     read <= 0; -	     @(posedge clk); -	     @(posedge clk); -	     @(posedge clk); -	     @(posedge clk); -	     @(posedge clk); -	  end // repeat (10) -	 -	write <= 1; -	repeat (4) -	  @(posedge clk); -	write <= 0; -	@(posedge clk); -	read <= 1; -	repeat (4) -	  @(posedge clk); -	read <= 0; -	@(posedge clk); - - -	write <= 1; -	repeat (4) -	  @(posedge clk); -	write <= 0; -	@(posedge clk); -	repeat (4) -	  begin -	     read <= 1; -	     @(posedge clk); -	     read <= 0; -	     @(posedge clk); -	  end - -	write <= 1; -	@(posedge clk); -	@(posedge clk); -	@(posedge clk); -	@(posedge clk); -	read <= 1; -	repeat (5) -	  @(posedge clk); -	write <= 0; -	  @(posedge clk); -	  @(posedge clk); -	read <= 0; -	@(posedge clk); - -	write <= 1; -	repeat (16) -	  @(posedge clk); -	write <= 0; -	@(posedge clk); -	 -	read <= 1; -	repeat (16) -	  @(posedge clk); -	read <= 0; -	@(posedge clk); -		  -	repeat (10) -	  @(posedge clk); -	$finish; -     end -endmodule // longfifo_tb diff --git a/control_lib/gray2bin.v b/control_lib/gray2bin.v deleted file mode 100644 index 5df40bd52..000000000 --- a/control_lib/gray2bin.v +++ /dev/null @@ -1,13 +0,0 @@ - - -module gray2bin -  #(parameter WIDTH=8) -    (input [WIDTH-1:0] gray, -     output reg [WIDTH-1:0] bin); - -   integer 		i; -   always @(gray) -     for(i = 0;i<WIDTH;i=i+1) -	  bin[i] = ^(gray>>i); -    -endmodule // gray2bin diff --git a/control_lib/gray_send.v b/control_lib/gray_send.v deleted file mode 100644 index 7fc07d40c..000000000 --- a/control_lib/gray_send.v +++ /dev/null @@ -1,29 +0,0 @@ - - - -module gray_send -  #(parameter WIDTH = 8) -    (input clk_in, input [WIDTH-1:0] addr_in, -     input clk_out, output reg [WIDTH-1:0] addr_out); - -   reg [WIDTH-1:0] gray_clkin, gray_clkout, gray_clkout_d1; -   wire [WIDTH-1:0] gray, bin; - -   bin2gray #(.WIDTH(WIDTH)) b2g (.bin(addr_in), .gray(gray) ); - -   always @(posedge clk_in) -     gray_clkin <= gray; - -   always @(posedge clk_out) -     gray_clkout <= gray_clkin; - -   always @(posedge clk_out) -     gray_clkout_d1 <= gray_clkout; -    -   gray2bin #(.WIDTH(WIDTH)) g2b (.gray(gray_clkout_d1), .bin(bin) ); - -   // FIXME we may not need the next register, but it may help timing -   always @(posedge clk_out) -     addr_out <= bin; -    -endmodule // gray_send diff --git a/control_lib/icache.v b/control_lib/icache.v deleted file mode 100644 index bd21f47cc..000000000 --- a/control_lib/icache.v +++ /dev/null @@ -1,135 +0,0 @@ - -module icache -  #(parameter AWIDTH=14, -    parameter CWIDTH=6) - -    (input wb_clk_i, -     input wb_rst_i, -     input [AWIDTH-1:0] iwb_adr_i, -     input iwb_stb_i, -     output [31:0] iwb_dat_o, -     output iwb_ack_o, -     input [31:0] iram_dat_i, -     output [AWIDTH-1:0] iram_adr_o, -     output iram_en_o, -     input flush); - -   localparam TAGWIDTH = AWIDTH-CWIDTH-2; -   reg 	      stb_d1, ack_d1, miss_d1; -   reg [AWIDTH-1:0] held_addr; -   reg [31:0] 	    idata [0:(1<<CWIDTH)-1]; -   reg [TAGWIDTH-1:0] itags [0:(1<<CWIDTH)-1]; -   reg 		      ivalid [0:(1<<CWIDTH)-1]; -    -   wire [CWIDTH-1:0]  rd_line, wr_line; -   wire [TAGWIDTH-1:0] wr_tags; -   wire 	       store_in_cache; - -   // ///////////////////////////////////// -   // Write into cache -   integer 	      i; -   always @(posedge wb_clk_i) -     if(wb_rst_i | flush) -       for(i=0;i<(1<<CWIDTH);i=i+1) -	 ivalid[i] <= 0; -     else -       if(store_in_cache) -	 ivalid[wr_line] <= 1'b1; -    -   always @(posedge wb_clk_i) -     if(store_in_cache) -       begin -	  idata[wr_line] <= iram_dat_i; -	  itags[wr_line] <= wr_tags; -       end -    -   // ////////////////////////////////////// -   // Read from Cache -   wire [TAGWIDTH-1:0] tag_out = itags[rd_line]; -   wire 	       valid_out = ivalid[rd_line]; -   wire [31:0] 	       data_out	= idata[rd_line]; -   wire 	       cache_hit = valid_out & (tag_out == iwb_adr_i[AWIDTH-1:CWIDTH+2]); -   wire 	       cache_miss = ~cache_hit; - -   // ////////////////////////////////////// -   // Handle 1-cycle delay of Block-RAM -   always @(posedge wb_clk_i) -     if(wb_rst_i) -       stb_d1 <= 0; -     else -       stb_d1 <= iwb_stb_i; -    -   always @(posedge wb_clk_i) -     if(wb_rst_i) -       held_addr <= 0; -     else -       held_addr <= iwb_adr_i; -    -   always @(posedge wb_clk_i)  -     if(wb_rst_i) -       ack_d1 <= 1'b0; -     else  -       ack_d1 <= iwb_ack_o; - -   always @(posedge wb_clk_i)  -     if(wb_rst_i) -       miss_d1 <= 0; -     else  -       miss_d1 <= cache_miss; - -//`define IC_NOCACHE -//`define IC_BASIC -//`define IC_FORWARDING_DP -`define IC_FORWARDING_SP -//`define IC_PREFETCH - -`ifdef IC_NOCACHE -   assign 	       iwb_dat_o = iram_dat_i; -   assign 	       iwb_ack_o = iwb_stb_i & (stb_d1 & ~ack_d1); -   assign 	       iram_adr_o = iwb_adr_i; -   assign 	       iram_en_o = 1'b1; -   assign 	       rd_line = 0; -   assign 	       wr_line = 0; -   assign 	       wr_tags = 0; -   assign 	       store_in_cache = 0; -`endif -    -`ifdef IC_BASIC    // Very basic, no forwarding, 2 wait states on miss -   assign 	       iwb_dat_o = data_out; -   assign 	       iwb_ack_o = iwb_stb_i & cache_hit; -   assign 	       iram_adr_o = iwb_adr_i; -   assign 	       iram_en_o = 1'b1; -   assign 	       rd_line = iwb_adr_i[CWIDTH+1:2]; -   assign 	       wr_line = rd_line; -   assign 	       wr_tags = iwb_adr_i[AWIDTH-1:CWIDTH+2]; -   assign 	       store_in_cache = stb_d1 & miss_d1; -`endif -    -`ifdef IC_FORWARDING_DP   // Simple forwarding, 1 wait state on miss, dual-port ram -   assign 	       iwb_dat_o = cache_hit ? data_out : iram_dat_i; -   assign 	       iwb_ack_o = iwb_stb_i & (cache_hit | (stb_d1 & ~ack_d1)); -   assign 	       iram_adr_o = iwb_adr_i; -   assign 	       iram_en_o = 1'b1; -   assign 	       rd_line = iwb_adr_i[CWIDTH+1:2]; -   assign 	       wr_line = held_addr[CWIDTH+1:2]; -   assign 	       wr_tags = held_addr[AWIDTH-1:CWIDTH+2];	        -   assign 	       store_in_cache = iwb_stb_i & stb_d1 & miss_d1 & ~ack_d1; -`endif - -`ifdef IC_FORWARDING_SP   // Simple forwarding, 1 wait state on miss, single-port ram -   assign 	       iwb_dat_o = cache_hit ? data_out : iram_dat_i; -   assign 	       iwb_ack_o = iwb_stb_i & (cache_hit | (stb_d1 & ~ack_d1)); -   assign 	       iram_adr_o = iwb_adr_i; -   assign 	       iram_en_o = 1'b1; -   assign 	       rd_line = iwb_adr_i[CWIDTH+1:2]; -   assign 	       wr_line = rd_line; -   assign 	       wr_tags = iwb_adr_i[AWIDTH-1:CWIDTH+2]; -   assign 	       store_in_cache = iwb_stb_i & stb_d1 & miss_d1 & ~ack_d1; -`endif - -`ifdef IC_PREFETCH   // Forwarding plus prefetch - -`endif -    -    -endmodule // icache diff --git a/control_lib/longfifo.v b/control_lib/longfifo.v deleted file mode 100644 index bf3338e0b..000000000 --- a/control_lib/longfifo.v +++ /dev/null @@ -1,150 +0,0 @@ - -// FIFO intended to be interchangeable with shortfifo, but -//  based on block ram instead of SRL16's -//  only one clock domain - -// Port A is write port, Port B is read port - -module longfifo -  #(parameter WIDTH=32, SIZE=9) -    (input clk, input rst, -     input [WIDTH-1:0] datain, -     output [WIDTH-1:0] dataout, -     input read, -     input write, -     input clear, -     output full, -     output empty, -     output reg [15:0] space, -     output reg [15:0] occupied); - -   // Read side states -   localparam 	  EMPTY = 0; -   localparam 	  PRE_READ = 1; -   localparam 	  READING = 2; - -   reg [SIZE-1:0] wr_addr, rd_addr; -   reg [1:0] 	  read_state; - -   reg 	  empty_reg, full_reg; -   always @(posedge clk) -     if(rst) -       wr_addr <= 0; -     else if(clear) -       wr_addr <= 0; -     else if(write) -       wr_addr <= wr_addr + 1; - -   ram_2port #(.DWIDTH(WIDTH),.AWIDTH(SIZE)) -     ram (.clka(clk), -	  .ena(1'b1), -	  .wea(write), -	  .addra(wr_addr), -	  .dia(datain), -	  .doa(), - -	  .clkb(clk), -	  .enb((read_state==PRE_READ)|read), -	  .web(0), -	  .addrb(rd_addr), -	  .dib(0), -	  .dob(dataout)); - -   always @(posedge clk) -     if(rst) -       begin -	  read_state <= EMPTY; -	  rd_addr <= 0; -	  empty_reg <= 1; -       end -     else -       if(clear) -	 begin -	    read_state <= EMPTY; -	    rd_addr <= 0; -	    empty_reg <= 1; -	 end -       else  -	 case(read_state) -	   EMPTY : -	     if(write) -	       begin -		  //rd_addr <= wr_addr; -		  read_state <= PRE_READ; -	       end -	   PRE_READ : -	     begin -		read_state <= READING; -		empty_reg <= 0; -		rd_addr <= rd_addr + 1; -	     end -	    -	   READING : -	     if(read) -	       if(rd_addr == wr_addr) -		 begin -		    empty_reg <= 1; -		    if(write) -		      read_state <= PRE_READ; -		    else -		      read_state <= EMPTY; -		 end -	       else -		 rd_addr <= rd_addr + 1; -	 endcase // case(read_state) - -   wire [SIZE-1:0] dont_write_past_me = rd_addr - 3; -   wire 	   becoming_full = wr_addr == dont_write_past_me; -      -   always @(posedge clk) -     if(rst) -       full_reg <= 0; -     else if(clear) -       full_reg <= 0; -     else if(read & ~write) -       full_reg <= 0; -     //else if(write & ~read & (wr_addr == (rd_addr-3))) -     else if(write & ~read & becoming_full) -       full_reg <= 1; - -   //assign empty = (read_state != READING); -   assign empty = empty_reg; - -   // assign full = ((rd_addr - 1) == wr_addr); -   assign full = full_reg; - -   ////////////////////////////////////////////// -   // space and occupied are for diagnostics only -   // not guaranteed exact - -   localparam NUMLINES = (1<<SIZE)-2; -   always @(posedge clk) -     if(rst) -       space <= NUMLINES; -     else if(clear) -       space <= NUMLINES; -     else if(read & ~write) -       space <= space + 1; -     else if(write & ~read) -       space <= space - 1; -    -   always @(posedge clk) -     if(rst) -       occupied <= 0; -     else if(clear) -       occupied <= 0; -     else if(read & ~write) -       occupied <= occupied - 1; -     else if(write & ~read) -       occupied <= occupied + 1; -    -   /* -   wire [SIZE-1:0] fullness = wr_addr - rd_addr;  // Approximate, for simulation only -   assign occupied = {{16-SIZE{1'b0}},fullness}; - -   wire [SIZE-1:0] free_space = rd_addr - wr_addr - 2;  // Approximate, for SERDES flow control -   assign space = {{16-SIZE{1'b0}},free_space}; -    */   - -    -endmodule // longfifo diff --git a/control_lib/medfifo.v b/control_lib/medfifo.v deleted file mode 100644 index 5a77e8c16..000000000 --- a/control_lib/medfifo.v +++ /dev/null @@ -1,49 +0,0 @@ - -module medfifo -  #(parameter WIDTH=32, -    parameter DEPTH=1) -    (input clk, input rst, -     input [WIDTH-1:0] datain, -     output [WIDTH-1:0] dataout, -     input read, -     input write, -     input clear, -     output full, -     output empty, -     output [7:0] space, -     output [7:0] occupied); - -   localparam 		NUM_FIFOS = (1<<DEPTH); -    -   wire [WIDTH-1:0] 	dout [0:NUM_FIFOS-1]; -   wire [0:NUM_FIFOS-1] full_x; -   wire [0:NUM_FIFOS-1] empty_x; - -   shortfifo #(.WIDTH(WIDTH)) -     head (.clk(clk),.rst(rst), -	   .datain(datain),.write(write),.full(full), -	   .dataout(dout[0]),.read(~empty_x[0] & ~full_x[1]),.empty(empty_x[0]), -	   .clear(clear),.space(space[4:0]),.occupied() ); -    -   shortfifo #(.WIDTH(WIDTH)) -     tail (.clk(clk),.rst(rst), -	   .datain(dout[NUM_FIFOS-2]),.write(~empty_x[NUM_FIFOS-2] & ~full_x[NUM_FIFOS-1]),.full(full_x[NUM_FIFOS-1]), -	   .dataout(dataout),.read(read),.empty(empty), -	   .clear(clear),.space(),.occupied(occupied[4:0]) ); - -   genvar 		i; -   generate -      for(i = 1; i < NUM_FIFOS-1 ; i = i + 1) -	begin : gen_depth -	   shortfifo #(.WIDTH(WIDTH)) -	     shortfifo (.clk(clk),.rst(rst), -			.datain(dout[i-1]),.write(~full_x[i] & ~empty_x[i-1]),.full(full_x[i]), -			.dataout(dout[i]),.read(~full_x[i+1] & ~empty_x[i]),.empty(empty_x[i]), -			.clear(clear),.space(),.occupied() ); -	end -   endgenerate - -   assign space[7:5] = 0; -   assign occupied[7:5] = 0; -    -endmodule // medfifo diff --git a/control_lib/mux4.v b/control_lib/mux4.v deleted file mode 100644 index 31c85c832..000000000 --- a/control_lib/mux4.v +++ /dev/null @@ -1,16 +0,0 @@ - - -module mux4 -  #(parameter WIDTH=32, parameter DISABLED=0) -    (input en, -     input [1:0] sel, -     input [WIDTH-1:0] i0, -     input [WIDTH-1:0] i1, -     input [WIDTH-1:0] i2, -     input [WIDTH-1:0] i3, -     output [WIDTH-1:0] o); - -   assign 		o = en ? (sel[1] ? (sel[0] ? i3 : i2) : (sel[0] ? i1 : i0)) : -			DISABLED; -    -endmodule // mux4 diff --git a/control_lib/mux8.v b/control_lib/mux8.v deleted file mode 100644 index 9db96a60f..000000000 --- a/control_lib/mux8.v +++ /dev/null @@ -1,21 +0,0 @@ - - -module mux8 -  #(parameter WIDTH=32, parameter DISABLED=0) -    (input en, -     input [2:0] sel, -     input [WIDTH-1:0] i0, -     input [WIDTH-1:0] i1, -     input [WIDTH-1:0] i2, -     input [WIDTH-1:0] i3, -     input [WIDTH-1:0] i4, -     input [WIDTH-1:0] i5, -     input [WIDTH-1:0] i6, -     input [WIDTH-1:0] i7, -     output [WIDTH-1:0] o); - -   assign 		o = en ? (sel[2] ? (sel[1] ? (sel[0] ? i7 : i6) : (sel[0] ? i5 : i4)) : -				  (sel[1] ? (sel[0] ? i3 : i2) : (sel[0] ? i1 : i0))) : -			DISABLED; -    -endmodule // mux8 diff --git a/control_lib/mux_32_4.v b/control_lib/mux_32_4.v deleted file mode 100644 index fef5812e9..000000000 --- a/control_lib/mux_32_4.v +++ /dev/null @@ -1,13 +0,0 @@ - - -module mux_32_4 -  (input [1:0] sel, -   input [31:0] in0, -   input [31:0] in1, -   input [31:0] in2, -   input [31:0] in3, -   output [31:0] out); - -   assign 	 out = sel[1] ? (sel[0] ? in3 : in2) : (sel[0] ? in1 : in0); - -endmodule // mux_32_4 diff --git a/control_lib/newfifo/.gitignore b/control_lib/newfifo/.gitignore deleted file mode 100644 index cba7efc8e..000000000 --- a/control_lib/newfifo/.gitignore +++ /dev/null @@ -1 +0,0 @@ -a.out diff --git a/control_lib/newfifo/buffer_int.v b/control_lib/newfifo/buffer_int.v deleted file mode 100644 index b45ed3532..000000000 --- a/control_lib/newfifo/buffer_int.v +++ /dev/null @@ -1,168 +0,0 @@ - -// FIFO Interface to the 2K buffer RAMs -// Read port is read-acknowledge -// FIXME do we want to be able to interleave reads and writes? - -module buffer_int -  #(parameter BUF_NUM = 0, -    parameter BUF_SIZE = 9) -    (// Control Interface -     input clk, -     input rst, -     input [31:0] ctrl_word, -     input go, -     output done, -     output error, -     output idle, -     output [1:0] flag, -      -     // Buffer Interface -     output en_o, -     output we_o, -     output reg [BUF_SIZE-1:0] addr_o, -     output [31:0] dat_to_buf, -     input [31:0] dat_from_buf, -      -     // Write FIFO Interface -     input [31:0] wr_data_i, -     input [3:0] wr_flags_i, -     input wr_ready_i, -     output wr_ready_o, -      -     // Read FIFO Interface -     output [31:0] rd_data_o, -     output [3:0] rd_flags_o, -     output rd_ready_o, -     input rd_ready_i -     ); -    -   reg [31:0] ctrl_reg; -   reg 	      go_reg; -    -   always @(posedge clk) -     go_reg <= go; -    -   always @(posedge clk) -     if(rst) -       ctrl_reg <= 0; -     else -       if(go & (ctrl_word[31:28] == BUF_NUM)) -	 ctrl_reg <= ctrl_word; -    -   wire [BUF_SIZE-1:0] firstline = ctrl_reg[BUF_SIZE-1:0]; -   wire [BUF_SIZE-1:0] lastline = ctrl_reg[2*BUF_SIZE-1:BUF_SIZE]; - -   wire       read = ctrl_reg[22]; -   wire       write = ctrl_reg[23]; -   wire       clear = ctrl_reg[24]; -   //wire [2:0] port = ctrl_reg[27:25];  // Ignored in this block -   //wire [3:0] buff_num = ctrl_reg[31:28];  // Ignored here ? -    -   localparam IDLE = 3'd0; -   localparam PRE_READ = 3'd1; -   localparam READING = 3'd2; -   localparam WRITING = 3'd3; -   localparam ERROR = 3'd4; -   localparam DONE = 3'd5; -    -   reg [2:0]  state; -   reg 	      rd_sop, rd_eop; -   wire       wr_sop, wr_eop, wr_error; -   reg [1:0]  rd_occ; -   wire [1:0] wr_occ; -    -   always @(posedge clk) -     if(rst) -       begin -	  state <= IDLE; -	  rd_sop <= 0; -	  rd_eop <= 0; -	  rd_occ <= 0; -       end -     else -       if(clear) -	 begin -	    state <= IDLE; -	    rd_sop <= 0; -	    rd_eop <= 0; -	    rd_occ <= 0; -	 end -       else  -	 case(state) -	   IDLE : -	     if(go_reg & read) -	       begin -		  addr_o <= firstline; -		  state <= PRE_READ; -	       end -	     else if(go_reg & write) -	       begin -		  addr_o <= firstline; -		  state <= WRITING; -	       end -	    -	   PRE_READ : -	     begin -		state <= READING; -		addr_o <= addr_o + 1; -		rd_occ <= 2'b00; -		rd_sop <= 1; -		rd_eop <= 0; -	     end -	    -	   READING : -	     if(rd_ready_i) -	       begin -		  rd_sop <= 0; -		  addr_o <= addr_o + 1; -		  if(addr_o == lastline) -		    begin -		       rd_eop <= 1; -		       // FIXME assign occ here -		       rd_occ <= 0; -		    end -		  else -		    rd_eop <= 0; -		  if(rd_eop) -		    state <= DONE; -	       end -	    -	   WRITING : -	     begin -		if(wr_ready_i) -		  begin -		     addr_o <= addr_o + 1; -		     if(wr_error) -		       begin -			  state <= ERROR; -			  // Save OCC flags here -		       end -		     else if((addr_o == lastline)||wr_eop) -		       state <= DONE; -		  end // if (wr_ready_i) -	     end // case: WRITING -	    -	 endcase // case(state) -    -   assign     dat_to_buf = wr_data_i; -   assign     rd_data_o = dat_from_buf; - -   assign     rd_flags_o = { rd_occ[1:0], rd_eop, rd_sop }; -   assign     rd_ready_o = (state == READING); -    -   assign     wr_sop = wr_flags_i[0]; -   assign     wr_eop = wr_flags_i[1]; -   assign     wr_occ = wr_flags_i[3:2]; -   assign     wr_error = wr_sop & wr_eop; -   assign     wr_ready_o = (state == WRITING); - -   assign     we_o = (state == WRITING); -   //assign     we_o = (state == WRITING) && wr_ready_i;  // always write to avoid timing issue - -   assign     en_o = ~((state==READING)& ~rd_ready_i);   // FIXME potential critical path -    -   assign     done = (state == DONE); -   assign     error = (state == ERROR); -   assign     idle = (state == IDLE); - -endmodule // buffer_int diff --git a/control_lib/newfifo/buffer_int_tb.v b/control_lib/newfifo/buffer_int_tb.v deleted file mode 100644 index df54dcc0b..000000000 --- a/control_lib/newfifo/buffer_int_tb.v +++ /dev/null @@ -1,418 +0,0 @@ - -module buffer_int_tb (); - -   reg clk = 0; -   reg rst = 1; - -   initial #100 rst = 0; -   always #5 clk = ~clk; - -   wire en, we; -   wire [8:0] addr; -   wire [31:0] fifo2buf, buf2fifo; -    -   wire [31:0] rd_data_o; -   wire [3:0]  rd_flags_o; -   wire        rd_sop_o, rd_eop_o; -   reg 	       rd_error_i = 0, rd_read_i = 0; -    -   reg [31:0]  wr_data_i = 0; -   wire [3:0]  wr_flags_i; -   reg 	       wr_eop_i = 0, wr_sop_i = 0; -   reg 	       wr_write_i = 0; -   wire        wr_ready_o, wr_full_o; -    -   reg 	       clear = 0, write = 0, read = 0; -   reg [8:0]   firstline = 0, lastline = 0; -   wire [3:0]  step = 1; -   wire [31:0] ctrl_word = {4'b0,3'b0,clear,write,read,step,lastline,firstline}; -   reg 	       go = 0; -   wire        done, error; - -   assign      wr_flags_i = {2'b00, wr_eop_i, wr_sop_i}; -   assign      rd_sop_o = rd_flags_o[0]; -   assign      rd_eop_o = rd_flags_o[1]; -    -   buffer_int buffer_int -     (.clk(clk),.rst(rst), -      .ctrl_word(ctrl_word),.go(go), -      .done(done),.error(error), -       -      // Buffer Interface -      .en_o(en),.we_o(we),.addr_o(addr), -      .dat_to_buf(fifo2buf),.dat_from_buf(buf2fifo), - -      // Write FIFO Interface -      .wr_data_i(wr_data_i), .wr_flags_i(wr_flags_i), .wr_write_i(wr_write_i), .wr_ready_o(wr_ready_o), - -      // Read FIFO Interface -      .rd_data_o(rd_data_o), .rd_flags_o(rd_flags_o), .rd_ready_o(rd_ready_o), .rd_read_i(rd_read_i) -      ); -    -   reg 	       ram_en = 0, ram_we = 0; -   reg [8:0]   ram_addr = 0; -   reg [31:0]  ram_data = 0; -    -   ram_2port #(.DWIDTH(32),.AWIDTH(9)) ram_2port -     (.clka(clk), .ena(ram_en), .wea(ram_we), .addra(ram_addr), .dia(ram_data), .doa(), -      .clkb(clk), .enb(en), .web(we), .addrb(addr), .dib(fifo2buf), .dob(buf2fifo) ); -    -   initial -     begin -	@(negedge rst); -	@(posedge clk); -	FillRAM; - -	ResetBuffer; -	SetBufferRead(5,10); -	$display("Testing full read, no wait states."); -	while(!rd_sop_o) -	  @(posedge clk); -	ReadLines(6,0); -	repeat (10) -	  @(posedge clk); -	 -	ResetBuffer; -	SetBufferRead(5,10); -	$display("Testing full read, 2 wait states."); -	while(!rd_sop_o) -	  @(posedge clk); -	ReadLines(6,2); -	repeat (10) -	  @(posedge clk); - -	ResetBuffer; -	SetBufferRead(5,10); -	$display("Testing partial read, 0 wait states, then nothing after last."); -	while(!rd_sop_o) -	  @(posedge clk); -	ReadLines(3,0); -	repeat (10) -	  @(posedge clk); - -	ResetBuffer; -	SetBufferRead(5,10); -	$display("Testing partial read, 0 wait states, then done at same time as last."); -	while(!rd_sop_o) -	  @(posedge clk); -	ReadLines(2,0); -	ReadALine; -	repeat (10) -	  @(posedge clk); - -	ResetBuffer; -	SetBufferRead(5,10); -	$display("Testing partial read, 3 wait states, then error at same time as last."); -	while(!rd_sop_o) -	  @(posedge clk); -	ReadLines(2,3); -	rd_error_i <= 1; -	ReadALine; -	rd_error_i <= 0; -	repeat (10) -	  @(posedge clk); - -	ResetBuffer; -	SetBufferRead(500,511); -	$display("Testing full read, to the end of the buffer."); -	while(!rd_sop_o) -	  @(posedge clk); -	ReadLines(12,0); -	repeat (10) -	  @(posedge clk); -	 -	ResetBuffer; -	SetBufferRead(0,511); -	$display("Testing full read, start to end of the buffer."); -	while(!rd_sop_o) -	  @(posedge clk); -	ReadLines(512,0); -	repeat (10) -	  @(posedge clk); -	 -	ResetBuffer; -	SetBufferRead(505,3); -	$display("Testing full read, wraparound"); -	while(!rd_sop_o) -	  @(posedge clk); -	ReadLines(11,0); -	repeat (10) -	  @(posedge clk); - -	ResetBuffer; -	SetBufferWrite(10,15); -	$display("Testing Full Write, no wait states"); -	while(!wr_ready_o) -	  @(posedge clk); -	WriteLines(6,0,72); -	repeat (10) -	  @(posedge clk); -	 -	ResetBuffer; -	SetBufferWrite(18,23); -	$display("Testing Full Write, 1 wait states"); -	while(!wr_ready_o) -	  @(posedge clk); -	WriteLines(6,1,101); -	repeat (10) -	  @(posedge clk); -	 -	ResetBuffer; -	SetBufferWrite(27,40); -	$display("Testing Partial Write, 0 wait states"); -	while(!wr_ready_o) -	  @(posedge clk); -	WriteLines(6,0,201); -	repeat (10) -	  @(posedge clk); -	 -	ResetBuffer; -	SetBufferWrite(45,200); -	$display("Testing Partial Write, 0 wait states, then done and write simultaneously"); -	while(!wr_ready_o) -	  @(posedge clk); -	wr_sop_i <= 1; wr_eop_i <= 0; -	WriteLines(6,0,301); -	wr_sop_i <= 0; wr_eop_i <= 1; -	WriteALine(400); -	wr_sop_i <= 0; wr_eop_i <= 0; -	repeat (10) -	  @(posedge clk); -	 -	ResetBuffer; -	SetBufferWrite(55,200); -	$display("Testing Partial Write, 0 wait states, then error"); -	while(!wr_ready_o) -	  @(posedge clk); -	WriteLines(6,0,501); -	wr_sop_i <= 1; wr_eop_i <= 1; -	WriteALine(400); -	@(posedge clk); -	repeat (10) -	  @(posedge clk); -	wr_sop_i <= 0; wr_eop_i <= 0; -	 -	ResetBuffer; -	SetBufferRead(0,82); -	$display("Testing read after all the writes"); -	while(!rd_sop_o) -	  @(posedge clk); -	ReadLines(83,0); -	repeat (10) -	  @(posedge clk); -	 -	ResetBuffer; -	SetBufferWrite(508,4); -	$display("Testing wraparound write"); -	while(!wr_ready_o) -	  @(posedge clk); -	WriteLines(9,0,601); -	repeat (10) -	  @(posedge clk); -	 -	ResetBuffer; -	SetBufferRead(506,10); -	$display("Reading wraparound write"); -	while(!rd_sop_o) -	  @(posedge clk); -	ReadLines(17,0); -	repeat (10) -	  @(posedge clk); -	 -	ResetBuffer; -	SetBufferWrite(0,511); -	$display("Testing Whole Buffer write"); -	while(!wr_ready_o) -	  @(posedge clk); -	WriteLines(512,0,1000); -	repeat (10) -	  @(posedge clk); -	 -	ResetBuffer; -	SetBufferRead(0,511); -	$display("Reading Whole Buffer write"); -	while(!rd_sop_o) -	  @(posedge clk); -	ReadLines(512,0); -	repeat (10) -	  @(posedge clk); - -	/* -	ResetBuffer; -	SetBufferWrite(5,10); -	$display("Testing Write Too Many"); -	while(!wr_ready_o) -	  @(posedge clk); -	WriteLines(12,0,2000); -	repeat (10) -	  @(posedge clk); -	 -	ResetBuffer; -	SetBufferRead(0,15); -	$display("Reading back Write Too Many"); -	while(!rd_sop_o) -	  @(posedge clk); -	ReadLines(16,0); -	repeat (10) -	  @(posedge clk); -	*/ -	ResetBuffer; -	SetBufferWrite(15,20); -	$display("Testing Write One Less Than Full"); -	while(!wr_ready_o) -	  @(posedge clk); -	wr_sop_i <= 1; wr_eop_i <= 0; -	WriteALine(400); -	wr_sop_i <= 0; wr_eop_i <= 0; -	WriteLines(3,0,2000); -	wr_sop_i <= 0; wr_eop_i <= 1; -	WriteALine(400); -	wr_sop_i <= 0; wr_eop_i <= 0; -	repeat (10) -	  @(posedge clk); -	 -	ResetBuffer; -	SetBufferRead(13,22); -	$display("Reading back Write One Less Than Full"); -	while(!rd_sop_o) -	  @(posedge clk); -	ReadLines(10,0); -	repeat (10) -	  @(posedge clk); -	 -	ResetBuffer; -	repeat(100) -	  @(posedge clk); -	$finish; -     end -    -   always @(posedge clk) -     if(rd_read_i == 1'd1) -       $display("READ Buffer %d, rd_sop_o %d, rd_eop_o %d", rd_data_o, rd_sop_o, rd_eop_o); - -   always @(posedge clk) -     if(wr_write_i == 1'd1) -       $display("WRITE Buffer %d,  wr_ready_o %d, wr_full_o %d", wr_data_i, wr_ready_o, wr_full_o); -	    -   initial begin -      $dumpfile("buffer_int_tb.lxt"); -      $dumpvars(0,buffer_int_tb); -   end - -   task FillRAM; -      begin -	 ram_addr <= 0; -	 ram_data <= 0; -	 @(posedge clk); -	 ram_en <= 1; -	 ram_we <= 1; -	 @(posedge clk); -	 repeat (511) -	   begin -	      ram_addr <= ram_addr + 1; -	      ram_data <= ram_data + 1; -	      ram_en <= 1; -	      ram_we <= 1; -	      @(posedge clk); -	   end -	 ram_en <= 0; -	 ram_we <= 0; -	 @(posedge clk); -	 $display("Filled the RAM"); -      end -   endtask // FillRAM - -   task ResetBuffer; -      begin -	 clear <= 1; read <= 0; write <= 0; -	 go <= 1; -	 @(posedge clk); -	 go <= 0; -	 @(posedge clk); -	 $display("Buffer Reset"); -      end -   endtask // ClearBuffer -    -   task SetBufferWrite; -      input [8:0] start; -      input [8:0] stop; -      begin -	 clear <= 0; read <= 0; write <= 1; -	 firstline <= start; -	 lastline <= stop; -	 go <= 1; -	 @(posedge clk); -	 go <= 0; -	 @(posedge clk); -	 $display("Buffer Set for Write"); -      end -   endtask // SetBufferWrite -    -   task SetBufferRead; -      input [8:0] start; -      input [8:0] stop; -      begin -	 clear <= 0; read <= 1; write <= 0; -	 firstline <= start; -	 lastline <= stop; -	 go <= 1; -	 @(posedge clk); -	 go <= 0; -	 @(posedge clk); -	 $display("Buffer Set for Read"); -      end -   endtask // SetBufferRead - -   task ReadALine; -      begin -	 while(~rd_ready_o) -	   @(posedge clk); -	 #1 rd_read_i <= 1; -	 @(posedge clk); -	 rd_read_i <= 0; -      end -   endtask // ReadALine - -   task ReadLines; -      input [9:0] lines; -      input [7:0] wait_states; -      begin -	 $display("Read Lines: Number %d, Wait States %d",lines,wait_states); -	 repeat (lines) -	   begin -	      ReadALine; -	      repeat (wait_states) -		@(posedge clk); -	   end -      end -   endtask // ReadLines -    -   task WriteALine; -      input [31:0] value; -      begin -	 while(~wr_ready_o) -	   @(posedge clk); -	 #1 wr_write_i <= 1; -	 wr_data_i <= value; -	 @(posedge clk); -	 wr_write_i <= 0; -      end -   endtask // WriteALine -    -   task WriteLines; -      input [9:0] lines; -      input [7:0] wait_states; -      input [31:0] value; -      begin -	 $display("Write Lines: Number %d, Wait States %d",lines,wait_states); -	 repeat(lines) -	   begin -	      value <= value + 1; -	      WriteALine(value); -	      repeat(wait_states) -		@(posedge clk); -	   end -      end -   endtask // WriteLines -    -endmodule // buffer_int_tb diff --git a/control_lib/newfifo/buffer_pool.v b/control_lib/newfifo/buffer_pool.v deleted file mode 100644 index 41ac1deb3..000000000 --- a/control_lib/newfifo/buffer_pool.v +++ /dev/null @@ -1,283 +0,0 @@ - -// Buffer pool.  Contains 8 buffers, each 2K (512 by 32).  Each buffer -// is a dual-ported RAM.  Port A on each of them is indirectly connected  -// to the wishbone bus by a bridge.  Port B may be connected any one of the -// 8 (4 rd, 4 wr) FIFO-like streaming interaces, or disconnected.  The wishbone bus -// provides access to all 8 buffers, and also controls the connections -// between the ports and the buffers, allocating them as needed. - -// wb_adr is 16 bits --  -//  bits 13:11 select which buffer -//  bits 10:2 select line in buffer -//  bits 1:0 are unused (32-bit access only) - -// BUF_SIZE is in address lines (i.e. log2 of number of lines).   -// For S3 it should be 9 (512 words, 2KB) -// For V5 it should be at least 10 (1024 words, 4KB) or 11 (2048 words, 8KB) - -module buffer_pool -  #(parameter BUF_SIZE = 9, -    parameter SET_ADDR = 64) -    (input wb_clk_i, -     input wb_rst_i, -     input wb_we_i, -     input wb_stb_i, -     input [15:0] wb_adr_i, -     input [31:0] wb_dat_i,    -     output [31:0] wb_dat_o, -     output reg wb_ack_o, -     output wb_err_o, -     output wb_rty_o, -    -     input stream_clk, -     input stream_rst, -      -     input set_stb, input [7:0] set_addr, input [31:0] set_data, -     output [31:0] status, -     output sys_int_o, -      -     output [31:0] s0, output [31:0] s1, output [31:0] s2, output [31:0] s3, -     output [31:0] s4, output [31:0] s5, output [31:0] s6, output [31:0] s7, -      -     // Write Interfaces -     input [31:0] wr0_data_i, input [3:0] wr0_flags_i, input wr0_ready_i, output wr0_ready_o, -     input [31:0] wr1_data_i, input [3:0] wr1_flags_i, input wr1_ready_i, output wr1_ready_o, -     input [31:0] wr2_data_i, input [3:0] wr2_flags_i, input wr2_ready_i, output wr2_ready_o, -     input [31:0] wr3_data_i, input [3:0] wr3_flags_i, input wr3_ready_i, output wr3_ready_o, -      -     // Read Interfaces -     output [31:0] rd0_data_o, output [3:0] rd0_flags_o, output rd0_ready_o, input rd0_ready_i,  -     output [31:0] rd1_data_o, output [3:0] rd1_flags_o, output rd1_ready_o, input rd1_ready_i,  -     output [31:0] rd2_data_o, output [3:0] rd2_flags_o, output rd2_ready_o, input rd2_ready_i,  -     output [31:0] rd3_data_o, output [3:0] rd3_flags_o, output rd3_ready_o, input rd3_ready_i -     ); -    -   wire [7:0] 	   sel_a; -    -   wire [BUF_SIZE-1:0] 	   buf_addra = wb_adr_i[BUF_SIZE+1:2];     // ignore address 1:0, 32-bit access only -   wire [2:0] 		   which_buf = wb_adr_i[BUF_SIZE+4:BUF_SIZE+2];   // address 15:14 selects the buffer pool -    -   decoder_3_8 dec(.sel(which_buf),.res(sel_a)); -    -   genvar 	 i; -    -   wire 	 go; - -   reg [2:0] 	 port[0:7];	  -   reg [3:0] 	 read_src[0:3]; -   reg [3:0] 	 write_src[0:3]; -    -   wire [7:0] 	 done; -   wire [7:0] 	 error; -   wire [7:0] 	 idle; -    -   wire [31:0] 	 buf_doa[0:7]; -    -   wire [7:0] 	 buf_enb; -   wire [7:0] 	 buf_web; -   wire [BUF_SIZE-1:0] 	 buf_addrb[0:7]; -   wire [31:0] 	 buf_dib[0:7]; -   wire [31:0] 	 buf_dob[0:7]; -    -   wire [31:0] 	 wr_data_i[0:7]; -   wire [3:0] 	 wr_flags_i[0:7]; -   wire [7:0] 	 wr_ready_i; -   wire [7:0] 	 wr_ready_o; -    -   wire [31:0] 	 rd_data_o[0:7]; -   wire [3:0] 	 rd_flags_o[0:7]; -   wire [7:0] 	 rd_ready_o; -   wire [7:0] 	 rd_ready_i; -    -   assign 	 status = {8'd0,idle[7:0],error[7:0],done[7:0]}; - -   assign 	 s0 = buf_addrb[0]; -   assign 	 s1 = buf_addrb[1]; -   assign 	 s2 = buf_addrb[2]; -   assign 	 s3 = buf_addrb[3]; -   assign 	 s4 = buf_addrb[4]; -   assign 	 s5 = buf_addrb[5]; -   assign 	 s6 = buf_addrb[6]; -   assign 	 s7 = buf_addrb[7]; -    -   wire [31:0] 	 fifo_ctrl; -   setting_reg #(.my_addr(SET_ADDR))  -     sreg(.clk(stream_clk),.rst(stream_rst),.strobe(set_stb),.addr(set_addr),.in(set_data), -	  .out(fifo_ctrl),.changed(go)); - -   integer 	 k; -   always @(posedge stream_clk) -     if(stream_rst) -       for(k=0;k<8;k=k+1) -	 port[k] <= 4;   // disabled -     else -       for(k=0;k<8;k=k+1) -	 if(go & (fifo_ctrl[31:28]==k)) -	   port[k] <= fifo_ctrl[27:25]; - -   always @(posedge stream_clk) -     if(stream_rst) -       for(k=0;k<4;k=k+1) -	 read_src[k] <= 8;  // disabled -     else -       for(k=0;k<4;k=k+1) -	 if(go & fifo_ctrl[22] & (fifo_ctrl[27:25]==k)) -	   read_src[k] <= fifo_ctrl[31:28]; -    -   always @(posedge stream_clk) -     if(stream_rst) -       for(k=0;k<4;k=k+1) -	 write_src[k] <= 8;  // disabled -     else -       for(k=0;k<4;k=k+1) -	 if(go & fifo_ctrl[23] & (fifo_ctrl[27:25]==k)) -	   write_src[k] <= fifo_ctrl[31:28]; -    -   generate -      for(i=0;i<8;i=i+1) -	begin : gen_buffer -	   RAMB16_S36_S36 dpram -	     (.DOA(buf_doa[i]),.ADDRA(buf_addra),.CLKA(wb_clk_i),.DIA(wb_dat_i),.DIPA(4'h0), -	      .ENA(wb_stb_i & sel_a[i]),.SSRA(0),.WEA(wb_we_i), -	      .DOB(buf_dob[i]),.ADDRB(buf_addrb[i]),.CLKB(stream_clk),.DIB(buf_dib[i]),.DIPB(4'h0), -	      .ENB(buf_enb[i]),.SSRB(0),.WEB(buf_web[i]) ); -	    -/*	    -	   ram_2port #(.DWIDTH(32),.AWIDTH(BUF_SIZE)) buffer -	     (.clka(wb_clk_i),.ena(wb_stb_i & sel_a[i]),.wea(wb_we_i), -	      .addra(buf_addra),.dia(wb_dat_i),.doa(buf_doa[i]), -	      .clkb(stream_clk),.enb(buf_enb[i]),.web(buf_web[i]), -	      .addrb(buf_addrb[i]),.dib(buf_dib[i]),.dob(buf_dob[i])); -  - */ -	    -	   buffer_int #(.BUF_NUM(i),.BUF_SIZE(BUF_SIZE)) buffer_int -	     (.clk(stream_clk),.rst(stream_rst), -	      .ctrl_word(fifo_ctrl),.go(go & (fifo_ctrl[31:28]==i)), -	      .done(done[i]),.error(error[i]),.idle(idle[i]), -	      .en_o(buf_enb[i]), -	      .we_o(buf_web[i]), -	      .addr_o(buf_addrb[i]), -	      .dat_to_buf(buf_dib[i]), -	      .dat_from_buf(buf_dob[i]), -	      .wr_data_i(wr_data_i[i]), -	      .wr_flags_i(wr_flags_i[i]), -	      .wr_ready_i(wr_ready_i[i]), -	      .wr_ready_o(wr_ready_o[i]), -	      .rd_data_o(rd_data_o[i]), -	      .rd_flags_o(rd_flags_o[i]), -	      .rd_ready_o(rd_ready_o[i]), -	      .rd_ready_i(rd_ready_i[i]) ); -	   mux4 #(.WIDTH(37)) -	     mux4_wr (.en(~port[i][2]),.sel(port[i][1:0]), -		      .i0({wr0_data_i,wr0_flags_i,wr0_ready_i}), -		      .i1({wr1_data_i,wr1_flags_i,wr1_ready_i}), -		      .i2({wr2_data_i,wr2_flags_i,wr2_ready_i}), -		      .i3({wr3_data_i,wr3_flags_i,wr3_ready_i}), -		      .o({wr_data_i[i],wr_flags_i[i],wr_ready_i[i]}) ); -	   mux4 #(.WIDTH(1)) -	     mux4_rd (.en(~port[i][2]),.sel(port[i][1:0]), -		      .i0(rd0_ready_i),.i1(rd1_ready_i),.i2(rd2_ready_i),.i3(rd3_ready_i), -		      .o(rd_ready_i[i])); -	end // block: gen_buffer -   endgenerate - -   //---------------------------------------------------------------------- -   // Wishbone Outputs - -   // Use the following lines if ram output and mux can be made fast enough - -   assign wb_err_o = 1'b0;  // Unused for now -   assign wb_rty_o = 1'b0;  // Unused for now -    -   always @(posedge wb_clk_i) -     wb_ack_o <= wb_stb_i & ~wb_ack_o; -   assign wb_dat_o = buf_doa[which_buf]; - -   // Use this if we can't make the RAM+MUX fast enough -   // reg [31:0] wb_dat_o_reg; -   // reg 	      stb_d1; - -   // always @(posedge wb_clk_i) -   //  begin -   //   wb_dat_o_reg <= buf_doa[which_buf]; -   //   stb_d1 <= wb_stb_i; -   //   wb_ack_o <= (stb_d1 & ~wb_ack_o) | (wb_we_i & wb_stb_i); -   //  end -   //assign     wb_dat_o = wb_dat_o_reg; -    -   mux8 #(.WIDTH(1))  -     mux8_wr0(.en(~write_src[0][3]),.sel(write_src[0][2:0]),  -	      .i0(wr_ready_o[0]), .i1(wr_ready_o[1]), .i2(wr_ready_o[2]), .i3(wr_ready_o[3]), -	      .i4(wr_ready_o[4]), .i5(wr_ready_o[5]), .i6(wr_ready_o[6]), .i7(wr_ready_o[7]), -	      .o(wr0_ready_o)); - -   mux8 #(.WIDTH(1))  -     mux8_wr1(.en(~write_src[1][3]),.sel(write_src[1][2:0]),  -	      .i0(wr_ready_o[0]), .i1(wr_ready_o[1]), .i2(wr_ready_o[2]), .i3(wr_ready_o[3]), -	      .i4(wr_ready_o[4]), .i5(wr_ready_o[5]), .i6(wr_ready_o[6]), .i7(wr_ready_o[7]), -	      .o(wr1_ready_o)); - -   mux8 #(.WIDTH(1))  -     mux8_wr2(.en(~write_src[2][3]),.sel(write_src[2][2:0]),  -	      .i0(wr_ready_o[0]), .i1(wr_ready_o[1]), .i2(wr_ready_o[2]), .i3(wr_ready_o[3]), -	      .i4(wr_ready_o[4]), .i5(wr_ready_o[5]), .i6(wr_ready_o[6]), .i7(wr_ready_o[7]), -	      .o(wr2_ready_o)); - -   mux8 #(.WIDTH(1))  -     mux8_wr3(.en(~write_src[3][3]),.sel(write_src[3][2:0]),  -	      .i0(wr_ready_o[0]), .i1(wr_ready_o[1]), .i2(wr_ready_o[2]), .i3(wr_ready_o[3]), -	      .i4(wr_ready_o[4]), .i5(wr_ready_o[5]), .i6(wr_ready_o[6]), .i7(wr_ready_o[7]), -	      .o(wr3_ready_o)); - -   mux8 #(.WIDTH(37))  -     mux8_rd0(.en(~read_src[0][3]),.sel(read_src[0][2:0]),  -	      .i0({rd_data_o[0],rd_flags_o[0],rd_ready_o[0]}), -	      .i1({rd_data_o[1],rd_flags_o[1],rd_ready_o[1]}), -	      .i2({rd_data_o[2],rd_flags_o[2],rd_ready_o[2]}), -	      .i3({rd_data_o[3],rd_flags_o[3],rd_ready_o[3]}), -	      .i4({rd_data_o[4],rd_flags_o[4],rd_ready_o[4]}), -	      .i5({rd_data_o[5],rd_flags_o[5],rd_ready_o[5]}), -	      .i6({rd_data_o[6],rd_flags_o[6],rd_ready_o[6]}), -	      .i7({rd_data_o[7],rd_flags_o[7],rd_ready_o[7]}), -	      .o({rd0_data_o,rd0_flags_o,rd0_ready_o})); -    -   mux8 #(.WIDTH(37))  -     mux8_rd1(.en(~read_src[1][3]),.sel(read_src[1][2:0]),  -	      .i0({rd_data_o[0],rd_flags_o[0],rd_ready_o[0]}), -	      .i1({rd_data_o[1],rd_flags_o[1],rd_ready_o[1]}), -	      .i2({rd_data_o[2],rd_flags_o[2],rd_ready_o[2]}), -	      .i3({rd_data_o[3],rd_flags_o[3],rd_ready_o[3]}), -	      .i4({rd_data_o[4],rd_flags_o[4],rd_ready_o[4]}), -	      .i5({rd_data_o[5],rd_flags_o[5],rd_ready_o[5]}), -	      .i6({rd_data_o[6],rd_flags_o[6],rd_ready_o[6]}), -	      .i7({rd_data_o[7],rd_flags_o[7],rd_ready_o[7]}), -	      .o({rd1_data_o,rd1_flags_o,rd1_ready_o})); -    -   mux8 #(.WIDTH(37))  -     mux8_rd2(.en(~read_src[2][3]),.sel(read_src[2][2:0]),  -	      .i0({rd_data_o[0],rd_flags_o[0],rd_ready_o[0]}), -	      .i1({rd_data_o[1],rd_flags_o[1],rd_ready_o[1]}), -	      .i2({rd_data_o[2],rd_flags_o[2],rd_ready_o[2]}), -	      .i3({rd_data_o[3],rd_flags_o[3],rd_ready_o[3]}), -	      .i4({rd_data_o[4],rd_flags_o[4],rd_ready_o[4]}), -	      .i5({rd_data_o[5],rd_flags_o[5],rd_ready_o[5]}), -	      .i6({rd_data_o[6],rd_flags_o[6],rd_ready_o[6]}), -	      .i7({rd_data_o[7],rd_flags_o[7],rd_ready_o[7]}), -	      .o({rd2_data_o,rd2_flags_o,rd2_ready_o})); -    -   mux8 #(.WIDTH(37))  -     mux8_rd3(.en(~read_src[3][3]),.sel(read_src[3][2:0]),  -	      .i0({rd_data_o[0],rd_flags_o[0],rd_ready_o[0]}), -	      .i1({rd_data_o[1],rd_flags_o[1],rd_ready_o[1]}), -	      .i2({rd_data_o[2],rd_flags_o[2],rd_ready_o[2]}), -	      .i3({rd_data_o[3],rd_flags_o[3],rd_ready_o[3]}), -	      .i4({rd_data_o[4],rd_flags_o[4],rd_ready_o[4]}), -	      .i5({rd_data_o[5],rd_flags_o[5],rd_ready_o[5]}), -	      .i6({rd_data_o[6],rd_flags_o[6],rd_ready_o[6]}), -	      .i7({rd_data_o[7],rd_flags_o[7],rd_ready_o[7]}), -	      .o({rd3_data_o,rd3_flags_o,rd3_ready_o})); -    -   assign sys_int_o = (|error) | (|done); -    -endmodule // buffer_pool diff --git a/control_lib/newfifo/buffer_pool_tb.v b/control_lib/newfifo/buffer_pool_tb.v deleted file mode 100644 index 91a01d268..000000000 --- a/control_lib/newfifo/buffer_pool_tb.v +++ /dev/null @@ -1,58 +0,0 @@ - -module buffer_pool_tb(); -    -   wire wb_clk_i; -   wire wb_rst_i; -   wire wb_we_i; -   wire wb_stb_i; -   wire [15:0] wb_adr_i; -   wire [31:0] wb_dat_i;    -   wire [31:0] wb_dat_o; -   wire wb_ack_o; -   wire wb_err_o; -   wire wb_rty_o; - -   wire stream_clk, stream_rst; - -   wire set_stb; -   wire [7:0] set_addr; -   wire [31:0] set_data; - -   wire [31:0] wr0_data, wr1_data, wr2_data, wr3_data; -   wire [31:0] rd0_data, rd1_data, rd2_data, rd3_data; -   wire [3:0]  wr0_flags, wr1_flags, wr2_flags, wr3_flags; -   wire [3:0]  rd0_flags, rd1_flags, rd2_flags, rd3_flags; -   wire        wr0_ready, wr1_ready, wr2_ready, wr3_ready; -   wire        rd0_ready, rd1_ready, rd2_ready, rd3_ready; -   wire        wr0_write, wr1_write, wr2_write, wr3_write; -   wire        rd0_read, rd1_read, rd2_read, rd3_read; - -   buffer_pool dut -     (.wb_clk_i(wb_clk_i), -      .wb_rst_i(wb_rst_i), -      .wb_we_i(wb_we_i), -      .wb_stb_i(wb_stb_i), -      .wb_adr_i(wb_adr_i), -      .wb_dat_i(wb_dat_i),    -      .wb_dat_o(wb_dat_o), -      .wb_ack_o(wb_ack_o), -      .wb_err_o(wb_err_o), -      .wb_rty_o(wb_rty_o), -       -      .stream_clk(stream_clk), -      .stream_rst(stream_rst), -       -      .set_stb(set_stb),.set_addr(set_addr),.set_data(set_data), -       -      .wr0_data_i(wr0_data), .wr0_write_i(wr0_write), .wr0_flags_i(wr0_flags), .wr0_ready_o(wr0_ready), -      .wr1_data_i(wr1_data), .wr1_write_i(wr1_write), .wr1_flags_i(wr1_flags), .wr1_ready_o(wr1_ready), -      .wr2_data_i(wr2_data), .wr2_write_i(wr2_write), .wr2_flags_i(wr2_flags), .wr2_ready_o(wr2_ready), -      .wr3_data_i(wr3_data), .wr3_write_i(wr3_write), .wr3_flags_i(wr3_flags), .wr3_ready_o(wr3_ready), -       -      .rd0_data_o(rd0_data), .rd0_read_i(rd0_read), .rd0_flags_o(rd0_flags), .rd0_ready_o(rd0_ready), -      .rd1_data_o(rd1_data), .rd1_read_i(rd1_read), .rd1_flags_o(rd1_flags), .rd1_ready_o(rd1_ready), -      .rd2_data_o(rd2_data), .rd2_read_i(rd2_read), .rd2_flags_o(rd2_flags), .rd2_ready_o(rd2_ready), -      .rd3_data_o(rd3_data), .rd3_read_i(rd3_read), .rd3_flags_o(rd3_flags), .rd3_ready_o(rd3_ready) -      ); -    -endmodule // buffer_pool_tb diff --git a/control_lib/newfifo/fifo19_to_fifo36.v b/control_lib/newfifo/fifo19_to_fifo36.v deleted file mode 100644 index e22ca0a49..000000000 --- a/control_lib/newfifo/fifo19_to_fifo36.v +++ /dev/null @@ -1,71 +0,0 @@ - -module fifo19_to_fifo36 -  (input clk, input reset, input clear, -   input [18:0] f19_datain, -   input f19_src_rdy_i, -   output f19_dst_rdy_o, - -   output [35:0] f36_dataout, -   output f36_src_rdy_o, -   input f36_dst_rdy_i -   ); - -   reg 	 f36_sof, f36_eof, f36_occ; -    -   reg [1:0] state; -   reg [15:0] dat0, dat1; - -   wire f19_sof  = f19_datain[16]; -   wire f19_eof  = f19_datain[17]; -   wire f19_occ  = f19_datain[18]; - -   wire xfer_out = f36_src_rdy_o & f36_dst_rdy_i; - -   always @(posedge clk) -     if(f19_src_rdy_i & ((state==0)|xfer_out)) -       f36_sof 	<= f19_sof; - -   always @(posedge clk) -     if(f19_src_rdy_i & ((state != 2)|xfer_out)) -       f36_eof 	<= f19_eof; - -   always @(posedge clk)    // FIXME check this -     if(f19_eof) -       f36_occ 	<= {state[0],f19_occ}; -     else -       f36_occ 	<= 0; -    -   always @(posedge clk) -     if(reset) -       state 	<= 0; -     else -       if(f19_src_rdy_i) -	 case(state) -	   0 :  -	     if(f19_eof) -	       state <= 2; -	     else -	       state <= 1; -	   1 :  -	     state <= 2; -	   2 :  -	     if(xfer_out) -	       state 	   <= 1; -	 endcase // case(state) -       else -	 if(xfer_out) -	   state 	   <= 0; - -   always @(posedge clk) -     if(f19_src_rdy_i & (state==1)) -       dat1 		   <= f19_datain; - -   always @(posedge clk) -     if(f19_src_rdy_i & ((state==0) | xfer_out)) -       dat0 		   <= f19_datain; -    -   assign    f19_dst_rdy_o  = xfer_out | (state != 2); -   assign    f36_dataout    = {f36_occ,f36_eof,f36_sof,dat0,dat1}; -   assign    f36_src_rdy_o  = (state == 2); -       -endmodule // fifo19_to_fifo36 diff --git a/control_lib/newfifo/fifo19_to_ll8.v b/control_lib/newfifo/fifo19_to_ll8.v deleted file mode 100644 index 4707f7523..000000000 --- a/control_lib/newfifo/fifo19_to_ll8.v +++ /dev/null @@ -1,53 +0,0 @@ - -module fifo19_to_ll8 -  (input clk, input reset, input clear, -   input [18:0] f19_data, -   input f19_src_rdy_i, -   output f19_dst_rdy_o, - -   output reg [7:0] ll_data, -   output ll_sof_n, -   output ll_eof_n, -   output ll_src_rdy_n, -   input ll_dst_rdy_n); - -   wire  ll_sof, ll_eof, ll_src_rdy; -   assign ll_sof_n 	= ~ll_sof; -   assign ll_eof_n 	= ~ll_eof; -   assign ll_src_rdy_n 	= ~ll_src_rdy; -   wire ll_dst_rdy 	= ~ll_dst_rdy_n; - -   wire   f19_sof 	= f19_data[16]; -   wire   f19_eof 	= f19_data[17]; -   wire   f19_occ 	= f19_data[18]; -    -   wire advance, end_early; -   reg state; - -   always @(posedge clk) -     if(reset) -       state 	  <= 0; -     else -       if(advance) -	 if(ll_eof) -	   state  <= 0; -	 else -	   state  <= state + 1; - -   always @* -     case(state) -       0 : ll_data = f19_data[15:8]; -       1 : ll_data = f19_data[7:0]; -       default : ll_data = f19_data[15:8]; -       endcase // case (state) -    -   assign ll_sof 	 = (state==0) & f19_sof; -   assign ll_eof 	 = f19_eof & ((f19_occ==1)|(state==1)); -    -   assign ll_src_rdy 	 = f19_src_rdy_i; - -   assign advance 	 = ll_src_rdy & ll_dst_rdy; -   assign f19_dst_rdy_o  = advance & ((state==1)|ll_eof); -    -endmodule // fifo19_to_ll8 - diff --git a/control_lib/newfifo/fifo36_to_fifo18.v b/control_lib/newfifo/fifo36_to_fifo18.v deleted file mode 100644 index b636ab9ca..000000000 --- a/control_lib/newfifo/fifo36_to_fifo18.v +++ /dev/null @@ -1,40 +0,0 @@ - -module fifo36_to_fifo18 -  (input clk, input reset, input clear, -   input [35:0] f36_datain, -   input f36_src_rdy_i, -   output f36_dst_rdy_o, -    -   output [17:0] f18_dataout, -   output f18_src_rdy_o, -   input f18_dst_rdy_i ); - -   wire   f36_sof  = f36_datain[32]; -   wire   f36_eof  = f36_datain[33]; -   wire   f36_occ  = f36_datain[35:34]; - -   reg phase; - -   wire half_line 	   = f36_eof & ((f36_occ==1)|(f36_occ==2)); -    -   assign f18_dataout[15:0] = phase ? f36_datain[15:0] : f36_datain[31:16]; -   assign f18_dataout[16]  = phase ? 0 : f36_sof; -   assign f18_dataout[17]  = phase ? f36_eof : half_line; -    -   assign f18_src_rdy_o    = f36_src_rdy_i; -   assign f36_dst_rdy_o    = (phase | half_line) & f18_dst_rdy_i; -	 -   wire f18_xfer 	   = f18_src_rdy_o & f18_dst_rdy_i; -   wire f36_xfer 	   = f36_src_rdy_i & f36_dst_rdy_o; - -   always @(posedge clk) -     if(reset) -       phase 		  <= 0; -     else if(f36_xfer) -       phase 		  <= 0; -     else if(f18_xfer) -       phase 		  <= 1; -    -        -endmodule // fifo36_to_fifo18 - diff --git a/control_lib/newfifo/fifo36_to_fifo19.v b/control_lib/newfifo/fifo36_to_fifo19.v deleted file mode 100644 index de249aaeb..000000000 --- a/control_lib/newfifo/fifo36_to_fifo19.v +++ /dev/null @@ -1,41 +0,0 @@ - -module fifo36_to_fifo19 -  (input clk, input reset, input clear, -   input [35:0] f36_datain, -   input f36_src_rdy_i, -   output f36_dst_rdy_o, -    -   output [18:0] f19_dataout, -   output f19_src_rdy_o, -   input f19_dst_rdy_i ); - -   wire   f36_sof  = f36_datain[32]; -   wire   f36_eof  = f36_datain[33]; -   wire   f36_occ  = f36_datain[35:34]; - -   reg phase; - -   wire half_line 	   = f36_eof & ((f36_occ==1)|(f36_occ==2)); -    -   assign f19_dataout[15:0] = phase ? f36_datain[15:0] : f36_datain[31:16]; -   assign f19_dataout[16]  = phase ? 0 : f36_sof; -   assign f19_dataout[17]  = phase ? f36_eof : half_line; -   assign f19_dataout[18]  = f19_dataout[17] & ((f36_occ==1)|(f36_occ==3)); -    -   assign f19_src_rdy_o    = f36_src_rdy_i; -   assign f36_dst_rdy_o    = (phase | half_line) & f19_dst_rdy_i; -	 -   wire f19_xfer 	   = f19_src_rdy_o & f19_dst_rdy_i; -   wire f36_xfer 	   = f36_src_rdy_i & f36_dst_rdy_o; - -   always @(posedge clk) -     if(reset) -       phase 		  <= 0; -     else if(f36_xfer) -       phase 		  <= 0; -     else if(f19_xfer) -       phase 		  <= 1; -    -        -endmodule // fifo36_to_fifo19 - diff --git a/control_lib/newfifo/fifo36_to_ll8.v b/control_lib/newfifo/fifo36_to_ll8.v deleted file mode 100644 index 0dee1dfc6..000000000 --- a/control_lib/newfifo/fifo36_to_ll8.v +++ /dev/null @@ -1,60 +0,0 @@ - -module fifo36_to_ll8 -  (input clk, input reset, input clear, -   input [35:0] f36_data, -   input f36_src_rdy_i, -   output f36_dst_rdy_o, - -   output reg [7:0] ll_data, -   output ll_sof_n, -   output ll_eof_n, -   output ll_src_rdy_n, -   input ll_dst_rdy_n, - -   output [31:0] debug); - -   wire  ll_sof, ll_eof, ll_src_rdy; -   assign ll_sof_n = ~ll_sof; -   assign ll_eof_n = ~ll_eof; -   assign ll_src_rdy_n = ~ll_src_rdy; -   wire ll_dst_rdy = ~ll_dst_rdy_n; - -   wire   f36_sof = f36_data[32]; -   wire   f36_eof = f36_data[33]; -   wire   f36_occ = f36_data[35:34]; -   wire advance, end_early; -   reg [1:0] state; -   assign debug    = {29'b0,state}; - -   always @(posedge clk) -     if(reset) -       state 	  <= 0; -     else -       if(advance) -	 if(ll_eof) -	   state  <= 0; -	 else -	   state  <= state + 1; - -   always @* -     case(state) -       0 : ll_data = f36_data[31:24]; -       1 : ll_data = f36_data[23:16]; -       2 : ll_data = f36_data[15:8]; -       3 : ll_data = f36_data[7:0]; -       default : ll_data = f36_data[31:24]; -       endcase // case (state) -    -   assign ll_sof 	 = (state==0) & f36_sof; -   assign ll_eof 	 = f36_eof & (((state==0)&(f36_occ==1)) | -			       ((state==1)&(f36_occ==2)) | -			       ((state==2)&(f36_occ==3)) | -			       (state==3)); -    -   assign ll_src_rdy 	 = f36_src_rdy_i; - -   assign advance 	 = ll_src_rdy & ll_dst_rdy; -   assign f36_dst_rdy_o  = advance & ((state==3)|ll_eof); -   assign debug 	 = state; -    -endmodule // ll8_to_fifo36 diff --git a/control_lib/newfifo/fifo_2clock.v b/control_lib/newfifo/fifo_2clock.v deleted file mode 100644 index 34c85ccb4..000000000 --- a/control_lib/newfifo/fifo_2clock.v +++ /dev/null @@ -1,117 +0,0 @@ - -// FIXME ignores the AWIDTH (fifo size) parameter - -module fifo_2clock -  #(parameter WIDTH=36, SIZE=6) -   (input wclk, input [WIDTH-1:0] datain, input src_rdy_i, output dst_rdy_o, output [15:0] space, -    input rclk, output [WIDTH-1:0] dataout, output src_rdy_o, input dst_rdy_i, output [15:0] occupied, -    input arst); -    -   wire [SIZE:0] level_rclk, level_wclk; // xilinx adds an extra bit if you ask for accurate levels -   wire 	 full, empty, write, read; - -   assign dst_rdy_o  = ~full; -   assign src_rdy_o  = ~empty; -   assign write      = src_rdy_i & dst_rdy_o; -   assign read 	     = src_rdy_o & dst_rdy_i; - -   generate -      if(WIDTH==36) -	if(SIZE==9) -	  fifo_xlnx_512x36_2clk fifo_xlnx_512x36_2clk -	       (.rst(arst), -		.wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk), -		.rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) ); -	else if(SIZE==11) -	  fifo_xlnx_2Kx36_2clk fifo_xlnx_2Kx36_2clk  -		     (.rst(arst), -		      .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk), -		      .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) ); -	else if(SIZE==6) -	  fifo_xlnx_64x36_2clk fifo_xlnx_64x36_2clk  -		     (.rst(arst), -		      .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk), -		      .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) ); -	else -	  fifo_xlnx_512x36_2clk fifo_xlnx_512x36_2clk -	       (.rst(arst), -		.wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk), -		.rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) ); -      else if((WIDTH==19)|(WIDTH==18)) -	if(SIZE==4) -	  fifo_xlnx_16x19_2clk fifo_xlnx_16x19_2clk -		     (.rst(arst), -		      .wr_clk(wclk),.din(datain),.full(full),.wr_en(write),.wr_data_count(level_wclk), -		      .rd_clk(rclk),.dout(dataout),.empty(empty),.rd_en(read),.rd_data_count(level_rclk) ); -   endgenerate -    -   assign occupied  = {{(16-SIZE-1){1'b0}},level_rclk}; -   assign space     = ((1<<SIZE)+1)-level_wclk; -    -endmodule // fifo_2clock - -/* -`else -   // ISE sucks, so the following doesn't work properly - -   reg [AWIDTH-1:0] wr_addr, rd_addr; -   wire [AWIDTH-1:0] wr_addr_rclk, rd_addr_wclk; -   wire [AWIDTH-1:0] next_rd_addr; -   wire 	    enb_read; -    -   // Write side management -   wire [AWIDTH-1:0] next_wr_addr = wr_addr + 1; -   always @(posedge wclk or posedge arst) -     if(arst) -       wr_addr <= 0; -     else if(write) -       wr_addr <= next_wr_addr; -   assign 	    full = (next_wr_addr == rd_addr_wclk); - -   //  RAM for data storage.  Data out is registered, complicating the -   //     read side logic -   ram_2port #(.DWIDTH(DWIDTH),.AWIDTH(AWIDTH)) mac_rx_ff_ram -     (.clka(wclk),.ena(1'b1),.wea(write),.addra(wr_addr),.dia(datain),.doa(), -      .clkb(rclk),.enb(enb_read),.web(1'b0),.addrb(next_rd_addr),.dib(0),.dob(dataout) ); - -   // Read side management -   reg 		    data_valid; -   assign 	    empty = ~data_valid; -   assign 	    next_rd_addr = rd_addr + data_valid; -   assign 	    enb_read = read | ~data_valid; - -   always @(posedge rclk or posedge arst) -     if(arst) -       rd_addr <= 0; -     else if(read) -       rd_addr <= rd_addr + 1; - -   always @(posedge rclk or posedge arst) -     if(arst) -       data_valid <= 0; -     else -       if(read & (next_rd_addr == wr_addr_rclk)) -	 data_valid <= 0; -       else if(next_rd_addr != wr_addr_rclk) -	 data_valid <= 1; -	  -   // Send pointers across clock domains via gray code -   gray_send #(.WIDTH(AWIDTH)) send_wr_addr -     (.clk_in(wclk),.addr_in(wr_addr), -      .clk_out(rclk),.addr_out(wr_addr_rclk) ); -    -   gray_send #(.WIDTH(AWIDTH)) send_rd_addr -     (.clk_in(rclk),.addr_in(rd_addr), -      .clk_out(wclk),.addr_out(rd_addr_wclk) ); - -   // Generate fullness info, these are approximate and may be delayed  -   // and are only for higher-level flow control.   -   // Only full and empty are guaranteed exact. -   always @(posedge wclk)  -     level_wclk <= wr_addr - rd_addr_wclk; -   always @(posedge rclk)  -     level_rclk <= wr_addr_rclk - rd_addr; -`endif -endmodule // fifo_2clock - -*/ diff --git a/control_lib/newfifo/fifo_2clock_cascade.v b/control_lib/newfifo/fifo_2clock_cascade.v deleted file mode 100644 index 5ce726977..000000000 --- a/control_lib/newfifo/fifo_2clock_cascade.v +++ /dev/null @@ -1,35 +0,0 @@ - -module fifo_2clock_cascade -  #(parameter WIDTH=32, SIZE=9) -   (input wclk, input [WIDTH-1:0] datain, input src_rdy_i, output dst_rdy_o, output [15:0] space, -    input rclk, output [WIDTH-1:0] dataout, output src_rdy_o, input dst_rdy_i, output [15:0] occupied, -    input arst); -    -   wire [WIDTH-1:0] data_int1, data_int2; -   wire 	    src_rdy_int1, src_rdy_int2, dst_rdy_int1, dst_rdy_int2; -   wire [SIZE-1:0]  level_wclk, level_rclk; -   wire [4:0] 	    s1_space, s1_occupied, s2_space, s2_occupied; -   wire [15:0] 	    l_space, l_occupied; -    -   fifo_short #(.WIDTH(WIDTH)) shortfifo -     (.clk(wclk), .reset(arst), .clear(0), -      .datain(datain), .src_rdy_i(src_rdy_i), .dst_rdy_o(dst_rdy_o), -      .dataout(data_int1), .src_rdy_o(src_rdy_int1), .dst_rdy_i(dst_rdy_int1), -      .space(s1_space), .occupied(s1_occupied) ); -    -   fifo_2clock #(.WIDTH(WIDTH),.SIZE(SIZE)) fifo_2clock -     (.wclk(wclk), .datain(data_int1), .src_rdy_i(src_rdy_int1), .dst_rdy_o(dst_rdy_int1), .space(l_space), -      .rclk(rclk), .dataout(data_int2), .src_rdy_o(src_rdy_int2), .dst_rdy_i(dst_rdy_int2), .occupied(l_occupied), -      .arst(arst) ); -    -   fifo_short #(.WIDTH(WIDTH)) shortfifo2 -     (.clk(rclk), .reset(arst), .clear(0), -      .datain(data_int2), .src_rdy_i(src_rdy_int2), .dst_rdy_o(dst_rdy_int2), -      .dataout(dataout), .src_rdy_o(src_rdy_o), .dst_rdy_i(dst_rdy_i), -      .space(s2_space), .occupied(s2_occupied)); - -   // Be conservative -- Only advertise space from input side of fifo, occupied from output side -   assign 	    space = {11'b0,s1_space} + l_space; -   assign 	    occupied = {11'b0,s2_occupied} + l_occupied; -    -endmodule // fifo_2clock_cascade diff --git a/control_lib/newfifo/fifo_cascade.v b/control_lib/newfifo/fifo_cascade.v deleted file mode 100644 index fdd8449bc..000000000 --- a/control_lib/newfifo/fifo_cascade.v +++ /dev/null @@ -1,52 +0,0 @@ - - -// This FIFO exists to provide an intermediate point for the data on its -// long trek from one RAM (in the buffer pool) to another (in the longfifo) -// The shortfifo is more flexible in its placement since it is based on -// distributed RAM - -// This one has the shortfifo on both the in and out sides. -module fifo_cascade -  #(parameter WIDTH=32, SIZE=9) -    (input clk, input reset, input clear, -     input [WIDTH-1:0] datain, -     input src_rdy_i, -     output dst_rdy_o, -     output [WIDTH-1:0] dataout, -     output src_rdy_o, -     input dst_rdy_i, -     output [15:0] space, -     output [15:0] occupied); - -   wire [WIDTH-1:0] data_int, data_int2; -   wire src_rdy_1, dst_rdy_1, src_rdy_2, dst_rdy_2; -    -   wire [4:0] 	    s1_space, s1_occupied, s2_space, s2_occupied; -   wire [15:0] 	    l_space, l_occupied; -    -   fifo_short #(.WIDTH(WIDTH)) head_fifo -     (.clk(clk),.reset(reset),.clear(clear), -      .datain(datain), .src_rdy_i(src_rdy_i), .dst_rdy_o(dst_rdy_o), -      .dataout(data_int), .src_rdy_o(src_rdy_1), .dst_rdy_i(dst_rdy_1), -      .space(s1_space),.occupied(s1_occupied) ); -       -   fifo_long #(.WIDTH(WIDTH),.SIZE(SIZE)) middle_fifo -     (.clk(clk),.reset(reset),.clear(clear), -      .datain(data_int), .src_rdy_i(src_rdy_1), .dst_rdy_o(dst_rdy_1), -      .dataout(data_int2), .src_rdy_o(src_rdy_2), .dst_rdy_i(dst_rdy_2), -      .space(l_space),.occupied(l_occupied) ); -    -   fifo_short #(.WIDTH(WIDTH)) tail_fifo -     (.clk(clk),.reset(reset),.clear(clear), -      .datain(data_int2), .src_rdy_i(src_rdy_2), .dst_rdy_o(dst_rdy_2), -      .dataout(dataout), .src_rdy_o(src_rdy_o), .dst_rdy_i(dst_rdy_i), -      .space(s2_space),.occupied(s2_occupied) ); -    -   assign 	    space = {11'b0,s1_space} + {11'b0,s2_space} + l_space; -   assign 	    occupied = {11'b0,s1_occupied} + {11'b0,s2_occupied} + l_occupied; -       -endmodule // cascadefifo2 - - - - diff --git a/control_lib/newfifo/fifo_long.v b/control_lib/newfifo/fifo_long.v deleted file mode 100644 index 0426779f6..000000000 --- a/control_lib/newfifo/fifo_long.v +++ /dev/null @@ -1,148 +0,0 @@ - -// FIFO intended to be interchangeable with shortfifo, but -//  based on block ram instead of SRL16's -//  only one clock domain - -// Port A is write port, Port B is read port - -module fifo_long -  #(parameter WIDTH=32, SIZE=9) -   (input clk, input reset, input clear, -    input [WIDTH-1:0] datain, -    input src_rdy_i, -    output dst_rdy_o, -    output [WIDTH-1:0] dataout, -    output src_rdy_o, -    input dst_rdy_i, -     -    output reg [15:0] space, -    output reg [15:0] occupied); -    -   wire write 	     = src_rdy_i & dst_rdy_o; -   wire read 	     = dst_rdy_i & src_rdy_o; -   wire full, empty; -    -   assign dst_rdy_o  = ~full; -   assign src_rdy_o  = ~empty; -    -   // Read side states -   localparam 	  EMPTY = 0; -   localparam 	  PRE_READ = 1; -   localparam 	  READING = 2; - -   reg [SIZE-1:0] wr_addr, rd_addr; -   reg [1:0] 	  read_state; - -   reg 	  empty_reg, full_reg; -   always @(posedge clk) -     if(reset) -       wr_addr <= 0; -     else if(clear) -       wr_addr <= 0; -     else if(write) -       wr_addr <= wr_addr + 1; - -   ram_2port #(.DWIDTH(WIDTH),.AWIDTH(SIZE)) -     ram (.clka(clk), -	  .ena(1'b1), -	  .wea(write), -	  .addra(wr_addr), -	  .dia(datain), -	  .doa(), - -	  .clkb(clk), -	  .enb((read_state==PRE_READ)|read), -	  .web(0), -	  .addrb(rd_addr), -	  .dib(0), -	  .dob(dataout)); - -   always @(posedge clk) -     if(reset) -       begin -	  read_state <= EMPTY; -	  rd_addr <= 0; -	  empty_reg <= 1; -       end -     else -       if(clear) -	 begin -	    read_state <= EMPTY; -	    rd_addr <= 0; -	    empty_reg <= 1; -	 end -       else  -	 case(read_state) -	   EMPTY : -	     if(write) -	       begin -		  //rd_addr <= wr_addr; -		  read_state <= PRE_READ; -	       end -	   PRE_READ : -	     begin -		read_state <= READING; -		empty_reg <= 0; -		rd_addr <= rd_addr + 1; -	     end -	    -	   READING : -	     if(read) -	       if(rd_addr == wr_addr) -		 begin -		    empty_reg <= 1; -		    if(write) -		      read_state <= PRE_READ; -		    else -		      read_state <= EMPTY; -		 end -	       else -		 rd_addr <= rd_addr + 1; -	 endcase // case(read_state) - -   wire [SIZE-1:0] dont_write_past_me = rd_addr - 3; -   wire 	   becoming_full = wr_addr == dont_write_past_me; -      -   always @(posedge clk) -     if(reset) -       full_reg <= 0; -     else if(clear) -       full_reg <= 0; -     else if(read & ~write) -       full_reg <= 0; -     //else if(write & ~read & (wr_addr == (rd_addr-3))) -     else if(write & ~read & becoming_full) -       full_reg <= 1; - -   //assign empty = (read_state != READING); -   assign empty = empty_reg; - -   // assign full = ((rd_addr - 1) == wr_addr); -   assign full = full_reg; - -   ////////////////////////////////////////////// -   // space and occupied are for diagnostics only -   // not guaranteed exact - -   localparam NUMLINES = (1<<SIZE)-2; -   always @(posedge clk) -     if(reset) -       space <= NUMLINES; -     else if(clear) -       space <= NUMLINES; -     else if(read & ~write) -       space <= space + 1; -     else if(write & ~read) -       space <= space - 1; -    -   always @(posedge clk) -     if(reset) -       occupied <= 0; -     else if(clear) -       occupied <= 0; -     else if(read & ~write) -       occupied <= occupied - 1; -     else if(write & ~read) -       occupied <= occupied + 1; -    -endmodule // fifo_long diff --git a/control_lib/newfifo/fifo_new_tb.vcd b/control_lib/newfifo/fifo_new_tb.vcd deleted file mode 100644 index 796889e7d..000000000 --- a/control_lib/newfifo/fifo_new_tb.vcd +++ /dev/null @@ -1,5506 +0,0 @@ -$date -	Thu Mar 19 17:21:11 2009 -$end -$version -	Icarus Verilog -$end -$timescale -	1ps -$end -$scope module fifo_new_tb $end -$var wire 1 ! dst_rdy_f36i $end -$var wire 36 " f36_in [35:0] $end -$var wire 36 # i1 [35:0] $end -$var wire 1 $ i1_dr $end -$var wire 1 % i1_sr $end -$var wire 19 & i2 [18:0] $end -$var wire 1 ' i2_dr $end -$var wire 1 ( i2_sr $end -$var wire 19 ) i3 [18:0] $end -$var wire 1 * i3_dr $end -$var wire 1 + i3_sr $end -$var wire 36 , i4 [35:0] $end -$var wire 1 - i4_sr $end -$var wire 8 . ll_data [7:0] $end -$var wire 1 / ll_dst_rdy_n $end -$var wire 1 0 ll_eof_n $end -$var wire 1 1 ll_sof_n $end -$var wire 1 2 ll_src_rdy_n $end -$var reg 1 3 clear $end -$var reg 1 4 clk $end -$var reg 16 5 count [15:0] $end -$var reg 1 6 dst_rdy_f36o $end -$var reg 32 7 f36_data [31:0] $end -$var reg 1 8 f36_eof $end -$var reg 2 9 f36_occ [1:0] $end -$var reg 1 : f36_sof $end -$var reg 1 ; i4_dr $end -$var reg 1 < rst $end -$var reg 1 = src_rdy_f36i $end -$scope module fifo_short1 $end -$var wire 1 > clear $end -$var wire 1 ? clk $end -$var wire 36 @ datain [35:0] $end -$var wire 36 A dataout [35:0] $end -$var wire 1 $ dst_rdy_i $end -$var wire 1 ! dst_rdy_o $end -$var wire 1 B read $end -$var wire 1 C reset $end -$var wire 1 D src_rdy_i $end -$var wire 1 % src_rdy_o $end -$var wire 1 E write $end -$var reg 4 F a [3:0] $end -$var reg 1 G empty $end -$var reg 1 H full $end -$var reg 5 I occupied [4:0] $end -$var reg 5 J space [4:0] $end -$scope begin gen_srl16[0] $end -$scope module srl16e $end -$var wire 1 K A0 $end -$var wire 1 L A1 $end -$var wire 1 M A2 $end -$var wire 1 N A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 O D $end -$var wire 1 P Q $end -$var reg 16 Q data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[1] $end -$scope module srl16e $end -$var wire 1 R A0 $end -$var wire 1 S A1 $end -$var wire 1 T A2 $end -$var wire 1 U A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 V D $end -$var wire 1 W Q $end -$var reg 16 X data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[2] $end -$scope module srl16e $end -$var wire 1 Y A0 $end -$var wire 1 Z A1 $end -$var wire 1 [ A2 $end -$var wire 1 \ A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 ] D $end -$var wire 1 ^ Q $end -$var reg 16 _ data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[3] $end -$scope module srl16e $end -$var wire 1 ` A0 $end -$var wire 1 a A1 $end -$var wire 1 b A2 $end -$var wire 1 c A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 d D $end -$var wire 1 e Q $end -$var reg 16 f data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[4] $end -$scope module srl16e $end -$var wire 1 g A0 $end -$var wire 1 h A1 $end -$var wire 1 i A2 $end -$var wire 1 j A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 k D $end -$var wire 1 l Q $end -$var reg 16 m data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[5] $end -$scope module srl16e $end -$var wire 1 n A0 $end -$var wire 1 o A1 $end -$var wire 1 p A2 $end -$var wire 1 q A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 r D $end -$var wire 1 s Q $end -$var reg 16 t data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[6] $end -$scope module srl16e $end -$var wire 1 u A0 $end -$var wire 1 v A1 $end -$var wire 1 w A2 $end -$var wire 1 x A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 y D $end -$var wire 1 z Q $end -$var reg 16 { data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[7] $end -$scope module srl16e $end -$var wire 1 | A0 $end -$var wire 1 } A1 $end -$var wire 1 ~ A2 $end -$var wire 1 !" A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 "" D $end -$var wire 1 #" Q $end -$var reg 16 $" data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[8] $end -$scope module srl16e $end -$var wire 1 %" A0 $end -$var wire 1 &" A1 $end -$var wire 1 '" A2 $end -$var wire 1 (" A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 )" D $end -$var wire 1 *" Q $end -$var reg 16 +" data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[9] $end -$scope module srl16e $end -$var wire 1 ," A0 $end -$var wire 1 -" A1 $end -$var wire 1 ." A2 $end -$var wire 1 /" A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 0" D $end -$var wire 1 1" Q $end -$var reg 16 2" data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[10] $end -$scope module srl16e $end -$var wire 1 3" A0 $end -$var wire 1 4" A1 $end -$var wire 1 5" A2 $end -$var wire 1 6" A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 7" D $end -$var wire 1 8" Q $end -$var reg 16 9" data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[11] $end -$scope module srl16e $end -$var wire 1 :" A0 $end -$var wire 1 ;" A1 $end -$var wire 1 <" A2 $end -$var wire 1 =" A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 >" D $end -$var wire 1 ?" Q $end -$var reg 16 @" data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[12] $end -$scope module srl16e $end -$var wire 1 A" A0 $end -$var wire 1 B" A1 $end -$var wire 1 C" A2 $end -$var wire 1 D" A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 E" D $end -$var wire 1 F" Q $end -$var reg 16 G" data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[13] $end -$scope module srl16e $end -$var wire 1 H" A0 $end -$var wire 1 I" A1 $end -$var wire 1 J" A2 $end -$var wire 1 K" A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 L" D $end -$var wire 1 M" Q $end -$var reg 16 N" data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[14] $end -$scope module srl16e $end -$var wire 1 O" A0 $end -$var wire 1 P" A1 $end -$var wire 1 Q" A2 $end -$var wire 1 R" A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 S" D $end -$var wire 1 T" Q $end -$var reg 16 U" data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[15] $end -$scope module srl16e $end -$var wire 1 V" A0 $end -$var wire 1 W" A1 $end -$var wire 1 X" A2 $end -$var wire 1 Y" A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 Z" D $end -$var wire 1 [" Q $end -$var reg 16 \" data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[16] $end -$scope module srl16e $end -$var wire 1 ]" A0 $end -$var wire 1 ^" A1 $end -$var wire 1 _" A2 $end -$var wire 1 `" A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 a" D $end -$var wire 1 b" Q $end -$var reg 16 c" data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[17] $end -$scope module srl16e $end -$var wire 1 d" A0 $end -$var wire 1 e" A1 $end -$var wire 1 f" A2 $end -$var wire 1 g" A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 h" D $end -$var wire 1 i" Q $end -$var reg 16 j" data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[18] $end -$scope module srl16e $end -$var wire 1 k" A0 $end -$var wire 1 l" A1 $end -$var wire 1 m" A2 $end -$var wire 1 n" A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 o" D $end -$var wire 1 p" Q $end -$var reg 16 q" data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[19] $end -$scope module srl16e $end -$var wire 1 r" A0 $end -$var wire 1 s" A1 $end -$var wire 1 t" A2 $end -$var wire 1 u" A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 v" D $end -$var wire 1 w" Q $end -$var reg 16 x" data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[20] $end -$scope module srl16e $end -$var wire 1 y" A0 $end -$var wire 1 z" A1 $end -$var wire 1 {" A2 $end -$var wire 1 |" A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 }" D $end -$var wire 1 ~" Q $end -$var reg 16 !# data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[21] $end -$scope module srl16e $end -$var wire 1 "# A0 $end -$var wire 1 ## A1 $end -$var wire 1 $# A2 $end -$var wire 1 %# A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 &# D $end -$var wire 1 '# Q $end -$var reg 16 (# data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[22] $end -$scope module srl16e $end -$var wire 1 )# A0 $end -$var wire 1 *# A1 $end -$var wire 1 +# A2 $end -$var wire 1 ,# A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 -# D $end -$var wire 1 .# Q $end -$var reg 16 /# data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[23] $end -$scope module srl16e $end -$var wire 1 0# A0 $end -$var wire 1 1# A1 $end -$var wire 1 2# A2 $end -$var wire 1 3# A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 4# D $end -$var wire 1 5# Q $end -$var reg 16 6# data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[24] $end -$scope module srl16e $end -$var wire 1 7# A0 $end -$var wire 1 8# A1 $end -$var wire 1 9# A2 $end -$var wire 1 :# A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 ;# D $end -$var wire 1 <# Q $end -$var reg 16 =# data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[25] $end -$scope module srl16e $end -$var wire 1 ># A0 $end -$var wire 1 ?# A1 $end -$var wire 1 @# A2 $end -$var wire 1 A# A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 B# D $end -$var wire 1 C# Q $end -$var reg 16 D# data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[26] $end -$scope module srl16e $end -$var wire 1 E# A0 $end -$var wire 1 F# A1 $end -$var wire 1 G# A2 $end -$var wire 1 H# A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 I# D $end -$var wire 1 J# Q $end -$var reg 16 K# data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[27] $end -$scope module srl16e $end -$var wire 1 L# A0 $end -$var wire 1 M# A1 $end -$var wire 1 N# A2 $end -$var wire 1 O# A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 P# D $end -$var wire 1 Q# Q $end -$var reg 16 R# data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[28] $end -$scope module srl16e $end -$var wire 1 S# A0 $end -$var wire 1 T# A1 $end -$var wire 1 U# A2 $end -$var wire 1 V# A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 W# D $end -$var wire 1 X# Q $end -$var reg 16 Y# data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[29] $end -$scope module srl16e $end -$var wire 1 Z# A0 $end -$var wire 1 [# A1 $end -$var wire 1 \# A2 $end -$var wire 1 ]# A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 ^# D $end -$var wire 1 _# Q $end -$var reg 16 `# data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[30] $end -$scope module srl16e $end -$var wire 1 a# A0 $end -$var wire 1 b# A1 $end -$var wire 1 c# A2 $end -$var wire 1 d# A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 e# D $end -$var wire 1 f# Q $end -$var reg 16 g# data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[31] $end -$scope module srl16e $end -$var wire 1 h# A0 $end -$var wire 1 i# A1 $end -$var wire 1 j# A2 $end -$var wire 1 k# A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 l# D $end -$var wire 1 m# Q $end -$var reg 16 n# data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[32] $end -$scope module srl16e $end -$var wire 1 o# A0 $end -$var wire 1 p# A1 $end -$var wire 1 q# A2 $end -$var wire 1 r# A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 s# D $end -$var wire 1 t# Q $end -$var reg 16 u# data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[33] $end -$scope module srl16e $end -$var wire 1 v# A0 $end -$var wire 1 w# A1 $end -$var wire 1 x# A2 $end -$var wire 1 y# A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 z# D $end -$var wire 1 {# Q $end -$var reg 16 |# data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[34] $end -$scope module srl16e $end -$var wire 1 }# A0 $end -$var wire 1 ~# A1 $end -$var wire 1 !$ A2 $end -$var wire 1 "$ A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 #$ D $end -$var wire 1 $$ Q $end -$var reg 16 %$ data [15:0] $end -$upscope $end -$upscope $end -$scope begin gen_srl16[35] $end -$scope module srl16e $end -$var wire 1 &$ A0 $end -$var wire 1 '$ A1 $end -$var wire 1 ($ A2 $end -$var wire 1 )$ A3 $end -$var wire 1 E CE $end -$var wire 1 ? CLK $end -$var wire 1 *$ D $end -$var wire 1 +$ Q $end -$var reg 16 ,$ data [15:0] $end -$upscope $end -$upscope $end -$upscope $end -$scope module fifo36_to_fifo19 $end -$var wire 1 > clear $end -$var wire 1 ? clk $end -$var wire 19 -$ f19_dataout [18:0] $end -$var wire 1 ' f19_dst_rdy_i $end -$var wire 1 ( f19_src_rdy_o $end -$var wire 1 .$ f19_xfer $end -$var wire 36 /$ f36_datain [35:0] $end -$var wire 1 $ f36_dst_rdy_o $end -$var wire 1 0$ f36_eof $end -$var wire 1 1$ f36_occ $end -$var wire 1 2$ f36_sof $end -$var wire 1 % f36_src_rdy_i $end -$var wire 1 3$ f36_xfer $end -$var wire 1 4$ half_line $end -$var wire 1 C reset $end -$var reg 1 5$ phase $end -$upscope $end -$scope module fifo19_to_ll8 $end -$var wire 1 6$ advance $end -$var wire 1 > clear $end -$var wire 1 ? clk $end -$var wire 19 7$ f19_data [18:0] $end -$var wire 1 ' f19_dst_rdy_o $end -$var wire 1 8$ f19_eof $end -$var wire 1 9$ f19_occ $end -$var wire 1 :$ f19_sof $end -$var wire 1 ( f19_src_rdy_i $end -$var wire 1 ;$ ll_dst_rdy $end -$var wire 1 / ll_dst_rdy_n $end -$var wire 1 <$ ll_eof $end -$var wire 1 0 ll_eof_n $end -$var wire 1 =$ ll_sof $end -$var wire 1 1 ll_sof_n $end -$var wire 1 >$ ll_src_rdy $end -$var wire 1 2 ll_src_rdy_n $end -$var wire 1 C reset $end -$var reg 8 ?$ ll_data [7:0] $end -$var reg 1 @$ state $end -$upscope $end -$scope module ll8_to_fifo19 $end -$var wire 1 > clear $end -$var wire 1 ? clk $end -$var wire 19 A$ f19_data [18:0] $end -$var wire 1 * f19_dst_rdy_i $end -$var wire 1 + f19_src_rdy_o $end -$var wire 8 B$ ll_data [7:0] $end -$var wire 1 C$ ll_dst_rdy $end -$var wire 1 / ll_dst_rdy_n $end -$var wire 1 D$ ll_eof $end -$var wire 1 0 ll_eof_n $end -$var wire 1 E$ ll_sof $end -$var wire 1 1 ll_sof_n $end -$var wire 1 F$ ll_src_rdy $end -$var wire 1 2 ll_src_rdy_n $end -$var wire 1 C reset $end -$var wire 1 G$ xfer_out $end -$var reg 8 H$ dat0 [7:0] $end -$var reg 8 I$ dat1 [7:0] $end -$var reg 1 J$ f19_eof $end -$var reg 1 K$ f19_occ $end -$var reg 1 L$ f19_sof $end -$var reg 2 M$ state [1:0] $end -$upscope $end -$scope module fifo19_to_fifo36 $end -$var wire 1 > clear $end -$var wire 1 ? clk $end -$var wire 19 N$ f19_datain [18:0] $end -$var wire 1 * f19_dst_rdy_o $end -$var wire 1 O$ f19_eof $end -$var wire 1 P$ f19_occ $end -$var wire 1 Q$ f19_sof $end -$var wire 1 + f19_src_rdy_i $end -$var wire 36 R$ f36_dataout [35:0] $end -$var wire 1 S$ f36_dst_rdy_i $end -$var wire 1 - f36_src_rdy_o $end -$var wire 1 C reset $end -$var wire 1 T$ xfer_out $end -$var reg 16 U$ dat0 [15:0] $end -$var reg 16 V$ dat1 [15:0] $end -$var reg 1 W$ f36_eof $end -$var reg 1 X$ f36_occ $end -$var reg 1 Y$ f36_sof $end -$var reg 2 Z$ state [1:0] $end -$upscope $end -$scope task PutPacketInFIFO36 $end -$var reg 32 [$ data_len [31:0] $end -$var reg 32 \$ data_start [31:0] $end -$upscope $end -$scope task ReadFromFIFO36 $end -$upscope $end -$upscope $end -$enddefinitions $end -#0 -$dumpvars -bx \$ -bx [$ -bx Z$ -xY$ -xX$ -xW$ -bx V$ -bx U$ -0T$ -0S$ -b0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx R$ -xQ$ -xP$ -xO$ -bx N$ -bx M$ -xL$ -xK$ -xJ$ -bx I$ -bx H$ -xG$ -xF$ -xE$ -xD$ -xC$ -bx B$ -bx A$ -x@$ -bx ?$ -x>$ -x=$ -x<$ -x;$ -x:$ -x9$ -x8$ -bx 7$ -x6$ -x5$ -x4$ -x3$ -x2$ -x1$ -x0$ -bx /$ -x.$ -bx -$ -b0 ,$ -x+$ -0*$ -x)$ -x($ -x'$ -x&$ -b0 %$ -x$$ -0#$ -x"$ -x!$ -x~# -x}# -b0 |# -x{# -0z# -xy# -xx# -xw# -xv# -b0 u# -xt# -0s# -xr# -xq# -xp# -xo# -b0 n# -xm# -0l# -xk# -xj# -xi# -xh# -b0 g# -xf# -0e# -xd# -xc# -xb# -xa# -b0 `# -x_# -0^# -x]# -x\# -x[# -xZ# -b0 Y# -xX# -0W# -xV# -xU# -xT# -xS# -b0 R# -xQ# -0P# -xO# -xN# -xM# -xL# -b0 K# -xJ# -0I# -xH# -xG# -xF# -xE# -b0 D# -xC# -0B# -xA# -x@# -x?# -x># -b0 =# -x<# -0;# -x:# -x9# -x8# -x7# -b0 6# -x5# -04# -x3# -x2# -x1# -x0# -b0 /# -x.# -0-# -x,# -x+# -x*# -x)# -b0 (# -x'# -0&# -x%# -x$# -x## -x"# -b0 !# -x~" -0}" -x|" -x{" -xz" -xy" -b0 x" -xw" -0v" -xu" -xt" -xs" -xr" -b0 q" -xp" -0o" -xn" -xm" -xl" -xk" -b0 j" -xi" -0h" -xg" -xf" -xe" -xd" -b0 c" -xb" -0a" -x`" -x_" -x^" -x]" -b0 \" -x[" -0Z" -xY" -xX" -xW" -xV" -b0 U" -xT" -0S" -xR" -xQ" -xP" -xO" -b0 N" -xM" -0L" -xK" -xJ" -xI" -xH" -b0 G" -xF" -0E" -xD" -xC" -xB" -xA" -b0 @" -x?" -0>" -x=" -x<" -x;" -x:" -b0 9" -x8" -07" -x6" -x5" -x4" -x3" -b0 2" -x1" -00" -x/" -x." -x-" -x," -b0 +" -x*" -0)" -x(" -x'" -x&" -x%" -b0 $" -x#" -0"" -x!" -x~ -x} -x| -b0 { -xz -0y -xx -xw -xv -xu -b0 t -xs -0r -xq -xp -xo -xn -b0 m -xl -0k -xj -xi -xh -xg -b0 f -xe -0d -xc -xb -xa -x` -b0 _ -x^ -0] -x\ -x[ -xZ -xY -b0 X -xW -0V -xU -xT -xS -xR -b0 Q -xP -0O -xN -xM -xL -xK -bx J -bx I -xH -xG -bx F -0E -0D -1C -xB -bx A -b0 @ -0? -0> -0= -1< -0; -0: -b0 9 -08 -b0 7 -06 -bx 5 -04 -03 -x2 -x1 -x0 -x/ -bx . -x- -b0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx , -x+ -x* -bx ) -x( -x' -bx & -x% -x$ -bx # -b0 " -x! -$end -#50000000000000 -0D$ -10 -0E$ -0<$ -11 -08$ -09$ -0=$ -0$ -b0 ?$ -b0 . -b0 B$ -0:$ -0' -0F$ -04$ -01$ -b0 & -b0 -$ -b0 7$ -1;$ -0.$ -06$ -12 -03$ -0B -02$ -00$ -0/ -1! -0>$ -0( -0% -0K -0P -0L -0M -0N -0R -0W -0S -0T -0U -0Y -0^ -0Z -0[ -0\ -0` -0e -0a -0b -0c -0g -0l -0h -0i -0j -0n -0s -0o -0p -0q -0u -0z -0v -0w -0x -0| -0#" -0} -0~ -0!" -0%" -0*" -0&" -0'" -0(" -0," -01" -0-" -0." -0/" -03" -08" -04" -05" -06" -0:" -0?" -0;" -0<" -0=" -0A" -0F" -0B" -0C" -0D" -0H" -0M" -0I" -0J" -0K" -0O" -0T" -0P" -0Q" -0R" -0V" -0[" -0W" -0X" -0Y" -0]" -0b" -0^" -0_" -0`" -0d" -0i" -0e" -0f" -0g" -0k" -0p" -0l" -0m" -0n" -0r" -0w" -0s" -0t" -0u" -0y" -0~" -0z" -0{" -0|" -0"# -0'# -0## -0$# -0%# -0)# -0.# -0*# -0+# -0,# -00# -05# -01# -02# -03# -07# -0<# -08# -09# -0:# -0># -0C# -0?# -0@# -0A# -0E# -0J# -0F# -0G# -0H# -0L# -0Q# -0M# -0N# -0O# -0S# -0X# -0T# -0U# -0V# -0Z# -0_# -0[# -0\# -0]# -0a# -0f# -0b# -0c# -0d# -0h# -0m# -0i# -0j# -0k# -0o# -0t# -0p# -0q# -0r# -0v# -0{# -0w# -0x# -0y# -0}# -0$$ -0~# -0!$ -0"$ -0&$ -0+$ -b0 # -b0 A -b0 /$ -0'$ -0($ -0)$ -0P$ -1C$ -0G$ -1* -0H -1G -b0 F -b10000 J -b0 I -05$ -0@$ -0K$ -b0xxxxxxxxxxxxxxxxxx ) -b0xxxxxxxxxxxxxxxxxx A$ -b0xxxxxxxxxxxxxxxxxx N$ -b0 M$ -0+ -0X$ -b0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx , -b0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx R$ -b0 Z$ -0- -14 -1? -#100000000000000 -04 -0? -#150000000000000 -14 -1? -#200000000000000 -04 -0? -#250000000000000 -14 -1? -#300000000000000 -04 -0? -#350000000000000 -14 -1? -#400000000000000 -04 -0? -#450000000000000 -14 -1? -#500000000000000 -04 -0? -#550000000000000 -14 -1? -#600000000000000 -04 -0? -#650000000000000 -14 -1? -#700000000000000 -04 -0? -#750000000000000 -14 -1? -#800000000000000 -04 -0? -#850000000000000 -14 -1? -#900000000000000 -04 -0? -#950000000000000 -14 -1? -#1000000000000000 -04 -0? -0< -0C -#1050000000000000 -14 -1? -#1100000000000000 -04 -0? -#1150000000000000 -1k -1y -1"" -1S" -1Z" -1}" -1&# -14# -1^# -1l# -1s# -1E -1: -b10100000101100001100000011010000 7 -b110100000101100001100000011010000 " -b110100000101100001100000011010000 @ -1= -1D -b100 5 -b1100 [$ -b10100000101100001100000011010000 \$ -14 -1? -#1200000000000000 -04 -0? -#1250000000000000 -1F$ -16$ -02 -1>$ -1( -1% -1O -1)" -1a" -1;# -0s# -0G -b1111 J -b1 I -b1000 5 -b10100001101100011100000111010001 7 -0: -b10100001101100011100000111010001 " -b10100001101100011100000111010001 @ -14 -1? -#1250000000000100 -1E$ -01 -1=$ -b10100000 ?$ -b10100000 . -b10100000 B$ -1:$ -b11010000010110000 & -b11010000010110000 -$ -b11010000010110000 7$ -12$ -b1 m -1l -b1 { -1z -b1 $" -1#" -b1 U" -1T" -b1 \" -1[" -b1 !# -1~" -b1 (# -1'# -b1 6# -15# -b1 `# -1_# -b1 n# -1m# -b1 u# -1t# -b110100000101100001100000011010000 # -b110100000101100001100000011010000 A -b110100000101100001100000011010000 /$ -#1300000000000000 -04 -0? -#1350000000000000 -0E$ -0:$ -1.$ -11 -b0 & -b0 -$ -b0 7$ -1' -0=$ -02$ -0O -1V -0)" -10" -0a" -1h" -0;# -1B# -1z# -1Q$ -0O$ -b0 ?$ -b0 . -b0 B$ -1K -1R -1Y -1` -1g -0l -1n -1u -0z -1| -0#" -1%" -1," -13" -1:" -1A" -1H" -1O" -0T" -1V" -0[" -1]" -1d" -1k" -1r" -1y" -0~" -1"# -0'# -1)# -10# -05# -17# -1># -1E# -1L# -1S# -1Z# -0_# -1a# -1h# -0m# -1o# -0t# -b0 # -b0 A -b0 /$ -1v# -1}# -1&$ -18 -b10100010101100101100001011010010 7 -b1010100010101100101100001011010010 " -b1010100010101100101100001011010010 @ -b10100000 H$ -b1 M$ -0J$ -1L$ -b110100000xxxxxxxx ) -b110100000xxxxxxxx A$ -b110100000xxxxxxxx N$ -1@$ -b10 I -b1110 J -b1 F -14 -1? -#1350000000000100 -b10110000 ?$ -b10110000 . -b10110000 B$ -1:$ -b11010000010110000 & -b11010000010110000 -$ -b11010000010110000 7$ -12$ -b10 u# -1t# -b11 n# -1m# -b11 `# -1_# -b1 =# -b11 6# -15# -b11 (# -1'# -b11 !# -1~" -b1 c" -b11 \" -1[" -b11 U" -1T" -b1 +" -b11 $" -1#" -b11 { -1z -b11 m -1l -b110100000101100001100000011010000 # -b110100000101100001100000011010000 A -b110100000101100001100000011010000 /$ -b1 Q -#1351000000000000 -1; -1S$ -#1400000000000000 -04 -0? -#1450000000000000 -0E$ -0.$ -11 -02$ -0:$ -0' -0=$ -0K -1L -0R -1S -0Y -1Z -0` -1a -0g -1h -0l -0n -1o -0u -1v -0z -0| -1} -0#" -0%" -1&" -0," -1-" -03" -14" -0:" -1;" -0A" -1B" -0H" -1I" -0O" -1P" -0T" -0V" -1W" -0[" -0]" -1^" -0d" -1e" -0k" -1l" -0r" -1s" -0y" -1z" -0~" -0"# -1## -0'# -0)# -1*# -00# -11# -05# -07# -18# -0># -1?# -0E# -1F# -0L# -1M# -0S# -1T# -0Z# -1[# -0_# -0a# -1b# -0h# -1i# -0m# -0o# -1p# -0t# -b0 # -b0 A -b0 /$ -0v# -1w# -0}# -1~# -0&$ -1'$ -b0 & -b0 -$ -b0 7$ -b0 ?$ -b0 . -b0 B$ -1G$ -0E -0V -0k -0y -0"" -00" -0S" -0Z" -0h" -0}" -0&# -04# -0B# -0^# -0l# -0z# -b10 F -b1101 J -b11 I -15$ -0@$ -b10 M$ -1+ -b10110000 I$ -b11010000010110000 ) -b11010000010110000 A$ -b11010000010110000 N$ -0= -0D -b0 7 -08 -b0 " -b0 @ -14 -1? -#1450000000000100 -b11000000 ?$ -b11000000 . -b11000000 B$ -b1100000011010000 & -b1100000011010000 -$ -b1100000011010000 7$ -12$ -b10 Q -b1 X -b111 m -1l -b111 { -1z -b111 $" -1#" -b10 +" -b1 2" -b111 U" -1T" -b111 \" -1[" -b10 c" -b1 j" -b111 !# -1~" -b111 (# -1'# -b111 6# -15# -b10 =# -b1 D# -b111 `# -1_# -b111 n# -1m# -b100 u# -1t# -b110100000101100001100000011010000 # -b110100000101100001100000011010000 A -b110100000101100001100000011010000 /$ -b1 |# -#1500000000000000 -04 -0? -#1550000000000000 -13$ -1B -1.$ -1$ -1' -0G$ -0Q$ -b11010000 ?$ -b11010000 . -b11010000 B$ -b1010000010110000 U$ -b1 Z$ -0W$ -1Y$ -b11010000010110000xxxxxxxxxxxxxxxx , -b11010000010110000xxxxxxxxxxxxxxxx R$ -b11000000 H$ -b1 M$ -0+ -0L$ -b1100000010110000 ) -b1100000010110000 A$ -b1100000010110000 N$ -1@$ -14 -1? -#1600000000000000 -04 -0? -#1650000000000000 -0E$ -11 -0=$ -03$ -0B -0.$ -02$ -0:$ -0$ -0' -1K -1P -0L -1R -0S -0W -1Y -0Z -1` -0a -1g -0h -1n -0o -1u -0v -1| -0} -1%" -1*" -0&" -1," -0-" -01" -13" -04" -1:" -0;" -1A" -0B" -1H" -0I" -1O" -0P" -1V" -0W" -1]" -1b" -0^" -1d" -0e" -0i" -1k" -0l" -1r" -0s" -1y" -0z" -1"# -0## -1)# -0*# -10# -01# -17# -1<# -08# -1># -0?# -0C# -1E# -0F# -1L# -0M# -1S# -0T# -1Z# -0[# -1a# -0b# -1h# -0i# -1o# -0p# -0t# -1v# -0w# -0{# -b10100001101100011100000111010001 # -b10100001101100011100000111010001 A -b10100001101100011100000111010001 /$ -1}# -0~# -1&$ -0'$ -b1010000110110001 & -b1010000110110001 -$ -b1010000110110001 7$ -b10100001 ?$ -b10100001 . -b10100001 B$ -1G$ -b1 F -b1110 J -b10 I -05$ -0@$ -b10 M$ -1+ -b11010000 I$ -b1100000011010000 ) -b1100000011010000 A$ -b1100000011010000 N$ -14 -1? -#1700000000000000 -04 -0? -#1750000000000000 -1.$ -1' -1T$ -0G$ -b10110001 ?$ -b10110001 . -b10110001 B$ -b1100000011010000 V$ -b110100000101100001100000011010000 , -b110100000101100001100000011010000 R$ -b10 Z$ -1- -b10100001 H$ -b1010000111010000 ) -b1010000111010000 A$ -b1010000111010000 N$ -b1 M$ -0+ -1@$ -14 -1? -#1800000000000000 -04 -0? -#1850000000000000 -0.$ -0' -b1100000111010001 & -b1100000111010001 -$ -b1100000111010001 7$ -b11000001 ?$ -b11000001 . -b11000001 B$ -1G$ -0T$ -15$ -0@$ -b10 M$ -1+ -b10110001 I$ -b1010000110110001 ) -b1010000110110001 A$ -b1010000110110001 N$ -b0 Z$ -0- -14 -1? -#1900000000000000 -04 -0? -#1950000000000000 -13$ -1B -1.$ -1$ -1' -0G$ -b11010001 ?$ -b11010001 . -b11010001 B$ -b1010000110110001 U$ -b1 Z$ -0Y$ -b10100001101100011100000011010000 , -b10100001101100011100000011010000 R$ -b11000001 H$ -b1100000110110001 ) -b1100000110110001 A$ -b1100000110110001 N$ -b1 M$ -0+ -1@$ -14 -1? -#2000000000000000 -04 -0? -#2050000000000000 -03$ -0B -0.$ -10$ -0$ -0' -0K -0P -0R -1W -0Y -0` -0g -0n -0u -0| -0%" -0*" -0," -11" -03" -0:" -0A" -0H" -0O" -0V" -0]" -0b" -0d" -1i" -0k" -0r" -0y" -0"# -0)# -00# -07# -0<# -0># -1C# -0E# -0L# -0S# -0Z# -0a# -0h# -0o# -0v# -1{# -b1010100010101100101100001011010010 # -b1010100010101100101100001011010010 A -b1010100010101100101100001011010010 /$ -0}# -0&$ -b1010001010110010 & -b1010001010110010 -$ -b1010001010110010 7$ -b10100010 ?$ -b10100010 . -b10100010 B$ -1G$ -b0 F -b1111 J -b1 I -05$ -0@$ -b10 M$ -1+ -b11010001 I$ -b1100000111010001 ) -b1100000111010001 A$ -b1100000111010001 N$ -14 -1? -#2100000000000000 -04 -0? -#2150000000000000 -1.$ -1' -1T$ -0G$ -b10110010 ?$ -b10110010 . -b10110010 B$ -b1100000111010001 V$ -b10100001101100011100000111010001 , -b10100001101100011100000111010001 R$ -b10 Z$ -1- -b10100010 H$ -b1010001011010001 ) -b1010001011010001 A$ -b1010001011010001 N$ -b1 M$ -0+ -1@$ -14 -1? -#2200000000000000 -04 -0? -#2250000000000000 -0.$ -18$ -0' -b101100001011010010 & -b101100001011010010 -$ -b101100001011010010 7$ -b11000010 ?$ -b11000010 . -b11000010 B$ -1G$ -0T$ -15$ -0@$ -b10 M$ -1+ -b10110010 I$ -b1010001010110010 ) -b1010001010110010 A$ -b1010001010110010 N$ -b0 Z$ -0- -14 -1? -#2300000000000000 -04 -0? -#2350000000000000 -1D$ -13$ -1B -00 -1.$ -1$ -1<$ -1' -0G$ -b11010010 ?$ -b11010010 . -b11010010 B$ -b1010001010110010 U$ -b10100010101100101100000111010001 , -b10100010101100101100000111010001 R$ -b1 Z$ -b11000010 H$ -b1100001010110010 ) -b1100001010110010 A$ -b1100001010110010 N$ -b1 M$ -0+ -1@$ -14 -1? -#2400000000000000 -04 -0? -#2450000000000000 -0D$ -0' -0F$ -10 -0.$ -06$ -12 -03$ -0B -08$ -0$ -0<$ -0>$ -0( -0% -b1010001010110010 & -b1010001010110010 -$ -b1010001010110010 7$ -b10100010 ?$ -b10100010 . -b10100010 B$ -1G$ -1O$ -1G -b10000 J -b0 I -05$ -0@$ -1J$ -b10 M$ -1+ -b11010010 I$ -b101100001011010010 ) -b101100001011010010 A$ -b101100001011010010 N$ -14 -1? -#2500000000000000 -04 -0? -#2550000000000000 -1T$ -0G$ -b1100001011010010 V$ -b10 Z$ -1- -1W$ -b1010100010101100101100001011010010 , -b1010100010101100101100001011010010 R$ -b0 M$ -0+ -14 -1? -#2600000000000000 -04 -0? -#2650000000000000 -0T$ -b0 Z$ -0- -14 -1? -#2700000000000000 -04 -0? -#2750000000000000 -14 -1? -#2800000000000000 -04 -0? -#2850000000000000 -14 -1? -#2900000000000000 -04 -0? -#2950000000000000 -14 -1? -#3000000000000000 -04 -0? -#3050000000000000 -14 -1? -#3100000000000000 -04 -0? -#3150000000000000 -14 -1? -#3200000000000000 -04 -0? -#3250000000000000 -14 -1? -#3300000000000000 -04 -0? -#3350000000000000 -14 -1? -#3400000000000000 -04 -0? -#3450000000000000 -14 -1? -#3500000000000000 -04 -0? -#3550000000000000 -14 -1? -#3600000000000000 -04 -0? -#3650000000000000 -14 -1? -#3700000000000000 -04 -0? -#3750000000000000 -14 -1? -#3800000000000000 -04 -0? -#3850000000000000 -14 -1? -#3900000000000000 -04 -0? -#3950000000000000 -14 -1? -#4000000000000000 -04 -0? -#4050000000000000 -14 -1? -#4100000000000000 -04 -0? -#4150000000000000 -14 -1? -#4200000000000000 -04 -0? -#4250000000000000 -14 -1? -#4300000000000000 -04 -0? -#4350000000000000 -14 -1? -#4400000000000000 -04 -0? -#4450000000000000 -14 -1? -#4500000000000000 -04 -0? -#4550000000000000 -14 -1? -#4600000000000000 -04 -0? -#4650000000000000 -14 -1? -#4700000000000000 -04 -0? -#4750000000000000 -14 -1? -#4800000000000000 -04 -0? -#4850000000000000 -14 -1? -#4900000000000000 -04 -0? -#4950000000000000 -14 -1? -#5000000000000000 -04 -0? -#5050000000000000 -14 -1? -#5100000000000000 -04 -0? -#5150000000000000 -14 -1? -#5200000000000000 -04 -0? -#5250000000000000 -14 -1? -#5300000000000000 -04 -0? -#5350000000000000 -14 -1? -#5400000000000000 -04 -0? -#5450000000000000 -14 -1? -#5500000000000000 -04 -0? -#5550000000000000 -14 -1? -#5600000000000000 -04 -0? -#5650000000000000 -14 -1? -#5700000000000000 -04 -0? -#5750000000000000 -14 -1? -#5800000000000000 -04 -0? -#5850000000000000 -14 -1? -#5900000000000000 -04 -0? -#5950000000000000 -14 -1? -#6000000000000000 -04 -0? -#6050000000000000 -14 -1? -#6100000000000000 -04 -0? -#6150000000000000 -14 -1? -#6200000000000000 -04 -0? -#6250000000000000 -14 -1? -#6300000000000000 -04 -0? -#6350000000000000 -14 -1? -#6400000000000000 -04 -0? -#6450000000000000 -14 -1? -#6500000000000000 -04 -0? -#6550000000000000 -14 -1? -#6600000000000000 -04 -0? -#6650000000000000 -14 -1? -#6700000000000000 -04 -0? -#6750000000000000 -14 -1? -#6800000000000000 -04 -0? -#6850000000000000 -14 -1? -#6900000000000000 -04 -0? -#6950000000000000 -14 -1? -#7000000000000000 -04 -0? -#7050000000000000 -14 -1? -#7100000000000000 -04 -0? -#7150000000000000 -14 -1? -#7200000000000000 -04 -0? -#7250000000000000 -14 -1? -#7300000000000000 -04 -0? -#7350000000000000 -14 -1? -#7400000000000000 -04 -0? -#7450000000000000 -14 -1? -#7500000000000000 -04 -0? -#7550000000000000 -14 -1? -#7600000000000000 -04 -0? -#7650000000000000 -14 -1? -#7700000000000000 -04 -0? -#7750000000000000 -14 -1? -#7800000000000000 -04 -0? -#7850000000000000 -14 -1? -#7900000000000000 -04 -0? -#7950000000000000 -14 -1? -#8000000000000000 -04 -0? -#8050000000000000 -14 -1? -#8100000000000000 -04 -0? -#8150000000000000 -14 -1? -#8200000000000000 -04 -0? -#8250000000000000 -14 -1? -#8300000000000000 -04 -0? -#8350000000000000 -14 -1? -#8400000000000000 -04 -0? -#8450000000000000 -14 -1? -#8500000000000000 -04 -0? -#8550000000000000 -14 -1? -#8600000000000000 -04 -0? -#8650000000000000 -14 -1? -#8700000000000000 -04 -0? -#8750000000000000 -14 -1? -#8800000000000000 -04 -0? -#8850000000000000 -14 -1? -#8900000000000000 -04 -0? -#8950000000000000 -14 -1? -#9000000000000000 -04 -0? -#9050000000000000 -14 -1? -#9100000000000000 -04 -0? -#9150000000000000 -14 -1? -#9200000000000000 -04 -0? -#9250000000000000 -14 -1? -#9300000000000000 -04 -0? -#9350000000000000 -14 -1? -#9400000000000000 -04 -0? -#9450000000000000 -14 -1? -#9500000000000000 -04 -0? -#9550000000000000 -14 -1? -#9600000000000000 -04 -0? -#9650000000000000 -14 -1? -#9700000000000000 -04 -0? -#9750000000000000 -14 -1? -#9800000000000000 -04 -0? -#9850000000000000 -14 -1? -#9900000000000000 -04 -0? -#9950000000000000 -14 -1? -#10000000000000000 -04 -0? -#10050000000000000 -14 -1? -#10100000000000000 -04 -0? -#10150000000000000 -14 -1? -#10200000000000000 -04 -0? -#10250000000000000 -14 -1? -#10300000000000000 -04 -0? -#10350000000000000 -14 -1? -#10400000000000000 -04 -0? -#10450000000000000 -14 -1? -#10500000000000000 -04 -0? -#10550000000000000 -14 -1? -#10600000000000000 -04 -0? -#10650000000000000 -14 -1? -#10700000000000000 -04 -0? -#10750000000000000 -14 -1? -#10800000000000000 -04 -0? -#10850000000000000 -14 -1? -#10900000000000000 -04 -0? -#10950000000000000 -14 -1? -#11000000000000000 -04 -0? -#11050000000000000 -14 -1? -#11100000000000000 -04 -0? -#11150000000000000 -14 -1? -#11200000000000000 -04 -0? -#11250000000000000 -14 -1? -#11300000000000000 -04 -0? -#11350000000000000 -14 -1? -#11400000000000000 -04 -0? -#11450000000000000 -14 -1? -#11500000000000000 -04 -0? -#11550000000000000 -14 -1? -#11600000000000000 -04 -0? -#11650000000000000 -1k -1r -1"" -1L" -1Z" -1}" -1&# -1-# -14# -1^# -1e# -1l# -1s# -1E -1: -b11100000111100001010000010110000 7 -b111100000111100001010000010110000 " -b111100000111100001010000010110000 @ -1= -1D -b100 5 -b100100 [$ -b11100000111100001010000010110000 \$ -14 -1? -#11700000000000000 -04 -0? -#11750000000000000 -1F$ -16$ -02 -1>$ -1( -1% -1O -1)" -1a" -1;# -0s# -b1 I -b1111 J -0G -b1000 5 -b11100001111100011010000110110001 7 -0: -b11100001111100011010000110110001 " -b11100001111100011010000110110001 @ -14 -1? -#11750000000000100 -1E$ -01 -1=$ -b11100000 ?$ -b11100000 . -b11100000 B$ -1:$ -b11110000011110000 & -b11110000011110000 -$ -b11110000011110000 7$ -12$ -00$ -b10 |# -0{# -b1001 u# -1t# -b1111 n# -b1 g# -1f# -b1111 `# -b10 D# -0C# -b100 =# -b1111 6# -b1 /# -1.# -b1111 (# -b1111 !# -b10 j" -0i" -b100 c" -b1111 \" -b1110 U" -0T" -b1 N" -1M" -b10 2" -01" -b100 +" -b1111 $" -b1110 { -0z -b1 t -1s -b1111 m -b10 X -0W -b111100000111100001010000010110000 # -b111100000111100001010000010110000 A -b111100000111100001010000010110000 /$ -b100 Q -#11800000000000000 -04 -0? -#11850000000000000 -0:$ -0E$ -b1010001010110010 & -b1010001010110010 -$ -b1010001010110010 7$ -1.$ -11 -02$ -10$ -1' -0=$ -0O -1V -0)" -10" -0a" -1h" -0;# -1B# -1K -1R -1W -1Y -1` -1g -1n -0s -1u -1z -1| -1%" -1," -11" -13" -1:" -1A" -1H" -0M" -1O" -1T" -1V" -1]" -1d" -1i" -1k" -1r" -1y" -1"# -1)# -0.# -10# -17# -1># -1C# -1E# -1L# -1S# -1Z# -1a# -0f# -1h# -1o# -0t# -1v# -1{# -b1010100010101100101100001011010010 # -b1010100010101100101100001011010010 A -b1010100010101100101100001011010010 /$ -1}# -1&$ -b10110010 ?$ -b10110010 . -b10110010 B$ -1Q$ -0O$ -b1100 5 -b11100010111100101010001010110010 7 -b11100010111100101010001010110010 " -b11100010111100101010001010110010 @ -b1 F -b1110 J -b10 I -1@$ -1L$ -0J$ -b1 M$ -b11100000 H$ -b11110000011010010 ) -b11110000011010010 A$ -b11110000011010010 N$ -14 -1? -#11850000000000100 -b11110000 ?$ -b11110000 . -b11110000 B$ -1:$ -b11110000011110000 & -b11110000011110000 -$ -b11110000011110000 7$ -12$ -00$ -b1001 Q -b100 X -0W -b11111 m -b11 t -1s -b11100 { -0z -b11111 $" -b1001 +" -b100 2" -01" -b11 N" -1M" -b11100 U" -0T" -b11111 \" -b1001 c" -b100 j" -0i" -b11111 !# -b11111 (# -b11 /# -1.# -b11111 6# -b1001 =# -b100 D# -0C# -b11111 `# -b11 g# -1f# -b11111 n# -b10010 u# -1t# -b100 |# -0{# -b111100000111100001010000010110000 # -b111100000111100001010000010110000 A -b111100000111100001010000010110000 /$ -#11900000000000000 -04 -0? -#11950000000000000 -18$ -0.$ -03$ -0B -0' -0:$ -0$ -02$ -10$ -1G$ -b11000010 ?$ -b11000010 . -b11000010 B$ -b101100001011010010 & -b101100001011010010 -$ -b101100001011010010 7$ -0K -1L -0P -0R -1W -1S -0Y -1Z -0` -1a -0g -1h -0n -1o -0s -0u -1v -1z -0| -1} -0%" -1&" -0*" -0," -11" -1-" -03" -14" -0:" -1;" -0A" -1B" -0H" -1I" -0M" -0O" -1P" -1T" -0V" -1W" -0]" -1^" -0b" -0d" -1i" -1e" -0k" -1l" -0r" -1s" -0y" -1z" -0"# -1## -0)# -1*# -0.# -00# -11# -07# -18# -0<# -0># -1C# -1?# -0E# -1F# -0L# -1M# -0S# -1T# -0Z# -1[# -0a# -1b# -0f# -0h# -1i# -0o# -1p# -0t# -0v# -1{# -b1010100010101100101100001011010010 # -b1010100010101100101100001011010010 A -b1010100010101100101100001011010010 /$ -1w# -0}# -1~# -0&$ -1'$ -1O -1)" -1a" -1;# -b11110000 I$ -b11110000011110000 ) -b11110000011110000 A$ -b11110000011110000 N$ -b10 M$ -1+ -0@$ -15$ -b11 I -b1101 J -b10 F -b10000 5 -b11100011111100111010001110110011 7 -b11100011111100111010001110110011 " -b11100011111100111010001110110011 @ -14 -1? -#11950000000000100 -b10100000 ?$ -b10100000 . -b10100000 B$ -08$ -b1010000010110000 & -b1010000010110000 -$ -b1010000010110000 7$ -12$ -00$ -b1000 |# -0{# -b100100 u# -1t# -b111111 n# -b111 g# -1f# -b111111 `# -b1001 D# -0C# -b10010 =# -b111111 6# -b111 /# -1.# -b111111 (# -b111111 !# -b1001 j" -0i" -b10010 c" -b111111 \" -b111000 U" -0T" -b111 N" -1M" -b1001 2" -01" -b10010 +" -b111111 $" -b111000 { -0z -b111 t -1s -b111111 m -b1001 X -0W -b111100000111100001010000010110000 # -b111100000111100001010000010110000 A -b111100000111100001010000010110000 /$ -b10010 Q -#12000000000000000 -04 -0? -#12050000000000000 -1D$ -00 -1<$ -18$ -13$ -1B -b101100001011010010 & -b101100001011010010 -$ -b101100001011010010 7$ -1.$ -1$ -02$ -10$ -1' -0O -0V -1] -0)" -00" -17" -0a" -0h" -1o" -0;# -0B# -1I# -1K -1R -1W -1Y -1` -1g -1n -0s -1u -1z -1| -1%" -1," -11" -13" -1:" -1A" -1H" -0M" -1O" -1T" -1V" -1]" -1d" -1i" -1k" -1r" -1y" -1"# -1)# -0.# -10# -17# -1># -1C# -1E# -1L# -1S# -1Z# -1a# -0f# -1h# -1o# -0t# -1v# -1{# -b1010100010101100101100001011010010 # -b1010100010101100101100001011010010 A -b1010100010101100101100001011010010 /$ -1}# -1&$ -b11010010 ?$ -b11010010 . -b11010010 B$ -0G$ -0Q$ -b10100 5 -b11100100111101001010010010110100 7 -b11100100111101001010010010110100 " -b11100100111101001010010010110100 @ -b11 F -b1100 J -b100 I -1@$ -0L$ -b1 M$ -0+ -b10100000 H$ -b1010000011110000 ) -b1010000011110000 A$ -b1010000011110000 N$ -1Y$ -0W$ -b1 Z$ -b1110000011110000 U$ -b111100000111100001100001011010010 , -b111100000111100001100001011010010 R$ -14 -1? -#12050000000000100 -0D$ -10 -0<$ -b10110000 ?$ -b10110000 . -b10110000 B$ -08$ -b1010000010110000 & -b1010000010110000 -$ -b1010000010110000 7$ -12$ -00$ -b100101 Q -b10011 X -0W -b1111111 m -b1111 t -1s -b1110000 { -0z -b1111111 $" -b100101 +" -b10011 2" -01" -b1111 N" -1M" -b1110000 U" -0T" -b1111111 \" -b100101 c" -b10011 j" -0i" -b1111111 !# -b1111111 (# -b1111 /# -1.# -b1111111 6# -b100101 =# -b10011 D# -0C# -b1111111 `# -b1111 g# -1f# -b1111111 n# -b1001000 u# -1t# -b10000 |# -0{# -b111100000111100001010000010110000 # -b111100000111100001010000010110000 A -b111100000111100001010000010110000 /$ -#12100000000000000 -04 -0? -#12150000000000000 -1E$ -0.$ -01 -03$ -0B -0' -1=$ -1:$ -0$ -1G$ -b11100000 ?$ -b11100000 . -b11100000 B$ -b11110000011110000 & -b11110000011110000 -$ -b11110000011110000 7$ -1O -1)" -1a" -1;# -b10110000 I$ -b1010000010110000 ) -b1010000010110000 A$ -b1010000010110000 N$ -b10 M$ -1+ -0@$ -05$ -b11000 5 -b11100101111101011010010110110101 7 -b11100101111101011010010110110101 " -b11100101111101011010010110110101 @ -14 -1? -#12150000000000100 -0E$ -11 -0=$ -b11100001 ?$ -b11100001 . -b11100001 B$ -0:$ -b1110000111110001 & -b1110000111110001 -$ -b1110000111110001 7$ -02$ -b100000 |# -b10010000 u# -0t# -b11111111 n# -b11111 g# -b11111111 `# -b1 K# -b100110 D# -b1001010 =# -1<# -b11111111 6# -b11111 /# -b11111111 (# -b11111111 !# -b1 q" -b100110 j" -b1001010 c" -1b" -b11111111 \" -b11100000 U" -b11111 N" -b1 9" -b100110 2" -b1001010 +" -1*" -b11111111 $" -b11100000 { -b11111 t -b11111111 m -b1 _ -b100110 X -b1001010 Q -1P -b11100001111100011010000110110001 # -b11100001111100011010000110110001 A -b11100001111100011010000110110001 /$ -#12200000000000000 -04 -0? -#12250000000000000 -1:$ -b11110000011110000 & -b11110000011110000 -$ -b11110000011110000 7$ -1.$ -12$ -1' -0O -1V -0)" -10" -0a" -1h" -0;# -1B# -0K -0L -1M -0P -0R -0S -0W -1T -0Y -0Z -1[ -0` -0a -1b -0g -0h -1i -0n -0o -1p -1s -0u -0v -1w -0z -0| -0} -1~ -0%" -0&" -1'" -0*" -0," -0-" -01" -1." -03" -04" -15" -0:" -0;" -1<" -0A" -0B" -1C" -0H" -0I" -1J" -1M" -0O" -0P" -1Q" -0T" -0V" -0W" -1X" -0]" -0^" -1_" -0b" -0d" -0e" -0i" -1f" -0k" -0l" -1m" -0r" -0s" -1t" -0y" -0z" -1{" -0"# -0## -1$# -0)# -0*# -1+# -1.# -00# -01# -12# -07# -08# -19# -0<# -0># -0?# -0C# -1@# -0E# -0F# -1G# -0L# -0M# -1N# -0S# -0T# -1U# -0Z# -0[# -1\# -0a# -0b# -1c# -1f# -0h# -0i# -1j# -0o# -0p# -1q# -1t# -0v# -0w# -0{# -b111100000111100001010000010110000 # -b111100000111100001010000010110000 A -b111100000111100001010000010110000 /$ -1x# -0}# -0~# -1!$ -0&$ -0'$ -1($ -b11110000 ?$ -b11110000 . -b11110000 B$ -0G$ -1T$ -b11100 5 -b11100110111101101010011010110110 7 -b11100110111101101010011010110110 " -b11100110111101101010011010110110 @ -b100 F -b1011 J -b101 I -1@$ -b1 M$ -0+ -b11100001 H$ -b1110000110110000 ) -b1110000110110000 A$ -b1110000110110000 N$ -b10 Z$ -1- -b1010000010110000 V$ -b111100000111100001010000010110000 , -b111100000111100001010000010110000 R$ -14 -1? -#12250000000000100 -b11110001 ?$ -b11110001 . -b11110001 B$ -0:$ -b1110000111110001 & -b1110000111110001 -$ -b1110000111110001 7$ -02$ -b10010101 Q -1P -b1001100 X -b11 _ -b111111111 m -b111111 t -b111000000 { -b111111111 $" -b10010101 +" -1*" -b1001100 2" -b11 9" -b111111 N" -b111000000 U" -b111111111 \" -b10010101 c" -1b" -b1001100 j" -b11 q" -b111111111 !# -b111111111 (# -b111111 /# -b111111111 6# -b10010101 =# -1<# -b1001100 D# -b11 K# -b111111111 `# -b111111 g# -b111111111 n# -b100100000 u# -0t# -b11100001111100011010000110110001 # -b11100001111100011010000110110001 A -b11100001111100011010000110110001 /$ -b1000000 |# -#12300000000000000 -04 -0? -#12350000000000000 -0.$ -03$ -0B -0' -0$ -12$ -0T$ -1G$ -b10100000 ?$ -b10100000 . -b10100000 B$ -b1010000010110000 & -b1010000010110000 -$ -b1010000010110000 7$ -1K -0P -1R -1Y -1` -1g -1n -1u -1| -1%" -0*" -1," -13" -1:" -1A" -1H" -1O" -1V" -1]" -0b" -1d" -1k" -1r" -1y" -1"# -1)# -10# -17# -0<# -1># -1E# -1L# -1S# -1Z# -1a# -1h# -1o# -1t# -b111100000111100001010000010110000 # -b111100000111100001010000010110000 A -b111100000111100001010000010110000 /$ -1v# -1}# -1&$ -1O -1)" -1a" -1;# -b0 Z$ -0- -b11110001 I$ -b1110000111110001 ) -b1110000111110001 A$ -b1110000111110001 N$ -b10 M$ -1+ -0@$ -15$ -b110 I -b1010 J -b101 F -b100000 5 -b11100111111101111010011110110111 7 -b11100111111101111010011110110111 " -b11100111111101111010011110110111 @ -14 -1? -#12350000000000100 -b10100001 ?$ -b10100001 . -b10100001 B$ -b1010000110110001 & -b1010000110110001 -$ -b1010000110110001 7$ -02$ -b10000000 |# -b1001000000 u# -0t# -b1111111111 n# -b1111111 g# -b1111111111 `# -b111 K# -b10011001 D# -b100101010 =# -1<# -b1111111111 6# -b1111111 /# -b1111111111 (# -b1111111111 !# -b111 q" -b10011001 j" -b100101010 c" -1b" -b1111111111 \" -b1110000000 U" -b1111111 N" -b111 9" -b10011001 2" -b100101010 +" -1*" -b1111111111 $" -b1110000000 { -b1111111 t -b1111111111 m -b111 _ -b10011001 X -b100101010 Q -1P -b11100001111100011010000110110001 # -b11100001111100011010000110110001 A -b11100001111100011010000110110001 /$ -#12400000000000000 -04 -0? -#12450000000000000 -13$ -1B -b1010000010110000 & -b1010000010110000 -$ -b1010000010110000 7$ -1.$ -1$ -12$ -1' -0O -0V -0] -1d -0)" -00" -07" -1>" -0a" -0h" -0o" -1v" -0;# -0B# -0I# -1P# -1z# -0K -1L -0P -0R -1S -0W -0Y -1Z -0` -1a -0g -1h -0n -1o -1s -0u -1v -0z -0| -1} -0%" -1&" -0*" -0," -1-" -01" -03" -14" -0:" -1;" -0A" -1B" -0H" -1I" -1M" -0O" -1P" -0T" -0V" -1W" -0]" -1^" -0b" -0d" -1e" -0i" -0k" -1l" -0r" -1s" -0y" -1z" -0"# -1## -0)# -1*# -1.# -00# -11# -07# -18# -0<# -0># -1?# -0C# -0E# -1F# -0L# -1M# -0S# -1T# -0Z# -1[# -0a# -1b# -1f# -0h# -1i# -0o# -1t# -1p# -0v# -1w# -0{# -b111100000111100001010000010110000 # -b111100000111100001010000010110000 A -b111100000111100001010000010110000 /$ -0}# -1~# -0&$ -1'$ -b10110000 ?$ -b10110000 . -b10110000 B$ -0G$ -18 -b11101000111110001010100010111000 7 -b1011101000111110001010100010111000 " -b1011101000111110001010100010111000 @ -b110 F -b1001 J -b111 I -1@$ -b1 M$ -0+ -b10100001 H$ -b1010000111110001 ) -b1010000111110001 A$ -b1010000111110001 N$ -0Y$ -b1 Z$ -b1110000111110001 U$ -b11100001111100011010000010110000 , -b11100001111100011010000010110000 R$ -14 -1? -#12450000000000100 -b10110001 ?$ -b10110001 . -b10110001 B$ -b1010000110110001 & -b1010000110110001 -$ -b1010000110110001 7$ -02$ -b1001010101 Q -1P -b100110011 X -b1111 _ -b11111111111 m -b11111111 t -b11100000000 { -b11111111111 $" -b1001010101 +" -1*" -b100110011 2" -b1111 9" -b11111111 N" -b11100000000 U" -b11111111111 \" -b1001010101 c" -1b" -b100110011 j" -b1111 q" -b11111111111 !# -b11111111111 (# -b11111111 /# -b11111111111 6# -b1001010101 =# -1<# -b100110011 D# -b1111 K# -b11111111111 `# -b11111111 g# -b11111111111 n# -b10010000000 u# -0t# -b11100001111100011010000110110001 # -b11100001111100011010000110110001 A -b11100001111100011010000110110001 /$ -b100000000 |# -#12500000000000000 -04 -0? -#12550000000000000 -0.$ -03$ -0B -0' -0$ -1G$ -b11100001 ?$ -b11100001 . -b11100001 B$ -b1110000111110001 & -b1110000111110001 -$ -b1110000111110001 7$ -0E -0d -0k -0r -0"" -0>" -0L" -0Z" -0v" -0}" -0&# -0-# -04# -0P# -0^# -0e# -0l# -0z# -b10110001 I$ -b1010000110110001 ) -b1010000110110001 A$ -b1010000110110001 N$ -b10 M$ -1+ -0@$ -05$ -0= -0D -b0 7 -08 -b0 " -b0 @ -14 -1? -#12550000000000100 -b11100010 ?$ -b11100010 . -b11100010 B$ -b1110001011110010 & -b1110001011110010 -$ -b1110001011110010 7$ -b1000000001 |# -b100100000000 u# -b111111111111 n# -b111111111 g# -b111111111111 `# -b1 R# -b11110 K# -b1001100110 D# -1C# -b10010101010 =# -0<# -b111111111111 6# -b111111111 /# -b111111111111 (# -b111111111111 !# -b1 x" -b11110 q" -b1001100110 j" -1i" -b10010101010 c" -0b" -b111111111111 \" -b111000000000 U" -b111111111 N" -b1 @" -b11110 9" -b1001100110 2" -11" -b10010101010 +" -0*" -b111111111111 $" -b111000000000 { -b111111111 t -b111111111111 m -b1 f -b11110 _ -b1001100110 X -1W -b10010101010 Q -0P -b11100010111100101010001010110010 # -b11100010111100101010001010110010 A -b11100010111100101010001010110010 /$ -#12600000000000000 -04 -0? -#12650000000000000 -1.$ -1' -b11110010 ?$ -b11110010 . -b11110010 B$ -0G$ -1T$ -1@$ -b1 M$ -0+ -b11100010 H$ -b1110001010110001 ) -b1110001010110001 A$ -b1110001010110001 N$ -b10 Z$ -1- -b1010000110110001 V$ -b11100001111100011010000110110001 , -b11100001111100011010000110110001 R$ -14 -1? -#12700000000000000 -04 -0? -#12750000000000000 -0.$ -03$ -0B -0' -0$ -0T$ -1G$ -b10100010 ?$ -b10100010 . -b10100010 B$ -b1010001010110010 & -b1010001010110010 -$ -b1010001010110010 7$ -b0 Z$ -0- -b11110010 I$ -b1110001011110010 ) -b1110001011110010 A$ -b1110001011110010 N$ -b10 M$ -1+ -0@$ -15$ -14 -1? -#12800000000000000 -04 -0? -#12850000000000000 -13$ -1B -1.$ -1$ -1' -b10110010 ?$ -b10110010 . -b10110010 B$ -0G$ -1@$ -b1 M$ -0+ -b10100010 H$ -b1010001011110010 ) -b1010001011110010 A$ -b1010001011110010 N$ -b1 Z$ -b1110001011110010 U$ -b11100010111100101010000110110001 , -b11100010111100101010000110110001 R$ -14 -1? -#12900000000000000 -04 -0? -#12950000000000000 -0.$ -03$ -0B -0' -0$ -1G$ -b11100011 ?$ -b11100011 . -b11100011 B$ -b1110001111110011 & -b1110001111110011 -$ -b1110001111110011 7$ -1K -1P -0L -1R -0S -1W -1Y -0Z -0^ -1` -0a -1g -0h -1n -0o -1u -0v -1| -0} -1%" -1*" -0&" -1," -0-" -11" -13" -04" -08" -1:" -0;" -1A" -0B" -1H" -0I" -1O" -0P" -1V" -0W" -1]" -1b" -0^" -1d" -0e" -1i" -1k" -0l" -0p" -1r" -0s" -1y" -0z" -1"# -0## -1)# -0*# -10# -01# -17# -1<# -08# -1># -0?# -1C# -1E# -0F# -0J# -b11100011111100111010001110110011 # -b11100011111100111010001110110011 A -b11100011111100111010001110110011 /$ -1L# -0M# -1S# -0T# -1Z# -0[# -1a# -0b# -1h# -0i# -1o# -0p# -1v# -0w# -1}# -0~# -1&$ -0'$ -b10110010 I$ -b1010001010110010 ) -b1010001010110010 A$ -b1010001010110010 N$ -b10 M$ -1+ -0@$ -05$ -b110 I -b1010 J -b101 F -14 -1? -#13000000000000000 -04 -0? -#13050000000000000 -1.$ -1' -b11110011 ?$ -b11110011 . -b11110011 B$ -0G$ -1T$ -1@$ -b1 M$ -0+ -b11100011 H$ -b1110001110110010 ) -b1110001110110010 A$ -b1110001110110010 N$ -b10 Z$ -1- -b1010001010110010 V$ -b11100010111100101010001010110010 , -b11100010111100101010001010110010 R$ -14 -1? -#13100000000000000 -04 -0? -#13150000000000000 -0.$ -03$ -0B -0' -0$ -0T$ -1G$ -b10100011 ?$ -b10100011 . -b10100011 B$ -b1010001110110011 & -b1010001110110011 -$ -b1010001110110011 7$ -b0 Z$ -0- -b11110011 I$ -b1110001111110011 ) -b1110001111110011 A$ -b1110001111110011 N$ -b10 M$ -1+ -0@$ -15$ -14 -1? -#13200000000000000 -04 -0? -#13250000000000000 -13$ -1B -1.$ -1$ -1' -b10110011 ?$ -b10110011 . -b10110011 B$ -0G$ -1@$ -b1 M$ -0+ -b10100011 H$ -b1010001111110011 ) -b1010001111110011 A$ -b1010001111110011 N$ -b1 Z$ -b1110001111110011 U$ -b11100011111100111010001010110010 , -b11100011111100111010001010110010 R$ -14 -1? -#13300000000000000 -04 -0? -#13350000000000000 -0.$ -03$ -0B -0' -0$ -1G$ -b11100100 ?$ -b11100100 . -b11100100 B$ -b1110010011110100 & -b1110010011110100 -$ -b1110010011110100 7$ -0K -0P -0R -0W -0Y -1^ -0` -0g -0n -0u -0| -0%" -0*" -0," -01" -03" -18" -0:" -0A" -0H" -0O" -0V" -0]" -0b" -0d" -0i" -0k" -1p" -0r" -0y" -0"# -0)# -00# -07# -0<# -0># -0C# -0E# -1J# -b11100100111101001010010010110100 # -b11100100111101001010010010110100 A -b11100100111101001010010010110100 /$ -0L# -0S# -0Z# -0a# -0h# -0o# -0v# -0}# -0&$ -b10110011 I$ -b1010001110110011 ) -b1010001110110011 A$ -b1010001110110011 N$ -b10 M$ -1+ -0@$ -05$ -b101 I -b1011 J -b100 F -14 -1? -#13400000000000000 -04 -0? -#13450000000000000 -1.$ -1' -b11110100 ?$ -b11110100 . -b11110100 B$ -0G$ -1T$ -1@$ -b1 M$ -0+ -b11100100 H$ -b1110010010110011 ) -b1110010010110011 A$ -b1110010010110011 N$ -b10 Z$ -1- -b1010001110110011 V$ -b11100011111100111010001110110011 , -b11100011111100111010001110110011 R$ -14 -1? -#13500000000000000 -04 -0? -#13550000000000000 -0.$ -03$ -0B -0' -0$ -0T$ -1G$ -b10100100 ?$ -b10100100 . -b10100100 B$ -b1010010010110100 & -b1010010010110100 -$ -b1010010010110100 7$ -b0 Z$ -0- -b11110100 I$ -b1110010011110100 ) -b1110010011110100 A$ -b1110010011110100 N$ -b10 M$ -1+ -0@$ -15$ -14 -1? -#13600000000000000 -04 -0? -#13650000000000000 -13$ -1B -1.$ -1$ -1' -b10110100 ?$ -b10110100 . -b10110100 B$ -0G$ -1@$ -b1 M$ -0+ -b10100100 H$ -b1010010011110100 ) -b1010010011110100 A$ -b1010010011110100 N$ -b1 Z$ -b1110010011110100 U$ -b11100100111101001010001110110011 , -b11100100111101001010001110110011 R$ -14 -1? -#13700000000000000 -04 -0? -#13750000000000000 -0.$ -03$ -0B -0' -0$ -1G$ -b11100101 ?$ -b11100101 . -b11100101 B$ -b1110010111110101 & -b1110010111110101 -$ -b1110010111110101 7$ -1K -1P -1L -0M -1R -1S -0W -0T -1Y -1Z -0[ -1^ -1` -1a -0b -0e -1g -1h -0i -1n -1o -0p -1u -1v -0w -1| -1} -0~ -1%" -1*" -1&" -0'" -1," -1-" -01" -0." -13" -14" -05" -18" -1:" -1;" -0<" -0?" -1A" -1B" -0C" -1H" -1I" -0J" -1O" -1P" -0Q" -1V" -1W" -0X" -1]" -1b" -1^" -0_" -1d" -1e" -0i" -0f" -1k" -1l" -0m" -1p" -1r" -1s" -0t" -0w" -1y" -1z" -0{" -1"# -1## -0$# -1)# -1*# -0+# -10# -11# -02# -17# -1<# -18# -09# -1># -1?# -0C# -0@# -1E# -1F# -0G# -1J# -1L# -1M# -0N# -0Q# -1S# -1T# -0U# -1Z# -1[# -0\# -1a# -1b# -0c# -1h# -1i# -0j# -1o# -1p# -0q# -1v# -1w# -0x# -0{# -b11100101111101011010010110110101 # -b11100101111101011010010110110101 A -b11100101111101011010010110110101 /$ -1}# -1~# -0!$ -1&$ -1'$ -0($ -b10110100 I$ -b1010010010110100 ) -b1010010010110100 A$ -b1010010010110100 N$ -b10 M$ -1+ -0@$ -05$ -b100 I -b1100 J -b11 F -14 -1? -#13800000000000000 -04 -0? -#13850000000000000 -1.$ -1' -b11110101 ?$ -b11110101 . -b11110101 B$ -0G$ -1T$ -1@$ -b1 M$ -0+ -b11100101 H$ -b1110010110110100 ) -b1110010110110100 A$ -b1110010110110100 N$ -b10 Z$ -1- -b1010010010110100 V$ -b11100100111101001010010010110100 , -b11100100111101001010010010110100 R$ -14 -1? -#13900000000000000 -04 -0? -#13950000000000000 -0.$ -03$ -0B -0' -0$ -0T$ -1G$ -b10100101 ?$ -b10100101 . -b10100101 B$ -b1010010110110101 & -b1010010110110101 -$ -b1010010110110101 7$ -b0 Z$ -0- -b11110101 I$ -b1110010111110101 ) -b1110010111110101 A$ -b1110010111110101 N$ -b10 M$ -1+ -0@$ -15$ -14 -1? -#14000000000000000 -04 -0? -#14050000000000000 -13$ -1B -1.$ -1$ -1' -b10110101 ?$ -b10110101 . -b10110101 B$ -0G$ -1@$ -b1 M$ -0+ -b10100101 H$ -b1010010111110101 ) -b1010010111110101 A$ -b1010010111110101 N$ -b1 Z$ -b1110010111110101 U$ -b11100101111101011010010010110100 , -b11100101111101011010010010110100 R$ -14 -1? -#14100000000000000 -04 -0? -#14150000000000000 -0.$ -03$ -0B -0' -0$ -1G$ -b11100110 ?$ -b11100110 . -b11100110 B$ -b1110011011110110 & -b1110011011110110 -$ -b1110011011110110 7$ -0K -0P -0R -1W -0Y -0` -0g -0n -0u -0| -0%" -0*" -0," -11" -03" -0:" -0A" -0H" -0O" -0V" -0]" -0b" -0d" -1i" -0k" -0r" -0y" -0"# -0)# -00# -07# -0<# -0># -1C# -b11100110111101101010011010110110 # -b11100110111101101010011010110110 A -b11100110111101101010011010110110 /$ -0E# -0L# -0S# -0Z# -0a# -0h# -0o# -0v# -0}# -0&$ -b10110101 I$ -b1010010110110101 ) -b1010010110110101 A$ -b1010010110110101 N$ -b10 M$ -1+ -0@$ -05$ -b11 I -b1101 J -b10 F -14 -1? -#14200000000000000 -04 -0? -#14250000000000000 -1.$ -1' -b11110110 ?$ -b11110110 . -b11110110 B$ -0G$ -1T$ -1@$ -b1 M$ -0+ -b11100110 H$ -b1110011010110101 ) -b1110011010110101 A$ -b1110011010110101 N$ -b10 Z$ -1- -b1010010110110101 V$ -b11100101111101011010010110110101 , -b11100101111101011010010110110101 R$ -14 -1? -#14300000000000000 -04 -0? -#14350000000000000 -0.$ -03$ -0B -0' -0$ -0T$ -1G$ -b10100110 ?$ -b10100110 . -b10100110 B$ -b1010011010110110 & -b1010011010110110 -$ -b1010011010110110 7$ -b0 Z$ -0- -b11110110 I$ -b1110011011110110 ) -b1110011011110110 A$ -b1110011011110110 N$ -b10 M$ -1+ -0@$ -15$ -14 -1? -#14400000000000000 -04 -0? -#14450000000000000 -13$ -1B -1.$ -1$ -1' -b10110110 ?$ -b10110110 . -b10110110 B$ -0G$ -1@$ -b1 M$ -0+ -b10100110 H$ -b1010011011110110 ) -b1010011011110110 A$ -b1010011011110110 N$ -b1 Z$ -b1110011011110110 U$ -b11100110111101101010010110110101 , -b11100110111101101010010110110101 R$ -14 -1? -#14500000000000000 -04 -0? -#14550000000000000 -0.$ -03$ -0B -0' -0$ -1G$ -b11100111 ?$ -b11100111 . -b11100111 B$ -b1110011111110111 & -b1110011111110111 -$ -b1110011111110111 7$ -1K -1P -0L -1R -0S -1W -1Y -0Z -1^ -1` -0a -0e -1g -0h -1n -0o -1u -0v -1| -0} -1%" -1*" -0&" -1," -0-" -11" -13" -04" -18" -1:" -0;" -0?" -1A" -0B" -1H" -0I" -1O" -0P" -1V" -0W" -1]" -1b" -0^" -1d" -0e" -1i" -1k" -0l" -1p" -1r" -0s" -0w" -1y" -0z" -1"# -0## -1)# -0*# -10# -01# -17# -1<# -08# -1># -0?# -1C# -1E# -0F# -1J# -1L# -0M# -0Q# -1S# -0T# -1Z# -0[# -1a# -0b# -1h# -0i# -1o# -0p# -1v# -0w# -0{# -b11100111111101111010011110110111 # -b11100111111101111010011110110111 A -b11100111111101111010011110110111 /$ -1}# -0~# -1&$ -0'$ -b10110110 I$ -b1010011010110110 ) -b1010011010110110 A$ -b1010011010110110 N$ -b10 M$ -1+ -0@$ -05$ -b10 I -b1110 J -b1 F -14 -1? -#14600000000000000 -04 -0? -#14650000000000000 -1.$ -1' -b11110111 ?$ -b11110111 . -b11110111 B$ -0G$ -1T$ -1@$ -b1 M$ -0+ -b11100111 H$ -b1110011110110110 ) -b1110011110110110 A$ -b1110011110110110 N$ -b10 Z$ -1- -b1010011010110110 V$ -b11100110111101101010011010110110 , -b11100110111101101010011010110110 R$ -14 -1? -#14700000000000000 -04 -0? -#14750000000000000 -0.$ -03$ -0B -0' -0$ -0T$ -1G$ -b10100111 ?$ -b10100111 . -b10100111 B$ -b1010011110110111 & -b1010011110110111 -$ -b1010011110110111 7$ -b0 Z$ -0- -b11110111 I$ -b1110011111110111 ) -b1110011111110111 A$ -b1110011111110111 N$ -b10 M$ -1+ -0@$ -15$ -14 -1? -#14800000000000000 -04 -0? -#14850000000000000 -13$ -1B -1.$ -1$ -1' -b10110111 ?$ -b10110111 . -b10110111 B$ -0G$ -1@$ -b1 M$ -0+ -b10100111 H$ -b1010011111110111 ) -b1010011111110111 A$ -b1010011111110111 N$ -b1 Z$ -b1110011111110111 U$ -b11100111111101111010011010110110 , -b11100111111101111010011010110110 R$ -14 -1? -#14900000000000000 -04 -0? -#14950000000000000 -0.$ -03$ -0B -0' -0$ -10$ -1G$ -b11101000 ?$ -b11101000 . -b11101000 B$ -b1110100011111000 & -b1110100011111000 -$ -b1110100011111000 7$ -0K -0P -0R -0W -0Y -0^ -0` -1e -0g -0n -0u -0| -0%" -0*" -0," -01" -03" -08" -0:" -1?" -0A" -0H" -0O" -0V" -0]" -0b" -0d" -0i" -0k" -0p" -0r" -1w" -0y" -0"# -0)# -00# -07# -0<# -0># -0C# -0E# -0J# -0L# -1Q# -0S# -0Z# -0a# -0h# -0o# -0v# -1{# -b1011101000111110001010100010111000 # -b1011101000111110001010100010111000 A -b1011101000111110001010100010111000 /$ -0}# -0&$ -b10110111 I$ -b1010011110110111 ) -b1010011110110111 A$ -b1010011110110111 N$ -b10 M$ -1+ -0@$ -05$ -b1 I -b1111 J -b0 F -14 -1? -#15000000000000000 -04 -0? -#15050000000000000 -1.$ -1' -b11111000 ?$ -b11111000 . -b11111000 B$ -0G$ -1T$ -1@$ -b1 M$ -0+ -b11101000 H$ -b1110100010110111 ) -b1110100010110111 A$ -b1110100010110111 N$ -b10 Z$ -1- -b1010011110110111 V$ -b11100111111101111010011110110111 , -b11100111111101111010011110110111 R$ -14 -1? -#15100000000000000 -04 -0? -#15150000000000000 -0.$ -03$ -0B -0' -18$ -0$ -0T$ -1G$ -b10101000 ?$ -b10101000 . -b10101000 B$ -b101010100010111000 & -b101010100010111000 -$ -b101010100010111000 7$ -b0 Z$ -0- -b11111000 I$ -b1110100011111000 ) -b1110100011111000 A$ -b1110100011111000 N$ -b10 M$ -1+ -0@$ -15$ -14 -1? -#15200000000000000 -04 -0? -#15250000000000000 -1D$ -13$ -1B -00 -1.$ -1$ -1<$ -1' -b10111000 ?$ -b10111000 . -b10111000 B$ -0G$ -1@$ -b1 M$ -0+ -b10101000 H$ -b1010100011111000 ) -b1010100011111000 A$ -b1010100011111000 N$ -b1 Z$ -b1110100011111000 U$ -b11101000111110001010011110110111 , -b11101000111110001010011110110111 R$ -14 -1? -#15300000000000000 -04 -0? -#15350000000000000 -0D$ -10 -0' -0F$ -0<$ -08$ -0$ -0.$ -06$ -12 -03$ -0B -1G$ -1O$ -b11101000 ?$ -b11101000 . -b11101000 B$ -b1110100011111000 & -b1110100011111000 -$ -b1110100011111000 7$ -0>$ -0( -0% -b10111000 I$ -b10 M$ -1+ -1J$ -b101010100010111000 ) -b101010100010111000 A$ -b101010100010111000 N$ -0@$ -05$ -b0 I -b10000 J -1G -14 -1? -#15400000000000000 -04 -0? -#15450000000000000 -0G$ -1T$ -b0 M$ -0+ -1W$ -b10 Z$ -1- -b1010100010111000 V$ -b1011101000111110001010100010111000 , -b1011101000111110001010100010111000 R$ -14 -1? -#15500000000000000 -04 -0? -#15550000000000000 -0T$ -b0 Z$ -0- -14 -1? -#15600000000000000 -04 -0? -#15650000000000000 -14 -1? -#15700000000000000 -04 -0? -#15750000000000000 -14 -1? -#15800000000000000 -04 -0? -#15850000000000000 -14 -1? -#15900000000000000 -04 -0? -#15950000000000000 -14 -1? -#16000000000000000 -04 -0? -#16050000000000000 -14 -1? -#16100000000000000 -04 -0? -#16150000000000000 -14 -1? -#16200000000000000 -04 -0? -#16250000000000000 -14 -1? -#16300000000000000 -04 -0? -#16350000000000000 -14 -1? -#16400000000000000 -04 -0? -#16450000000000000 -14 -1? -#16500000000000000 -04 -0? -#16550000000000000 -14 -1? -#16600000000000000 -04 -0? -#16650000000000000 -14 -1? -#16700000000000000 -04 -0? -#16750000000000000 -14 -1? -#16800000000000000 -04 -0? -#16850000000000000 -14 -1? -#16900000000000000 -04 -0? -#16950000000000000 -14 -1? -#17000000000000000 -04 -0? -#17050000000000000 -14 -1? -#17100000000000000 -04 -0? -#17150000000000000 -14 -1? -#17200000000000000 -04 -0? -#17250000000000000 -14 -1? -#17300000000000000 -04 -0? -#17350000000000000 -14 -1? -#17400000000000000 -04 -0? -#17450000000000000 -14 -1? -#17500000000000000 -04 -0? -#17550000000000000 -14 -1? -#17600000000000000 -04 -0? -#17650000000000000 -14 -1? -#17700000000000000 -04 -0? -#17750000000000000 -14 -1? -#17800000000000000 -04 -0? -#17850000000000000 -14 -1? -#17900000000000000 -04 -0? -#17950000000000000 -14 -1? -#18000000000000000 -04 -0? -#18050000000000000 -14 -1? -#18100000000000000 -04 -0? -#18150000000000000 -14 -1? -#18200000000000000 -04 -0? -#18250000000000000 -14 -1? -#18300000000000000 -04 -0? -#18350000000000000 -14 -1? -#18400000000000000 -04 -0? -#18450000000000000 -14 -1? -#18500000000000000 -04 -0? -#18550000000000000 -14 -1? -#18600000000000000 -04 -0? -#18650000000000000 -14 -1? -#18700000000000000 -04 -0? -#18750000000000000 -14 -1? -#18800000000000000 -04 -0? -#18850000000000000 -14 -1? -#18900000000000000 -04 -0? -#18950000000000000 -14 -1? -#19000000000000000 -04 -0? -#19050000000000000 -14 -1? -#19100000000000000 -04 -0? -#19150000000000000 -14 -1? -#19200000000000000 -04 -0? -#19250000000000000 -14 -1? -#19300000000000000 -04 -0? -#19350000000000000 -14 -1? -#19400000000000000 -04 -0? -#19450000000000000 -14 -1? -#19500000000000000 -04 -0? -#19550000000000000 -14 -1? -#19600000000000000 -04 -0? -#19650000000000000 -14 -1? -#19700000000000000 -04 -0? -#19750000000000000 -14 -1? -#19800000000000000 -04 -0? -#19850000000000000 -14 -1? -#19900000000000000 -04 -0? -#19950000000000000 -14 -1? -#20000000000000000 -04 -0? diff --git a/control_lib/newfifo/fifo_short.v b/control_lib/newfifo/fifo_short.v deleted file mode 100644 index 53a7603c7..000000000 --- a/control_lib/newfifo/fifo_short.v +++ /dev/null @@ -1,95 +0,0 @@ - -module fifo_short -  #(parameter WIDTH=32) -   (input clk, input reset, input clear, -    input [WIDTH-1:0] datain, -    input src_rdy_i, -    output dst_rdy_o, -    output [WIDTH-1:0] dataout, -    output src_rdy_o, -    input dst_rdy_i, -     -    output reg [4:0] space, -    output reg [4:0] occupied); - -   reg full, empty; -   wire write 	     = src_rdy_i & dst_rdy_o; -   wire read 	     = dst_rdy_i & src_rdy_o; - -   assign dst_rdy_o  = ~full; -   assign src_rdy_o  = ~empty; -    -   reg [3:0] 	  a; -   genvar 	  i; -    -   generate -      for (i=0;i<WIDTH;i=i+1) -	begin : gen_srl16 -	   SRL16E -	     srl16e(.Q(dataout[i]), -		    .A0(a[0]),.A1(a[1]),.A2(a[2]),.A3(a[3]), -		    .CE(write),.CLK(clk),.D(datain[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 == 14) -	    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 <= 16; -     else if(clear) -       space <= 16; -     else if(read & ~write) -       space <= space + 1; -     else if(write & ~read) -       space <= space - 1; -    -   always @(posedge clk) -     if(reset) -       occupied <= 0; -     else if(clear) -       occupied <= 0; -     else if(read & ~write) -       occupied <= occupied - 1; -     else if(write & ~read) -       occupied <= occupied + 1; -       -endmodule // fifo_short - diff --git a/control_lib/newfifo/fifo_spec.txt b/control_lib/newfifo/fifo_spec.txt deleted file mode 100644 index 133b9fa8e..000000000 --- a/control_lib/newfifo/fifo_spec.txt +++ /dev/null @@ -1,36 +0,0 @@ - - -FIFO and Buffer Interface Spec - -Buffer Interface Data Wires -- matches fifo36 -     DATA[31:0] -     FLAGS[3:0] -     Bit 0	SOP -     Bit 1	EOP -	If SOP=1 && EOP=1, OCC contains error flags -     Bits 3:2	OCC[1:0] --> 00 = all 4 bytes -		     01 = 1 byte -		     10 = 2 bytes -		     11 = 3 bytes - -fifo36 -->  {OCC[1:0],EOP,SOP,DATA[31:0]} -       OCC same as buffer interface - -fifo19 -->  {OCC,EOP,SOP,DATA[15:0]}     -       Doesn't fit well into BRAM, dist RAM ok -       OCC = 1 means last word is half full -	   = 0 means last word is full - -fifo18 -->  {EOP,SOP,DATA[15:0]} -       No half-word capability?  Should we drop sop instead? - -Control Wires - Data into FIFO -	SRC_RDY_i    Upstream has data for me -	DST_RDY_o    I have space -		     Transfer occurs if SRC_RDI_i && DST_RDY_o -	 -Control Wires - Data out of FIFO -	SRC_RDY_o    I have data for downstream -	DST_RDY_i    Downstream has space -		     Transfer occurs if SRC_RDI_o && DST_RDY_i -	 diff --git a/control_lib/newfifo/fifo_tb.v b/control_lib/newfifo/fifo_tb.v deleted file mode 100644 index f561df7fa..000000000 --- a/control_lib/newfifo/fifo_tb.v +++ /dev/null @@ -1,158 +0,0 @@ -module fifo_new_tb(); -    -   reg clk = 0; -   reg rst = 1; -   reg clear = 0; -   initial #1000 rst = 0; -   always #50 clk = ~clk; -    -   reg [31:0] f36_data = 0; -   reg [1:0] f36_occ = 0; -   reg f36_sof = 0, f36_eof = 0; -    -   wire [35:0] f36_in = {f36_occ,f36_eof,f36_sof,f36_data}; -   reg src_rdy_f36i  = 0; -   wire dst_rdy_f36i; - -   wire [35:0] f36_out, f36_out2; -   wire src_rdy_f36o; -   reg dst_rdy_f36o  = 0; -    -   //fifo_cascade #(.WIDTH(36), .SIZE(4)) fifo_cascade36 -   //fifo_long #(.WIDTH(36), .SIZE(4)) fifo_cascade36 - -   wire i1_sr, i1_dr; -   wire i2_sr, i2_dr; -   wire i3_sr, i3_dr; -   reg i4_dr = 0; -   wire i4_sr; -       -   wire [35:0] i1, i4; -   wire [18:0] i2, i3; -    -   wire [7:0] ll_data; -   wire ll_src_rdy_n, ll_dst_rdy_n, ll_sof_n, ll_eof_n; -    -   fifo_short #(.WIDTH(36)) fifo_short1 -     (.clk(clk),.reset(rst),.clear(clear), -      .datain(f36_in),.src_rdy_i(src_rdy_f36i),.dst_rdy_o(dst_rdy_f36i), -      .dataout(i1),.src_rdy_o(i1_sr),.dst_rdy_i(i1_dr) ); - -   fifo36_to_fifo19 fifo36_to_fifo19 -     (.clk(clk),.reset(rst),.clear(clear), -      .f36_datain(i1),.f36_src_rdy_i(i1_sr),.f36_dst_rdy_o(i1_dr), -      .f19_dataout(i2),.f19_src_rdy_o(i2_sr),.f19_dst_rdy_i(i2_dr) ); - -   fifo19_to_ll8 fifo19_to_ll8 -     (.clk(clk),.reset(rst),.clear(clear), -      .f19_data(i2),.f19_src_rdy_i(i2_sr),.f19_dst_rdy_o(i2_dr), -      .ll_data(ll_data),.ll_sof_n(ll_sof_n),.ll_eof_n(ll_eof_n), -      .ll_src_rdy_n(ll_src_rdy_n),.ll_dst_rdy_n(ll_dst_rdy_n)); - -   ll8_to_fifo19 ll8_to_fifo19 -     (.clk(clk),.reset(rst),.clear(clear), -      .ll_data(ll_data),.ll_sof_n(ll_sof_n),.ll_eof_n(ll_eof_n), -      .ll_src_rdy_n(ll_src_rdy_n),.ll_dst_rdy_n(ll_dst_rdy_n), -      .f19_data(i3),.f19_src_rdy_o(i3_sr),.f19_dst_rdy_i(i3_dr) ); - -   fifo19_to_fifo36 fifo19_to_fifo36 -     (.clk(clk),.reset(rst),.clear(clear), -      .f19_datain(i3),.f19_src_rdy_i(i3_sr),.f19_dst_rdy_o(i3_dr), -      .f36_dataout(i4),.f36_src_rdy_o(i4_sr),.f36_dst_rdy_i(i4_dr) ); -      -   task ReadFromFIFO36; -      begin -	 $display("Read from FIFO36"); -	 #1 i4_dr <= 1; -	 while(1) -	   begin -	      while(~i4_sr) -		@(posedge clk); -	      $display("Read: %h",i4); -	      @(posedge clk); -	   end -      end -   endtask // ReadFromFIFO36 - -   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("Put Packet in FIFO36"); -	 while(~dst_rdy_f36i) -	   @(posedge clk); -	 @(posedge clk); -	 $display("PPI_FIFO36: Entered First Line"); -	 f36_sof <= 0; -	 while(count+4 < data_len) -	   begin -	      f36_data <= f36_data + 32'h01010101; -	      count    <= count + 4; -	      while(~dst_rdy_f36i) -		@(posedge clk); -	      @(posedge clk); -	      $display("PPI_FIFO36: Entered New Line"); -	   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("PPI_FIFO36: Entered Last Line"); -      end -   endtask // PutPacketInFIFO36 -    -   initial $dumpfile("fifo_new_tb.vcd"); -   initial $dumpvars(0,fifo_new_tb); - -   initial -     begin -	@(negedge rst); -	//#10000; -	@(posedge clk); -	@(posedge clk); -	@(posedge clk); -	@(posedge clk); -	ReadFromFIFO36; -     end -    -   initial -     begin -	@(negedge rst); -	@(posedge clk); -	@(posedge clk); -	PutPacketInFIFO36(32'hA0B0C0D0,12); -	@(posedge clk); -	@(posedge clk); -	#10000; -	@(posedge clk); -	PutPacketInFIFO36(32'hE0F0A0B0,36); -	@(posedge clk); -	@(posedge clk); -	@(posedge clk); -	@(posedge clk); -	@(posedge clk); -     end - -   initial #20000 $finish; -endmodule // longfifo_tb diff --git a/control_lib/newfifo/ll8_shortfifo.v b/control_lib/newfifo/ll8_shortfifo.v deleted file mode 100644 index 39ada9a4f..000000000 --- a/control_lib/newfifo/ll8_shortfifo.v +++ /dev/null @@ -1,13 +0,0 @@ - - -module ll8_shortfifo -  (input clk, input reset, input clear, -   input [7:0] datain, input sof_i, input eof_i, input error_i, input src_rdy_i, output dst_rdy_o, -   output [7:0] dataout, output sof_o, output eof_o, output error_o, output src_rdy_o, input dst_rdy_i); - -   fifo_short #(.WIDTH(11)) fifo_short -     (.clk(clk), .reset(reset), .clear(clear), -      .datain({error_i,eof_i,sof_i,datain}), .src_rdy_i(src_rdy_i), .dst_rdy_o(dst_rdy_o), -      .dataout({error_o,eof_o,sof_o,dataout}), .src_rdy_o(src_rdy_o), .dst_rdy_i(dst_rdy_i)); - -endmodule // ll8_shortfifo diff --git a/control_lib/newfifo/ll8_to_fifo19.v b/control_lib/newfifo/ll8_to_fifo19.v deleted file mode 100644 index c65be5136..000000000 --- a/control_lib/newfifo/ll8_to_fifo19.v +++ /dev/null @@ -1,77 +0,0 @@ - -module ll8_to_fifo19 -  (input clk, input reset, input clear, -   input [7:0] ll_data, -   input ll_sof_n, -   input ll_eof_n, -   input ll_src_rdy_n, -   output ll_dst_rdy_n, - -   output [18:0] f19_data, -   output f19_src_rdy_o, -   input f19_dst_rdy_i ); - -   // Why anybody would use active low in an FPGA is beyond me... -   wire  ll_sof      = ~ll_sof_n; -   wire  ll_eof      = ~ll_eof_n; -   wire  ll_src_rdy  = ~ll_src_rdy_n; -   wire  ll_dst_rdy; -   assign    ll_dst_rdy_n  = ~ll_dst_rdy; - -   wire xfer_out 	   = f19_src_rdy_o & f19_dst_rdy_i; -   //  wire xfer_in 	   = ll_src_rdy & ll_dst_rdy;   Not needed -    -   reg 	 f19_sof, f19_eof, f19_occ; -    -   reg [1:0] state; -   reg [7:0] dat0, dat1; - -   always @(posedge clk) -     if(ll_src_rdy & ((state==0)|xfer_out)) -       f19_sof <= ll_sof; - -   always @(posedge clk) -     if(ll_src_rdy & ((state != 2)|xfer_out)) -       f19_eof <= ll_eof; - -   always @(posedge clk) -     if(ll_eof) -       f19_occ <= ~state[0]; -     else -       f19_occ <= 0; -    -   always @(posedge clk) -     if(reset) -       state   <= 0; -     else -       if(ll_src_rdy) -	 case(state) -	   0 :  -	     if(ll_eof) -	       state <= 2; -	     else -	       state <= 1; -	   1 :  -	     state <= 2; -	   2 :  -	     if(xfer_out) -	       state 	   <= 1; -	 endcase // case(state) -       else -	 if(xfer_out) -	   state 	   <= 0; - -   always @(posedge clk) -     if(ll_src_rdy & (state==1)) -       dat1 		   <= ll_data; - -   always @(posedge clk) -     if(ll_src_rdy & ((state==0) | xfer_out)) -       dat0 		   <= ll_data; -    -   assign    ll_dst_rdy     = xfer_out | (state != 2); -   assign    f19_data 	    = {f19_occ,f19_eof,f19_sof,dat0,dat1}; -   assign    f19_src_rdy_o  = (state == 2); -       -endmodule // ll8_to_fifo19 - diff --git a/control_lib/newfifo/ll8_to_fifo36.v b/control_lib/newfifo/ll8_to_fifo36.v deleted file mode 100644 index 108daa903..000000000 --- a/control_lib/newfifo/ll8_to_fifo36.v +++ /dev/null @@ -1,97 +0,0 @@ - -module ll8_to_fifo36 -  (input clk, input reset, input clear, -   input [7:0] ll_data, -   input ll_sof_n, -   input ll_eof_n, -   input ll_src_rdy_n, -   output ll_dst_rdy_n, - -   output [35:0] f36_data, -   output f36_src_rdy_o, -   input f36_dst_rdy_i ); - -   wire f36_write    = f36_src_rdy_o & f36_dst_rdy_i; -       -   // Why anybody would use active low in an FPGA is beyond me... -   wire  ll_sof      = ~ll_sof_n; -   wire  ll_eof      = ~ll_eof_n; -   wire  ll_src_rdy  = ~ll_src_rdy_n; -   wire  ll_dst_rdy; -   assign    ll_dst_rdy_n = ~ll_dst_rdy; - -   reg 	 f36_sof, f36_eof; -   reg [1:0] f36_occ; -    -    -   reg [2:0] state; -   reg [7:0] dat0, dat1, dat2, dat3; - -   always @(posedge clk) -     if(ll_src_rdy & ((state==0)|f36_write)) -       f36_sof <= ll_sof; - -   always @(posedge clk) -     if(ll_src_rdy & ((state !=4)|f36_write)) -       f36_eof <= ll_eof; - -   always @(posedge clk) -     if(ll_eof) -       f36_occ <= state[1:0] + 1; -     else -       f36_occ <= 0; -    -   always @(posedge clk) -     if(reset) -       state   <= 0; -     else -       if(ll_src_rdy) -	 case(state) -	   0 :  -	     if(ll_eof) -	       state <= 4; -	     else -	       state <= 1; -	   1 :  -	     if(ll_eof) -	       state <= 4; -	     else -	       state <= 2; -	   2 :  -	     if(ll_eof) -	       state <= 4; -	     else  -	       state <= 3; -	   3 : state <= 4; -	   4 :  -	     if(f36_dst_rdy_i) -	       if(ll_eof) -		 state 	   <= 4; -	       else -		 state 	   <= 1; -	 endcase // case(state) -       else -	 if(f36_write) -	   state 	   <= 0; - -   always @(posedge clk) -     if(ll_src_rdy & (state==3)) -       dat3 		   <= ll_data; - -   always @(posedge clk) -     if(ll_src_rdy & (state==2)) -       dat2 		   <= ll_data; - -   always @(posedge clk) -     if(ll_src_rdy & (state==1)) -       dat1 		   <= ll_data; - -   always @(posedge clk) -     if(ll_src_rdy & ((state==0) | f36_write)) -       dat0 		   <= ll_data; -    -   assign    ll_dst_rdy     = f36_dst_rdy_i | (state != 4); -   assign    f36_data 	    = {f36_occ,f36_eof,f36_sof,dat0,dat1,dat2,dat3};  // FIXME endianess -   assign    f36_src_rdy_o  = (state == 4); -       -endmodule // ll8_to_fifo36 diff --git a/control_lib/nsgpio.v b/control_lib/nsgpio.v deleted file mode 100644 index 937ea7020..000000000 --- a/control_lib/nsgpio.v +++ /dev/null @@ -1,107 +0,0 @@ -// Modified from code originally by Richard Herveille, his copyright is below - -///////////////////////////////////////////////////////////////////// -////                                                             //// -////  OpenCores Simple General Purpose IO core                   //// -////                                                             //// -////  Author: Richard Herveille                                  //// -////          richard@asics.ws                                   //// -////          www.asics.ws                                       //// -////                                                             //// -///////////////////////////////////////////////////////////////////// -////                                                             //// -//// Copyright (C) 2002 Richard Herveille                        //// -////                    richard@asics.ws                         //// -////                                                             //// -//// This source file may be used and distributed without        //// -//// restriction provided that this copyright statement is not   //// -//// removed from the file and that any derivative work contains //// -//// the original copyright notice and the associated disclaimer.//// -////                                                             //// -////     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     //// -//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   //// -//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   //// -//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      //// -//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         //// -//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    //// -//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   //// -//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        //// -//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  //// -//// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  //// -//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  //// -//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         //// -//// POSSIBILITY OF SUCH DAMAGE.                                 //// -////                                                             //// -///////////////////////////////////////////////////////////////////// - - -module nsgpio -  (input clk_i, input rst_i,  -   input cyc_i, input stb_i, input [3:0] adr_i, input we_i, input [31:0] dat_i,  -   output reg [31:0] dat_o, output reg ack_o, -   input [31:0] atr, input [31:0] debug_0, input [31:0] debug_1,  -   inout [31:0] gpio -   ); - -   reg [63:0] 	ctrl; -   reg [31:0] 	line; -   reg [31:0] 	lgpio;               // LatchedGPIO pins -   reg [31:0] 	ddr; -    -   wire 	wb_acc = cyc_i & stb_i;            // WISHBONE access -   wire 	wb_wr  = wb_acc & we_i;            // WISHBONE write access - -   always @(posedge clk_i or posedge rst_i) -     if (rst_i) -       begin -          ctrl <= 64'h0; -          line <= 0; -       end -     else if (wb_wr) -       case( adr_i[3:2] ) -	 2'b00 :  -           line <= dat_i; -	 2'b01 : -	   ddr[31:0] <= dat_i; -	 2'b10 : -	   ctrl[63:32] <= dat_i; -	 2'b11 : -	   ctrl[31:0] <= dat_i; -       endcase // case( adr_i[3:2] ) -    -   always @(posedge clk_i) -     case (adr_i[3:2]) -       2'b00 : -	 dat_o <= lgpio; -       2'b01 : -	 dat_o <= ddr; -       2'b10 : -	 dat_o <= ctrl[63:32]; -       2'b11 : -	 dat_o <= ctrl[31:0]; -     endcase // case(adr_i[3:2]) -    -   always @(posedge clk_i or posedge rst_i) -     if (rst_i) -       ack_o <= 1'b0; -     else -       ack_o <= wb_acc & !ack_o; -    -   // latch GPIO input pins -   always @(posedge clk_i) -     lgpio <= gpio; -    -   // assign GPIO outputs -   integer   n; -   reg [31:0] igpio; // temporary internal signal -    -   always @(ctrl or line or debug_1 or debug_0 or atr) -     for(n=0;n<32;n=n+1) -       igpio[n] <= ddr[n] ? (ctrl[2*n+1] ? (ctrl[2*n] ? debug_1[n] : debug_0[n]) :  -			     (ctrl[2*n] ?  atr[n] : line[n]) ) -	 : 1'bz; -    -   assign     gpio = igpio; -    -endmodule - diff --git a/control_lib/oneshot_2clk.v b/control_lib/oneshot_2clk.v deleted file mode 100644 index 72f16a4b3..000000000 --- a/control_lib/oneshot_2clk.v +++ /dev/null @@ -1,35 +0,0 @@ - -// Retime a single bit from one clock domain to another -// Guarantees that no matter what the relative clock rates, if the in signal is high for at least -//   one clock cycle in the clk_in domain, then the out signal will be high for at least one -//   clock cycle in the clk_out domain.  If the in signal goes high again before the process is done -//   the behavior is undefined.  No other guarantees.  Designed for passing reset into a new -//   clock domain. - -module oneshot_2clk -  (input clk_in, -   input in, -   input clk_out, -   output reg out); - -   reg 	  del_in = 0; -   reg 	  sendit = 0, gotit = 0; -   reg 	  sendit_d = 0, gotit_d = 0; -    -   always @(posedge clk_in) del_in <= in; - -   always @(posedge clk_in) -     if(in & ~del_in)  // we have a positive edge -       sendit <= 1; -     else if(gotit) -       sendit <= 0; - -   always @(posedge clk_out) sendit_d <= sendit; -   always @(posedge clk_out) out <= sendit_d; - -   always @(posedge clk_in) gotit_d <= out; -   always @(posedge clk_in) gotit <= gotit_d; - -endmodule // oneshot_2clk - -   diff --git a/control_lib/pic.v b/control_lib/pic.v deleted file mode 100644 index 9b9944d4a..000000000 --- a/control_lib/pic.v +++ /dev/null @@ -1,183 +0,0 @@ - -// Heavily modified by M. Ettus, 2009, little original code remains -// Modified by M. Ettus, 2008 for 32 bit width - -///////////////////////////////////////////////////////////////////// -////                                                             //// -////  OpenCores         Simple Programmable Interrupt Controller //// -////                                                             //// -////  Author: Richard Herveille                                  //// -////          richard@asics.ws                                   //// -////          www.asics.ws                                       //// -////                                                             //// -///////////////////////////////////////////////////////////////////// -////                                                             //// -//// Copyright (C) 2002 Richard Herveille                        //// -////                    richard@asics.ws                         //// -////                                                             //// -//// This source file may be used and distributed without        //// -//// restriction provided that this copyright statement is not   //// -//// removed from the file and that any derivative work contains //// -//// the original copyright notice and the associated disclaimer.//// -////                                                             //// -////     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     //// -//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   //// -//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   //// -//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      //// -//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         //// -//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    //// -//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   //// -//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        //// -//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  //// -//// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  //// -//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  //// -//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         //// -//// POSSIBILITY OF SUCH DAMAGE.                                 //// -////                                                             //// -///////////////////////////////////////////////////////////////////// -// -// This is a simple Programmable Interrupt Controller. -// The number of interrupts is depending on the databus size. -// There's one interrupt input per databit (i.e. 16 interrupts for a 16 -// bit databus). -// All attached devices share the same CPU priority level. -// -// -// -// Registers: -// -// 0x00: EdgeEnable Register -//       bits 7:0 R/W  Edge Enable '1' = edge triggered interrupt source -//                                 '0' = level triggered interrupt source -// 0x01: PolarityRegister -//       bits 7:0 R/W Polarity     '1' = high level / rising edge -//                                 '0' = low level / falling edge -// 0x02: MaskRegister -//       bits 7:0 R/W Mask         '1' = interrupt masked (disabled) -//                                 '0' = interrupt not masked (enabled) -// 0x03: PendingRegister -//       bits 7:0 R/W Pending      '1' = interrupt pending -//                                 '0' = no interrupt pending -// -// A CPU interrupt is generated when an interrupt is pending and its -// MASK bit is cleared. -// -// -// -// HOWTO: -// -// Clearing pending interrupts: -// Writing a '1' to a bit in the interrupt pending register clears the -// interrupt. Make sure to clear the interrupt at the source before -// writing to the interrupt pending register. Otherwise the interrupt -// will be set again. -// -// Priority based interrupts: -// Upon reception of an interrupt, check the interrupt register and -// determine the highest priority interrupt. Mask all interrupts from the -// current level to the lowest level. This negates the interrupt line, and -// makes sure only interrupts with a higher level are triggered. After -// completion of the interrupt service routine, clear the interrupt source, -// the interrupt bit in the pending register, and restore the MASK register -// to it's previous state. -// -// Addapt the core for fewer interrupt sources: -// If less than 8 interrupt sources are required, than the 'is' parameter -// can be set to the amount of required interrupts. Interrupts are mapped -// starting at the LSBs. So only the 'is' LSBs per register are valid. All -// other bits (i.e. the 8-'is' MSBs) are set to zero '0'. -// Codesize is approximately linear to the amount of interrupts. I.e. using -// 4 instead of 8 interrupt sources reduces the size by approx. half. -// - - -module pic -  (input clk_i, input rst_i, input cyc_i, input stb_i, -   input [2:0] adr_i,  -   input we_i,  -   input [31:0] dat_i,  -   output reg [31:0] dat_o,  -   output reg ack_o,  -   output reg int_o, -   input [31:0] irq -   ); - -   reg [31:0] 	pol, edgen, pending, mask;   // register bank -   reg [31:0] 	lirq, dirq;                  // latched irqs, delayed latched irqs -    -   // latch interrupt inputs -   always @(posedge clk_i) -     lirq <=  irq; -    -   // generate delayed latched irqs -   always @(posedge clk_i) -     dirq <=  lirq; - -   // generate actual triggers -   function trigger; -      input 	edgen, pol, lirq, dirq; -      reg 	edge_irq, level_irq; -      begin -	 edge_irq  = pol ? (lirq & ~dirq) : (dirq & ~lirq); -	 level_irq = pol ? lirq : ~lirq; -	 trigger = edgen ? edge_irq : level_irq; -      end -   endfunction -    -   reg  [31:0] irq_event; -   integer     n; -   always @(posedge clk_i) -     for(n = 0; n < 32; n = n+1) -       irq_event[n] <=  trigger(edgen[n], pol[n], lirq[n], dirq[n]); - -   // generate wishbone register bank writes -   wire        wb_acc = cyc_i & stb_i;                   // WISHBONE access -   wire        wb_wr  = wb_acc & we_i;                   // WISHBONE write access - -   always @(posedge clk_i) -     if (rst_i) -       begin -          pol   <=  0;              // clear polarity register -          edgen <=  0;              // clear edge enable register -          mask  <=  0;              // mask all interrupts -       end -     else if(wb_wr)                               // wishbone write cycle?? -       case (adr_i) // synopsys full_case parallel_case -         3'd0 : edgen <=  dat_i;        // EDGE-ENABLE register -         3'd1 : pol   <=  dat_i;        // POLARITY register -         3'd2 : mask  <=  dat_i;        // MASK register -         3'd3 : ;                       // PENDING register is a special case (see below) -	 3'd4 : ;                       // Priority encoded live (pending & ~mask) -       endcase - -   // pending register is a special case -   always @(posedge clk_i) -     if (rst_i) -       pending <=  0;            // clear all pending interrupts -     else if ( wb_wr & (adr_i == 3'd3) ) -       pending <=  (pending & ~dat_i) | irq_event; -     else -       pending <=  pending | irq_event; - -   wire [31:0] live_enc; -   priority_enc priority_enc ( .in(pending & ~mask), .out(live_enc) ); -    -   always @(posedge clk_i) -      case (adr_i) // synopsys full_case parallel_case -        3'd0 : dat_o <= edgen; -        3'd1 : dat_o <= pol; -        3'd2 : dat_o <= mask; -        3'd3 : dat_o <= pending; -	3'd4 : dat_o <= live_enc; -      endcase - -   always @(posedge clk_i) -     ack_o <=  wb_acc & !ack_o; - -   always @(posedge clk_i) -     if(rst_i) -       int_o <=  0; -     else -       int_o <=  |(pending & ~mask); -    -endmodule diff --git a/control_lib/priority_enc.v b/control_lib/priority_enc.v deleted file mode 100644 index 916192445..000000000 --- a/control_lib/priority_enc.v +++ /dev/null @@ -1,44 +0,0 @@ - -module priority_enc -  (input [31:0] in, -   output reg [31:0] out); - -   always @* -     casex(in) -       32'b1xxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx : out <= 31; -       32'b01xx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx : out <= 30; -       32'b001x_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx : out <= 29; -       32'b0001_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx : out <= 28; -       32'b0000_1xxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx : out <= 27; -       32'b0000_01xx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx : out <= 26; -       32'b0000_001x_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx : out <= 25; -       32'b0000_0001_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx : out <= 24; -       32'b0000_0000_1xxx_xxxx_xxxx_xxxx_xxxx_xxxx : out <= 23; -       32'b0000_0000_01xx_xxxx_xxxx_xxxx_xxxx_xxxx : out <= 22; -       32'b0000_0000_001x_xxxx_xxxx_xxxx_xxxx_xxxx : out <= 21; -       32'b0000_0000_0001_xxxx_xxxx_xxxx_xxxx_xxxx : out <= 20; -       32'b0000_0000_0000_1xxx_xxxx_xxxx_xxxx_xxxx : out <= 19; -       32'b0000_0000_0000_01xx_xxxx_xxxx_xxxx_xxxx : out <= 18; -       32'b0000_0000_0000_001x_xxxx_xxxx_xxxx_xxxx : out <= 17; -       32'b0000_0000_0000_0001_xxxx_xxxx_xxxx_xxxx : out <= 16; -       32'b0000_0000_0000_0000_1xxx_xxxx_xxxx_xxxx : out <= 15; -       32'b0000_0000_0000_0000_01xx_xxxx_xxxx_xxxx : out <= 14; -       32'b0000_0000_0000_0000_001x_xxxx_xxxx_xxxx : out <= 13; -       32'b0000_0000_0000_0000_0001_xxxx_xxxx_xxxx : out <= 12; -       32'b0000_0000_0000_0000_0000_1xxx_xxxx_xxxx : out <= 11; -       32'b0000_0000_0000_0000_0000_01xx_xxxx_xxxx : out <= 10; -       32'b0000_0000_0000_0000_0000_001x_xxxx_xxxx : out <=  9; -       32'b0000_0000_0000_0000_0000_0001_xxxx_xxxx : out <=  8; -       32'b0000_0000_0000_0000_0000_0000_1xxx_xxxx : out <=  7; -       32'b0000_0000_0000_0000_0000_0000_01xx_xxxx : out <=  6; -       32'b0000_0000_0000_0000_0000_0000_001x_xxxx : out <=  5; -       32'b0000_0000_0000_0000_0000_0000_0001_xxxx : out <=  4; -       32'b0000_0000_0000_0000_0000_0000_0000_1xxx : out <=  3; -       32'b0000_0000_0000_0000_0000_0000_0000_01xx : out <=  2; -       32'b0000_0000_0000_0000_0000_0000_0000_001x : out <=  1; -       32'b0000_0000_0000_0000_0000_0000_0000_0001 : out <=  0; -       32'b0000_0000_0000_0000_0000_0000_0000_0000 : out <= 32'hFFFF_FFFF; -       default : out <= 32'hFFFF_FFFF; -     endcase // casex (in) -    -endmodule // priority_enc diff --git a/control_lib/ram_2port.v b/control_lib/ram_2port.v deleted file mode 100644 index 6c8332b9c..000000000 --- a/control_lib/ram_2port.v +++ /dev/null @@ -1,42 +0,0 @@ - - -module ram_2port -  #(parameter DWIDTH=32, -    parameter AWIDTH=9) -    (input clka, -     input ena, -     input wea, -     input [AWIDTH-1:0] addra, -     input [DWIDTH-1:0] dia, -     output reg [DWIDTH-1:0] doa, -      -     input clkb, -     input enb, -     input web, -     input [AWIDTH-1:0] addrb, -     input [DWIDTH-1:0] dib, -     output reg [DWIDTH-1:0] dob); -    -   reg [DWIDTH-1:0] ram [(1<<AWIDTH)-1:0]; -   integer 	    i; -   initial -     for(i=0;i<(1<<AWIDTH);i=i+1) -       ram[i] <= {AWIDTH{1'b0}}; -    -   always @(posedge clka) begin -      if (ena) -        begin -           if (wea) -             ram[addra] <= dia; -           doa <= ram[addra]; -        end -   end -   always @(posedge clkb) begin -      if (enb) -        begin -           if (web) -             ram[addrb] <= dib; -           dob <= ram[addrb]; -        end -   end -endmodule // ram_2port diff --git a/control_lib/ram_harv_cache.v b/control_lib/ram_harv_cache.v deleted file mode 100644 index 29fdebf7a..000000000 --- a/control_lib/ram_harv_cache.v +++ /dev/null @@ -1,75 +0,0 @@ - - -// Dual ported, Harvard architecture, cached ram - -module ram_harv_cache -  #(parameter AWIDTH=15,parameter RAM_SIZE=16384,parameter ICWIDTH=6,parameter DCWIDTH=6) -    (input wb_clk_i, input wb_rst_i, -      -     input [AWIDTH-1:0] ram_loader_adr_i, -     input [31:0] ram_loader_dat_i, -     input ram_loader_stb_i, -     input [3:0] ram_loader_sel_i, -     input ram_loader_we_i, -     output ram_loader_ack_o, -     input ram_loader_done_i, -      -     input [AWIDTH-1:0] iwb_adr_i, -     input iwb_stb_i, -     output [31:0] iwb_dat_o, -     output iwb_ack_o, -      -     input [AWIDTH-1:0] dwb_adr_i, -     input [31:0] dwb_dat_i,  -     output [31:0] dwb_dat_o, -     input dwb_we_i, -     output dwb_ack_o, -     input dwb_stb_i, -     input [3:0] dwb_sel_i, - -     input flush_icache ); - -   wire [31:0] 	 iram_dat, dram_dat_i, dram_dat_o; -   wire [AWIDTH-1:0] iram_adr, dram_adr; -   wire 	     iram_en, dram_en, dram_we; -   wire [3:0] 	     dram_sel; -    -   dpram32 #(.AWIDTH(AWIDTH),.RAM_SIZE(RAM_SIZE)) sys_ram -     (.clk(wb_clk_i), - -      .adr1_i(ram_loader_done_i ? iram_adr : ram_loader_adr_i), -      .dat1_i(ram_loader_dat_i), -      .dat1_o(iram_dat), -      .we1_i(ram_loader_done_i ? 1'b0 : ram_loader_we_i), -      .en1_i(ram_loader_done_i ? iram_en : ram_loader_stb_i), -      .sel1_i(ram_loader_done_i ? 4'hF : ram_loader_sel_i), - -      .adr2_i(dram_adr),.dat2_i(dram_dat_i),.dat2_o(dram_dat_o), -      .we2_i(dram_we),.en2_i(dram_en),.sel2_i(dram_sel) ); - -   // Data bus side -   dcache #(.AWIDTH(AWIDTH),.CWIDTH(DCWIDTH)) -     dcache(.wb_clk_i(wb_clk_i),.wb_rst_i(wb_rst_i), -	    .dwb_adr_i(dwb_adr_i),.dwb_stb_i(dwb_stb_i), -	    .dwb_we_i(dwb_we_i),.dwb_sel_i(dwb_sel_i), -	    .dwb_dat_i(dwb_dat_i),.dwb_dat_o(dwb_dat_o), -	    .dwb_ack_o(dwb_ack_o), -	    .dram_dat_i(dram_dat_o),.dram_dat_o(dram_dat_i),.dram_adr_o(dram_adr), -	    .dram_we_o(dram_we),.dram_en_o(dram_en), .dram_sel_o(dram_sel) ); -	     -   // Instruction bus side -   icache #(.AWIDTH(AWIDTH),.CWIDTH(ICWIDTH)) -     icache(.wb_clk_i(wb_clk_i),.wb_rst_i(wb_rst_i), -	    .iwb_adr_i(iwb_adr_i),.iwb_stb_i(iwb_stb_i), -	    .iwb_dat_o(iwb_dat_o),.iwb_ack_o(iwb_ack_o), -	    .iram_dat_i(iram_dat),.iram_adr_o(iram_adr),.iram_en_o(iram_en), -	    .flush(flush_icache)); - -   // RAM loader -   assign 	 ram_loader_ack_o = ram_loader_stb_i; - -   // Performance Monitoring -   wire 	 i_wait = iwb_stb_i & ~iwb_ack_o; -   wire 	 d_wait = dwb_stb_i & ~dwb_ack_o; -    -endmodule // ram_harv_cache diff --git a/control_lib/ram_loader.v b/control_lib/ram_loader.v deleted file mode 100644 index cb67de739..000000000 --- a/control_lib/ram_loader.v +++ /dev/null @@ -1,225 +0,0 @@ - -// Adapted from VHDL code in spi_boot by Arnim Legauer -//  Added a full wishbone master interface (32-bit) - -module ram_loader #(parameter AWIDTH=16, RAM_SIZE=16384) -  (input clk_i, input rst_i, -   // CPLD Interface -   input cfg_clk_i, input cfg_data_i, -   output start_o, output mode_o, output done_o, -   input detached_i, -   // Wishbone interface -   output wire [31:0] wb_dat_o, -   output reg [AWIDTH-1:0] wb_adr_o, -   output wb_stb_o, -   output wb_cyc_o, -   output reg [3:0] wb_sel_o, -   output reg wb_we_o, -   input wb_ack_i, -   output ram_loader_done_o); -    -   //  FSM to control start signal, clocked on main clock -   localparam FSM1_WAIT_DETACH = 2'b00; -   localparam FSM1_CHECK_NO_DONE = 2'b01; -   localparam FSM1_WAIT_DONE = 2'b10; -    -   reg [1:0]  start_fsm_q, start_fsm_s; -   reg 	      start_q, enable_q, start_s, enable_s; -   reg 	      done_q, done_s; -    -   always @(posedge clk_i or posedge rst_i) -     if(rst_i) -       begin -	  start_fsm_q <= FSM1_WAIT_DETACH; -	  start_q <= 1'b0; -	  enable_q <= 1'b0; -       end -     else -       begin -	  start_fsm_q <= start_fsm_s; -	  enable_q <= enable_s; -	  start_q <= start_s; -       end // else: !if(rst_i) -    -   always @* -     case(start_fsm_q) -       FSM1_WAIT_DETACH: -	 if(detached_i == 1'b1) -	   begin -	      start_fsm_s <= FSM1_CHECK_NO_DONE; -	      enable_s <= 1'b1; -	      start_s <= 1'b1; -	   end -	 else -	   begin -	      start_fsm_s <= FSM1_WAIT_DETACH; -	      enable_s <= enable_q; -	      start_s <= start_q; -	   end // else: !if(detached_i == 1'b1) -       FSM1_CHECK_NO_DONE: -	 if(~done_q) -	   begin -	      start_fsm_s  <= FSM1_WAIT_DONE; -	      enable_s <= enable_q; -	      start_s <= start_q; -	   end -	 else -	   begin -	      start_fsm_s  <= FSM1_CHECK_NO_DONE; -	      enable_s <= enable_q; -	      start_s <= start_q; -	   end // else: !if(~done_q) -       FSM1_WAIT_DONE: -	 if(done_q) -	   begin -	      start_fsm_s  <= FSM1_WAIT_DETACH; -	      enable_s <= 1'b0; -	      start_s <= 1'b0; -	   end -	 else -	   begin -	      start_fsm_s  <= FSM1_WAIT_DONE; -	      enable_s <= enable_q; -	      start_s <= start_q; -	   end // else: !if(done_q) -       default: -	 begin -	    start_fsm_s  <= FSM1_WAIT_DETACH; -	    enable_s <= enable_q; -	    start_s <= start_q; -	 end // else: !if(done_q) -     endcase // case(start_fsm_q) -    -   //  FSM running on data clock - -   localparam FSM2_IDLE = 3'b000; -   localparam FSM2_WE_ON = 3'b001; -   localparam FSM2_WE_OFF = 3'b010; -   localparam FSM2_INC_ADDR1 = 3'b011; -   localparam FSM2_INC_ADDR2 = 3'b100; -   localparam FSM2_FINISHED = 3'b101; -    -   reg [AWIDTH-1:0] addr_q; -   reg [7:0] 	    shift_dat_q, ser_dat_q; -   reg [2:0] 	    bit_q, fsm_q, fsm_s; -   reg 		    bit_ovfl_q, ram_we_s, ram_we_q, mode_q, mode_s, inc_addr_s; -    -   always @(posedge cfg_clk_i or posedge rst_i) -     if(rst_i) -       begin -	  addr_q <= 0; -	  shift_dat_q <= 8'd0; -	  ser_dat_q <= 8'd0; -	  bit_q <= 3'd0; -	  bit_ovfl_q <= 1'b0; -	  fsm_q <= FSM2_IDLE; -	  ram_we_q <= 1'b0; -	  done_q <= 1'b0; -	  mode_q <= 1'b0; -       end -     else -       begin -	  if(inc_addr_s) -	    addr_q <= addr_q + 1; -	  if(enable_q) -	    begin -	       bit_q <= bit_q + 1; -	       bit_ovfl_q <= (bit_q == 3'd7); -	       shift_dat_q[0] <= cfg_data_i; -	       shift_dat_q[7:1] <= shift_dat_q[6:0]; -	    end -	  if(bit_ovfl_q) -	    ser_dat_q <= shift_dat_q; - -	  fsm_q <= fsm_s; - -	  ram_we_q <= ram_we_s; - -	  if(done_s) -	    done_q <= 1'b1; -	  mode_q <= mode_s; -       end // else: !if(rst_i) - -   always @* -     begin -	inc_addr_s <= 1'b0; -	ram_we_s <= 1'b0; -	done_s <= 1'b0; -	fsm_s <= FSM2_IDLE; -	mode_s <= 1'b0; - -	case(fsm_q) -	  FSM2_IDLE : -	    if(start_q) -	      if(bit_ovfl_q) -		fsm_s <= FSM2_WE_ON; -	  FSM2_WE_ON: -	    begin -	       ram_we_s <= 1'b1; -	       fsm_s <= FSM2_WE_OFF; -	    end -	  FSM2_WE_OFF: -	    begin -	       ram_we_s <= 1'b1; -	       fsm_s <= FSM2_INC_ADDR1; -	    end -	  FSM2_INC_ADDR1: -	    fsm_s <= FSM2_INC_ADDR2; -	  FSM2_INC_ADDR2: -	    if(addr_q == (RAM_SIZE-1)) -	    //if(&addr_q) -	      begin -		 fsm_s <= FSM2_FINISHED; -		 done_s <= 1'b1; -		 mode_s <= 1'b1; -	      end -	    else -	      begin -		 inc_addr_s <= 1'b1; -		 fsm_s <= FSM2_IDLE; -	      end // else: !if(&addr_q) -	  FSM2_FINISHED: -	    begin -	       fsm_s <= FSM2_FINISHED; -	       mode_s <= 1'b1; -	    end -	endcase // case(fsm_q) -     end // always @ * -    -   assign start_o = start_q; -   assign mode_o = mode_q; -   assign done_o = start_q ? done_q : 1'b1; -   wire [AWIDTH-1:0] ram_addr = addr_q; -   wire [7:0] ram_data = ser_dat_q; -   assign ram_loader_done_o = (fsm_q == FSM2_FINISHED); -    -   // wishbone master, only writes -   reg [7:0] dat_holder; -   assign    wb_dat_o = {4{dat_holder}}; -   assign    wb_stb_o = wb_we_o; -   assign    wb_cyc_o = wb_we_o; -    -   always @(posedge clk_i or posedge rst_i) -     if(rst_i) -       begin -	  dat_holder <= 8'd0; -	  wb_adr_o <= 0; -	  wb_sel_o <= 4'b0000; -	  wb_we_o <= 1'b0; -       end -     else if(ram_we_q) -       begin -	  dat_holder <= ram_data; -	  wb_adr_o <= ram_addr; -	  wb_we_o <= 1'b1; -	  case(ram_addr[1:0])   // Big Endian -	    2'b00 : wb_sel_o <= 4'b1000; -	    2'b01 : wb_sel_o <= 4'b0100; -	    2'b10 : wb_sel_o <= 4'b0010; -	    2'b11 : wb_sel_o <= 4'b0001; -	  endcase // case(ram_addr[1:0]) -       end // if (ram_we_q) -     else if(wb_ack_i) -       wb_we_o <= 1'b0; -       -endmodule // ram_loader diff --git a/control_lib/ram_wb_harvard.v b/control_lib/ram_wb_harvard.v deleted file mode 100644 index c3efc12e0..000000000 --- a/control_lib/ram_wb_harvard.v +++ /dev/null @@ -1,86 +0,0 @@ - -// Dual ported RAM for Harvard architecture processors -//    Does no forwarding -//    Addresses are byte-oriented, so botton 2 address bits are ignored.  FIXME -//    AWIDTH of 13 gives 8K bytes.  For Spartan 3, if the total RAM size is not a -//    multiple of 8K then BRAM space is wasted - -module ram_wb_harvard #(parameter AWIDTH=13) -  (input wb_clk_i, -   input wb_rst_i, -    -   input [AWIDTH-1:0] iwb_adr_i, -   input [31:0] iwb_dat_i, -   output reg [31:0] iwb_dat_o, -   input iwb_we_i, -   output reg iwb_ack_o, -   input iwb_stb_i, -   input [3:0] iwb_sel_i, -    -   input [AWIDTH-1:0] dwb_adr_i, -   input [31:0] dwb_dat_i, -   output reg [31:0] dwb_dat_o, -   input dwb_we_i, -   output reg dwb_ack_o, -   input dwb_stb_i, -   input [3:0] dwb_sel_i); -    -   reg [7:0] 	 ram0 [0:(1<<(AWIDTH-2))-1]; -   reg [7:0] 	 ram1 [0:(1<<(AWIDTH-2))-1]; -   reg [7:0] 	 ram2 [0:(1<<(AWIDTH-2))-1]; -   reg [7:0] 	 ram3 [0:(1<<(AWIDTH-2))-1]; -    -   // Instruction Read Port -   always @(posedge wb_clk_i) -     iwb_ack_o <= iwb_stb_i & ~iwb_ack_o; -    -   always @(posedge wb_clk_i) -     iwb_dat_o[31:24] <= ram3[iwb_adr_i[AWIDTH-1:2]]; -   always @(posedge wb_clk_i) -     iwb_dat_o[23:16] <= ram2[iwb_adr_i[AWIDTH-1:2]]; -   always @(posedge wb_clk_i) -     iwb_dat_o[15:8] <= ram1[iwb_adr_i[AWIDTH-1:2]]; -   always @(posedge wb_clk_i) -     iwb_dat_o[7:0] <= ram0[iwb_adr_i[AWIDTH-1:2]]; -    -   always @(posedge wb_clk_i) -     if(iwb_we_i & iwb_stb_i & iwb_sel_i[3]) -       ram3[iwb_adr_i[AWIDTH-1:2]] <= iwb_dat_i[31:24]; -   always @(posedge wb_clk_i) -     if(iwb_we_i & iwb_stb_i & iwb_sel_i[2]) -       ram2[iwb_adr_i[AWIDTH-1:2]] <= iwb_dat_i[23:16]; -   always @(posedge wb_clk_i) -     if(iwb_we_i & iwb_stb_i & iwb_sel_i[1]) -       ram1[iwb_adr_i[AWIDTH-1:2]] <= iwb_dat_i[15:8]; -   always @(posedge wb_clk_i) -     if(iwb_we_i & iwb_stb_i & iwb_sel_i[0]) -       ram0[iwb_adr_i[AWIDTH-1:2]] <= iwb_dat_i[7:0]; -    -   // Data Port -   always @(posedge wb_clk_i) -     dwb_ack_o <= dwb_stb_i & ~dwb_ack_o; -    -   always @(posedge wb_clk_i) -     dwb_dat_o[31:24] <= ram3[dwb_adr_i[AWIDTH-1:2]]; -   always @(posedge wb_clk_i) -     dwb_dat_o[23:16] <= ram2[dwb_adr_i[AWIDTH-1:2]]; -   always @(posedge wb_clk_i) -     dwb_dat_o[15:8] <= ram1[dwb_adr_i[AWIDTH-1:2]]; -   always @(posedge wb_clk_i) -     dwb_dat_o[7:0]  <= ram0[dwb_adr_i[AWIDTH-1:2]]; -    -   always @(posedge wb_clk_i) -     if(dwb_we_i & dwb_stb_i & dwb_sel_i[3]) -       ram3[dwb_adr_i[AWIDTH-1:2]] <= dwb_dat_i[31:24]; -   always @(posedge wb_clk_i) -     if(dwb_we_i & dwb_stb_i & dwb_sel_i[2]) -       ram2[dwb_adr_i[AWIDTH-1:2]] <= dwb_dat_i[23:16]; -   always @(posedge wb_clk_i) -     if(dwb_we_i & dwb_stb_i & dwb_sel_i[1]) -       ram1[dwb_adr_i[AWIDTH-1:2]] <= dwb_dat_i[15:8]; -   always @(posedge wb_clk_i) -     if(dwb_we_i & dwb_stb_i & dwb_sel_i[0]) -       ram0[dwb_adr_i[AWIDTH-1:2]] <= dwb_dat_i[7:0]; -    -endmodule // ram_wb_harvard - diff --git a/control_lib/reset_sync.v b/control_lib/reset_sync.v deleted file mode 100644 index 94d966840..000000000 --- a/control_lib/reset_sync.v +++ /dev/null @@ -1,16 +0,0 @@ - - -module reset_sync -  (input clk, -   input reset_in, -   output reg reset_out); - -   reg 	      reset_int; - -   always @(posedge clk or posedge reset_in) -     if(reset_in) -       {reset_out,reset_int} <= 2'b11; -     else -       {reset_out,reset_int} <= {reset_int,1'b0}; -    -endmodule // reset_sync diff --git a/control_lib/sd_spi.v b/control_lib/sd_spi.v deleted file mode 100644 index 3f4d7f46a..000000000 --- a/control_lib/sd_spi.v +++ /dev/null @@ -1,70 +0,0 @@ -module sd_spi -  (input clk, -   input rst, -    -   // SD Card interface -   output reg sd_clk, -   output sd_mosi, -   input sd_miso, -    -   // Controls -   input [7:0] clk_div, -   input [7:0] send_dat, -   output [7:0] rcv_dat, -   input go, -   output ready); - -   reg [7:0] clk_ctr;    -   reg [3:0] bit_ctr; - -   wire      bit_ready = (clk_ctr == 8'd0); -   wire      bit_busy = (clk_ctr != 8'd0); -   wire      bit_done = (clk_ctr == clk_div); - -   wire      send_clk_hi = (clk_ctr == (clk_div>>1)); -   wire      latch_dat = (clk_ctr == (clk_div - 8'd2));      -   wire      send_clk_lo = (clk_ctr == (clk_div - 8'd1)); - -   wire      send_bit = (bit_ready && (bit_ctr != 0)); -   assign    ready = (bit_ctr == 0); -    -   always @(posedge clk) -     if(rst) -       clk_ctr <= 0; -     else if(bit_done) -       clk_ctr <= 0; -     else if(bit_busy) -       clk_ctr <= clk_ctr + 1; -     else if(send_bit) -       clk_ctr <= 1; - -   always @(posedge clk) -     if(rst) -       sd_clk <= 0; -     else if(send_clk_hi) -       sd_clk <= 1; -     else if(send_clk_lo) -       sd_clk <= 0; -    -   always @(posedge clk) -     if(rst) -       bit_ctr <= 0; -     else if(bit_done) -       if(bit_ctr == 4'd8) -	 bit_ctr <= 0; -       else -	 bit_ctr <= bit_ctr + 1; -     else if(bit_ready & go) -       bit_ctr <= 1; -    -   reg [7:0] shift_reg; -   always @(posedge clk) -     if(go) -       shift_reg <= send_dat; -     else if(latch_dat) -       shift_reg <= {shift_reg[6:0],sd_miso}; - -   assign    sd_mosi = shift_reg[7]; -   assign    rcv_dat = shift_reg; -    -endmodule // sd_spi diff --git a/control_lib/sd_spi_tb.v b/control_lib/sd_spi_tb.v deleted file mode 100644 index e30a5bdf6..000000000 --- a/control_lib/sd_spi_tb.v +++ /dev/null @@ -1,40 +0,0 @@ - - -module sd_spi_tb; - -   reg clk = 0; -   always #5 clk = ~clk; -   reg rst = 1; -   initial #32 rst = 0; - -   wire sd_clk, sd_mosi, sd_miso; -   wire [7:0] clk_div = 12; -   wire [7:0] send_dat = 23; -   wire [7:0] rcv_dat; - -   wire       ready; -   reg 	      go = 0; -   initial  -     begin -	repeat (100) -	  @(posedge clk); -	go <= 1; -	@(posedge clk); -	go <= 0; -     end -    -   sd_spi dut(.clk(clk),.rst(rst), -	      .sd_clk(sd_clk),.sd_mosi(sd_mosi),.sd_miso(sd_miso), -	      .clk_div(clk_div),.send_dat(send_dat),.rcv_dat(rcv_dat), -	      .go(go),.ready(ready) ); - -   initial     -     begin  -	$dumpfile("sd_spi_tb.vcd"); -	$dumpvars(0,sd_spi_tb); -     end - -   initial -     #10000 $finish(); -    -endmodule // sd_spi_tb diff --git a/control_lib/sd_spi_wb.v b/control_lib/sd_spi_wb.v deleted file mode 100644 index 7a6258b56..000000000 --- a/control_lib/sd_spi_wb.v +++ /dev/null @@ -1,76 +0,0 @@ - -// Wishbone module for spi communications with an SD Card -// The programming interface is simple --  -//      Write the desired clock divider to address 1 (should be 1 or higher) -//      Status is in address 0.  A 1 indicates the last transaction is done and it is safe to -//          send another -//      Writing a byte to address 2 sends that byte over SPI.  When it is done,  -//          status (addr 0) goes high again, and the received byte can be read from address 3. - -module sd_spi_wb -  (input clk, -   input rst, -    -   // SD Card interface -   output sd_clk, -   output sd_csn, -   output sd_mosi, -   input sd_miso, - -   input wb_cyc_i, -   input wb_stb_i, -   input wb_we_i, -   input [1:0] wb_adr_i, -   input [7:0] wb_dat_i, -   output reg [7:0] wb_dat_o, -   output reg wb_ack_o); - -   localparam ADDR_STATUS = 0; -   localparam ADDR_CLKDIV = 1; -   localparam ADDR_WRITE = 2; -   localparam ADDR_READ = 3; - -   wire [7:0] status, rcv_dat; -   reg [7:0]  clkdiv; -   wire       ready; -   reg 	      ack_d1; - -   reg 	      cs_reg; -   assign     sd_csn = ~cs_reg;  // FIXME -    -   always @(posedge clk) -     if(rst) ack_d1 <= 0; -     else ack_d1 <= wb_ack_o; -    -   always @(posedge clk) -     if(rst) wb_ack_o <= 0; -     else wb_ack_o <= wb_cyc_i & wb_stb_i & ~ack_d1; -    -   always @(posedge clk) -     case(wb_adr_i) -       ADDR_STATUS : wb_dat_o <= {7'd0,ready}; -       ADDR_CLKDIV : wb_dat_o <= clkdiv; -       ADDR_READ : wb_dat_o <= rcv_dat; -       default : wb_dat_o <= 0; -     endcase // case(wb_adr_i) - -   always @(posedge clk) -     if(rst) -       begin -	  clkdiv <= 200; -	  cs_reg <= 0; -       end -     else if(wb_we_i & wb_stb_i & wb_cyc_i & wb_ack_o) -       case(wb_adr_i) -	 ADDR_STATUS : cs_reg <= wb_dat_i; -	 ADDR_CLKDIV : clkdiv <= wb_dat_i; -       endcase // case(wb_adr_i) - -   wire       go = wb_we_i & wb_stb_i & wb_cyc_i & wb_ack_o & (wb_adr_i == ADDR_WRITE); -    -   sd_spi sd_spi(.clk(clk),.rst(rst), -		 .sd_clk(sd_clk),.sd_mosi(sd_mosi),.sd_miso(sd_miso), -		 .clk_div(clkdiv),.send_dat(wb_dat_i),.rcv_dat(rcv_dat), -		 .go(go),.ready(ready) ); - -endmodule // sd_spi_wb diff --git a/control_lib/setting_reg.v b/control_lib/setting_reg.v deleted file mode 100644 index ccbaa3d2e..000000000 --- a/control_lib/setting_reg.v +++ /dev/null @@ -1,23 +0,0 @@ - - -module setting_reg -  #(parameter my_addr = 0) -    (input clk, input rst, input strobe, input wire [7:0] addr, -     input wire [31:0] in, output reg [31:0] out, output reg changed); -    -   always @(posedge clk) -     if(rst) -       begin -	  out <= 32'd0; -	  changed <= 1'b0; -       end -     else -       if(strobe & (my_addr==addr)) -	 begin -	    out <= in; -	    changed <= 1'b1; -	 end -       else -	 changed <= 1'b0; -    -endmodule // setting_reg diff --git a/control_lib/settings_bus.v b/control_lib/settings_bus.v deleted file mode 100644 index d01a30ab4..000000000 --- a/control_lib/settings_bus.v +++ /dev/null @@ -1,49 +0,0 @@ - -// Grab settings off the wishbone bus, send them out to our simpler bus on the fast clock - -module settings_bus -  #(parameter AWIDTH=16, parameter DWIDTH=32) -    (input wb_clk,  -     input wb_rst,  -     input [AWIDTH-1:0] wb_adr_i, -     input [DWIDTH-1:0] wb_dat_i, -     input wb_stb_i, -     input wb_we_i, -     output reg wb_ack_o, -     input sys_clk, -     output strobe, -     output reg [7:0] addr, -     output reg [31:0] data); - -   reg 	    stb_int, stb_int_d1; -    -   always @(posedge wb_clk) -     if(wb_rst) -       begin -	  stb_int <= 1'b0; -	  addr <= 8'd0; -	  data <= 32'd0; -       end -     else if(wb_we_i & wb_stb_i) -       begin -	  stb_int <= 1'b1; -	  addr <= wb_adr_i[9:2]; -	  data <= wb_dat_i; -       end -     else -       stb_int <= 1'b0; - -   always @(posedge wb_clk) -     if(wb_rst) -       wb_ack_o <= 0; -     else -       wb_ack_o <= wb_stb_i & ~wb_ack_o; - -   always @(posedge wb_clk) -     stb_int_d1 <= stb_int; - -   //assign strobe = stb_int & ~stb_int_d1; -   assign strobe = stb_int & wb_ack_o; -           -endmodule // settings_bus - diff --git a/control_lib/shortfifo.v b/control_lib/shortfifo.v deleted file mode 100644 index d8ce1428e..000000000 --- a/control_lib/shortfifo.v +++ /dev/null @@ -1,87 +0,0 @@ - -module shortfifo -  #(parameter WIDTH=32) -    (input clk, input rst, -     input [WIDTH-1:0] datain, -     output [WIDTH-1:0] dataout, -     input read, -     input write, -     input clear, -     output reg full, -     output reg empty, -     output reg [4:0] space, -     output reg [4:0] occupied); -    -   reg [3:0] 	  a; -   genvar 	  i; -    -   generate -      for (i=0;i<WIDTH;i=i+1) -	begin : gen_srl16 -	   SRL16E -	     srl16e(.Q(dataout[i]), -		    .A0(a[0]),.A1(a[1]),.A2(a[2]),.A3(a[3]), -		    .CE(write),.CLK(clk),.D(datain[i])); -	end -   endgenerate -    -   always @(posedge clk) -     if(rst) -       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 == 14) -	    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(rst) -       space <= 16; -     else if(clear) -       space <= 16; -     else if(read & ~write) -       space <= space + 1; -     else if(write & ~read) -       space <= space - 1; -    -   always @(posedge clk) -     if(rst) -       occupied <= 0; -     else if(clear) -       occupied <= 0; -     else if(read & ~write) -       occupied <= occupied - 1; -     else if(write & ~read) -       occupied <= occupied + 1; -       -endmodule // shortfifo diff --git a/control_lib/simple_uart.v b/control_lib/simple_uart.v deleted file mode 100644 index 22f0e70a2..000000000 --- a/control_lib/simple_uart.v +++ /dev/null @@ -1,61 +0,0 @@ - -module simple_uart -  #(parameter TXDEPTH = 1, -    parameter RXDEPTH = 1) -    (input clk_i, input rst_i, -     input we_i, input stb_i, input cyc_i, output reg ack_o, -     input [2:0] adr_i, input [31:0] dat_i, output reg [31:0] dat_o, -     output rx_int_o, output tx_int_o, output tx_o, input rx_i, output baud_o); -    -   // Register Map -   localparam SUART_CLKDIV = 0; -   localparam SUART_TXLEVEL = 1; -   localparam SUART_RXLEVEL = 2; -   localparam SUART_TXCHAR = 3; -   localparam SUART_RXCHAR = 4; -    -   wire       wb_acc = cyc_i & stb_i;            // WISHBONE access -   wire       wb_wr  = wb_acc & we_i;            // WISHBONE write access -    -   reg [15:0] clkdiv; -   wire [7:0] rx_char; -   wire       tx_fifo_full, rx_fifo_empty;    -   wire [7:0] tx_fifo_level, rx_fifo_level; -    -   always @(posedge clk_i) -     if (rst_i) -       ack_o <= 1'b0; -     else -       ack_o <= wb_acc & ~ack_o; -    -   always @(posedge clk_i) -     if (rst_i) -       clkdiv <= 0; -     else if (wb_wr) -       case(adr_i) -	 SUART_CLKDIV : clkdiv <= dat_i[15:0]; -       endcase // case(adr_i) -    -   always @(posedge clk_i) -     case (adr_i) -       SUART_TXLEVEL : dat_o <= tx_fifo_level; -       SUART_RXLEVEL : dat_o <= rx_fifo_level; -       SUART_RXCHAR : dat_o <= rx_char; -     endcase // case(adr_i) -    -   simple_uart_tx #(.DEPTH(TXDEPTH)) simple_uart_tx -     (.clk(clk_i),.rst(rst_i), -      .fifo_in(dat_i[7:0]),.fifo_write(ack_o && wb_wr && (adr_i == SUART_TXCHAR)), -      .fifo_level(tx_fifo_level),.fifo_full(tx_fifo_full), -      .clkdiv(clkdiv),.baudclk(baud_o),.tx(tx_o)); -    -   simple_uart_rx #(.DEPTH(RXDEPTH)) simple_uart_rx -     (.clk(clk_i),.rst(rst_i), -      .fifo_out(rx_char),.fifo_read(ack_o && ~wb_wr && (adr_i == SUART_RXCHAR)), -      .fifo_level(rx_fifo_level),.fifo_empty(rx_fifo_empty), -      .clkdiv(clkdiv),.rx(rx_i)); -    -   assign     tx_int_o = ~tx_fifo_full; -   assign     rx_int_o = ~rx_fifo_empty; -    -endmodule // simple_uart diff --git a/control_lib/simple_uart_rx.v b/control_lib/simple_uart_rx.v deleted file mode 100644 index debdd618b..000000000 --- a/control_lib/simple_uart_rx.v +++ /dev/null @@ -1,64 +0,0 @@ - - -module simple_uart_rx -  #(parameter DEPTH=0) -    (input clk, input rst,  -     output [7:0] fifo_out, input fifo_read, output [7:0] fifo_level, output fifo_empty,  -     input [15:0] clkdiv, input rx); - -   reg 		  rx_d1, rx_d2; -   always @(posedge clk) -     if(rst) -       {rx_d2,rx_d1} <= 0; -     else -       {rx_d2,rx_d1} <= {rx_d1,rx}; -    -   reg [15:0] 	  baud_ctr; -   reg [3:0] 	  bit_ctr; -   reg [7:0] 	  sr; - -   wire 	  neg_trans = rx_d2 & ~rx_d1; -   wire 	  shift_now = baud_ctr == (clkdiv>>1); -   wire 	  stop_now = (bit_ctr == 10) && shift_now; -   wire 	  go_now = (bit_ctr == 0) && neg_trans; -    -   always @(posedge clk) -     if(rst) -       sr <= 0; -     else if(shift_now) -       sr <= {rx_d2,sr[7:1]}; -    -   always @(posedge clk) -     if(rst) -       baud_ctr <= 0; -     else -       if(go_now) -	 baud_ctr <= 1; -       else if(stop_now) -	 baud_ctr <= 0; -       else if(baud_ctr >= clkdiv) -	 baud_ctr <= 1; -       else if(baud_ctr != 0) -	 baud_ctr <= baud_ctr + 1; - -   always @(posedge clk) -     if(rst) -       bit_ctr <= 0; -     else  -       if(go_now) -	 bit_ctr <= 1; -       else if(stop_now) -	 bit_ctr <= 0; -       else if(baud_ctr == clkdiv) -	 bit_ctr <= bit_ctr + 1; -    -   wire 	  full; -   wire 	  write = ~full & rx_d2 & stop_now; -    -   medfifo #(.WIDTH(8),.DEPTH(DEPTH)) fifo -     (.clk(clk),.rst(rst), -      .datain(sr),.write(write),.full(full), -      .dataout(fifo_out),.read(fifo_read),.empty(fifo_empty), -      .clear(0),.space(),.occupied(fifo_level) ); -    -endmodule // simple_uart_rx diff --git a/control_lib/simple_uart_tx.v b/control_lib/simple_uart_tx.v deleted file mode 100644 index e11a347ed..000000000 --- a/control_lib/simple_uart_tx.v +++ /dev/null @@ -1,60 +0,0 @@ - -module simple_uart_tx -  #(parameter DEPTH=0) -    (input clk, input rst,  -     input [7:0] fifo_in, input fifo_write, output [7:0] fifo_level, output fifo_full,  -     input [15:0] clkdiv, output baudclk, output reg tx); -    -   reg [15:0] 	  baud_ctr; -   reg [3:0] 	  bit_ctr; -    -   wire 	  read, empty; -   wire [7:0] 	  char_to_send; -    -   medfifo #(.WIDTH(8),.DEPTH(DEPTH)) fifo -     (.clk(clk),.rst(rst), -      .datain(fifo_in),.write(fifo_write),.full(fifo_full), -      .dataout(char_to_send),.read(read),.empty(empty), -      .clear(0),.space(fifo_level),.occupied() ); -    -   always @(posedge clk) -     if(rst) -       baud_ctr <= 0; -     else if (baud_ctr >= clkdiv) -       baud_ctr <= 0; -     else -       baud_ctr <= baud_ctr + 1; - -   always @(posedge clk) -     if(rst) -       bit_ctr <= 0; -     else if(baud_ctr == clkdiv) -       if(bit_ctr == 9) -	 bit_ctr <= 0; -       else if(bit_ctr != 0) -	 bit_ctr <= bit_ctr + 1; -       else if(~empty) -	 bit_ctr <= 1; -    -   always @(posedge clk) -     if(rst) -       tx <= 1; -     else -       case(bit_ctr) -	 0 : tx <= 1; -	 1 : tx <= 0; -	 2 : tx <= char_to_send[0]; -	 3 : tx <= char_to_send[1]; -	 4 : tx <= char_to_send[2]; -	 5 : tx <= char_to_send[3]; -	 6 : tx <= char_to_send[4]; -	 7 : tx <= char_to_send[5]; -	 8 : tx <= char_to_send[6]; -	 9 : tx <= char_to_send[7]; -	 default : tx <= 1; -       endcase // case(bit_ctr) - -   assign 	  read = (bit_ctr == 9) && (baud_ctr == clkdiv); -   assign 	  baudclk = (baud_ctr == 1);  // Only for debug purposes -    -endmodule // simple_uart_tx diff --git a/control_lib/spi.v b/control_lib/spi.v deleted file mode 100644 index a80c488e9..000000000 --- a/control_lib/spi.v +++ /dev/null @@ -1,84 +0,0 @@ - - -// AD9510 Register Map (from datasheet Rev. A) - -/* INSTRUCTION word format (16 bits) - * 15       Read = 1, Write = 0 - * 14:13    W1/W0,  Number of bytes 00 - 1, 01 - 2, 10 - 3, 11 - stream - * 12:0     Address - */ - -/* ADDR     Contents             Value (hex) - * 00       Serial Config Port   10 (def) -- MSB first, SDI/SDO separate - * 04       A Counter - * 05-06    B Counter - * 07-0A    PLL Control - * 0B-0C    R Divider - * 0D       PLL Control - * 34-3A    Fine Delay - * 3C-3F    LVPECL Outs - * 40-43    LVDS/CMOS Outs - * 45       Clock select, power down - * 48-57    Dividers - * 58       Func and Sync - * 5A       Update regs - */ - - -module spi -  (input reset, -   input clk, - -   // SPI signals -   output sen,  -   output sclk, -   input sdi, -   output sdo, - -   // Interfaces -   input read_1, -   input write_1, -   input [15:0] command_1, -   input [15:0] wdata_1, -   output [15:0] rdata_1, -   output reg done_1, -   input msb_first_1, -   input [5:0] command_width_1, -   input [5:0] data_width_1, -   input [7:0] clkdiv_1 -    -   ); - -   reg [15:0]  command, wdata, rdata; -   reg 	       done; - -   always @(posedge clk) -     if(reset) -       done_1 <= #1 1'b0; -    -   always @(posedge clk) -     if(reset) -       begin -	  counter <= #1 7'd0; -	  command <= #1 20'd0; -       end -     else if(start) -       begin -	  counter <= #1 7'd1; -	  command <= #1 {read,w,addr_data}; -       end -     else if( |counter && ~done ) -       begin -	  counter <= #1 counter + 7'd1; -	  if(~counter[0]) -	    command <= {command[22:0],1'b0}; -       end - -   wire done = (counter == 8'd49); -    -   assign sen = (done | counter == 8'd0);  // CSB is high when we're not doing anything -   assign sclk = ~counter[0]; -   assign sdo = command[23]; -    - -endmodule // clock_control diff --git a/control_lib/srl.v b/control_lib/srl.v deleted file mode 100644 index fa28c7669..000000000 --- a/control_lib/srl.v +++ /dev/null @@ -1,21 +0,0 @@ - -module srl -  #(parameter WIDTH=18) -    (input clk, -     input write, -     input [WIDTH-1:0] in, -     input [3:0] addr, -     output [WIDTH-1:0] out); -    -   genvar 		i; -   generate -      for (i=0;i<WIDTH;i=i+1) -	begin : gen_srl -	   SRL16E -	     srl16e(.Q(out[i]), -		    .A0(addr[0]),.A1(addr[1]),.A2(addr[2]),.A3(addr[3]), -		    .CE(write),.CLK(clk),.D(in[i])); -	end -   endgenerate - -endmodule // srl diff --git a/control_lib/ss_rcvr.v b/control_lib/ss_rcvr.v deleted file mode 100644 index 8e650d21b..000000000 --- a/control_lib/ss_rcvr.v +++ /dev/null @@ -1,81 +0,0 @@ - - -// Source-synchronous receiver -// Assumes both clocks are at the same rate -// Relative clock phase is -//    unknown -//    variable -//    bounded -// The output will come several cycles later than the input - -// This should synthesize efficiently in Xilinx distributed ram cells, -//   which is why we use a buffer depth of 16 - -// FIXME Async reset on rxclk side? - -module ss_rcvr -  #(parameter WIDTH=16) -    (input rxclk, -     input sysclk, -     input rst, -      -     input [WIDTH-1:0] data_in, -     output [WIDTH-1:0] data_out, -     output reg clock_present); -    -   wire [3:0] rd_addr, wr_addr; - -   // Distributed RAM -   reg [WIDTH-1:0] buffer [0:15]; -   always @(posedge rxclk) -     buffer[wr_addr] <= data_in; -    -   assign 	   data_out = buffer[rd_addr]; -    -   // Write address generation -   reg [3:0] 	   wr_counter; -   always @(posedge rxclk or posedge rst) -     if (rst) -       wr_counter <= 0; -     else -       wr_counter <= wr_counter + 1; -    -   assign 	   wr_addr = {wr_counter[3], ^wr_counter[3:2], ^wr_counter[2:1], ^wr_counter[1:0]}; -    -   // Read Address generation -   wire [3:0] 	   wr_ctr_sys, diff, abs_diff; -   reg [3:0] 	   wr_addr_sys_d1, wr_addr_sys_d2; -   reg [3:0] 	   rd_counter; -    -   assign 	   rd_addr = {rd_counter[3], ^rd_counter[3:2], ^rd_counter[2:1], ^rd_counter[1:0]}; -    -   always @(posedge sysclk) -     wr_addr_sys_d1 <= wr_addr; -    -   always @(posedge sysclk) -     wr_addr_sys_d2 <= wr_addr_sys_d1; -    -   assign 	   wr_ctr_sys = {wr_addr_sys_d2[3],^wr_addr_sys_d2[3:2],^wr_addr_sys_d2[3:1],^wr_addr_sys_d2[3:0]}; -    -   assign 	   diff = wr_ctr_sys - rd_counter; -   assign 	   abs_diff = diff[3] ? (~diff+1) : diff; -    -   always @(posedge sysclk) -     if(rst) -       begin -	  clock_present <= 0; -	  rd_counter <= 0; -       end -     else  -       if(~clock_present) -	 if(abs_diff > 5) -	   clock_present <= 1; -	 else -	   ; -       else -	 if(abs_diff<3) -	   clock_present <= 0; -	 else -	   rd_counter <= rd_counter + 1; - -endmodule // ss_rcvr diff --git a/control_lib/system_control.v b/control_lib/system_control.v deleted file mode 100644 index 5d89f13db..000000000 --- a/control_lib/system_control.v +++ /dev/null @@ -1,47 +0,0 @@ -// System bootup order: -//    0 - Internal POR to reset this block.  Maybe control it from CPLD in the future? -//    1 - Everything in reset -//    2 - Take RAM Loader out of reset -//    3 - When RAM Loader done, take processor and wishbone out of reset - -module system_control  -  (input wb_clk_i, -   output reg ram_loader_rst_o, -   output reg wb_rst_o, -   input ram_loader_done_i -   ); - -   reg 		POR = 1'b1; -   reg [3:0] 	POR_ctr; - -   initial POR_ctr = 4'd0; -   always @(posedge wb_clk_i) -     if(POR_ctr == 4'd15) -       POR <= 1'b0; -     else -       POR_ctr <= POR_ctr + 4'd1; -    -   always @(posedge POR or posedge wb_clk_i) -     if(POR) -       ram_loader_rst_o <= 1'b1; -     else -       ram_loader_rst_o <= #1 1'b0; - -   // Main system reset -   reg 		delayed_rst; -    -   always @(posedge POR or posedge wb_clk_i) -     if(POR) -       begin -	  wb_rst_o <= 1'b1; -	  delayed_rst <= 1'b1; -       end -     else if(ram_loader_done_i) -       begin -	  delayed_rst <= 1'b0; -	  wb_rst_o <= delayed_rst; -       end - -endmodule // system_control - - diff --git a/control_lib/system_control_tb.v b/control_lib/system_control_tb.v deleted file mode 100644 index a8eff4811..000000000 --- a/control_lib/system_control_tb.v +++ /dev/null @@ -1,57 +0,0 @@ - - -module system_control_tb(); -    -   reg 	aux_clk, clk_fpga; -   wire wb_clk, dsp_clk; -   wire wb_rst, dsp_rst, rl_rst, proc_rst; - -   reg 	rl_done, clock_ready; -    -   initial aux_clk = 1'b0; -   always #25 aux_clk = ~aux_clk; - -   initial clk_fpga = 1'b0; - -   initial clock_ready = 1'b0; -   initial -     begin -	@(negedge proc_rst); -	#1003 clock_ready <= 1'b1; -     end - -   always #7 clk_fpga = ~clk_fpga; -       -   initial begin -      $dumpfile("system_control_tb.vcd"); -      $dumpvars(0,system_control_tb); -   end - -   initial #10000 $finish; - -   initial -     begin -	@(negedge rl_rst); -	rl_done <= 1'b0; -	#1325 rl_done <= 1'b1; -     end - -   initial -     begin -	@(negedge proc_rst); -	clock_ready <= 1'b0; -	#327 clock_ready <= 1'b1; -     end -      -   system_control  -     system_control(.aux_clk_i(aux_clk),.clk_fpga_i(clk_fpga), -		    .dsp_clk_o(dsp_clk),.wb_clk_o(wb_clk), -		    .ram_loader_rst_o(rl_rst), -		    .processor_rst_o(proc_rst), -		    .wb_rst_o(wb_rst), -		    .dsp_rst_o(dsp_rst), -		    .ram_loader_done_i(rl_done), -		    .clock_ready_i(clock_ready), -		    .debug_o()); -    -endmodule // system_control_tb diff --git a/control_lib/traffic_cop.v b/control_lib/traffic_cop.v deleted file mode 100644 index e7579656a..000000000 --- a/control_lib/traffic_cop.v +++ /dev/null @@ -1,25 +0,0 @@ - -module traffic_cop(); - - -endmodule // traffic_cop - - - -/* -  - Traffic Cop to control buffer pool -  - Inputs -  - Commands -  - Basic Operations -  - Outputs -  -  -  -  -  - */ diff --git a/control_lib/wb_1master.v b/control_lib/wb_1master.v deleted file mode 100644 index fb313efae..000000000 --- a/control_lib/wb_1master.v +++ /dev/null @@ -1,464 +0,0 @@ -///////////////////////////////////////////////////////////////////// -////                                                             //// -////  WISHBONE Connection Bus Top Level		                 //// -////                                                             //// -////                                                             //// -////  Original Author: Johny Chi		                 //// -////                   chisuhua@yahoo.com.cn                     //// -////  Modified By Matt Ettus, matt@ettus.com                     //// -////                                                             //// -////                                                             //// -///////////////////////////////////////////////////////////////////// -////                                                              //// -//// Copyright (C) 2000, 2007 Authors and OPENCORES.ORG           //// -////                                                              //// -//// This source file may be used and distributed without         //// -//// restriction provided that this copyright statement is not    //// -//// removed from the file and that any derivative work contains  //// -//// the original copyright notice and the associated disclaimer. //// -////                                                              //// -//// This source file is free software; you can redistribute it   //// -//// and/or modify it under the terms of the GNU Lesser General   //// -//// Public License as published by the Free Software Foundation; //// -//// either version 2.1 of the License, or (at your option) any   //// -//// later version.                                               //// -////                                                              //// -//// This source is distributed in the hope that it will be       //// -//// useful, but WITHOUT ANY WARRANTY; without even the implied   //// -//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //// -//// PURPOSE.  See the GNU Lesser General Public License for more //// -//// details.                                                     //// -////                                                              //// -//// You should have received a copy of the GNU Lesser General    //// -//// Public License along with this source; if not, download it   //// -//// from http://www.opencores.org/lgpl.shtml                     //// -////                                                              //// -////////////////////////////////////////////////////////////////////// -// -//   Up to 8 slaves share a Wishbone Bus connection to 1 master - -  module wb_1master -    #(parameter	decode_w = 8,			// address decode width -      parameter	s0_addr = 8'h0,			// slave 0 address -      parameter	s0_mask = 8'h0,			// slave 0 don't cares -      parameter	s1_addr = 8'h0,			// slave 1 address -      parameter	s1_mask = 8'h0,			// slave 1 don't cares -      parameter	s2_addr = 8'h0,			// slave 2 address -      parameter	s2_mask = 8'h0,			// slave 2 don't cares -      parameter	s3_addr = 8'h0,			// slave 3 address -      parameter	s3_mask = 8'h0,			// slave 3 don't cares -      parameter	s4_addr = 8'h0,			// slave 4 address -      parameter	s4_mask = 8'h0,			// slave 4 don't cares -      parameter	s5_addr = 8'h0,			// slave 5 address -      parameter	s5_mask = 8'h0,			// slave 5 don't cares -      parameter	s6_addr = 8'h0,			// slave 6 address -      parameter	s6_mask = 8'h0,			// slave 6 don't cares -      parameter	s7_addr = 8'h0,			// slave 7 address -      parameter	s7_mask = 8'h0,			// slave 7 don't cares -      parameter	s8_addr = 8'h0,			// slave 8 address -      parameter	s8_mask = 8'h0,			// slave 8 don't cares -      parameter	s9_addr = 8'h0,			// slave 9 address -      parameter	s9_mask = 8'h0,			// slave 9 don't cares -      parameter	sa_addr = 8'h0,			// slave a address -      parameter	sa_mask = 8'h0,			// slave a don't cares -      parameter	sb_addr = 8'h0,			// slave b address -      parameter	sb_mask = 8'h0,			// slave b don't cares -      parameter	sc_addr = 8'h0,			// slave c address -      parameter	sc_mask = 8'h0,			// slave c don't cares -      parameter	sd_addr = 8'h0,			// slave d address -      parameter	sd_mask = 8'h0,			// slave d don't cares -      parameter	se_addr = 8'h0,			// slave e address -      parameter	se_mask = 8'h0,			// slave e don't cares -      parameter	sf_addr = 8'h0,			// slave f address -      parameter	sf_mask = 8'h0,			// slave f don't cares -             -      parameter	dw = 32,		// Data bus Width -      parameter	aw = 32,		// Address bus Width -      parameter	sw = 4)                 // Number of Select Lines -       -      (input clk_i,  -       input rst_i, -        -       // Master  Interface -       input [dw-1:0]   m0_dat_i, -       output [dw-1:0] 	m0_dat_o, -       input [aw-1:0] 	m0_adr_i, -       input [sw-1:0] 	m0_sel_i, -       input 		m0_we_i, -       input 		m0_cyc_i, -       input 		m0_stb_i, -       output 		m0_ack_o, -       output 		m0_err_o, -       output 		m0_rty_o, -        -       // Slave Interfaces -       input [dw-1:0] 	s0_dat_i, -       output [dw-1:0] 	s0_dat_o, -       output [aw-1:0] 	s0_adr_o, -       output [sw-1:0] 	s0_sel_o, -       output 		s0_we_o, -       output 		s0_cyc_o, -       output 		s0_stb_o, -       input 		s0_ack_i, -       input 		s0_err_i, -       input 		s0_rty_i, -        -       input [dw-1:0] 	s1_dat_i, -       output [dw-1:0] 	s1_dat_o, -       output [aw-1:0] 	s1_adr_o, -       output [sw-1:0] 	s1_sel_o, -       output 		s1_we_o, -       output 		s1_cyc_o, -       output 		s1_stb_o, -       input 		s1_ack_i, -       input 		s1_err_i, -       input 		s1_rty_i, -        -       input [dw-1:0] 	s2_dat_i, -       output [dw-1:0] 	s2_dat_o, -       output [aw-1:0] 	s2_adr_o, -       output [sw-1:0] 	s2_sel_o, -       output 		s2_we_o, -       output 		s2_cyc_o, -       output 		s2_stb_o, -       input 		s2_ack_i, -       input 		s2_err_i, -       input 		s2_rty_i, -        -       input [dw-1:0] 	s3_dat_i, -       output [dw-1:0] 	s3_dat_o, -       output [aw-1:0] 	s3_adr_o, -       output [sw-1:0] 	s3_sel_o, -       output 		s3_we_o, -       output 		s3_cyc_o, -       output 		s3_stb_o, -       input 		s3_ack_i, -       input 		s3_err_i, -       input 		s3_rty_i, -        -       input [dw-1:0] 	s4_dat_i, -       output [dw-1:0] 	s4_dat_o, -       output [aw-1:0] 	s4_adr_o, -       output [sw-1:0] 	s4_sel_o, -       output 		s4_we_o, -       output 		s4_cyc_o, -       output 		s4_stb_o, -       input 		s4_ack_i, -       input 		s4_err_i, -       input 		s4_rty_i, -        -       input [dw-1:0] 	s5_dat_i, -       output [dw-1:0] 	s5_dat_o, -       output [aw-1:0] 	s5_adr_o, -       output [sw-1:0] 	s5_sel_o, -       output 		s5_we_o, -       output 		s5_cyc_o, -       output 		s5_stb_o, -       input 		s5_ack_i, -       input 		s5_err_i, -       input 		s5_rty_i, -        -       input [dw-1:0] 	s6_dat_i, -       output [dw-1:0] 	s6_dat_o, -       output [aw-1:0] 	s6_adr_o, -       output [sw-1:0] 	s6_sel_o, -       output 		s6_we_o, -       output 		s6_cyc_o, -       output 		s6_stb_o, -       input 		s6_ack_i, -       input 		s6_err_i, -       input 		s6_rty_i, -        -       input [dw-1:0] 	s7_dat_i, -       output [dw-1:0] 	s7_dat_o, -       output [aw-1:0] 	s7_adr_o, -       output [sw-1:0] 	s7_sel_o, -       output 		s7_we_o, -       output 		s7_cyc_o, -       output 		s7_stb_o, -       input 		s7_ack_i, -       input 		s7_err_i, -       input 		s7_rty_i, - -       input [dw-1:0] 	s8_dat_i, -       output [dw-1:0] 	s8_dat_o, -       output [aw-1:0] 	s8_adr_o, -       output [sw-1:0] 	s8_sel_o, -       output 		s8_we_o, -       output 		s8_cyc_o, -       output 		s8_stb_o, -       input 		s8_ack_i, -       input 		s8_err_i, -       input 		s8_rty_i, -        -       input [dw-1:0] 	s9_dat_i, -       output [dw-1:0] 	s9_dat_o, -       output [aw-1:0] 	s9_adr_o, -       output [sw-1:0] 	s9_sel_o, -       output 		s9_we_o, -       output 		s9_cyc_o, -       output 		s9_stb_o, -       input 		s9_ack_i, -       input 		s9_err_i, -       input 		s9_rty_i, -        -       input [dw-1:0] 	sa_dat_i, -       output [dw-1:0] 	sa_dat_o, -       output [aw-1:0] 	sa_adr_o, -       output [sw-1:0] 	sa_sel_o, -       output 		sa_we_o, -       output 		sa_cyc_o, -       output 		sa_stb_o, -       input 		sa_ack_i, -       input 		sa_err_i, -       input 		sa_rty_i, -        -       input [dw-1:0] 	sb_dat_i, -       output [dw-1:0] 	sb_dat_o, -       output [aw-1:0] 	sb_adr_o, -       output [sw-1:0] 	sb_sel_o, -       output 		sb_we_o, -       output 		sb_cyc_o, -       output 		sb_stb_o, -       input 		sb_ack_i, -       input 		sb_err_i, -       input 		sb_rty_i, -        -       input [dw-1:0] 	sc_dat_i, -       output [dw-1:0] 	sc_dat_o, -       output [aw-1:0] 	sc_adr_o, -       output [sw-1:0] 	sc_sel_o, -       output 		sc_we_o, -       output 		sc_cyc_o, -       output 		sc_stb_o, -       input 		sc_ack_i, -       input 		sc_err_i, -       input 		sc_rty_i, -        -       input [dw-1:0] 	sd_dat_i, -       output [dw-1:0] 	sd_dat_o, -       output [aw-1:0] 	sd_adr_o, -       output [sw-1:0] 	sd_sel_o, -       output 		sd_we_o, -       output 		sd_cyc_o, -       output 		sd_stb_o, -       input 		sd_ack_i, -       input 		sd_err_i, -       input 		sd_rty_i, -        -       input [dw-1:0] 	se_dat_i, -       output [dw-1:0] 	se_dat_o, -       output [aw-1:0] 	se_adr_o, -       output [sw-1:0] 	se_sel_o, -       output 		se_we_o, -       output 		se_cyc_o, -       output 		se_stb_o, -       input 		se_ack_i, -       input 		se_err_i, -       input 		se_rty_i, -        -       input [dw-1:0] 	sf_dat_i, -       output [dw-1:0] 	sf_dat_o, -       output [aw-1:0] 	sf_adr_o, -       output [sw-1:0] 	sf_sel_o, -       output 		sf_we_o, -       output 		sf_cyc_o, -       output 		sf_stb_o, -       input 		sf_ack_i, -       input 		sf_err_i, -       input 		sf_rty_i -       ); -    -   // //////////////////////////////////////////////////////////////// -   // -   // Local wires -   // -    -   wire [15:0] 		ssel_dec; -   reg [dw-1:0] 	i_dat_s;	// internal share bus , slave data to master -    -   // Master output Interface -   assign 		m0_dat_o = i_dat_s; -    -   always @* -     case(ssel_dec) -       1   : i_dat_s <= s0_dat_i; -       2   : i_dat_s <= s1_dat_i; -       4   : i_dat_s <= s2_dat_i; -       8   : i_dat_s <= s3_dat_i; -       16  : i_dat_s <= s4_dat_i; -       32  : i_dat_s <= s5_dat_i; -       64  : i_dat_s <= s6_dat_i; -       128 : i_dat_s <= s7_dat_i; -       256 : i_dat_s <= s8_dat_i; -       512 : i_dat_s <= s9_dat_i; -       1024 : i_dat_s <= sa_dat_i; -       2048 : i_dat_s <= sb_dat_i; -       4096 : i_dat_s <= sc_dat_i; -       8192 : i_dat_s <= sd_dat_i; -       16384 : i_dat_s <= se_dat_i; -       32768 : i_dat_s <= sf_dat_i; -       default : i_dat_s <= s0_dat_i; -     endcase // case(ssel_dec) -    -   assign 		{m0_ack_o, m0_err_o, m0_rty_o}  -     =  {s0_ack_i | s1_ack_i | s2_ack_i | s3_ack_i | s4_ack_i | s5_ack_i | s6_ack_i | s7_ack_i | -	 s8_ack_i | s9_ack_i | sa_ack_i | sb_ack_i | sc_ack_i | sd_ack_i | se_ack_i | sf_ack_i , -	 s0_err_i | s1_err_i | s2_err_i | s3_err_i | s4_err_i | s5_err_i | s6_err_i | s7_err_i | -	 s8_err_i | s9_err_i | sa_err_i | sb_err_i | sc_err_i | sd_err_i | se_err_i | sf_err_i , -	 s0_rty_i | s1_rty_i | s2_rty_i | s3_rty_i | s4_rty_i | s5_rty_i | s6_rty_i | s7_rty_i | -	 s8_rty_i | s9_rty_i | sa_rty_i | sb_rty_i | sc_rty_i | sd_rty_i | se_rty_i | sf_rty_i }; - -   // Slave output interfaces -   assign 		s0_adr_o = m0_adr_i; -   assign 		s0_sel_o = m0_sel_i; -   assign 		s0_dat_o = m0_dat_i; -   assign 		s0_we_o = m0_we_i; -   assign 		s0_cyc_o = m0_cyc_i; -   assign 		s0_stb_o = m0_cyc_i & m0_stb_i & ssel_dec[0];    -    -   assign 		s1_adr_o = m0_adr_i; -   assign 		s1_sel_o = m0_sel_i; -   assign 		s1_dat_o = m0_dat_i; -   assign 		s1_we_o = m0_we_i; -   assign 		s1_cyc_o = m0_cyc_i; -   assign 		s1_stb_o = m0_cyc_i & m0_stb_i & ssel_dec[1];    -    -   assign 		s2_adr_o = m0_adr_i; -   assign 		s2_sel_o = m0_sel_i; -   assign 		s2_dat_o = m0_dat_i; -   assign 		s2_we_o = m0_we_i; -   assign 		s2_cyc_o = m0_cyc_i; -   assign 		s2_stb_o = m0_cyc_i & m0_stb_i & ssel_dec[2];    -    -   assign 		s3_adr_o = m0_adr_i; -   assign 		s3_sel_o = m0_sel_i; -   assign 		s3_dat_o = m0_dat_i; -   assign 		s3_we_o = m0_we_i; -   assign 		s3_cyc_o = m0_cyc_i; -   assign 		s3_stb_o = m0_cyc_i & m0_stb_i & ssel_dec[3];    -    -   assign 		s4_adr_o = m0_adr_i; -   assign 		s4_sel_o = m0_sel_i; -   assign 		s4_dat_o = m0_dat_i; -   assign 		s4_we_o = m0_we_i; -   assign 		s4_cyc_o = m0_cyc_i; -   assign 		s4_stb_o = m0_cyc_i & m0_stb_i & ssel_dec[4];    -    -   assign 		s5_adr_o = m0_adr_i; -   assign 		s5_sel_o = m0_sel_i; -   assign 		s5_dat_o = m0_dat_i; -   assign 		s5_we_o = m0_we_i; -   assign 		s5_cyc_o = m0_cyc_i; -   assign 		s5_stb_o = m0_cyc_i & m0_stb_i & ssel_dec[5];    -    -   assign 		s6_adr_o = m0_adr_i; -   assign 		s6_sel_o = m0_sel_i; -   assign 		s6_dat_o = m0_dat_i; -   assign 		s6_we_o = m0_we_i; -   assign 		s6_cyc_o = m0_cyc_i; -   assign 		s6_stb_o = m0_cyc_i & m0_stb_i & ssel_dec[6];    -    -   assign 		s7_adr_o = m0_adr_i; -   assign 		s7_sel_o = m0_sel_i; -   assign 		s7_dat_o = m0_dat_i; -   assign 		s7_we_o = m0_we_i; -   assign 		s7_cyc_o = m0_cyc_i; -   assign 		s7_stb_o = m0_cyc_i & m0_stb_i & ssel_dec[7];    -    -   assign 		s8_adr_o = m0_adr_i; -   assign 		s8_sel_o = m0_sel_i; -   assign 		s8_dat_o = m0_dat_i; -   assign 		s8_we_o = m0_we_i; -   assign 		s8_cyc_o = m0_cyc_i; -   assign 		s8_stb_o = m0_cyc_i & m0_stb_i & ssel_dec[8];    -    -   assign 		s9_adr_o = m0_adr_i; -   assign 		s9_sel_o = m0_sel_i; -   assign 		s9_dat_o = m0_dat_i; -   assign 		s9_we_o = m0_we_i; -   assign 		s9_cyc_o = m0_cyc_i; -   assign 		s9_stb_o = m0_cyc_i & m0_stb_i & ssel_dec[9];    -    -   assign 		sa_adr_o = m0_adr_i; -   assign 		sa_sel_o = m0_sel_i; -   assign 		sa_dat_o = m0_dat_i; -   assign 		sa_we_o = m0_we_i; -   assign 		sa_cyc_o = m0_cyc_i; -   assign 		sa_stb_o = m0_cyc_i & m0_stb_i & ssel_dec[10];    -    -   assign 		sb_adr_o = m0_adr_i; -   assign 		sb_sel_o = m0_sel_i; -   assign 		sb_dat_o = m0_dat_i; -   assign 		sb_we_o = m0_we_i; -   assign 		sb_cyc_o = m0_cyc_i; -   assign 		sb_stb_o = m0_cyc_i & m0_stb_i & ssel_dec[11];    -    -   assign 		sc_adr_o = m0_adr_i; -   assign 		sc_sel_o = m0_sel_i; -   assign 		sc_dat_o = m0_dat_i; -   assign 		sc_we_o = m0_we_i; -   assign 		sc_cyc_o = m0_cyc_i; -   assign 		sc_stb_o = m0_cyc_i & m0_stb_i & ssel_dec[12];    -    -   assign 		sd_adr_o = m0_adr_i; -   assign 		sd_sel_o = m0_sel_i; -   assign 		sd_dat_o = m0_dat_i; -   assign 		sd_we_o = m0_we_i; -   assign 		sd_cyc_o = m0_cyc_i; -   assign 		sd_stb_o = m0_cyc_i & m0_stb_i & ssel_dec[13];    -    -   assign 		se_adr_o = m0_adr_i; -   assign 		se_sel_o = m0_sel_i; -   assign 		se_dat_o = m0_dat_i; -   assign 		se_we_o = m0_we_i; -   assign 		se_cyc_o = m0_cyc_i; -   assign 		se_stb_o = m0_cyc_i & m0_stb_i & ssel_dec[14];    -    -   assign 		sf_adr_o = m0_adr_i; -   assign 		sf_sel_o = m0_sel_i; -   assign 		sf_dat_o = m0_dat_i; -   assign 		sf_we_o = m0_we_i; -   assign 		sf_cyc_o = m0_cyc_i; -   assign 		sf_stb_o = m0_cyc_i & m0_stb_i & ssel_dec[15];    -    -   // Address decode logic -   // WARNING -- must make sure these are mutually exclusive! - - -   assign 		ssel_dec[0] = ~|((m0_adr_i[aw-1:aw-decode_w] ^ s0_addr) & s0_mask); -   assign 		ssel_dec[1] = ~|((m0_adr_i[aw-1:aw-decode_w] ^ s1_addr) & s1_mask); -   assign 		ssel_dec[2] = ~|((m0_adr_i[aw-1:aw-decode_w] ^ s2_addr) & s2_mask); -   assign 		ssel_dec[3] = ~|((m0_adr_i[aw-1:aw-decode_w] ^ s3_addr) & s3_mask); -   assign 		ssel_dec[4] = ~|((m0_adr_i[aw-1:aw-decode_w] ^ s4_addr) & s4_mask); -   assign 		ssel_dec[5] = ~|((m0_adr_i[aw-1:aw-decode_w] ^ s5_addr) & s5_mask); -   assign 		ssel_dec[6] = ~|((m0_adr_i[aw-1:aw-decode_w] ^ s6_addr) & s6_mask); -   assign 		ssel_dec[7] = ~|((m0_adr_i[aw-1:aw-decode_w] ^ s7_addr) & s7_mask); -   assign 		ssel_dec[8] = ~|((m0_adr_i[aw-1:aw-decode_w] ^ s8_addr) & s8_mask); -   assign 		ssel_dec[9] = ~|((m0_adr_i[aw-1:aw-decode_w] ^ s9_addr) & s9_mask); -   assign 		ssel_dec[10] = ~|((m0_adr_i[aw-1:aw-decode_w] ^ sa_addr) & sa_mask); -   assign 		ssel_dec[11] = ~|((m0_adr_i[aw-1:aw-decode_w] ^ sb_addr) & sb_mask); -   assign 		ssel_dec[12] = ~|((m0_adr_i[aw-1:aw-decode_w] ^ sc_addr) & sc_mask); -   assign 		ssel_dec[13] = ~|((m0_adr_i[aw-1:aw-decode_w] ^ sd_addr) & sd_mask); -   assign 		ssel_dec[14] = ~|((m0_adr_i[aw-1:aw-decode_w] ^ se_addr) & se_mask); -   assign 		ssel_dec[15] = ~|((m0_adr_i[aw-1:aw-decode_w] ^ sf_addr) & sf_mask); - -/* -   assign 		ssel_dec[0] = (m0_adr_i[aw -1 : aw - decode_w ] == s0_addr); -   assign 		ssel_dec[1] = (m0_adr_i[aw -1 : aw - decode_w ] == s1_addr); -   assign 		ssel_dec[2] = (m0_adr_i[aw -1 : aw - decode_w ] == s2_addr); -   assign 		ssel_dec[3] = (m0_adr_i[aw -1 : aw - decode_w ] == s3_addr); -   assign 		ssel_dec[4] = (m0_adr_i[aw -1 : aw - decode_w ] == s4_addr); -   assign 		ssel_dec[5] = (m0_adr_i[aw -1 : aw - decode_w ] == s5_addr); -   assign 		ssel_dec[6] = (m0_adr_i[aw -1 : aw - decode_w ] == s6_addr); -   assign 		ssel_dec[7] = (m0_adr_i[aw -1 : aw - decode_w ] == s7_addr); -   assign 		ssel_dec[8] = (m0_adr_i[aw -1 : aw - decode_w ] == s8_addr); -   assign 		ssel_dec[9] = (m0_adr_i[aw -1 : aw - decode_w ] == s9_addr); -   assign 		ssel_dec[10] = (m0_adr_i[aw -1 : aw - decode_w ] == sa_addr); -   assign 		ssel_dec[11] = (m0_adr_i[aw -1 : aw - decode_w ] == sb_addr); -   assign 		ssel_dec[12] = (m0_adr_i[aw -1 : aw - decode_w ] == sc_addr); -   assign 		ssel_dec[13] = (m0_adr_i[aw -1 : aw - decode_w ] == sd_addr); -   assign 		ssel_dec[14] = (m0_adr_i[aw -1 : aw - decode_w ] == se_addr); -   assign 		ssel_dec[15] = (m0_adr_i[aw -1 : aw - decode_w ] == sf_addr); - */  -endmodule // wb_1master diff --git a/control_lib/wb_bridge_16_32.v b/control_lib/wb_bridge_16_32.v deleted file mode 100644 index 405e25c3c..000000000 --- a/control_lib/wb_bridge_16_32.v +++ /dev/null @@ -1,36 +0,0 @@ - - -module wb_bridge_16_32 -  #(parameter AWIDTH=16) -    (input wb_clk, input wb_rst, -     input A_cyc_i, input A_stb_i, input A_we_i, input [3:0] A_sel_i, -     input [AWIDTH-1:0] A_adr_i, input [31:0] A_dat_i, output [31:0] A_dat_o, output A_ack_o, -     output B_cyc_o, output B_stb_o, output B_we_o, output [1:0] B_sel_o, -     output [AWIDTH-1:0] B_adr_o, output [15:0] B_dat_o, input [15:0] B_dat_i, input B_ack_i -     ); - -   reg [15:0] 		 holding; -   reg 			 phase; -    -   assign 		 B_adr_o = {A_adr_i[AWIDTH-1:2],phase,1'b0}; -   assign 		 B_cyc_o = A_cyc_i; -   assign 		 B_stb_o = A_stb_i; -   assign 		 B_we_o = A_we_i; - -   assign 		 B_dat_o = ~phase ? A_dat_i[15:0] : A_dat_i[31:16]; -   assign 		 B_sel_o = ~phase ? A_sel_i[1:0] : A_sel_i[3:2]; - -   assign 		 A_dat_o = {B_dat_i,holding}; -   assign 		 A_ack_o = phase & B_ack_i; - -   always @(posedge wb_clk) -     if(wb_rst) -       phase <= 0; -     else if(B_ack_i) -       phase <= ~phase; - -   always @(posedge wb_clk) -     if(~phase & B_ack_i) -       holding <= B_dat_i; -    -endmodule // wb_bridge_16_32 diff --git a/control_lib/wb_bus_writer.v b/control_lib/wb_bus_writer.v deleted file mode 100644 index fc148a0ff..000000000 --- a/control_lib/wb_bus_writer.v +++ /dev/null @@ -1,57 +0,0 @@ - -// wb_bus_writer -// -// WB Bus Master device to send a sequence of single-word transactions -// based on a list in a RAM or ROM (FASM interface) -// ROM data format is {WB_ADDR[15:0],WB_DATA[31:0]} -// continues until it gets an all-1s entry - -module wb_bus_writer (input start, -		      output done, -		      output reg [15:0] rom_addr, -		      input [47:0] rom_data, -		      // WB Master Interface, don't need wb_dat_i -		      input wb_clk_i, -		      input wb_rst_i, -		      output [31:0] wb_dat_o, -		      input wb_ack_i, -		      output [15:0] wb_adr_o, -		      output wb_cyc_o, -		      output [3:0] wb_sel_o, -		      output wb_stb_o, -		      output wb_we_o -		      ); - -`define IDLE 0 -`define READ 1 -    -   reg [3:0] 		     state; -    -   assign 		     done = (state != `IDLE) && (&rom_data);  // Done when we see all 1s -    -   always @(posedge wb_clk_i) -     if(wb_rst_i) -       begin -	  rom_addr <= #1 0; -	  state <= #1 0; -       end -     else if(start) -       begin -	  rom_addr <= #1 0; -	  state <= #1 `READ; -       end -     else if((state == `READ) && wb_ack_i) -       if(done) -	 state <= #1 `IDLE; -       else -	 rom_addr <= #1 rom_addr + 1; -    -   assign wb_dat_o = rom_data[31:0]; -   assign wb_adr_o = rom_data[47:32]; -   assign wb_sel_o = 4'b1111;    // All writes are the full 32 bits -    -   assign wb_cyc_o = !done & (state != `IDLE); -   assign wb_stb_o = !done & (state != `IDLE); -   assign wb_we_o = !done & (state != `IDLE); -    -endmodule // wb_bus_writer diff --git a/control_lib/wb_output_pins32.v b/control_lib/wb_output_pins32.v deleted file mode 100644 index 1517f2066..000000000 --- a/control_lib/wb_output_pins32.v +++ /dev/null @@ -1,49 +0,0 @@ - - -// Simple 32-bit Wishbone compatible slave output port -// with 8-bit granularity, modeled after the one in the spec -// Allows for readback -// Assumes a 32-bit wishbone bus -// Lowest order bits get sel[0] -// - -module wb_output_pins32 -  (wb_rst_i, wb_clk_i, wb_dat_i, wb_dat_o, -   wb_we_i, wb_sel_i, wb_stb_i, wb_ack_o, wb_cyc_i, -   port_output); - -   input wb_rst_i; -   input wb_clk_i; -   input wire [31:0] wb_dat_i; -   output wire [31:0] wb_dat_o; -   input  wb_we_i; -   input  wire [3:0] 	 wb_sel_i; -   input  wb_stb_i; -   output wb_ack_o; -   input  wb_cyc_i; - -   output wire [31:0] port_output; - -   reg [31:0] internal_reg; - -   always @(posedge wb_clk_i) -     if(wb_rst_i) -       internal_reg <= #1 32'b0; -     else -       begin -	  if(wb_stb_i & wb_we_i & wb_sel_i[0]) -	    internal_reg[7:0] <= #1 wb_dat_i[7:0]; -	  if(wb_stb_i & wb_we_i & wb_sel_i[1]) -	    internal_reg[15:8] <= #1 wb_dat_i[15:8]; -	  if(wb_stb_i & wb_we_i & wb_sel_i[2]) -	    internal_reg[23:16] <= #1 wb_dat_i[23:16]; -	  if(wb_stb_i & wb_we_i & wb_sel_i[3]) -	    internal_reg[31:24] <= #1 wb_dat_i[31:24]; -       end // else: !if(wb_rst_i) - -   assign wb_dat_o = internal_reg; -   assign port_output = internal_reg; -   assign wb_ack_o = wb_stb_i; -   	      -endmodule // wb_output_pins32 - diff --git a/control_lib/wb_ram_block.v b/control_lib/wb_ram_block.v deleted file mode 100644 index 044d34ca4..000000000 --- a/control_lib/wb_ram_block.v +++ /dev/null @@ -1,36 +0,0 @@ - - -// Since this is a block ram, there are no byte-selects and there is a 1-cycle read latency -//   These have to be a multiple of 512 lines (2K) long - -module wb_ram_block -  #(parameter AWIDTH=9) -    (input clk_i, -     input stb_i, -     input we_i, -     input [AWIDTH-1:0] adr_i, -     input [31:0] dat_i, -     output reg [31:0] dat_o, -     output ack_o); - -   reg [31:0] distram [0:1<<(AWIDTH-1)]; - -   always @(posedge clk_i) -     begin -	if(stb_i & we_i) -	  distram[adr_i] <= dat_i; -	dat_o <= distram[adr_i]; -     end - -   reg stb_d1, ack_d1; -   always @(posedge clk_i) -     stb_d1 <= stb_i; -    -   always @(posedge clk_i) -     ack_d1 <= ack_o; -    -   assign ack_o = stb_i & (we_i | (stb_d1 & ~ack_d1)); -endmodule // wb_ram_block - - -     diff --git a/control_lib/wb_ram_dist.v b/control_lib/wb_ram_dist.v deleted file mode 100644 index cffc2f423..000000000 --- a/control_lib/wb_ram_dist.v +++ /dev/null @@ -1,33 +0,0 @@ - - -module wb_ram_dist -  #(parameter AWIDTH=8) -    (input clk_i, -     input stb_i, -     input we_i, -     input [AWIDTH-1:0] adr_i, -     input [31:0] dat_i, -     input [3:0] sel_i, -     output [31:0] dat_o, -     output ack_o); - -   reg [31:0] distram [0:1<<(AWIDTH-1)]; - -   always @(posedge clk_i) -     begin -	if(stb_i & we_i & sel_i[3]) -	  distram[adr_i][31:24] <= dat_i[31:24]; -	if(stb_i & we_i & sel_i[2]) -	  distram[adr_i][24:16] <= dat_i[24:16]; -	if(stb_i & we_i & sel_i[1]) -	  distram[adr_i][15:8] <= dat_i[15:8]; -	if(stb_i & we_i & sel_i[0]) -	  distram[adr_i][7:0] <= dat_i[7:0]; -     end // always @ (posedge clk_i) - -   assign dat_o = distram[adr_i]; -   assign ack_o = stb_i; - -endmodule // wb_ram_dist - -     diff --git a/control_lib/wb_readback_mux.v b/control_lib/wb_readback_mux.v deleted file mode 100644 index 3922b03e3..000000000 --- a/control_lib/wb_readback_mux.v +++ /dev/null @@ -1,60 +0,0 @@ - - -// Note -- clocks must be synchronous (derived from the same source) -// Assumes alt_clk is running at a multiple of wb_clk - -module wb_readback_mux -  (input wb_clk_i, -   input wb_rst_i, -   input wb_stb_i, -   input [15:0] wb_adr_i, -   output reg [31:0] wb_dat_o, -   output reg wb_ack_o, -    -   input [31:0] word00, -   input [31:0] word01, -   input [31:0] word02, -   input [31:0] word03, -   input [31:0] word04, -   input [31:0] word05, -   input [31:0] word06, -   input [31:0] word07, -   input [31:0] word08, -   input [31:0] word09, -   input [31:0] word10, -   input [31:0] word11, -   input [31:0] word12, -   input [31:0] word13, -   input [31:0] word14, -   input [31:0] word15 -   ); - -   always @(posedge wb_clk_i) -     if(wb_rst_i) -       wb_ack_o <= 0; -     else -       wb_ack_o <= wb_stb_i & ~wb_ack_o; -    -   always @(posedge wb_clk_i) -     case(wb_adr_i[5:2]) -       0 : wb_dat_o <= word00; -       1 : wb_dat_o <= word01; -       2 : wb_dat_o <= word02; -       3 : wb_dat_o <= word03; -       4 : wb_dat_o <= word04; -       5 : wb_dat_o <= word05; -       6 : wb_dat_o <= word06; -       7 : wb_dat_o <= word07; -       8 : wb_dat_o <= word08; -       9 : wb_dat_o <= word09; -       10: wb_dat_o <= word10; -       11: wb_dat_o <= word11; -       12: wb_dat_o <= word12; -       13: wb_dat_o <= word13; -       14: wb_dat_o <= word14; -       15: wb_dat_o <= word15; -     endcase // case(addr_reg[3:0]) -       -endmodule // wb_readback_mux - - diff --git a/control_lib/wb_regfile_2clock.v b/control_lib/wb_regfile_2clock.v deleted file mode 100644 index e248e5161..000000000 --- a/control_lib/wb_regfile_2clock.v +++ /dev/null @@ -1,107 +0,0 @@ - -module wb_regfile_2clock -  (input wb_clk_i, -   input wb_rst_i, -   input wb_stb_i, -   input wb_we_i, -   input [15:0] wb_adr_i, -   input [3:0] wb_sel_i, -   input [31:0] wb_dat_i, -   output [31:0] wb_dat_o, -   output wb_ack_o, -   input alt_clk, -   input alt_rst, -    -   output reg [31:0] reg00, -   output reg [31:0] reg01, -   output reg [31:0] reg02, -   output reg [31:0] reg03, -   output reg [31:0] reg04, -   output reg [31:0] reg05, -   output reg [31:0] reg06, -   output reg [31:0] reg07 -   ); - -   reg [15:0] 	 addr_reg; -   reg [3:0] 	 sel_reg; -   reg [31:0] 	 dat_reg; -   reg 		 wr_ret1, wr_ret2, we_reg, stb_reg; -    -   always @(posedge wb_clk_i) -     if(wb_rst_i) -       begin -	  addr_reg <= 0; -	  sel_reg <= 0; -	  dat_reg <= 0; -       end -     else if(wb_stb_i & wb_we_i) -       begin -	  addr_reg <= wb_adr_i; -	  sel_reg <= wb_sel_i; -	  dat_reg <= wb_dat_i; -       end -    -   always @(posedge wb_clk_i) -     if(wb_rst_i) -       {we_reg,stb_reg} <= 2'b0; -     else -       {we_reg,stb_reg} <= {wb_we_i,wb_stb_i}; - -   assign wb_ack_o = stb_reg; -    -   always @(posedge alt_clk) -     if(alt_rst) -       {wr_ret2, wr_ret1} <= 2'b0; -     else -       {wr_ret2, wr_ret1} <= {wr_ret1, we_reg & stb_reg}; -    -   always @(posedge alt_clk) -     if(alt_rst) -       begin -	  reg00 <= 0; -	  reg01 <= 0; -	  reg02 <= 0; -	  reg03 <= 0; -	  reg04 <= 0; -	  reg05 <= 0; -	  reg06 <= 0; -	  reg07 <= 0; -       end // if (alt_rst) -     else if(wr_ret2) -       case(addr_reg[4:2]) -	 3'd0: reg00 <= { {sel_reg[3] ? dat_reg[31:24] : reg00[31:24]}, -			  {sel_reg[2] ? dat_reg[23:16] : reg00[23:16]}, -			  {sel_reg[1] ? dat_reg[15:8] : reg00[15:8]}, -			  {sel_reg[0] ? dat_reg[7:0] : reg00[7:0]}}; -	 3'd1: reg01 <= { {sel_reg[3] ? dat_reg[31:24] : reg01[31:24]}, -			  {sel_reg[2] ? dat_reg[23:16] : reg01[23:16]}, -			  {sel_reg[1] ? dat_reg[15:8] : reg01[15:8]}, -			  {sel_reg[0] ? dat_reg[7:0] : reg01[7:0]}}; -	 3'd2: reg02 <= { {sel_reg[3] ? dat_reg[31:24] : reg02[31:24]}, -			  {sel_reg[2] ? dat_reg[23:16] : reg02[23:16]}, -			  {sel_reg[1] ? dat_reg[15:8] : reg02[15:8]}, -			  {sel_reg[0] ? dat_reg[7:0] : reg02[7:0]}}; -	 3'd3: reg03 <= { {sel_reg[3] ? dat_reg[31:24] : reg03[31:24]}, -			  {sel_reg[2] ? dat_reg[23:16] : reg03[23:16]}, -			  {sel_reg[1] ? dat_reg[15:8] : reg03[15:8]}, -			  {sel_reg[0] ? dat_reg[7:0] : reg03[7:0]}}; -	 3'd4: reg04 <= { {sel_reg[3] ? dat_reg[31:24] : reg04[31:24]}, -			  {sel_reg[2] ? dat_reg[23:16] : reg04[23:16]}, -			  {sel_reg[1] ? dat_reg[15:8] : reg04[15:8]}, -			  {sel_reg[0] ? dat_reg[7:0] : reg04[7:0]}}; -	 3'd5: reg05 <= { {sel_reg[3] ? dat_reg[31:24] : reg05[31:24]}, -			  {sel_reg[2] ? dat_reg[23:16] : reg05[23:16]}, -			  {sel_reg[1] ? dat_reg[15:8] : reg05[15:8]}, -			  {sel_reg[0] ? dat_reg[7:0] : reg05[7:0]}}; -	 3'd6: reg06 <= { {sel_reg[3] ? dat_reg[31:24] : reg06[31:24]}, -			  {sel_reg[2] ? dat_reg[23:16] : reg06[23:16]}, -			  {sel_reg[1] ? dat_reg[15:8] : reg06[15:8]}, -			  {sel_reg[0] ? dat_reg[7:0] : reg06[7:0]}}; -	 3'd7: reg07 <= { {sel_reg[3] ? dat_reg[31:24] : reg07[31:24]}, -			  {sel_reg[2] ? dat_reg[23:16] : reg07[23:16]}, -			  {sel_reg[1] ? dat_reg[15:8] : reg07[15:8]}, -			  {sel_reg[0] ? dat_reg[7:0] : reg07[7:0]}}; -       endcase // case(addr_reg[2:0]) -    -endmodule // wb_regfile_2clock - diff --git a/control_lib/wb_semaphore.v b/control_lib/wb_semaphore.v deleted file mode 100644 index a9208e6a1..000000000 --- a/control_lib/wb_semaphore.v +++ /dev/null @@ -1,42 +0,0 @@ - -// up to 8 semaphores - -// After a read operation, the semaphore is always locked -//  If it was already locked before the read (meaning someone else holds the lock) -//    then a 1 is returned -//  If it was not already locked (meaning the reader now holds the lock) -//    then a 0 is returned - -// A write operation clears the lock - -module wb_semaphore  -  #(parameter count=8, DBUS_WIDTH=32) -    (input wb_clk_i, -     input wb_rst_i, -     input [DBUS_WIDTH-1:0] wb_dat_i, -     input [2:0] wb_adr_i, -     input wb_cyc_i, -     input wb_stb_i, -     input wb_we_i, -     output wb_ack_o, -     output [DBUS_WIDTH-1:0] wb_dat_o); - -   reg [count-1:0] locked; - -   always @(posedge clock) -     if(wb_rst_i) -       locked <= {count{1'b0}}; -     else if(wb_stb_i) -       if(wb_we_i) -	 locked[adr_i] <= 1'b0; -       else -	 locked[adr_i] <= 1'b1; - -   assign 	   wb_dat_o[DBUS_WIDTH-1:1] = {(DBUS_WIDTH-1){1'b0}}; -   assign 	   wb_dat_o[0] = locked[adr_i]; -   assign 	   wb_ack_o = wb_stb_i; -    - -endmodule // wb_semaphore - -      diff --git a/control_lib/wb_sim.v b/control_lib/wb_sim.v deleted file mode 100644 index b324e1457..000000000 --- a/control_lib/wb_sim.v +++ /dev/null @@ -1,79 +0,0 @@ - - -module wb_sim(); -    -   wire wb_clk, wb_rst; -   wire start; - -   reg 	POR, aux_clk, clk_fpga; -    -   initial POR = 1'b1; -   initial #103 POR = 1'b0; - -   initial aux_clk = 1'b0; -   always #25 aux_clk = ~aux_clk; - -   initial clk_fpga = 1'bx; -   initial #3007 clk_fpga = 1'b0; -   always #7 clk_fpga = ~clk_fpga; -       -   initial begin -      $dumpfile("wb_sim.vcd"); -      $dumpvars(0,wb_sim); -   end - -   initial #10000 $finish; - -   wire [15:0] rom_addr; -   wire [47:0] rom_data; -   wire [31:0] wb_dat; -   wire [15:0] wb_adr; -   wire        wb_cyc,wb_stb,wb_we,wb_ack; -   wire [3:0]  wb_sel; -    -   wire [31:0] port_output; - - -   system_control system_control(.dsp_clk(dsp_clk), -				 .reset_out(reset_out), -				 .wb_clk_o(wb_clk), -				 .wb_rst_o(wb_rst), -				 .wb_rst_o_alt(wb_rst_o_alt), -				 .start	(start), -				 .aux_clk(aux_clk), -				 .clk_fpga(clk_fpga), -				 .POR	(POR), -				 .done	(done)); -    -   clock_bootstrap_rom cbrom(.addr(rom_addr),.data(rom_data)); - -   wb_bus_writer bus_writer(.rom_addr	(rom_addr[15:0]), -			    .wb_dat_o	(wb_dat[31:0]), -			    .wb_adr_o	(wb_adr[15:0]), -			    .wb_cyc_o	(wb_cyc), -			    .wb_sel_o	(wb_sel[3:0]), -			    .wb_stb_o	(wb_stb), -			    .wb_we_o	(wb_we), -			    .start	(start), -			    .done       (done), -			    .rom_data	(rom_data[47:0]), -			    .wb_clk_i	(wb_clk), -			    .wb_rst_i	(wb_rst), -			    .wb_ack_i	(wb_ack)); - -   wb_output_pins32 output_pins(.wb_dat_o(), -				.wb_ack_o(wb_ack), -				.port_output(port_output[31:0]), -				.wb_rst_i(wb_rst), -				.wb_clk_i(wb_clk), -				.wb_dat_i(wb_dat[31:0]), -				.wb_we_i(wb_we), -				.wb_sel_i(wb_sel[3:0]), -				.wb_stb_i(wb_stb), -				.wb_cyc_i(wb_cyc)); -    -    -    -    -endmodule // wb_sim - | 
