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

Subversion Repositories usbhostslave

[/] [usbhostslave/] [trunk/] [RTL/] [slaveController/] [slavecontroller.v] - Diff between revs 9 and 14

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 9 Rev 14
Line 59... Line 59...
input   RxOverflow;
input   RxOverflow;
input   [7:0]RxStatus;
input   [7:0]RxStatus;
input   RxTimeOut;
input   RxTimeOut;
input   SCGlobalEn;
input   SCGlobalEn;
input   sendPacketRdy;
input   sendPacketRdy;
input   [3:0]USBEndPControlReg;
input   [4:0]USBEndPControlReg;
input   [6:0]USBTgtAddress;
input   [6:0]USBTgtAddress;
output  clrEPRdy;
output  clrEPRdy;
output  endPMuxErrorsWEn;
output  endPMuxErrorsWEn;
output  [10:0]frameNum;
output  [10:0]frameNum;
output  getPacketREn;
output  getPacketREn;
Line 98... Line 98...
reg     sendPacketWEn, next_sendPacketWEn;
reg     sendPacketWEn, next_sendPacketWEn;
reg     SOFRxed, next_SOFRxed;
reg     SOFRxed, next_SOFRxed;
reg     stallSent, next_stallSent;
reg     stallSent, next_stallSent;
reg     transDone, next_transDone;
reg     transDone, next_transDone;
reg     [3:0]USBEndP, next_USBEndP;
reg     [3:0]USBEndP, next_USBEndP;
wire    [3:0]USBEndPControlReg;
wire    [4:0]USBEndPControlReg;
reg     [1:0]USBEndPNakTransTypeReg, next_USBEndPNakTransTypeReg;
reg     [1:0]USBEndPNakTransTypeReg, next_USBEndPNakTransTypeReg;
reg     [1:0]USBEndPTransTypeReg, next_USBEndPTransTypeReg;
reg     [1:0]USBEndPTransTypeReg, next_USBEndPTransTypeReg;
wire    [6:0]USBTgtAddress;
wire    [6:0]USBTgtAddress;
 
 
// diagram signals declarations
// diagram signals declarations
Line 123... Line 123...
`define GET_TOKEN_CHK_SOF 5'b00110
`define GET_TOKEN_CHK_SOF 5'b00110
`define PID_ERROR 5'b00111
`define PID_ERROR 5'b00111
`define CHK_RDY 5'b01000
`define CHK_RDY 5'b01000
`define IN_NAK_STALL 5'b01001
`define IN_NAK_STALL 5'b01001
`define IN_CHK_RDY 5'b01010
`define IN_CHK_RDY 5'b01010
`define IN_DATA 5'b01011
`define SETUP_OUT_CHK 5'b01011
`define IN_GET_RESP 5'b01100
`define SETUP_OUT_SEND 5'b01100
`define SETUP_OUT_CHK 5'b01101
`define SETUP_OUT_GET_PKT 5'b01101
`define SETUP_OUT_SEND 5'b01110
`define START_S1 5'b01110
`define SETUP_OUT_GET_PKT 5'b01111
`define GET_TOKEN_DELAY 5'b01111
`define START_S1 5'b10000
`define GET_TOKEN_CHK_ADDR 5'b10000
`define GET_TOKEN_DELAY 5'b10001
`define IN_RESP_GET_RESP 5'b10001
`define GET_TOKEN_CHK_ADDR 5'b10010
`define IN_RESP_DATA 5'b10010
 
`define IN_RESP_CHK_ISO 5'b10011
 
 
reg [4:0]CurrState_slvCntrl, NextState_slvCntrl;
reg [4:0]CurrState_slvCntrl, NextState_slvCntrl;
 
 
 
 
// Machine: slvCntrl
// Machine: slvCntrl
Line 195... Line 196...
      begin
      begin
        NextState_slvCntrl <= `SETUP_OUT_GET_PKT;
        NextState_slvCntrl <= `SETUP_OUT_GET_PKT;
        next_tempUSBEndPTransTypeReg <= `SC_OUTDATA_TRANS;
        next_tempUSBEndPTransTypeReg <= `SC_OUTDATA_TRANS;
        next_getPacketREn <= 1'b1;
        next_getPacketREn <= 1'b1;
      end
      end
      else if (PIDByte[3:0] == `IN)
      else if ((PIDByte[3:0] == `IN) && (USBEndPControlReg [`ENDPOINT_ISO_ENABLE_BIT] == 1'b0))
      begin
      begin
        NextState_slvCntrl <= `IN_CHK_RDY;
        NextState_slvCntrl <= `IN_CHK_RDY;
        next_tempUSBEndPTransTypeReg <= `SC_IN_TRANS;
        next_tempUSBEndPTransTypeReg <= `SC_IN_TRANS;
      end
      end
 
      else if (((PIDByte[3:0] == `IN) && (USBEndPControlReg [`ENDPOINT_READY_BIT] == 1'b1)) && (USBEndPControlReg [`ENDPOINT_OUTDATA_SEQUENCE_BIT] == 1'b0))
 
      begin
 
        NextState_slvCntrl <= `IN_RESP_DATA;
 
        next_tempUSBEndPTransTypeReg <= `SC_IN_TRANS;
 
        next_sendPacketWEn <= 1'b1;
 
        next_sendPacketPID <= `DATA0;
 
      end
 
      else if ((PIDByte[3:0] == `IN) && (USBEndPControlReg [`ENDPOINT_READY_BIT] == 1'b1))
 
      begin
 
        NextState_slvCntrl <= `IN_RESP_DATA;
 
        next_tempUSBEndPTransTypeReg <= `SC_IN_TRANS;
 
        next_sendPacketWEn <= 1'b1;
 
        next_sendPacketPID <= `DATA1;
 
      end
 
      else if (PIDByte[3:0] == `IN)
 
      begin
 
        NextState_slvCntrl <= `CHK_RDY;
 
        next_tempUSBEndPTransTypeReg <= `SC_IN_TRANS;
 
      end
      else
      else
      begin
      begin
        NextState_slvCntrl <= `PID_ERROR;
        NextState_slvCntrl <= `PID_ERROR;
      end
      end
    end
    end
Line 264... Line 284...
      end
      end
    end
    end
    `SETUP_OUT_GET_PKT:
    `SETUP_OUT_GET_PKT:
    begin
    begin
      next_getPacketREn <= 1'b0;
      next_getPacketREn <= 1'b0;
      if ((getPacketRdy == 1'b1) && (CRCError == 1'b0 &&
      if ((getPacketRdy == 1'b1) && (USBEndPControlReg [`ENDPOINT_ISO_ENABLE_BIT] == 1'b1))
 
      begin
 
        NextState_slvCntrl <= `CHK_RDY;
 
      end
 
      else if ((getPacketRdy == 1'b1) && (CRCError == 1'b0 &&
        bitStuffError == 1'b0 &&
        bitStuffError == 1'b0 &&
        RxOverflow == 1'b0 &&
        RxOverflow == 1'b0 &&
        RxTimeOut == 1'b0))
        RxTimeOut == 1'b0))
      begin
      begin
        NextState_slvCntrl <= `SETUP_OUT_CHK;
        NextState_slvCntrl <= `SETUP_OUT_CHK;
Line 302... Line 326...
        next_sendPacketPID <= `STALL;
        next_sendPacketPID <= `STALL;
        next_stallSent <= 1'b1;
        next_stallSent <= 1'b1;
      end
      end
      else if (USBEndPControlReg [`ENDPOINT_OUTDATA_SEQUENCE_BIT] == 1'b0)
      else if (USBEndPControlReg [`ENDPOINT_OUTDATA_SEQUENCE_BIT] == 1'b0)
      begin
      begin
        NextState_slvCntrl <= `IN_DATA;
        NextState_slvCntrl <= `IN_RESP_DATA;
        next_sendPacketWEn <= 1'b1;
        next_sendPacketWEn <= 1'b1;
        next_sendPacketPID <= `DATA0;
        next_sendPacketPID <= `DATA0;
      end
      end
      else
      else
      begin
      begin
        NextState_slvCntrl <= `IN_DATA;
        NextState_slvCntrl <= `IN_RESP_DATA;
        next_sendPacketWEn <= 1'b1;
        next_sendPacketWEn <= 1'b1;
        next_sendPacketPID <= `DATA1;
        next_sendPacketPID <= `DATA1;
      end
      end
    end
    end
    `IN_DATA:
    `IN_RESP_GET_RESP:
 
    begin
 
      next_getPacketREn <= 1'b0;
 
      if (getPacketRdy == 1'b1)
 
      begin
 
        NextState_slvCntrl <= `CHK_RDY;
 
      end
 
    end
 
    `IN_RESP_DATA:
    begin
    begin
      next_sendPacketWEn <= 1'b0;
      next_sendPacketWEn <= 1'b0;
      if (sendPacketRdy == 1'b1)
      if (sendPacketRdy == 1'b1)
      begin
      begin
        NextState_slvCntrl <= `IN_GET_RESP;
        NextState_slvCntrl <= `IN_RESP_CHK_ISO;
        next_getPacketREn <= 1'b1;
 
      end
      end
    end
    end
    `IN_GET_RESP:
    `IN_RESP_CHK_ISO:
    begin
    begin
      next_getPacketREn <= 1'b0;
      if (USBEndPControlReg [`ENDPOINT_ISO_ENABLE_BIT] == 1'b1)
      if (getPacketRdy == 1'b1)
 
      begin
      begin
        NextState_slvCntrl <= `CHK_RDY;
        NextState_slvCntrl <= `CHK_RDY;
      end
      end
 
      else
 
      begin
 
        NextState_slvCntrl <= `IN_RESP_GET_RESP;
 
        next_getPacketREn <= 1'b1;
 
      end
    end
    end
    `START_S1:
    `START_S1:
    begin
    begin
      NextState_slvCntrl <= `WAIT_RX1;
      NextState_slvCntrl <= `WAIT_RX1;
    end
    end

powered by: WebSVN 2.1.0

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