OpenCores
URL https://opencores.org/ocsvn/usbhostslave/usbhostslave/trunk

Subversion Repositories usbhostslave

[/] [usbhostslave/] [trunk/] [RTL/] [serialInterfaceEngine/] [writeUSBWireData.v] - Diff between revs 40 and 43

Show entire file | Details | Blame | View Log

Rev 40 Rev 43
Line 83... Line 83...
wire    fullSpeedRate;
wire    fullSpeedRate;
wire    rst;
wire    rst;
reg     TxWireActiveDrive;
reg     TxWireActiveDrive;
 
 
// local registers
// local registers
reg  [2:0]buffer0;
reg  [3:0]buffer0;
reg  [2:0]buffer1;
reg  [3:0]buffer1;
reg  [2:0]buffer2;
reg  [3:0]buffer2;
reg  [2:0]buffer3;
reg  [3:0]buffer3;
reg  [2:0]bufferCnt;
reg  [2:0]bufferCnt;
reg  [1:0]bufferInIndex;
reg  [1:0]bufferInIndex;
reg  [1:0]bufferOutIndex;
reg  [1:0]bufferOutIndex;
reg decBufferCnt;
reg decBufferCnt;
reg  [4:0]i;
reg  [4:0]i;
reg incBufferCnt;
reg incBufferCnt;
reg fullSpeedTick;
reg fullSpeedTick;
reg lowSpeedTick;
reg lowSpeedTick;
 
reg fullSpeedRate_reg;
 
 
// buffer in state machine state codes:
// buffer in state machine state codes:
`define WAIT_BUFFER_NOT_FULL 2'b00
`define WAIT_BUFFER_NOT_FULL 2'b00
`define WAIT_WRITE_REQ 2'b01
`define WAIT_WRITE_REQ 2'b01
`define CLR_INC_BUFFER_CNT 2'b10
`define CLR_INC_BUFFER_CNT 2'b10
Line 131... Line 132...
//buffer input state machine 
//buffer input state machine 
always @(posedge clk) begin
always @(posedge clk) begin
  if (rst == 1'b1) begin
  if (rst == 1'b1) begin
     incBufferCnt <= 1'b0;
     incBufferCnt <= 1'b0;
    bufferInIndex <= 2'b00;
    bufferInIndex <= 2'b00;
    buffer0 <= 3'b000;
    buffer0 <= 4'b0000;
    buffer1 <= 3'b000;
    buffer1 <= 4'b0000;
    buffer2 <= 3'b000;
    buffer2 <= 4'b0000;
    buffer3 <= 3'b000;
    buffer3 <= 4'b0000;
    USBWireRdy <= 1'b0;
    USBWireRdy <= 1'b0;
    bufferInStMachCurrState <= `WAIT_BUFFER_NOT_FULL;
    bufferInStMachCurrState <= `WAIT_BUFFER_NOT_FULL;
  end
  end
  else begin
  else begin
    case (bufferInStMachCurrState)
    case (bufferInStMachCurrState)
Line 156... Line 157...
        begin
        begin
          incBufferCnt <= 1'b1;
          incBufferCnt <= 1'b1;
          USBWireRdy <= 1'b0;
          USBWireRdy <= 1'b0;
          bufferInIndex <= bufferInIndex + 1'b1;
          bufferInIndex <= bufferInIndex + 1'b1;
          case (bufferInIndex)
          case (bufferInIndex)
            2'b00 : buffer0 <= {TxBitsIn, TxCtrlIn};
            2'b00 : buffer0 <= {fullSpeedRate, TxBitsIn, TxCtrlIn};
            2'b01 : buffer1 <= {TxBitsIn, TxCtrlIn};
            2'b01 : buffer1 <= {fullSpeedRate, TxBitsIn, TxCtrlIn};
            2'b10 : buffer2 <= {TxBitsIn, TxCtrlIn};
            2'b10 : buffer2 <= {fullSpeedRate, TxBitsIn, TxCtrlIn};
            2'b11 : buffer3 <= {TxBitsIn, TxCtrlIn};
            2'b11 : buffer3 <= {fullSpeedRate, TxBitsIn, TxCtrlIn};
          endcase
          endcase
          bufferInStMachCurrState <= `CLR_INC_BUFFER_CNT;
          bufferInStMachCurrState <= `CLR_INC_BUFFER_CNT;
        end
        end
      end
      end
      `CLR_INC_BUFFER_CNT:
      `CLR_INC_BUFFER_CNT:
Line 215... Line 216...
    decBufferCnt <= 1'b0;
    decBufferCnt <= 1'b0;
    TxBitsOut <= 2'b00;
    TxBitsOut <= 2'b00;
    TxCtrlOut <= `TRI_STATE;
    TxCtrlOut <= `TRI_STATE;
    TxDataOutTick <= 1'b0;
    TxDataOutTick <= 1'b0;
    bufferOutStMachCurrState <= `WAIT_LINE_WRITE;
    bufferOutStMachCurrState <= `WAIT_LINE_WRITE;
 
    fullSpeedRate_reg <= 1'b0;
  end
  end
  else
  else
  begin
  begin
 
    case (bufferOutIndex)
 
      2'b00: fullSpeedRate_reg <= buffer0[3];
 
      2'b01: fullSpeedRate_reg <= buffer1[3];
 
      2'b10: fullSpeedRate_reg <= buffer2[3];
 
      2'b11: fullSpeedRate_reg <= buffer3[3];
 
    endcase
    case (bufferOutStMachCurrState)
    case (bufferOutStMachCurrState)
      `WAIT_LINE_WRITE:
      `WAIT_LINE_WRITE:
      begin
      begin
        if ((fullSpeedRate == 1'b1 && fullSpeedTick == 1'b1) || (fullSpeedRate == 1'b0 && lowSpeedTick == 1'b1) )
        if ((fullSpeedRate_reg == 1'b1 && fullSpeedTick == 1'b1) || (fullSpeedRate_reg == 1'b0 && lowSpeedTick == 1'b1) )
        begin
        begin
          TxDataOutTick <= !TxDataOutTick;
          TxDataOutTick <= !TxDataOutTick;
          if (bufferCnt == 0) begin
          if (bufferCnt == 0) begin
            TxBitsOut <= 2'b00;
            TxBitsOut <= 2'b00;
            TxCtrlOut <= `TRI_STATE;
            TxCtrlOut <= `TRI_STATE;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.