commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r5776 - gnuradio/branches/developers/matt/u2f/control_


From: matt
Subject: [Commit-gnuradio] r5776 - gnuradio/branches/developers/matt/u2f/control_lib
Date: Sat, 16 Jun 2007 18:59:26 -0600 (MDT)

Author: matt
Date: 2007-06-16 18:59:25 -0600 (Sat, 16 Jun 2007)
New Revision: 5776

Added:
   gnuradio/branches/developers/matt/u2f/control_lib/strobe_gen.v
Modified:
   gnuradio/branches/developers/matt/u2f/control_lib/buffer_pool.v
   gnuradio/branches/developers/matt/u2f/control_lib/fifo_int_tb.v
   gnuradio/branches/developers/matt/u2f/control_lib/serdes_tx.v
   gnuradio/branches/developers/matt/u2f/control_lib/shortfifo.v
Log:
compilation fixes, some progress


Modified: gnuradio/branches/developers/matt/u2f/control_lib/buffer_pool.v
===================================================================
--- gnuradio/branches/developers/matt/u2f/control_lib/buffer_pool.v     
2007-06-17 00:58:24 UTC (rev 5775)
+++ gnuradio/branches/developers/matt/u2f/control_lib/buffer_pool.v     
2007-06-17 00:59:25 UTC (rev 5776)
@@ -29,14 +29,16 @@
    // Write Interfaces
    input [31:0] wr0_dat_i,
    input wr0_write_i,
+   input wr0_done_i,
    output wr0_ready_o,
-   output wr0_done_o,
+   output wr0_full_o,
    
    // Read Interfaces
    output [31:0] rd0_dat_o,
    input rd0_read_i,
+   input rd0_done_i,
    output rd0_ready_o,
-   output rd0_done_o
+   output rd0_empty_o
 
    );
 
@@ -72,19 +74,27 @@
      (.clka(wb_clk_i),.ena(wb_stb_i & sel_a[0]),.wea(wb_we_i),
       .addra(buf_addr),.dia(wb_dat_i),.doa(buf0_outa),
       
.clkb(stream_clk),.enb(b0enb),.web(b0web),.addrb(b0a),.dib(b0di),.dob(b0do));
-
+   
    fifo_int fifo_int_0
-     (.clk(stream_clk),.rst(dsp_rst),.firstline(),.lastline(),.step(),
+     
(.clk(stream_clk),.rst(stream_rst),.firstline(),.lastline(),.step(),.read_go(),.write_go(),.done(),
       
.en_o(b0enb),.we_o(b0web),.addr_o(b0a),.dat_to_buf(b0di),.dat_from_buf(b0do),
-      
.wr_dat_i(wr0_dat_i),.wr_write_i(wr0_write_i),.wr_ready_o(wr0_ready_o),//.wr_done_o(wr0_done_o),
-      
.rd_dat_o(rd0_dat_o),.rd_read_i(rd0_read_i),.rd_ready_o(rd0_ready_o)//.rd_done_o(rd0_done_o)
+      
.wr_dat_i(wr0_dat_i),.wr_write_i(wr0_write_i),.wr_done_i(wr0_done_i),.wr_ready_o(wr0_ready_o),.wr_full_o(wr0_full_o),
+      
.rd_dat_o(rd0_dat_o),.rd_read_i(rd0_read_i),.rd_done_i(rd0_done_i),.rd_ready_o(rd0_ready_o),.rd_empty_o(rd0_empty_o)
       );
-    
+   
    buffer_2k buf_1
      (.clka(wb_clk_i),.ena(wb_stb_i & sel_a[1]),.wea(wb_we_i),
       .addra(buf_addr),.dia(wb_dat_i),.doa(buf1_outa),
       .clkb(stream_clk),.enb(1),.web(),.addrb(b1a),.dib(b1di),.dob(b1do));
    
+   fifo_int fifo_int_1
+     
(.clk(stream_clk),.rst(stream_rst),.firstline(),.lastline(),.step(),.read_go(),.write_go(),.done(),
+      
.en_o(b1enb),.we_o(b1web),.addr_o(b1a),.dat_to_buf(b1di),.dat_from_buf(b1do),
+      
.wr_dat_i(wr1_dat_i),.wr_write_i(wr1_write_i),.wr_done_i(wr1_done_i),.wr_ready_o(wr1_ready_o),.wr_full_o(wr1_full_o),
+      
.rd_dat_o(rd1_dat_o),.rd_read_i(rd1_read_i),.rd_done_i(rd1_done_i),.rd_ready_o(rd1_ready_o),.rd_empty_o(rd1_empty_o)
+      );
+
+   /*
    buffer_2k buf_2
      (.clka(wb_clk_i),.ena(wb_stb_i & sel_a[2]),.wea(wb_we_i),
       .addra(buf_addr),.dia(wb_dat_i),.doa(buf2_outa),
@@ -114,7 +124,7 @@
      (.clka(wb_clk_i),.ena(wb_stb_i & sel_a[7]),.wea(wb_we_i),
       .addra(buf_addr),.dia(wb_dat_i),.doa(buf7_outa),
       .clkb(stream_clk),.enb(1),.web(),.addrb(b7a),.dib(b7di),.dob(b7do));
-   
+   */
   always @(posedge wb_clk_i)
      if(wb_stb_i)
        case(which_buf)

Modified: gnuradio/branches/developers/matt/u2f/control_lib/fifo_int_tb.v
===================================================================
--- gnuradio/branches/developers/matt/u2f/control_lib/fifo_int_tb.v     
2007-06-17 00:58:24 UTC (rev 5775)
+++ gnuradio/branches/developers/matt/u2f/control_lib/fifo_int_tb.v     
2007-06-17 00:59:25 UTC (rev 5776)
@@ -165,6 +165,8 @@
             @(posedge clk);
          end
        rd_read_i <= 0;
+
+       //FIXME  Why does line 511 not work on write?
        
        $finish;
      end

Modified: gnuradio/branches/developers/matt/u2f/control_lib/serdes_tx.v
===================================================================
--- gnuradio/branches/developers/matt/u2f/control_lib/serdes_tx.v       
2007-06-17 00:58:24 UTC (rev 5775)
+++ gnuradio/branches/developers/matt/u2f/control_lib/serdes_tx.v       
2007-06-17 00:59:25 UTC (rev 5776)
@@ -33,12 +33,12 @@
    // TX Stream Interface
    input [31:0] fifo_data_i,
    output fifo_read_o,
+   output fifo_done_o,
    input fifo_ready_i,
-   input fifo_done_i
+   input fifo_empty_i
    );
 
    localparam COMMA = 8'b101_11100;  // K28.5
-   //localparam IDLE = 8'b001_11100;  // K28.1
    localparam PKT_START = 8'b110_11100; // K28.6
    localparam PKT_END = 8'b100_11100;  // K28.4
    localparam LOS = 8'b111_11111;  // K31.7
@@ -51,11 +51,16 @@
    localparam RUN1 = 3'd2;
    localparam RUN2 = 3'd3;
    localparam DONE = 3'd4;
-
+   localparam WAIT = 3'd5;
+   localparam CRC = 3'd6;
+   
    reg [2:0]  state, next_state;
-
-   // FIXME  Implement sending of flow control, possibly also idles if data 
not ready net
+   wire [15:0] crc_out;
    
+   // FIXME Implement sending of flow control
+   // FIXME Send CRC
+   // DONE Add idles if data not ready yet
+   
    always @(posedge clk)
      if(rst)
        begin
@@ -83,21 +88,42 @@
         RUN2 :
           begin
              {ser_tkmsb,ser_tklsb,ser_t} <= {2'b00,fifo_data_i[31:16]};
-             if(fifo_done_i)
+             if(fifo_empty_i)
                state <= DONE;
+             else if(fifo_ready_i)
+               state <= RUN1;
              else
+               state <= WAIT;
+          end
+        WAIT :   // WAIT only necessary if the FIFO is shared and isn't always 
ready
+          begin
+             {ser_tkmsb,ser_tklsb,ser_t} <= {2'b11,COMMA,COMMA};
+             if(fifo_ready_i)
                state <= RUN1;
           end
         DONE :
           begin
              {ser_tkmsb,ser_tklsb,ser_t} <= {2'b11,PKT_END,PKT_END};
+             state <= CRC;
+          end
+        CRC :
+          begin
+             {ser_tkmsb,ser_tklsb,ser_t} <= {2'b00,crc_out};
              state <= IDLE;
           end
         default
           state <= IDLE;
        endcase // case(state)
 
-   assign fifo_read_o = (state == START) || ((state == RUN2) & ~fifo_done_i);
+   assign fifo_read_o = ((state == RUN2) & ~fifo_empty_i);
+   assign fifo_done_o = 1'b1;  // Unused -- we always send everything we're 
given
+
+   ucrc_par #(.POLYNOMIAL(16'b0001000000100001),.INIT_VALUE(16'hFFFF),
+             .DATA_WIDTH(16),.SYNC_RESET(1))
+     ucrc_par (.clk_i(clk),.rst_i(state == IDLE),
+              .clken_i((state==RUN1)||(state==RUN2)),
+              .data_i( (state==RUN1) ? fifo_data_i[15:0] : fifo_data_i[31:16] 
),
+              .match_o(),.crc_o(crc_out) );
    
 endmodule // serdes_tx
 

Modified: gnuradio/branches/developers/matt/u2f/control_lib/shortfifo.v
===================================================================
--- gnuradio/branches/developers/matt/u2f/control_lib/shortfifo.v       
2007-06-17 00:58:24 UTC (rev 5775)
+++ gnuradio/branches/developers/matt/u2f/control_lib/shortfifo.v       
2007-06-17 00:59:25 UTC (rev 5776)
@@ -12,12 +12,12 @@
    genvar    i;
    
    generate
-      for (i=0;i<32;i++)
+      for (i=0;i<32;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]));
+                   .CE(write),.CLK(clk),.D(datain[i]));
        end
    endgenerate
    

Copied: gnuradio/branches/developers/matt/u2f/control_lib/strobe_gen.v (from 
rev 5774, gnuradio/branches/developers/matt/u2f/sdr_lib/strobe_gen.v)
===================================================================
--- gnuradio/branches/developers/matt/u2f/control_lib/strobe_gen.v              
                (rev 0)
+++ gnuradio/branches/developers/matt/u2f/control_lib/strobe_gen.v      
2007-06-17 00:59:25 UTC (rev 5776)
@@ -0,0 +1,46 @@
+// -*- verilog -*-
+//
+//  USRP - Universal Software Radio Peripheral
+//
+//  Copyright (C) 2003 Matt Ettus
+//
+//  This program is free software; you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation; either version 2 of the License, or
+//  (at your option) any later version.
+//
+//  This program 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 General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program; if not, write to the Free Software
+//  Foundation, Inc., 51 Franklin Street, Boston, MA  02110-1301  USA
+//
+
+
+
+module strobe_gen 
+  ( input clock,
+    input reset,
+    input enable,
+    input [7:0] rate, // Rate should be 1 LESS THAN your desired divide ratio
+    input strobe_in,
+    output wire strobe );
+   
+//   parameter width = 8;
+   
+   reg [7:0] counter;
+   assign strobe = ~|counter && enable && strobe_in;
+   
+   always @(posedge clock)
+     if(reset | ~enable)
+       counter <= #1 8'd0;
+     else if(strobe_in)
+       if(counter == 0)
+        counter <= #1 rate;
+       else 
+        counter <= #1 counter - 8'd1;
+   
+endmodule // strobe_gen





reply via email to

[Prev in Thread] Current Thread [Next in Thread]