commit-gnuradio
[Top][All Lists]
Advanced

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

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


From: matt
Subject: [Commit-gnuradio] r5839 - gnuradio/branches/developers/matt/u2f/control_lib
Date: Mon, 25 Jun 2007 20:50:21 -0600 (MDT)

Author: matt
Date: 2007-06-25 20:50:20 -0600 (Mon, 25 Jun 2007)
New Revision: 5839

Modified:
   gnuradio/branches/developers/matt/u2f/control_lib/serdes_rx.v
Log:
most of the rx process done


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:48:51 UTC (rev 5838)
+++ gnuradio/branches/developers/matt/u2f/control_lib/serdes_rx.v       
2007-06-26 02:50:20 UTC (rev 5839)
@@ -38,19 +38,19 @@
    input fifo_full_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
-   localparam ERROR = 8'b000_00000; // K0.0
+   localparam K_COMMA = 8'b101_11100;     // 0xBC K28.5
+   localparam K_IDLE = 8'b001_11100;      // 0x3C K28.1
+   localparam K_PKT_START = 8'b110_11100; // 0xDC K28.6
+   localparam K_PKT_END = 8'b100_11100;   // 0x9C K28.4
+   localparam K_LOS = 8'b111_11111;       // 0xFF K31.7
+   localparam K_ERROR = 8'b000_00000;     // 0x00 K00.0
    
    localparam IDLE = 3'd0;
-   localparam START = 3'd1;
-   localparam EVEN = 3'd2;
-   localparam ODD = 3'd3;
-   localparam CRC_EVEN = 3'd4;
-   localparam CRC_ODD = 3'd5;
+   localparam EVEN = 3'd1;
+   localparam ODD = 3'd2;
+   localparam CRC_EVEN = 3'd3;
+   localparam CRC_ODD = 3'd4;
+   localparam ERROR = 3'd5;
    
    reg [17:0] rxd_d1;
    reg [31:0] line_serclk, line_serclk_d1, line_sysclk;
@@ -67,7 +67,11 @@
        rxd_d1 <= 0;
      else
        rxd_d1 <= {ser_rkmsb,ser_rklsb,ser_r};
-   
+
+   always @(posedge ser_rx_clk)
+     if(phase == 1)
+       line_serclk = {rxd_d1[15:0], halfline};
+              
    always @(posedge ser_rx_clk or posedge rst)
      if(rst)
        begin
@@ -81,9 +85,9 @@
           begin
              data_valid <= 0;
              phase <= 0;
-             if(rxd_d1 == {2'b11,PKT_START,PKT_START})
+             if(rxd_d1 == {2'b11,K_PKT_START,K_PKT_START})
                state <= EVEN;
-             else if((rxd_d1[17:16]==2'b01) && (rxd_d1[7:0]==PKT_START))
+             else if((rxd_d1[17:16]==2'b01) && (rxd_d1[7:0]==K_PKT_START))
                begin
                   state <= ODD;
                   holder <= rxd_d1[15:8];
@@ -98,7 +102,7 @@
                   halfline <= rxd_d1[15:0];
                end
             2'b11 :
-              if((rxd_d1[15:0] == {PKT_END,PKT_END}) & phase)
+              if((rxd_d1[15:0] == {K_PKT_END,K_PKT_END}) & ~phase)
                 begin
                    state <= CRC_EVEN;
                    data_valid <= 0;
@@ -129,11 +133,16 @@
           else
             state <= ERROR;
         CRC_EVEN :
-          state <= IDLE;
+          if(rxd_d1[15:0] == CRC)
+            state <= DONE;
+          else
+            state <= ERROR;
         CRC_ODD :
           state <= IDLE;
         ERROR :
           state <= IDLE;
+        DONE :
+          state <= IDLE;
        endcase // case(state)
 
    reg [15:0] CRC;
@@ -149,6 +158,9 @@
 
    CRC16_D16 crc_blk(halfline,CRC,nextCRC);
    assign      crc_pass = ~|nextCRC;
+
+   assign      fifo_error_o = (state == ERROR);
+   assign      fifo_done_o = (state == DONE);
    
 endmodule // serdes_rx
 





reply via email to

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