Designing Hardware for QuickUSB
Data Transfers
IFCLK
IFCLK
X
t
DAH
t
SGD
CMD_DATA
CTL0
REN
CTL1
WEN
CTL2
nREN
CTL3
nWEN
CTL4
nOE
CTL5
GPIFADR
GPIFADR
FD
PB, PD
Name
Pin
Z
Read Cycle
Addr1
X
Data0
Addr2
Addr3
Addr4
Addr[N-1]
Addr[N]
X
Data1
Data2
Data3
Data[N-1]
Z
t
SGA
nEMPTY
RDY0
nFULL
RDY1
X
X
t
IFCLK
t
XCTL
Addr[N+1]
Data[N]
X
X
…
…
X
Signifies QuickUSB Read from the Data Bus
Full Speed, Byte Wide: N = 63
High Speed, Byte Wide: N = 511
Full Speed, Word Wide: N = 31
High Speed, Word Wide: N=255
t
XCTL
Addr0
Data[N-2]
t
XCTL
…
IFCLK
IFCLK
Addr0
X
t
XGD
CMD_DATA
CTL0
REN
CTL1
WEN
CTL2
nREN
CTL3
nWEN
CTL4
nOE
CTL5
GPIFADR
GPIFADR
FD
PB, PD
Name
Pin
Z
Data0
Write Cycle
Addr1
Data1
Addr2
Addr3
Addr4
…
Addr[N-1]
Addr[N]
X
Data2
Data3
Data4
Data[N-1]
Data[N]
Z
t
SGA
nEMPTY
RDY0
nFULL
RDY1
X
t
XCTL
t
IFCLK
Addr[N+1]
X
X
X
…
t
XCTL
t
XGD
t
SGA
Signifies QuickUSB Write to the Data Bus
Full Speed, Byte Wide: N = 63
High Speed, Byte Wide: N = 511
Full Speed, Word Wide: N = 31
High Speed, Word Wide: N=255
Data[N+1]
Notes
The valid data transfer length for the Simple I/O model can be calculated with
the following pseudo code:
If (DesiredLength MOD PacketSize <= PreRead) Then
ValidLength = PreRead
Else
ValidLength = DesiredLength
Where:
DesiredLength = The desired transfer length
Valid = The valid transfer length
PreRead = 2 for Byte Wide Mode, 4 for Word Wide Mode
PacketSize = 512 for Hi-Speed, 64 for Full-Speed
High Speed Parallel Port
15