commit-gnuradio
[Top][All Lists]
Advanced

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

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


From: matt
Subject: [Commit-gnuradio] r5841 - gnuradio/branches/developers/matt/u2f/control_lib
Date: Mon, 25 Jun 2007 22:51:26 -0600 (MDT)

Author: matt
Date: 2007-06-25 22:51:25 -0600 (Mon, 25 Jun 2007)
New Revision: 5841

Modified:
   gnuradio/branches/developers/matt/u2f/control_lib/fifo_int.v
   gnuradio/branches/developers/matt/u2f/control_lib/serdes_rx.v
   gnuradio/branches/developers/matt/u2f/control_lib/serdes_tb.v
   gnuradio/branches/developers/matt/u2f/control_lib/ss_rcvr.v
Log:
 basically working serdes roundtrip, still need to debug odd-mode


Modified: gnuradio/branches/developers/matt/u2f/control_lib/fifo_int.v
===================================================================
--- gnuradio/branches/developers/matt/u2f/control_lib/fifo_int.v        
2007-06-26 02:53:59 UTC (rev 5840)
+++ gnuradio/branches/developers/matt/u2f/control_lib/fifo_int.v        
2007-06-26 04:51:25 UTC (rev 5841)
@@ -54,7 +54,7 @@
    localparam WRITING = 3'd3;
    localparam ERROR = 3'd4;
 
-   reg [3:0]  state;
+   reg [2:0]  state;
    
    always @(posedge clk)
      if(rst)

Modified: gnuradio/branches/developers/matt/u2f/control_lib/serdes_rx.v
===================================================================
--- gnuradio/branches/developers/matt/u2f/control_lib/serdes_rx.v       
2007-06-26 02:53:59 UTC (rev 5840)
+++ gnuradio/branches/developers/matt/u2f/control_lib/serdes_rx.v       
2007-06-26 04:51:25 UTC (rev 5841)
@@ -51,9 +51,10 @@
    localparam CRC_EVEN = 3'd3;
    localparam CRC_ODD = 3'd4;
    localparam ERROR = 3'd5;
+   localparam DONE = 3'd6;
    
-   reg [17:0] rxd_d1;
-   reg [31:0] line_serclk, line_serclk_d1, line_sysclk;
+   wire [17:0] rxd;
+   reg [31:0]  line;
    reg [15:0] halfline;
    reg               data_valid, phase;
    reg [7:0]  holder;
@@ -61,18 +62,18 @@
    wire       crc_pass;
 
    reg [2:0]  state;
+
+
+   ss_rcvr #(.WIDTH(18)) ss_rcvr
+     (.rxclk(ser_rx_clk),.sysclk(clk),.rst(rst),
+      .data_in({ser_rkmsb,ser_rklsb,ser_r}),.data_out(rxd),
+      .clock_present());
    
-   always @(posedge ser_rx_clk or posedge rst)
-     if(rst)
-       rxd_d1 <= 0;
-     else
-       rxd_d1 <= {ser_rkmsb,ser_rklsb,ser_r};
-
-   always @(posedge ser_rx_clk)
+   always @(posedge clk)
      if(phase == 1)
-       line_serclk = {rxd_d1[15:0], halfline};
+       line = {rxd[15:0], halfline};
               
-   always @(posedge ser_rx_clk or posedge rst)
+   always @(posedge clk)
      if(rst)
        begin
          state <= IDLE;
@@ -85,24 +86,24 @@
           begin
              data_valid <= 0;
              phase <= 0;
-             if(rxd_d1 == {2'b11,K_PKT_START,K_PKT_START})
+             if(rxd == {2'b11,K_PKT_START,K_PKT_START})
                state <= EVEN;
-             else if((rxd_d1[17:16]==2'b01) && (rxd_d1[7:0]==K_PKT_START))
+             else if((rxd[17:16]==2'b01) && (rxd[7:0]==K_PKT_START))
                begin
                   state <= ODD;
-                  holder <= rxd_d1[15:8];
+                  holder <= rxd[15:8];
                end
           end
         EVEN : 
-          case(rxd_d1[17:16])
+          case(rxd[17:16])
             2'b00 :
                begin  
                   data_valid <= 1;
                   phase <= ~phase;
-                  halfline <= rxd_d1[15:0];
+                  halfline <= rxd[15:0];
                end
             2'b11 :
-              if((rxd_d1[15:0] == {K_PKT_END,K_PKT_END}) & ~phase)
+              if((rxd[15:0] == {K_PKT_END,K_PKT_END}) & ~phase)
                 begin
                    state <= CRC_EVEN;
                    data_valid <= 0;
@@ -117,15 +118,15 @@
                  data_valid <= 0;
                  state <= ERROR;
               end
-          endcase // case(rxd_d1[17:16])
+          endcase // case(rxd[17:16])
         ODD :
-          if(~rxd_d1[16])
+          if(~rxd[16])
             begin
                data_valid <= 1;
                phase <= ~phase;
-               holder <= rxd_d1[15:8];
-               halfline <= {rxd_d1[7:0],holder};
-               if(rxd_d1[17:16]==2'b10)
+               holder <= rxd[15:8];
+               halfline <= {rxd[7:0],holder};
+               if(rxd[17:16]==2'b10)
                  state <= CRC_ODD;
                else
                  state <= ERROR;
@@ -133,7 +134,7 @@
           else
             state <= ERROR;
         CRC_EVEN :
-          if(rxd_d1[15:0] == CRC)
+          if(rxd[15:0] == CRC)
             state <= DONE;
           else
             state <= ERROR;
@@ -148,7 +149,7 @@
    reg [15:0] CRC;
    wire [15:0] nextCRC;
    
-   always @(posedge ser_rx_clk or posedge rst)
+   always @(posedge clk)
      if(rst)
        CRC <= 16'hFFFF;
      else if(state == IDLE)
@@ -159,8 +160,9 @@
    CRC16_D16 crc_blk(halfline,CRC,nextCRC);
    assign      crc_pass = ~|nextCRC;
 
+   assign      fifo_data_o = line;
+   assign      fifo_write_o = data_valid & ~phase;
    assign      fifo_error_o = (state == ERROR);
    assign      fifo_done_o = (state == DONE);
-   
 endmodule // serdes_rx
 

Modified: gnuradio/branches/developers/matt/u2f/control_lib/serdes_tb.v
===================================================================
--- gnuradio/branches/developers/matt/u2f/control_lib/serdes_tb.v       
2007-06-26 02:53:59 UTC (rev 5840)
+++ gnuradio/branches/developers/matt/u2f/control_lib/serdes_tb.v       
2007-06-26 04:51:25 UTC (rev 5841)
@@ -122,12 +122,14 @@
       $display("Done entering Data into RAM\n");
       repeat(10)
        @(posedge clk);
-      write_go_rx = 1;
+      write_go_rx <= 1;
+      $display("Send write_go");
       @(posedge clk);
-      write_go_rx = 0;
+      write_go_rx <= 0;
       repeat(30)
        @(posedge clk);
       read_go_tx = 1;
+      $display("Send read_go");
       @(posedge clk);
       read_go_tx = 0;
       
@@ -150,7 +152,7 @@
    
    always @(posedge clk)
      if(write_rx)
-       $display("SERDES RX, FIFO WRITE %x, FIFO RDY %d, FIFO EMPTY 
%d",data_rx, ready_rx, empty_rx);
+       $display("SERDES RX, FIFO WRITE %x, FIFO RDY %d, FIFO FULL %d",data_rx, 
ready_rx, full_rx);
    
    always @(posedge clk)
      if(read_tx)
@@ -161,6 +163,6 @@
       $dumpvars(0,serdes_tb);
    end
 
-   initial #10000000 $finish;
+   initial #1000000 $finish;
    
 endmodule // serdes_tb

Modified: gnuradio/branches/developers/matt/u2f/control_lib/ss_rcvr.v
===================================================================
--- gnuradio/branches/developers/matt/u2f/control_lib/ss_rcvr.v 2007-06-26 
02:53:59 UTC (rev 5840)
+++ gnuradio/branches/developers/matt/u2f/control_lib/ss_rcvr.v 2007-06-26 
04:51:25 UTC (rev 5841)
@@ -19,8 +19,8 @@
      input sysclk,
      input rst,
      
-     input [15:0] data_in,
-     output [15:0] data_out,
+     input [WIDTH-1:0] data_in,
+     output [WIDTH-1:0] data_out,
      output reg clock_present);
    
    wire [3:0] rd_addr, wr_addr;
@@ -56,7 +56,7 @@
    
    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_counter_sys - rd_counter;
+   assign         diff = wr_ctr_sys - rd_counter;
    assign         abs_diff = diff[3] ? (~diff+1) : diff;
    
    reg [3:0]      rd_counter;





reply via email to

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