UNH InterOperability Lab

advertisement
UNH InterOperability Lab
Serial ATA (SATA)
Clause 9 Considerations
Improving Networks Worldwide.
SATA Clause 9 Considerations
Presentation Topics
•
•
•
•
•
•
•
8b10b Encoding
SATA Primitives
ALIGN use in SATA
HOLD use
CONT use
Frame Delivery Handshake
Scrambling
2
SATA Clause 9 Considerations
8b10b Encoding
• All information transmitted over SATA is
encoded into a 10-bit character and sent
serially bit by bit.
• 1024 possible 10-bit characters.
• 256 of these possible 1024 characters are
data characters.
• Some of these 1024 characters are control
characters.
• The remaining 10-bit characters are invalid.
3
SATA Clause 9 Considerations
8b10b Encoding Conventions
• An unencoded information byte is composed of:
• a) eight information bits labeled A, B, C, D, E, F,
G, and H. Each information bit contains either a
binary zero or a binary one
• b) a control variable labeled Z. A control variable
has either the value D or the value K
• D means the information byte is a data byte
• K means the information byte is a control byte
4
SATA Clause 9 Considerations
8b10b Encoding Conventions
• In other words:
5
SATA Clause 9 Considerations
8b10b Encoding Conventions
• Encoded in Zxx.y
• Z=D or K
• xx=decimal number value of binary number
composed of E,D,C,B,A
• y= decimal number value of the binary
number composed of H,G,F
6
SATA Clause 9 Considerations
Bit Transmission Order
• An information byte is encoded into a 10-bit
character containing bits labeled a, b, c, d, e,
i, f, g, h, and j. Bit a shall be transmitted
first, followed by bits b, c, d, e, i, f, g, h, and
j, in that order.
7
SATA Clause 9 Considerations
Dwords
• Dwords are 4 bytes of data.
• The first, or least significant byte, is byte 0.
• Comma characters always occur in the first
byte of a dword.
• In SATA the only comma character is the
control character K28.5.
• Dwords are aligned on 4 byte boundaries
using comma characters as a byte 0
reference.
8
SATA Clause 9 Considerations
SATA Primitives
• Primitives are a type of Dword entity used
to control and provide status of the serial
line.
• Primitives always begin with a control
character.
• The SATA ALIGN primitive is the only
primitive to contain the comma character
K28.5.
9
SATA Clause 9 Considerations
Character Transmission Order
• Characters within primitives shall be
transmitted sequentially beginning with the
control character used to distinguish the
primitive and proceeding character by
character from left to right
Example (ALIGN Primitive):
K28.5 D10.2 D10.2 D27.3
10
SATA Clause 9 Considerations
ALIGN Primitives
• ALIGN: K28.5 D10.2 D10.2 D27.3
• The link layer shall ignore reception of
ALIGN primitives.
• The phy layer shall remove ALIGN
primitives from the bit stream before
forwarding them to the link layer.
• ALIGN primitives are important at the phy
layer.
11
SATA Clause 9 Considerations
HOLD Primitives
• HOLD: K28.3 D10.5 D21.4 D21.4
• HOLD is transmitted in place of the
transmitted payload data in a frame when
the transmitter does not have the payload
data ready for transmission.
• HOLD is also transmitted by the receiver
when the receiver is not ready to receive
additional payload data.
12
SATA Clause 9 Considerations
HOLD Primitives
• HOLDA: K28.3 D10.5 D21.4 D21.4
• HOLDA is transmitted in response to
HOLD as an acknowledgment.
13
SATA Clause 9 Considerations
CONT Primitives
• CONT: K28.3 D10.5 D25.4 D25.4
• In order to reduce EMI, scrambling of data
is incorporated in Serial ATA.
• It is not practical to scramble primitives
• Any repetitive primitive may be implied to
continue repeating through the use of
CONT.
14
SATA Clause 9 Considerations
CONT Primitives
• After the transmission of CONT, the transmitter
may send a sequence of data characters to the
recipient if the sequence contains no primitives.
• The recipient of CONT shall ignore all data
received until any primitive is received, excluding
ALIGN primitives.
• The recipient assumes every DWORD after the
reception of CONT, to be the last valid primitive
received before the reception of CONT.
15
SATA Clause 9 Considerations
Scrambling
• Scrambling is performed on Dword
quantities.
• Dwords are scrambled by XORing the data
with the output of a Linear Feedback Shift
Register (LFSR).
16
SATA Clause 9 Considerations
Scrambling – LFSR
17
SATA Clause 9 Considerations
Scrambling
• The LFSR is to be initialized to the seed
value of FFFFh before the first shift of the
LFSR.
• The LFSR shall be initialized to the seed
value before an SOF primitive is
transmitted.
18
SATA Clause 9 Considerations
SATA Frame
• A frame starts with an SOF primtive,
followed by a user payload called a Frame
Information Structure (FIS), a CRC and
ends with an EOF primitive.
• The CRC is defined as the last nonprimitive DWORD before the EOF
primitive. Its value is calculated from the
data contained in the preceding FIS.
19
SATA Clause 9 Considerations
SATA Frame
• HOLD and CONT primitives are the only primitives
allowed between an SOF and EOF primitive (CONT is
used to repeat HOLD primitives). They are use for flow
control and speed matching purposes.
20
SATA Clause 9 Considerations
Frame Delivery Handshake
• The diagram on the following slide is a
simplified state diagram of the SATA frame
delivery handshake from the transmitter’s
perspective.
• The simplified state diagram assumes there
were no errors and that the handshake
completed successfully from start to finish.
All error states are excluded in the
simplified diagram.
21
SATA Clause 9 Considerations
Simplified Handshake (TX Perspective)
22
SATA Clause 9 Considerations
State Breakdown
HL_SendChkRdy
• This is the first state in the
receipt of a frame by a host.
Transmits X_RDY until an
R_RDY, X_RDY or
PHYRDYn is received.
Typical next state is
L_SendSOF.
DL_SendChkRdy
• This is the first state in the
receipt of a frame by a device.
Transmits X_RDY until
R_RDY or PHYRDYn is
received. Typical next state is
L_SendSOF.
23
SATA Clause 9 Considerations
State Breakdown
L_SendSOF
• Transmits a single
SOF primitive
before
progressing to the
next state.
Typical next state
is L_SendData.
24
SATA Clause 9 Considerations
State Breakdown
L_SendData
• Transmits data while HOLD,
DMAT or SYNC are being
received.
• Transitions to L_RcvrHold if
HOLD is received.
• Transitions to L_SendHold if
there is more data to be sent but
it isn’t ready.
• Transitions to L_SendCRC if
DMAT is received or data
transmission is complete and
any Dword other than SYNC is
received.
• Transitions to L_IDLE if SYNC is
received.
25
SATA Clause 9 Considerations
State Breakdown
L_SendCRC
• Transmits the one Dword
CRC.
• Progresses to L_SendEOF if
PHYRDY and if SYNC not
received.
• Goes to L_IDLE state if
PHYRDY and if SYNC is
received.
• Goes to L_NoCommErr state
on PHYRDYn.
26
SATA Clause 9 Considerations
State Breakdown
L_SendEOF
• Transmits an EOF primitive.
• Progresses to L_IDLE state if
PHYRDY and SYNC
received.
• Goes to L_Wait state if
PHYRDY and SYNC not
received.
• Goes to L_NoCommErr state
on PHYRDYn.
27
SATA Clause 9 Considerations
• Zoom in on sections of above diagram and add
detailed description.
• In later slides explain the overall state machine
and the error states.
• PHYRDY The Phy logic and main PLL are
both on and active. The interface is
synchronized and capable of receiving and
sending data.
• PHYRDYn: The negation of the PHYRDY
signal.
28
Download