Line 42... |
Line 42... |
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
//
|
//
|
`timescale 1ns / 1ps
|
`timescale 1ns / 1ps
|
|
|
module usbSlaveControl(
|
module usbSlaveControl(
|
clk, rst,
|
busClk,
|
|
rstSyncToBusClk,
|
|
usbClk,
|
|
rstSyncToUsbClk,
|
//getPacket
|
//getPacket
|
RxByteStatus, RxData, RxDataValid,
|
RxByteStatus, RxData, RxDataValid,
|
SIERxTimeOut, RxFifoData,
|
SIERxTimeOut, RxFifoData,
|
//speedCtrlMux
|
//speedCtrlMux
|
fullSpeedRate, fullSpeedPol,
|
fullSpeedRate, fullSpeedPol,
|
Line 89... |
Line 92... |
RxFifoEP1Full,
|
RxFifoEP1Full,
|
RxFifoEP2Full,
|
RxFifoEP2Full,
|
RxFifoEP3Full
|
RxFifoEP3Full
|
);
|
);
|
|
|
input clk, rst;
|
input busClk;
|
|
input rstSyncToBusClk;
|
|
input usbClk;
|
|
input rstSyncToUsbClk;
|
//getPacket
|
//getPacket
|
input [7:0] RxByteStatus;
|
input [7:0] RxByteStatus;
|
input [7:0] RxData;
|
input [7:0] RxData;
|
input RxDataValid;
|
input RxDataValid;
|
input SIERxTimeOut;
|
input SIERxTimeOut;
|
Line 141... |
Line 147... |
input RxFifoEP0Full;
|
input RxFifoEP0Full;
|
input RxFifoEP1Full;
|
input RxFifoEP1Full;
|
input RxFifoEP2Full;
|
input RxFifoEP2Full;
|
input RxFifoEP3Full;
|
input RxFifoEP3Full;
|
|
|
wire clk;
|
wire busClk;
|
wire rst;
|
wire rstSyncToBusClk;
|
|
wire usbClk;
|
|
wire rstSyncToUsbClk;
|
wire [7:0] RxByteStatus;
|
wire [7:0] RxByteStatus;
|
wire [7:0] RxData;
|
wire [7:0] RxData;
|
wire RxDataValid;
|
wire RxDataValid;
|
wire SIERxTimeOut;
|
wire SIERxTimeOut;
|
wire [7:0] RxFifoData;
|
wire [7:0] RxFifoData;
|
Line 253... |
Line 261... |
wire RxFifoWE;
|
wire RxFifoWE;
|
wire RxFifoFull;
|
wire RxFifoFull;
|
wire resetEventFromRxStatusMon;
|
wire resetEventFromRxStatusMon;
|
wire clrEPRdy;
|
wire clrEPRdy;
|
wire endPMuxErrorsWEn;
|
wire endPMuxErrorsWEn;
|
|
wire endPointReadyFromSlaveCtrlrToGetPkt;
|
|
|
USBSlaveControlBI u_USBSlaveControlBI
|
USBSlaveControlBI u_USBSlaveControlBI
|
(.address(busAddress),
|
(.address(busAddress),
|
.dataIn(busDataIn),
|
.dataIn(busDataIn),
|
.dataOut(busDataOut),
|
.dataOut(busDataOut),
|
.writeEn(busWriteEn),
|
.writeEn(busWriteEn),
|
.strobe_i(busStrobe_i),
|
.strobe_i(busStrobe_i),
|
.clk(clk),
|
.busClk(busClk),
|
.rst(rst),
|
.rstSyncToBusClk(rstSyncToBusClk),
|
|
.usbClk(usbClk),
|
|
.rstSyncToUsbClk(rstSyncToUsbClk),
|
.SOFRxedIntOut(SOFRxedIntOut),
|
.SOFRxedIntOut(SOFRxedIntOut),
|
.resetEventIntOut(resetEventIntOut),
|
.resetEventIntOut(resetEventIntOut),
|
.resumeIntOut(resumeIntOut),
|
.resumeIntOut(resumeIntOut),
|
.transDoneIntOut(transDoneIntOut),
|
.transDoneIntOut(transDoneIntOut),
|
.NAKSentIntOut(NAKSentIntOut),
|
.NAKSentIntOut(NAKSentIntOut),
|
Line 319... |
Line 330... |
.USBEndPNakTransTypeReg(transTypeNAK),
|
.USBEndPNakTransTypeReg(transTypeNAK),
|
.USBEndPTransTypeReg(transType),
|
.USBEndPTransTypeReg(transType),
|
.USBEndP(currEndP),
|
.USBEndP(currEndP),
|
.USBTgtAddress(USBTgtAddress),
|
.USBTgtAddress(USBTgtAddress),
|
.bitStuffError(bitStuffError),
|
.bitStuffError(bitStuffError),
|
.clk(clk),
|
.clk(usbClk),
|
.clrEPRdy(clrEPRdy),
|
.clrEPRdy(clrEPRdy),
|
.endPMuxErrorsWEn(endPMuxErrorsWEn),
|
.endPMuxErrorsWEn(endPMuxErrorsWEn),
|
.frameNum(frameNum),
|
.frameNum(frameNum),
|
.getPacketREn(getPacketREn),
|
.getPacketREn(getPacketREn),
|
.getPacketRdy(getPacketRdy),
|
.getPacketRdy(getPacketRdy),
|
.rst(rst),
|
.rst(rstSyncToUsbClk),
|
.sendPacketPID(slaveControllerPIDOut),
|
.sendPacketPID(slaveControllerPIDOut),
|
.sendPacketRdy(slaveControllerReadyIn),
|
.sendPacketRdy(slaveControllerReadyIn),
|
.sendPacketWEn(slaveControllerWEnOut),
|
.sendPacketWEn(slaveControllerWEnOut),
|
.stallSent(stallSent),
|
.stallSent(stallSent),
|
.transDone(transDone)
|
.transDone(transDone),
|
|
.endPointReadyToGetPkt(endPointReadyFromSlaveCtrlrToGetPkt)
|
);
|
);
|
|
|
|
|
endpMux u_endpMux (
|
endpMux u_endpMux (
|
.clk(clk),
|
.clk(usbClk),
|
.rst(rst),
|
.rst(rstSyncToUsbClk),
|
.currEndP(currEndP),
|
.currEndP(currEndP),
|
.NAKSent(NAKSent),
|
.NAKSent(NAKSent),
|
.stallSent(stallSent),
|
.stallSent(stallSent),
|
.CRCError(CRCError),
|
.CRCError(CRCError),
|
.bitStuffError(bitStuffError),
|
.bitStuffError(bitStuffError),
|
Line 381... |
Line 393... |
.SCTxPortData(sendPacketData),
|
.SCTxPortData(sendPacketData),
|
.SCTxPortGnt(sendPacketGnt),
|
.SCTxPortGnt(sendPacketGnt),
|
.SCTxPortRdy(SCTxPortArbRdyOut),
|
.SCTxPortRdy(SCTxPortArbRdyOut),
|
.SCTxPortReq(sendPacketReq),
|
.SCTxPortReq(sendPacketReq),
|
.SCTxPortWEn(sendPacketWEn),
|
.SCTxPortWEn(sendPacketWEn),
|
.clk(clk),
|
.clk(usbClk),
|
.fifoData(TxFifoData),
|
.fifoData(TxFifoData),
|
.fifoEmpty(TxFifoEmpty),
|
.fifoEmpty(TxFifoEmpty),
|
.fifoReadEn(TxFifoRE),
|
.fifoReadEn(TxFifoRE),
|
.rst(rst),
|
.rst(rstSyncToUsbClk),
|
.sendPacketRdy(slaveControllerReadyIn),
|
.sendPacketRdy(slaveControllerReadyIn),
|
.sendPacketWEn(slaveControllerWEnOut) );
|
.sendPacketWEn(slaveControllerWEnOut) );
|
|
|
slaveDirectControl u_slaveDirectControl
|
slaveDirectControl u_slaveDirectControl
|
(.SCTxPortCntl(directCntlCntl),
|
(.SCTxPortCntl(directCntlCntl),
|
.SCTxPortData(directCntlData),
|
.SCTxPortData(directCntlData),
|
.SCTxPortGnt(directCntlGnt),
|
.SCTxPortGnt(directCntlGnt),
|
.SCTxPortRdy(SCTxPortArbRdyOut),
|
.SCTxPortRdy(SCTxPortArbRdyOut),
|
.SCTxPortReq(directCntlReq),
|
.SCTxPortReq(directCntlReq),
|
.SCTxPortWEn(directCntlWEn),
|
.SCTxPortWEn(directCntlWEn),
|
.clk(clk),
|
.clk(usbClk),
|
.directControlEn(directLineCtrlEn),
|
.directControlEn(directLineCtrlEn),
|
.directControlLineState(directLineState),
|
.directControlLineState(directLineState),
|
.rst(rst) );
|
.rst(rstSyncToUsbClk) );
|
|
|
SCTxPortArbiter u_SCTxPortArbiter
|
SCTxPortArbiter u_SCTxPortArbiter
|
(.SCTxPortCntl(SCTxPortCtrl),
|
(.SCTxPortCntl(SCTxPortCtrl),
|
.SCTxPortData(SCTxPortData),
|
.SCTxPortData(SCTxPortData),
|
.SCTxPortRdyIn(SCTxPortRdy),
|
.SCTxPortRdyIn(SCTxPortRdy),
|
.SCTxPortRdyOut(SCTxPortArbRdyOut),
|
.SCTxPortRdyOut(SCTxPortArbRdyOut),
|
.SCTxPortWEnable(SCTxPortEn),
|
.SCTxPortWEnable(SCTxPortEn),
|
.clk(clk),
|
.clk(usbClk),
|
.directCntlCntl(directCntlCntl),
|
.directCntlCntl(directCntlCntl),
|
.directCntlData(directCntlData),
|
.directCntlData(directCntlData),
|
.directCntlGnt(directCntlGnt),
|
.directCntlGnt(directCntlGnt),
|
.directCntlReq(directCntlReq),
|
.directCntlReq(directCntlReq),
|
.directCntlWEn(directCntlWEn),
|
.directCntlWEn(directCntlWEn),
|
.rst(rst),
|
.rst(rstSyncToUsbClk),
|
.sendPacketCntl(sendPacketCntl),
|
.sendPacketCntl(sendPacketCntl),
|
.sendPacketData(sendPacketData),
|
.sendPacketData(sendPacketData),
|
.sendPacketGnt(sendPacketGnt),
|
.sendPacketGnt(sendPacketGnt),
|
.sendPacketReq(sendPacketReq),
|
.sendPacketReq(sendPacketReq),
|
.sendPacketWEn(sendPacketWEn) );
|
.sendPacketWEn(sendPacketWEn) );
|
Line 433... |
Line 445... |
.RXFifoWEn(RxFifoWE),
|
.RXFifoWEn(RxFifoWE),
|
.RXPacketRdy(getPacketRdy),
|
.RXPacketRdy(getPacketRdy),
|
.RXStreamStatusIn(RxByteStatus),
|
.RXStreamStatusIn(RxByteStatus),
|
.RxPID(RxPID),
|
.RxPID(RxPID),
|
.SIERxTimeOut(SIERxTimeOut),
|
.SIERxTimeOut(SIERxTimeOut),
|
.clk(clk),
|
.clk(usbClk),
|
.RXOverflow(RXOverflow),
|
.RXOverflow(RXOverflow),
|
.RXTimeOut(RXTimeOut),
|
.RXTimeOut(RXTimeOut),
|
.bitStuffError(bitStuffError),
|
.bitStuffError(bitStuffError),
|
.dataSequence(dataSequence),
|
.dataSequence(dataSequence),
|
.getPacketEn(getPacketREn),
|
.getPacketEn(getPacketREn),
|
.rst(rst) );
|
.rst(rstSyncToUsbClk),
|
|
.endPointReady(endPointReadyFromSlaveCtrlrToGetPkt)
|
|
);
|
|
|
slaveRxStatusMonitor u_slaveRxStatusMonitor
|
slaveRxStatusMonitor u_slaveRxStatusMonitor
|
(.connectStateIn(connectStateIn),
|
(.connectStateIn(connectStateIn),
|
.connectStateOut(connectStateOut),
|
.connectStateOut(connectStateOut),
|
.resumeDetectedIn(resumeDetectedIn),
|
.resumeDetectedIn(resumeDetectedIn),
|
.resetEventOut(resetEventFromRxStatusMon),
|
.resetEventOut(resetEventFromRxStatusMon),
|
.resumeIntOut(resumeIntFromRxStatusMon),
|
.resumeIntOut(resumeIntFromRxStatusMon),
|
.clk(clk),
|
.clk(usbClk),
|
.rst(rst) );
|
.rst(rstSyncToUsbClk) );
|
|
|
fifoMux u_fifoMux (
|
fifoMux u_fifoMux (
|
.currEndP(currEndP),
|
.currEndP(currEndP),
|
//TxFifo
|
//TxFifo
|
.TxFifoREn(TxFifoRE),
|
.TxFifoREn(TxFifoRE),
|