Line 39... |
Line 39... |
//// Public License along with this source; if not, download it ////
|
//// Public License along with this source; if not, download it ////
|
//// from <http://www.opencores.org/lgpl.shtml> ////
|
//// from <http://www.opencores.org/lgpl.shtml> ////
|
//// ////
|
//// ////
|
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
//
|
//
|
// $Id: readUSBWireData.v,v 1.1.1.1 2004-10-11 04:01:01 sfielding Exp $
|
// $Id: readUSBWireData.v,v 1.2 2004-12-18 14:36:16 sfielding Exp $
|
//
|
//
|
// CVS Revision History
|
// CVS Revision History
|
//
|
//
|
// $Log: not supported by cvs2svn $
|
// $Log: not supported by cvs2svn $
|
|
// Revision 1.1.1.1 2004/10/11 04:01:01 sfielding
|
|
// Created
|
|
//
|
//
|
//
|
|
|
`timescale 1ns / 1ps
|
`timescale 1ns / 1ps
|
`include "usbSerialInterfaceEngine_h.v"
|
`include "usbSerialInterfaceEngine_h.v"
|
|
|
Line 81... |
Line 84... |
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 [1:0]oldRxBitsIn;
|
reg [1:0]oldRxBitsIn;
|
|
reg [1:0] RxBitsInReg;
|
|
|
// buffer output state machine state codes:
|
// buffer output state machine state codes:
|
`define WAIT_BUFFER_NOT_EMPTY 2'b00
|
`define WAIT_BUFFER_NOT_EMPTY 2'b00
|
`define WAIT_SIE_RX_READY 2'b01
|
`define WAIT_SIE_RX_READY 2'b01
|
`define SIE_RX_WRITE 2'b10
|
`define SIE_RX_WRITE 2'b10
|
Line 120... |
Line 124... |
buffer2 <= 2'b00;
|
buffer2 <= 2'b00;
|
buffer3 <= 2'b00;
|
buffer3 <= 2'b00;
|
RxDataInTick <= 1'b0;
|
RxDataInTick <= 1'b0;
|
end
|
end
|
else begin
|
else begin
|
|
RxBitsInReg <= RxBitsIn; //sync to local clock to avoid metastability issues
|
incBufferCnt <= 1'b0; //default value
|
incBufferCnt <= 1'b0; //default value
|
oldRxBitsIn <= RxBitsIn;
|
oldRxBitsIn <= RxBitsInReg;
|
if (oldRxBitsIn != RxBitsIn) //if edge detected then
|
if (oldRxBitsIn != RxBitsInReg) //if edge detected then
|
i <= 5'b00000; //reset the counter
|
i <= 5'b00000; //reset the counter
|
else
|
else
|
i <= i + 1'b1;
|
i <= i + 1'b1;
|
if ( (fullSpeedRate == 1'b1 && i[1:0] == 2'b10) || (fullSpeedRate == 1'b0 && i == 5'b10000) )
|
if ( (fullSpeedRate == 1'b1 && i[1:0] == 2'b01) || (fullSpeedRate == 1'b0 && i == 5'b10000) )
|
begin
|
begin
|
RxDataInTick <= !RxDataInTick;
|
RxDataInTick <= !RxDataInTick;
|
if (disableWireRead != 1'b1) //do not read wire data when transmitter is active
|
if (disableWireRead != 1'b1) //do not read wire data when transmitter is active
|
begin
|
begin
|
incBufferCnt <= 1'b1;
|
incBufferCnt <= 1'b1;
|
bufferInIndex <= bufferInIndex + 1'b1;
|
bufferInIndex <= bufferInIndex + 1'b1;
|
case (bufferInIndex)
|
case (bufferInIndex)
|
2'b00 : buffer0 <= RxBitsIn;
|
2'b00 : buffer0 <= RxBitsInReg;
|
2'b01 : buffer1 <= RxBitsIn;
|
2'b01 : buffer1 <= RxBitsInReg;
|
2'b10 : buffer2 <= RxBitsIn;
|
2'b10 : buffer2 <= RxBitsInReg;
|
2'b11 : buffer3 <= RxBitsIn;
|
2'b11 : buffer3 <= RxBitsInReg;
|
endcase
|
endcase
|
end
|
end
|
end
|
end
|
end
|
end
|
end
|
end
|