Mipi DRAFT SoundWire-I3S Specification v0-6r01
Mipi DRAFT SoundWire-I3S Specification v0-6r01
SoundWire I3S
(SWI3SSM)
Version 0.6
Revision 01
21 September 2024
NOTICE OF DISCLAIMER
The material contained herein is not a license, either expressly or impliedly, to any IPR owned or controlled
by any of the authors or developers of this material or MIPI®. The material contained herein is provided on
an “AS IS” basis and to the maximum extent permitted by applicable law, this material is provided AS IS
AND WITH ALL FAULTS, and the authors and developers of this material and MIPI hereby disclaim all
other warranties and conditions, either express, implied or statutory, including, but not limited to, any (if
any) implied warranties, duties or conditions of merchantability, of fitness for a particular purpose, of
accuracy or completeness of responses, of results, of workmanlike effort, of lack of viruses, and of lack of
negligence.
All materials contained herein are protected by copyright laws, and may not be reproduced, republished,
distributed, transmitted, displayed, broadcast or otherwise exploited in any manner without the express
prior written permission of MIPI Alliance. MIPI, MIPI Alliance and the dotted rainbow arch and all related
trademarks, tradenames, and other intellectual property are the exclusive property of MIPI Alliance and
cannot be used without its express prior written permission.
ALSO, THERE IS NO WARRANTY OF CONDITION OF TITLE, QUIET ENJOYMENT, QUIET
POSSESSION, CORRESPONDENCE TO DESCRIPTION OR NON-INFRINGEMENT WITH REGARD
TO THIS MATERIAL OR THE CONTENTS OF THIS DOCUMENT. IN NO EVENT WILL ANY
AUTHOR OR DEVELOPER OF THIS MATERIAL OR THE CONTENTS OF THIS DOCUMENT OR
MIPI BE LIABLE TO ANY OTHER PARTY FOR THE COST OF PROCURING SUBSTITUTE GOODS
OR SERVICES, LOST PROFITS, LOSS OF USE, LOSS OF DATA, OR ANY INCIDENTAL,
CONSEQUENTIAL, DIRECT, INDIRECT, OR SPECIAL DAMAGES WHETHER UNDER
CONTRACT, TORT, WARRANTY, OR OTHERWISE, ARISING IN ANY WAY OUT OF THIS OR ANY
OTHER AGREEMENT, SPECIFICATION OR DOCUMENT RELATING TO THIS MATERIAL,
WHETHER OR NOT SUCH PARTY HAD ADVANCE NOTICE OF THE POSSIBILITY OF SUCH
DAMAGES.
Without limiting the generality of this Disclaimer stated above, the user of the contents of this Document is
further notified that MIPI: (a) does not evaluate, test or verify the accuracy, soundness or credibility of the
contents of this Document; (b) does not monitor or enforce compliance with the contents of this Document;
and (c) does not certify, test, or in any manner investigate products or services or any claims of compliance
with the contents of this Document. The use or implementation of the contents of this Document may
involve or require the use of intellectual property rights (“IPR”) including (but not limited to) patents,
patent applications, or copyrights owned by one or more parties, whether or not Members of MIPI. MIPI
does not make any search or investigation for IPR, nor does MIPI require or request the disclosure of any
IPR or claims of IPR as respects the contents of this Document or otherwise.
Questions pertaining to this document, or the terms or conditions of its provision, should be addressed to:
MIPI Alliance, Inc.
c/o IEEE-ISTO
445 Hoes Lane
Piscataway, NJ 08854
Attn: Board Secretary
Contents
Figures ............................................................................................................................... ix
Tables.................................................................................................................................xv
Release History ............................................................................................................... xxi
Development History .................................................................................................... xxii
1 Introduction .................................................................................................................1
1.1 Scope ............................................................................................................................... 1
1.2 Purpose ............................................................................................................................ 1
1.3 Relationship to Other MIPI Specifications ...................................................................... 2
2 Terminology .................................................................................................................3
2.1 Use of Special Terms ....................................................................................................... 3
2.2 Definitions ....................................................................................................................... 3
2.3 Abbreviations ................................................................................................................... 6
2.4 Acronyms......................................................................................................................... 6
2.5 Typographical Conventions ............................................................................................. 8
2.5.1 Defined Terms .............................................................................................................. 8
2.5.2 References .................................................................................................................... 8
2.5.3 State Names .................................................................................................................. 8
2.5.4 Number Radix .............................................................................................................. 8
3 References ....................................................................................................................9
4 Technical Overview (Informative) ...........................................................................10
4.1 Introduction.................................................................................................................... 10
4.1.1 SWI3S in a System Context ....................................................................................... 10
4.1.2 Features ...................................................................................................................... 11
4.1.3 SWI3S Layering ......................................................................................................... 12
4.1.4 Audio Payload Streams .............................................................................................. 13
4.1.5 PHYs .......................................................................................................................... 14
4.2 Row and Column Structure ........................................................................................... 16
4.2.1 Introduction to Rows & Columns and Related Terminology ..................................... 16
4.2.2 General Description of Rows ..................................................................................... 17
4.2.3 Vertical Structure and SSPs ........................................................................................ 17
4.2.4 Clocking ..................................................................................................................... 19
4.3 Payload Transport .......................................................................................................... 20
4.3.1 SWI3S Payload Concepts and Terminology............................................................... 20
4.3.2 Example Transport Patterns ........................................................................................ 21
4.3.3 SWI3S Payload Traffic Visualization ......................................................................... 27
4.4 Control Data Stream and Commands ............................................................................ 28
4.4.1 Command Protocol Layers ......................................................................................... 28
4.4.2 Control Data Stream ................................................................................................... 29
4.4.3 Command Transport Protocol..................................................................................... 30
4.4.4 Commands .................................................................................................................. 35
4.4.5 Peripheral Command Model....................................................................................... 36
4.5 Reset & Link Power Management ................................................................................. 39
4.5.1 Link States .................................................................................................................. 39
Figures
Figure 1 An Example SWI3S Link ................................................................................................. 10
Figure 2 SWI3S Layers .................................................................................................................. 12
Figure 3 An Example SWI3S Link that Uses 1 PHY ..................................................................... 14
Figure 4 An Example SWI3S Link that can Operate with Multiple PHYs .................................... 15
Figure 5 Example Transport Pattern (1 Row with DLV PHY) ....................................................... 17
Figure 6 Example Transport Pattern: 8 PDM Streams with PHY3 (DLV) ..................................... 18
Figure 7 Example Transport Pattern: 1 PDM Stream with PHY1 (FBCSE) .................................. 21
Figure 8 Example Transport Pattern: 2 PDM Streams at Mixed Rates with PHY1 (FBCSE) ....... 21
Figure 9 Example Transport Pattern: PDM Streams Without Sample Grouping ........................... 22
Figure 10 Example Transport Pattern: PDM Streams With Sample Grouping .............................. 23
Figure 11 Example Transport Pattern: Mixed PCM and PDM ....................................................... 24
Figure 12 Example Transport Pattern: Mixing PCM Sample Rates and Widths ............................ 25
Figure 13 Example Transport Pattern: High Bandwidth PCM ....................................................... 26
Figure 14 Example of SWI3S Payload Visualizer Tool ................................................................. 27
Figure 15 Command Protocol Layer Stack: Overview .................................................................. 28
Figure 16 Control Data Stream Symbols within a Transport Pattern ............................................. 30
Figure 17 Key to Command Transport Protocol Diagrams ............................................................ 31
Figure 18 Examples of Write Phases .............................................................................................. 32
Figure 19 Example Read Phases .................................................................................................... 33
Figure 20 Example Ping & Commit Phases ................................................................................... 34
Figure 21 Peripheral Command Model .......................................................................................... 36
Figure 22 Link States ..................................................................................................................... 39
Figure 23 Bus Reset Sequence from Manager ............................................................................... 40
Figure 24 Cold Start Sequence (Simplified)................................................................................... 40
Figure 25 Warm Start Sequence (Simplified) ................................................................................. 40
Figure 26 Peripheral LC_Request and Manager LC_Acknowledge (Simplified) .......................... 41
Figure 27 An Example System Using Multiple SWI3S Links ....................................................... 48
Figure 28 Physical Topology: Point-to-Point ................................................................................. 49
Figure 29 Physical Topology: Generic Multi-Drop ........................................................................ 49
Figure 30 Physical Topology: Multi-drop – Manager-at-End ........................................................ 49
Figure 31 Physical Topology: Star-on-a-Stick ............................................................................... 50
Figure 64 Manager Link State Machine (ML_SM): Active Link Behavior for PHY1 or PHY2
(FBCSE) ....................................................................................................................................... 107
Figure 65 Manager Flow for Changing Clock Config ................................................................. 110
Figure 66 Link Control PHY in the Manager ............................................................................... 140
Figure 67 Link Control PHY in the Peripheral ............................................................................. 141
Figure 68 Layer Stack: Control Data Stream ............................................................................... 148
Figure 69 Layer Stack: Command Transport Protocol ................................................................. 171
Figure 70 Command Transport Protocol Structure and Naming .................................................. 172
Figure 71 10-bit Symbol Space for CDS ...................................................................................... 173
Figure 72 Generic Structure of a Phase ........................................................................................ 174
Figure 73 Phase Patterns .............................................................................................................. 180
Figure 74 Start of Phase Marker ................................................................................................... 181
Figure 75 Phase Header ................................................................................................................ 181
Figure 76 Manager Packets .......................................................................................................... 182
Figure 77 Peripheral Responses ................................................................................................... 183
Figure 78 Peripheral Responses to a Multicast Commit Phase .................................................... 184
Figure 79 Peripheral Multicast Info in GetStatus Phase............................................................... 185
Figure 80 Peripheral Packet.......................................................................................................... 186
Figure 81 Manager Responses...................................................................................................... 187
Figure 82 Protocol Spacer ............................................................................................................ 187
Figure 83 Calibration Packet ........................................................................................................ 188
Figure 84 Peripheral Calibration Results ..................................................................................... 188
Figure 85 Key to Command Transport Protocol Flowcharts ........................................................ 190
Figure 86 Protocol Flowchart: Common to All Phases (Manager) .............................................. 191
Figure 87 Protocol Flowchart: Common to All Phases (Peripheral) ............................................ 192
Figure 88 Protocol Flowchart: Peripheral in Link State: Dormant............................................... 193
Figure 89 Protocol Flowchart: GetStatus Phase (Ping Command) .............................................. 194
Figure 90 Protocol Flowchart: Announce Phase (SSPA & ExitDormant) .................................... 194
Figure 91 Protocol Flowchart: Commit Phase ............................................................................. 195
Figure 92 Protocol Flowchart: Write Phase (Unblock Command) ............................................... 196
Figure 93 Protocol Flowchart: Write Phase (Local WriteA32 Command) ................................... 196
Figure 94 Protocol Flowchart: ReadSetup Phase (Local ReadA32 Command) ........................... 197
Figure 95 Protocol Flowchart: CalibratePhy Phase ...................................................................... 198
Figure 96 Protocol Flowchart: Write Phase (Remote WriteA32 Command) ............................... 199
Figure 97 Protocol Flowchart: Remote ReadSetup and ReadData Phases (Manager) ................. 200
Figure 98 Protocol Flowchart: Remote ReadSetup and ReadData Phases (Peripheral) ............... 201
Figure 99 GetStatus Phase & Ping Command .............................................................................. 209
Figure 100 Announce Phases and SSPA & ExitDormant Commands .......................................... 211
Figure 101 ReadSetup Phase & ReadA32 Command .................................................................. 213
Figure 102 ReadData Phase.......................................................................................................... 214
Figure 103 Write Phases and WriteA32 and Unblock Commands ............................................... 216
Figure 104 Commit Phase and SSCR & DSCR Commands ........................................................ 219
Figure 105 Examples of Peripheral Responses to Commit Transfer ............................................ 220
Figure 106 Summary of CalibratePhy Transfer Containing a InitCal Command ........................ 221
Figure 107 CRC Calculation in Command Transport Protocol .................................................... 223
Figure 108 Scope of CRC Calculations on Manager Packets ...................................................... 225
Figure 109 Scope of CRC Calculations on Peripheral Packets .................................................... 225
Figure 110 Example Error Scenario: Ping Command with Missing Peripheral Response ........... 230
Figure 111 Example Error Scenario: ReadSetup with Corrupted READ_DATA_NOW ............. 232
Figure 112 Example Error Scenario: ReadSetup with Corrupted REMOTE_READ_DEFERRED232
Figure 113 Layer Stack: Commands and Register Model ............................................................ 269
Figure 114 Peripheral Command Model ...................................................................................... 271
Figure 115 Peripheral Command Execution State........................................................................ 272
Figure 116 Peripheral Remote Access State ................................................................................. 274
Figure 117 TEMP OLD VERSION TO BE DELETED: Peripheral Remote Access State .......... 277
Figure 118 Command Reference Point for Measuring Row Delay .............................................. 291
Figure 119 #INCORRECT#: SSP Timing Details (when using DLV PHY) ................................ 292
Figure 120 Key to Wide Bits in Transport Pattern Diagrams ....................................................... 317
Figure 121 Key to Control Data Stream Bits ............................................................................... 317
Figure 122 Key to Payload Bits.................................................................................................... 318
Figure 123 Key to PHY-Related Bits and Unit Intervals.............................................................. 319
Figure 124 Command-Only Transport Pattern ............................................................................. 321
Figure 125 Command-Only Transport Pattern: Single Rising Edge ............................................ 321
Figure 126 Initial Transport Pattern for PHY3 (DLV) – Safe-Lock-4 ......................................... 322
Figure 127 Example Transport Patterns: Command-Only for DLV PHY (Lock-N) .................... 323
Figure 128 Example Transport Patterns: Command-Only for FBCSE PHY2 ............................. 324
Figure 129 Example Transport Patterns: Command-Only for FBCSE PHY1 ............................. 324
Figure 130 NRZS Coding of Control Data Stream with FBCSE PHY ........................................ 325
Figure 131 Example of Data Waveform for Command-Only Transport Pattern for FBCSE PHY325
Figure 132 Example Transport Pattern: PCM Stream .................................................................. 327
Figure 133 Example TP: PDM Streams Without Sample Grouping (DLV PHY) ........................ 328
Figure 134 Example TP: PDM Streams with Sample Grouping (DLV PHY).............................. 329
Figure 135 Example TP: 1 Low-Power PDM Mic Stream (DLV PHY) ...................................... 330
Figure 136 Example TP: 24 Columns (DLV PHY) ..................................................................... 331
Figure 137 Example TP: PCM Streams (FBCSE PHY2) ............................................................. 332
Figure 138 Example TP: PDM Streams Without Sample Grouping (FBCSE PHY2) ................. 333
Figure 139 Example TP: PDM Streams with Sample Grouping (FBCSE PHY2) ....................... 333
Figure 140 Example TP: 1 Slow PDM Mic (FBCSE PHY1) ....................................................... 334
Figure 141 Example TP: 3 PDM Mics (FBCSE PHY1) .............................................................. 334
Figure 142 Example Traffic Pattern: Guard Bits .......................................................................... 335
Figure 143 Example Transport Pattern: Wide Bits ....................................................................... 336
Figure 144 Example Transport Pattern: PDM Streams with PHY Tail Bits ................................. 337
Figure 145 Example Transport Pattern: PDM Streams with PHY Tail Bits (No Sample Grouping)337
Figure 146 Example Transport Pattern: PDM Streams with PHY Tail Bits (Small Sample
Grouping) ..................................................................................................................................... 338
Figure 147 Transport Pattern Example: PCM Streams with PHY Tail Bits ................................. 338
Figure 148 Example Transport Pattern: PCM & PDM Streams with PHY Tail Bits ................... 339
Figure 149 Example TP: Detail of DLV PHY Sync with PHY Tail Bits ...................................... 340
Figure 150 Example TP: 2 PDM Mics in 8 Columns ................................................................... 341
Figure 151 Example TP: 2 PDM Mics in 8 Columns Using EndHalfEarly ................................. 341
Figure 152 Example TP: Disabling PDM Streams ....................................................................... 342
Figure 153 Example TP: Adding a PCM Channel ....................................................................... 343
Figure 154 ### Placeholder .......................................................................................................... 344
Figure 155 #DRAFT Single MIC (PHY1, FBCSE) ..................................................................... 345
Figure 156 #DRAFT Single Mic Using SRI for Reduced Control Bandwidth (PHY1, FBCSE) 345
Figure 157 Start-Up Flow for Manager using DLV PHY ............................................................ 346
Figure 158 Clock Config Example: Scaling Down Row Rate (DLV PHY) ................................. 346
Figure 159 Clock Config Example: Scaling Down Row Rate (DLV PHY) - Detail .................... 347
Figure 160 ###TBD-not-DLV? Clock Config Example: Scaling Up Row Rate .......................... 347
Figure 161 ###TBD-not-DLV? Clock Config Example: Changing Column Count .................... 347
Figure 162 Block Diagram of FBCSE PHY Interface Pins in Manager ...................................... 353
Figure 163 Clock Pause in FBCSE .............................................................................................. 354
Figure 164 #DRAFT: DLV Timing Calibration ........................................................................... 379
Figure 165 PHY3 Test Circuit #1 ................................................................................................. 394
Figure 166 PHY3 Measurement Waveform #1 (###TBD-name) ................................................. 394
Figure 167 #OLD# to be deleted: PortSyncOK............................................................................ 400
Figure 168 #OLD# to be deleted: PortReady ............................................................................... 400
Figure 169 Starting a Mic Capture Stream, Enable After Ready ................................................. 401
Figure 170 Starting a Mic Capture Stream, Enable Before Ready ............................................... 402
Figure 171 Starting and Stopping an Amp Render Stream, with Host Fade Out ......................... 403
Figure 172 Starting and Stopping an Amp Render Stream, with Peripheral Fade Out ................ 404
Figure 173 Source DP Enabled Before and Disabled After the Sink DP ..................................... 411
Figure 174 Sink DP: Starting a Stream when the Manager Waits for Ready ............................... 412
Figure 175 Sink DP: Stopping a Stream when the Manager Waits for Ready ............................. 412
Figure 176 Source DP: Starting a Stream, Wait for Ready .......................................................... 413
Figure 177 Source DP: Starting a Stream, Without Waiting for Ready........................................ 413
Figure 178 Source DP: Pausing a Stream ..................................................................................... 414
Figure 179 Dual-Ranked Register with Read-Only Current Value (Dual-RO) ............................ 442
Figure 180 Dual-Ranked Register with Read-Write Current Value (Dual-RW) .......................... 442
Figure 181 Interrupt Channel (with Optional Saturating Error Counter) ..................................... 487
Tables
Table 1 Links to Normative Tables of Timing Parameters ............................................................. 66
Table 2 States in the Peripheral Bus Reset State Machine (PBR_SM) .......................................... 89
Table 3 States in the Peripheral Link State Machine (PL_SM): Inactive Link .............................. 93
Table 4 States in the Peripheral Link State Machine: Active Link ................................................. 99
Table 5 Transitions in the PL_SM (Active States) ....................................................................... 101
Table 6 States in the Manager Link State Machine (ML_SM) ..................................................... 105
Table 7 States in the Manager Link State Machine: Active Link ................................................. 108
Table 8 Sources of Reset in Peripheral ......................................................................................... 111
Table 9 Effects of Reset in Peripheral .......................................................................................... 112
Table 10 Sources of Reset in Manager ......................................................................................... 115
Table 11 Effects of Reset in Manager ........................................................................................... 115
Table 12 Peripheral Link States .................................................................................................... 116
Table 13 Summary of Peripheral Data Transfer in Link States .................................................... 117
Table 14 Timing Parameters for Peripheral Link Control Sequences .......................................... 117
Table 15 Audio-mode PHYs in Peripheral ................................................................................... 121
Table 16 Phy-Specific Rules for Audio-mode PHYs in Peripheral .............................................. 122
Table 17 Effect of Explicitly Commiting a Peripheral Management Action (PM_Action) ......... 123
Table 18 Effect of Implicitly Commiting a Peripheral Management Action (PM_Action) ......... 124
Table 19 Power Saving in Peripheral Link States ........................................................................ 126
Table 20 Manager Link States ...................................................................................................... 128
Table 21 Timing Parameters for Manager Link Control Sequences ............................................. 129
Table 22 Selecting Audio-mode PHYs in Manager...................................................................... 132
Table 23 Phy-Specific Rules for Audio-mode PHYs in Manager ................................................ 132
Table 24 Audio-mode PHYs ......................................................................................................... 135
Table 25 Encoding of RowRateRange Field ................................................................................ 136
Table 26 [LC PHY] Supply Voltage for Link Control Interface ................................................... 143
Table 27 [LC PHY] Input and Output Voltage Parameters .......................................................... 143
Table 28 [LC PHY] Output Impedance ........................................................................................ 144
Table 29 [Device] Pin Capacitance .............................................................................................. 145
Table 30 [Device] Pin Leakage Current ....................................................................................... 146
Table 31 Recommended System Parameters [LC PHY] .............................................................. 146
Table 160 Peripheral Register Map for PHY3 (PHY3_*) ............................................................ 482
Table 161 Peripheral Register Map for PHY3 Dual-Ranked Registers (PHY3_*_NEXT) ......... 483
Table 162 Peripheral PHY3 (DLV) Register Fields (PHY3_*) .................................................... 484
Table 163 Summary of Error Counters......................................................................................... 489
Table 164 Summary of Data Port Error Counters ........................................................................ 491
Table 165 Summary of Data Port Event Counters ....................................................................... 492
Table 166 Index of Device Rule Unique IDs ............................................................................... 496
Release History
Development History
2019 v0.1 – v0.2 r04 Private releases of draft sections to technical owners.
2019-06-13 v0.4 r01 Draft release for WG review of Section 5 (Row Structure).
2019-07-05 v0.4 r03 Draft release for WG review of Section 9 (Control Data Stream).
Note:
some old and obsolete material was archived to sections at
the end of the document ready for deletion in future drafts
including:
• Peripheral Link State sequences from old Section 8.1.10.
• Brief notes about SE-PHY from old Section 7.
2021-03-30 v0.4r21 Second Review draft for updated Section 4, Technical Overview.
2022-05-31 v0.4 r32 Private release to WG chair for creating FTF agenda.
2023-01-12 v0.4 r39 Review draft for Milan interim FTF meeting.
2023-02-07 v0.4 r40 Interim Release for checking Data Port controls
Interim release.
2023-06-04 v0.5 r01 Includes first draft material for Data Port pseudcode and PDF
insert of first draft material for PHY Tables
2024-04-15 v0.5r10 Interim draft for checking wording of some new rules
1 Introduction
1 This Specification defines the SoundWire I3S (SWI3S) interface, which is used for transporting audio
2 streams and control information together on a single link.
3 A SWI3S Manager communicates in half-duplex fashion with one or more SWI3S Peripherals, using one of
4 several physical interfaces (PHYs) defined within this Specification (including both single-ended and
5 differential signaling options) to match a wide range of physical system constraints such as EMC and bus
6 diameter. The Manager uses PHY-specific signaling to transmit timing information to the Peripheral both
7 for data recovery and to facilitate accurate audio sampling events, either as a directly forwarded bit clock or
8 as a periodic sync signal from which the Peripheral recovers a bit clock. The Specification was developed
9 with a layered approach, which facilitates designs having common blocks that can operate with any of the
10 defined PHYs.
11 The SWI3S interface addresses a wide range of system scenarios where up to 12 Peripheral interfaces share
12 the common bus, and where those Peripherals contain from 0 to 32 audio Data Ports, each with 1 to 16
13 channels.
1.1 Scope
14 This Specification describes the SWI3S interface at several layers of abstraction, from the timing and
15 electrical characteristics of the physical layer, through clock recovery and synchronization to transport of
16 both control and payload information. It includes a command protocol for conveying control and status
17 operations to typical audio devices and content and function of registers within those devices.
18 It does not define the application-level meaning of the payload data conveyed over the interface, such as
19 the mapping between PCM audio channel data values and analogue audio signals. It does not define control
20 and status registers that relate to the application-level behavior of the audio functions of a device.
21 SoundWire Device Class for AudioSM, [MIPI02], is a specification that describes application-level controls.
1.2 Purpose
22 This Specification provides a technical definition of the SWI3S interface to address the needs of the
23 following:
24 • Component design and verification engineers implementing SWI3S Manager and Peripheral
25 devices.
26 • System-level hardware and software engineers designing equipment in which components
27 communicate via SWI3S interfaces.
28 • Test engineers working on components or systems with SWI3S interfaces.
2 Terminology
2.2 Definitions
66 AdjBitRampType: A register bit controling whether the PHY uses a Conductance Ramp (G-Ramp) or
67 Voltage Ramp (V-Ramp) to produce the signal level on the bus for an adjacent bit in a sequence (i.e., when
68 this Device was producing the signal level for the previous bit).
69 Attach: The action of a Peripheral synchronizing to the Control Data Stream and becoming capable of
70 responding to Commands (Attached).
71 Audio-mode PHY: Any of the one or more PHYs used to transfer audio payload, as distinct from the Link
72 Control PHY.
73 Bit: The data value of 0 or 1 (representing payload data, command data, or sync) conveyed in one or more
74 UIs.
75 Bit Clock: A notional internal clock signal with one cycle per Unit Interval. It has a frequency equal to the
76 current Row Rate multiplied by the current Column Count, i.e., 2 × the DDR bit clock transmitted on the
77 bus with some of the Audio-mode PHYs.
78 Bit Rate: The frequency of the Bit Clock; the highest bit rate available to transport information on the Link
79 (equal to the Row Rate * the Column Count).
80 Bus Reset: A signaling sequence that is used to reset all Peripheral devices on the bus.
81 Clock Config: The combination of Row Rate and Column count, e.g., {3.072 MRows/s x 16 Columns}.
82 Cold Reset: The more severe of the 2 resets within SWI3S, which puts Devices into Cold_Standby.
83 ###TODO-Author: clean up this phrasing.
84 Cold_Standby: a Peripheral Link State in which most register state and internal state are lost, targeted at
85 lower power consumption than the Sleeping Link State.
86 Column: The set of UIs with the same Column Number in each successive Row.
130 Link Control PHY: The PHY used to send and receive Link Control signaling (i.e., bus reset, standby and
131 sleep/wake), as distinct from an Audio-mode PHY.
132 Link State: A state that summarizes a high-level view of how a Manager or Peripheral interacts with the
133 Link, with names highlighted thus: StateName.
134 Local: A register or address that is within or close enough to the SWI3S interface that it can be accessed
135 within the time available within 1 Phase.
136 Lock-N: [For some PHYs:] A Transport Pattern that is Command-Only and has N Columns.
137 *_NEXT: Notation used to name a field in a Next Value Register.
138 Next Value Register: the part of a Dual-Ranked Register that contains the new value that will be copied to
139 the corresponding Current Value Register by a Commit operation.
140 No_Response: A set of 10 bits in the Command Protocol Layer that is assigned to a Peripheral, but is then
141 not driven by that Peripheral.
142 Nom / Nominal: Nominal values of electrical and timing parameters are within normal manufacturing
143 tolerances of the expected value, but do not impose any normative requirement (unlike Min and Max).
144 Payload Data: Any data transported on the Link that is part of a stream from a Data Port.
145 Phase: An indivisible unit within the Command Transport Protocol that cannot be interrupted by an Idle
146 Pattern in the Control Data Stream.
147 PHY: Physical layer interface.
148 PHY Idle: A PHY-specific condition at a Peripheral input that indicates that the Manager has parked the
149 bus ready for changing which PHY is in use.
150 PHY_Inactivity: A PHY-specific condition at a Peripheral input that indicates that the Manager has
151 stopped generating Rows using the current Audio-mode PHY.
152 Remote: A register or address that is outside the SWI3S interface and that is not guaranteed to be accessed
153 within the time available within 1 Phase.
154 Robust Token: One of a defined set of 18 8b/10b D-code values used by the Command Protocol Layer.
155 Row: The sequence of UIs from one Row Sync Point to the next.
156 Row Rate: The number of Rows per second.
157 Row Sync Point: The reference point in time at the start of the first UI (Column 0) in a Row.
158 Row Sync Sequence: [For some PHYs:] the sequence of Sync0 and Sync1 Bits that identifies the Row
159 Sync Point.
160 Safe Speed: Bus operation at a Bit Rate that is guaranteed to operate correctly using the reset values of the
161 PHY control parameters in the Peripheral, and without needing Peripheral PHY timing calibration to have
162 been completed. This speed is a function of the choice of PHY. For the DLV PHY it is 9.6 – 12.8 Mbps.
163 Safe-Lock-4: [For some PHYs:] A combination of Clock Config and Command-Only Transport Pattern
164 that provides bus operation at a Safe Speed with 4 Columns and special Peripheral PHY drive behavior.
165 Sample Period: The time between 2 Payload Sampling Events (typically audio signals).
166 Sleeping: a Peripheral Link State in which most register values and internal state are retained, targeted at
167 faster link start-up than from the Cold_Standby Link State.
168 Standby: A generic term for the Link-Inactive states (in a Manager: Standby, in a Peripheral: either
169 Cold_Standby or Sleeping).
170 Stream Synchronization Point (SSP): a special case of a Row Sync Point when the Sampling Events in a
171 set of streams occur simultaneously, and the Transport Pattern for all of the associated Data Ports starts its
172 periodic repeat.
173 Sub-Row Interval: .###TODO-Author
174 Sync0: [For some PHYs:] One or more UIs containing a Bit value of 0 that is part of the Row Sync
175 Sequence.
176 Sync1: [For some PHYs:] One or more UIs containing a Bit value of 1 that is part of the Row Sync
177 Sequence.
178 Transfer: A transport operation (comprising one or more Phases) provided by the Command Transport
179 Protocol to convey a Command.
180 Transport Interval: The set of adjacent Rows (or, for Sub-Row Intervals, the set of adjacent UIs) during
181 which a Data Port might transport 1 group of (1 or more) Samples.
182 Transport Pattern: The assignment of UIs on the Link to transport information within a sequence of one
183 or more Rows that forms a periodically repeating pattern.
184 Transport Period: The duration of a Transport Interval in units of time. ###TODO-Author: delete if not
185 needed.
186 Typ / Typical: Typical values of electrical and timing parameters are an illustrative target value, and do not
187 impose any normative requirement (unlike Min and Max).
188 Unit Interval (UI): The smallest opportunity to transport a bit of information on the Link, with a period
189 equal to 1 cycle of the Bit Clock (i.e., a half cycle of the DDR bit clock transmitted on the bus with some of
190 the Audio-mode PHYs), corresponding to one Column within one Row.
191 Voltage Ramp (V-Ramp): A change in signal on the bus cause by the PHY controling the change in
192 effective output voltage being fed through a nominally constant output conductance.
193 Warm Reset: The weaker of the 2 severities of reset within SWI3S, associated with a device detaching
194 from the bus.
195 Wide Bit: A set of 2, 3, or more consecutive UIs used to transport one Bit of data.
2.3 Abbreviations
196 e.g. For example (Latin: exempli gratia)
197 i.e. That is (Latin: id est)
198 kHz kilohertz
199 Mbps megabits per second
200 MHz megahertz
201 MRow/s million Rows per second
202 ns nanoseconds
203 wrt with respect to
2.4 Acronyms
204 CDS Control Data Stream
205 CSP Commit Synchronization Point ###TODO-author: check if this acronym is used anywhere.
206 CVR Current Value Register
207 DLL Delay-locked loop
208 DLV Differential Low-Voltage
209 DP Data Port
210 DSCR Device-Synchronous Commit Request (Command)
2.5.2 References
257 Cross-references to Sections, Figures, Tables, and numbered paragraphs within this document are
258 highlighted using bold italic font, e.g., Figure 1.
259 Citations of external references described in Section 3 are identified by square parentheses, e.g., see
260 [MIPI01].
3 References
274 [MIPI01] MIPI Alliance Specification for SoundWire®, version 1.2.1, MIPI Alliance, Inc., In Press.
275 [MIPI02] MIPI Alliance Specification for SoundWire Device Class for AudioSM, version 1.0, MIPI
276 Alliance, Inc., In Press.
277 [MIPI03] MIPI Alliance Specification for SoundWire-I3S Host Controller Interface (HCI), version
278 1.0, MIPI Alliance, Inc., In Press.
279 [MIPI04] MIPI Alliance, Inc., “MIPI Alliance Manufacturer ID Page”, http://mid.mipi.org, last
280 accessed 29 May 2023.
4.1 Introduction
Manager
289 SWI3S Link
Figure 1 An Example SWI3S Link
290 A more complex system can be partitioned across multiple SWI3S Links, e.g., to provide higher bandwidth,
291 longer physical topologies, or domains for power management, see Section 4.7.1.
4.1.2 Features
Payload stack
(ADCs and DACs use this)
PCM, PDM,
2s complement,
Command stack Data Formats 1s complement,
sign and magnitude,
(Control, status and interrupts use this)
Audio Clocks
etc.
Transfers
Command Transport Phases Interval
Protocol Elements of Phases Samples
Bytes
Row & Bit Clocks
Sample Grouping
Payload Transport
Channel Grouping
Protocol
Bit Owner
343
Figure 2 SWI3S Layers
344 The left side of the figure shows the layers in the Command stack, which represents how a SWI3S interface
345 connects to the control and status behavior of the device, including registers that control behavior of all of
346 the layers in this diagram. See Section 4.4, Control Data Stream and Commands and Section 4.9,
347 Registers.
348 The right side of the figure shows the layers in the Payload stack, which represents how a SWI3S interface
349 connects to the audio streams within a component. Each stream is associated with a Data Port, which has
350 registers that control the pattern of bits for each sample being transported on the Link. See Section 4.3,
351 Payload Transport.
352 These two uses of the link come together in the PHY and PHY interface layers, where all traffic on the link
353 is combined as a half-duplex serial bitstream with periodic structure of Rows, see Section 4.2,
354 Row and Column Structure and Section 4.8, Physical Layer – PHY.
4.1.5 PHYs
367 The lowest layers shown in Figure 2 are the PHY interface and PHY transceiver, which communicates
368 electrical signals to and from the physical medium of the link (PCB trace, flex cables etc.).
Manager
PHY PHY SWI3S Link
#1 #2
384
Figure 3 An Example SWI3S Link that Uses 1 PHY
385 Figure 4 shows another example of a SWI3S Link, where the Manager and Peripherals all support 3
386 different PHYs. In this example, each time that the Manager issues a Cold Start sequence, it chooses which
387 of the PHYs to use to operate the Link, and this choice might vary with scenario.
Manager
PHY PHY PHY SWI3S Link
#1 #2 #3
388
Figure 4 An Example SWI3S Link that can Operate with Multiple PHYs
389 The PHYs that are defined in this version of the Specification are:
390 • A differential, low-voltage (DLV) PHY for higher maximum speed, low EMI emissions, and low
391 EMC susceptibility. PHY3 is summarized in Section 4.8.3 and described in detail in Section 11.3.
392 • A forwarded-bit-clock single-ended (FBCSE) PHY for less challenging environments. This PHY
393 has 2 modes of behavior for handovers between transmitters in different Devices, which are given
394 different PHY selection numbers, PHY1 and PHY2. The FBCSE PHY is summarized in
395 Section 4.8.2 and described in detail in Section 11.
... 14 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 ...
... S0 S1 M-CDS
C D1a D1b D1c D1d D2a x2 D2b x2 S0 S1 MC ...
Handover Handover
Control Data Stream bit Handover
Handover to CDS Unallocated UI
DLV PHY: Sync0 DLV PHY: Sync1 DLV PHY: Sync0 DLV PHY: Sync1
(previous Row) (next Row)
449
Figure 5 Example Transport Pattern (1 Row with DLV PHY)
465 Figure 6 shows an example of a SWI3S Transport Pattern that repeats after 4 Rows. This contains 8 PDM
466 streams where 4 × 1-bit samples from each source have been grouped together to make more efficient use
467 of the link bandwidth. In this example, payload data streams D1 through D8 all have a Sample Period of
468 1 Row and a Transport Interval of 4 Rows. More examples of Transport Patterns are shown in Section 4.3.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-CDS
C D1 D1 D1 D1 D2 D2 D2 D2 S0 x2
S1 M-CDS
C D3 D3 D3 D3 D4 D4 D4 D4 S0 x2
S1 M-CDS
C D5 D5 D5 D5 D6 D6 D6 D6 S0 x2
S1 M-CDS
C D7 D7 D7 D7 D8 D8 D8 D8 S0 x2
S1 M-CDS
C D1 D1 D1 D1 D2 D2 D2 D2 S0 x2
491 Interval can be either an even or odd number of Rows so even when idle periods are inserted in the Control
492 Data Stream, an SSP might not align perfectly with the CDS symbols. The SSCR and SSPA Commands
493 used to indicate SSPs include a delay parameter of either 14 or 15 Rows so that they can accurately indicate
494 the position of SSPs on either odd or even numbered Row boundaries. (See also Section 9.1.13)
4.2.4 Clocking
0 1
C D1
C D1
C D1
C D1
C D1
557
Figure 7 Example Transport Pattern: 1 PDM Stream with PHY1 (FBCSE)
558 Figure 8 shows how the same bit rate on the link can be used to add a second PDM Mic at half the sample
559 rate, with the control channel also being reduced to 1.536 Mbps.
560 The Clock Config in the example in Figure 8 is 1.536 MRows/sec × 4 columns = 6.144 Mbps.
561 The audio streams in this Transport Pattern are:
562 1 channel of 3.072 MHz × 1 bit; Sample Grouping = 2, so latency = 651 nsec.
563 1 channel of 1.536 MHz × 1 bit; Sample Grouping = 1, so latency = 651 nsec.
564 The SSP Rate in this example is 1.536 MHz because the pattern repeats in every Row.
0 1 2 3
C D1 D1 D2
C D1 D1 D2
C D1 D1 D2
C D1 D1 D2
C D1 D1 D2
565
Figure 8 Example Transport Pattern: 2 PDM Streams at Mixed Rates with PHY1 (FBCSE)
566 ###Note to Reviewers: we will add Rod’s low power example with 1x PDM Mic and low-BW
567 Control.
568 ###TODO-Author: start from figures in archived Annex on “Effects of Physical Topology on PHY
569 Signaling”.
570 (1 with sample grouping, 1 with SRI.
571 16 column. 768kRows/s. 16 columns. Interval=1. Sample grouping=4. PHY2
572 CDS, HO, D, empty, 3 x {empty, empty, D, empty}.
573 16 column. 384kRows/s. 16 columns. Interval=1. Sample grouping=8 PHY1
574 CDS, HO, 8xD, 6 x empty.
575 16 column. 384kRows/s. 16 columns. SRI=1. Interval=2 UIs. PHY1
576 CDS, D, 7x {empty, D}. Latency = 1 sample (~=326ns).
577
578
4.3.2.2 Example Transport Patterns: 4 PDM Microphones with PHY3 (DLV PHY)
579 The Clock Config in the example in Figure 9 is 3.072 MRows/sec × 16 columns = 49.152 Mbps.
580 The audio streams in this Transport Pattern are:
581 4 channels of 3.072 MHz × 1 bit; latency = 326 nsec.
582 The SSP Rate in this example is 3.072 MHz because the pattern repeats in every Row.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-CDS
C D1 D2 D3 D4 S0
S1 M-CDS
C D1 D2 D3 D4 S0
S1 M-CDS
C D1 D2 D3 D4 S0
S1 M-CDS
C D1 D2 D3 D4 S0
S1 M-CDS
C D1 D2 D3 D4 S0
583
Figure 9 Example Transport Pattern: PDM Streams Without Sample Grouping
584 The Sample Grouping Data Port parameter enables a trade-off between PDM latency and bandwidth
585 utilization.
586 Figure 10 shows an example Transport Pattern with the same 4x 1-bit PDM streams as in Figure 9, but
587 using sample grouping to transmit blocks of 4 bits from each stream, once every 4 Rows. This example
588 frees up bus bandwidth at the cost of increasing transport latency from 1 Row (326 ns @
589 3.072 MRows/sec) to 4 Rows (1.30 µs).
590 The Clock Config in the example in Figure 10 is 3.072 MRows/sec × 16 columns = 49.152 Mbps
591 The audio streams in this Transport Pattern are:
592 4 channels of 3.072 MHz × 1 bit; Sample Grouping = 4, so latency = 1.30 µsec.
593 The SSP Rate in this example is 768 kHz because the pattern repeats every 4 Rows.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-CDS
C D1 D1 D1 D1 S0
S1 M-CDS
C D2 D2 D2 D2 S0
S1 M-CDS
C D3 D3 D3 D3 S0
S1 M-CDS
C D4 D4 D4 D4 S0
S1 M-CDS
C D1 D1 D1 D1 S0
S1 M-CDS
C D2 D2 D2 D2 S0
594
595
Figure 10 Example Transport Pattern: PDM Streams With Sample Grouping
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-CDS
C D1 D1 D1 D7 D8 D9 S0 x2
S1 M-CDS
C D1 D1 D1 D7 D8 D9 S0 x2
S1 M-CDS
C D1 D1 D1 D7 D8 D9 S0 x2
S1 M-CDS
C D1 D1 D1 D7 D8 D9 S0 x2
S1 M-CDS
C D1 D1 D1 D7 D8 D9 S0 x2
S1 M-CDS
C D1 D1 D1 D7 D8 D9 S0 x2
S1 M-CDS
C D1 D1 D1 D7 D8 D9 S0 x2
S1 M-CDS
C D1 D1 D1 D7 D8 D9 S0 x2
S1 M-CDS
C D2 D2 D2 D7 D8 D9 S0 x2
S1 M-CDS
C D2 D2 D2 D7 D8 D9 S0 x2
S1 M-CDS
C D2 D2 D2 D7 D8 D9 S0 x2
S1 M-CDS
C D2 D2 D2 D7 D8 D9 S0 x2
S1 M-CDS
C D2 D2 D2 D7 D8 D9 S0 x2
S1 M-CDS
C D2 D2 D2 D7 D8 D9 S0 x2
S1 M-CDS
C D2 D2 D2 D7 D8 D9 S0 x2
S1 M-CDS
C D2 D2 D2 D7 D8 D9 S0 x2
S1 M-CDS
C D3 D3 D3 D7 D8 D9 S0 x2
S1 M-CDS
C D3 D3 D3 D7 D8 D9 S0 x2
S1 M-CDS
C D3 D3 D3 D7 D8 D9 S0 x2
S1 M-CDS
C D3 D3 D3 D7 D8 D9 S0 x2
S1 M-CDS
C D3 D3 D3 D7 D8 D9 S0 x2
S1 M-CDS
C D3 D7 D8 D9 S0 x2
S1 M-CDS
C D4 D4 D4 D7 D8 D9 S0 x2
S1 M-CDS
C D4 D4 D4 D7 D8 D9 S0 x2
S1 M-CDS
C D4 D4 D4 D7 D8 D9 S0 x2
S1 M-CDS
C D4 D4 D4 D7 D8 D9 S0 x2
S1 M-CDS
C D4 D4 D4 D7 D8 D9 S0 x2
S1 M-CDS
C D4 D7 D8 D9 S0 x2
S1 M-CDS
C D5 D5 D5 D7 D8 D9 S0 x2
S1 M-CDS
C D5 D5 D5 D7 D8 D9 S0 x2
S1 M-CDS
C D5 D5 D5 D7 D8 D9 S0 x2
S1 M-CDS
C D5 D5 D5 D7 D8 D9 S0 x2
S1 M-CDS
C D5 D5 D5 D7 D8 D9 S0 x2
S1 M-CDS
C D5 D7 D8 D9 S0 x2
S1 M-CDS
C D6 D6 D6 D7 D8 D9 S0 x2
S1 M-CDS
C D6 D6 D6 D7 D8 D9 S0 x2
S1 M-CDS
C D6 D6 D6 D7 D8 D9 S0 x2
S1 M-CDS
C D6 D6 D6 D7 D8 D9 S0 x2
S1 M-CDS
C D6 D6 D6 D7 D8 D9 S0 x2
S1 M-CDS
C D6 D7 D8 D9 S0 x2
S1 M-CDS
C D7 D8 D9 S0 x2
S1 M-CDS
C D7 D8 D9 S0 x2
S1 M-CDS
C D1 D1 D1 D7 D8 D9 S0 x2
S1 M-CDS
C D1 D1 D1 D7 D8 D9 S0 x2
602
Figure 11 Example Transport Pattern: Mixed PCM and PDM
4.3.2.4 Example Transport Pattern: Mixing PCM Sample Rates and Widths
603 The Clock Config in the example in Figure 12 is 3.072 MRows/sec × 16 columns = 49.152 Mbps
604 The audio streams in this Transport Pattern are:
605 2 channels of 48 kHz × 24 bits (labelled D1 and D2).
606 4 channels of 24 kHz × 16 bits (labelled D3, D4, D5, D6).
607 The SSP Rate in this example is 24 kHz, because the Transport Pattern repeats every 128 Rows.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-CDS
C D1 D1 D1 D1 D1 D1 D1 D1 S0
S1 M-CDS
C D1 D1 D1 D1 D1 D1 D1 D1 S0
S1 M-CDS
C D1 D1 D1 D1 D1 D1 D1 D1 S0
S1 M-CDS
C D2 D2 D2 D2 D2 D2 D2 D2 S0
S1 M-CDS
C D2 D2 D2 D2 D2 D2 D2 D2 S0
S1 M-CDS
C D2 D2 D2 D2 D2 D2 D2 D2 S0
S1 M-CDS
C D3 D3 D3 D3 D3 D3 D3 D3 S0
S1 M-CDS
C D3 D3 D3 D3 D3 D3 D3 D3 S0
S1 M-CDS
C D4 D4 D4 D4 D4 D4 D4 D4 S0
S1 M-CDS
C D4 D4 D4 D4 D4 D4 D4 D4 S0
S1 M-CDS
C S0
S1 M-CDS
C S0
... ... Total of 54 similar spare Rows ... ... ...
S1 M-CDS
C S0
S1 M-CDS
C S0
S1 M-CDS
C D1 D1 D1 D1 D1 D1 D1 D1 S0
S1 M-CDS
C D1 D1 D1 D1 D1 D1 D1 D1 S0
S1 M-CDS
C D1 D1 D1 D1 D1 D1 D1 D1 S0
S1 M-CDS
C D2 D2 D2 D2 D2 D2 D2 D2 S0
S1 M-CDS
C D2 D2 D2 D2 D2 D2 D2 D2 S0
S1 M-CDS
C D2 D2 D2 D2 D2 D2 D2 D2 S0
S1 M-CDS
C D5 D5 D5 D5 D5 D5 D5 D5 S0
S1 M-CDS
C D5 D5 D5 D5 D5 D5 D5 D5 S0
S1 M-CDS
C D6 D6 D6 D6 D6 D6 D6 D6 S0
S1 M-CDS
C D6 D6 D6 D6 D6 D6 D6 D6 S0
S1 M-CDS
C S0
S1 M-CDS
C S0
... ... Total of 54 similar spare Rows ... ... ...
S1 M-CDS
C S0
S1 M-CDS
C S0
S1 M-CDS
C D1 D1 D1 D1 D1 D1 D1 D1 S0
S1 M-CDS
C D1 D1 D1 D1 D1 D1 D1 D1 S0
S1 M-CDS
C D1 D1 D1 D1 D1 D1 D1 D1 S0
608
Figure 12 Example Transport Pattern: Mixing PCM Sample Rates and Widths
Row Sync Point SSPs (16 rows at 3.072 MRows/sec == 192 kHz)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-CDS
C D1 D1 D1 D1 D1 D1 D1 D1 D1 S0 x2
S1 M-CDS
C D1 D1 D1 D1 D1 D1 D1 D1 D1 S0 x2
S1 M-CDS
C D1 D1 D1 D1 D1 D1 D2 D2 D2 S0 x2
S1 M-CDS
C D2 D2 D2 D2 D2 D2 D2 D2 D2 S0 x2
S1 M-CDS
C D2 D2 D2 D2 D2 D2 D2 D2 D2 S0 x2
S1 M-CDS
C D2 D2 D2 D3 D3 D3 D3 D3 D3 S0 x2
S1 M-CDS
C D3 D3 D3 D3 D3 D3 D3 D3 D3 S0 x2
S1 M-CDS
C D3 D3 D3 D3 D3 D3 D3 D3 D3 S0 x2
S1 M-CDS
C D4 D4 D4 D4 D4 D4 D4 D4 D4 S0 x2
S1 M-CDS
C D4 D4 D4 D4 D4 D4 D4 D4 D4 S0 x2
S1 M-CDS
C D4 D4 D4 D4 D4 D4 D5 D5 D5 S0 x2
S1 M-CDS
C D5 D5 D5 D5 D5 D5 D5 D5 D5 S0 x2
S1 M-CDS
C D5 D5 D5 D5 D5 D5 D5 D5 D5 S0 x2
S1 M-CDS
C D5 D5 D5 D6 D6 D6 D6 D6 D6 S0 x2
S1 M-CDS
C D6 D6 D6 D6 D6 D6 D6 D6 D6 S0 x2
S1 M-CDS
C D6 D6 D6 D6 D6 D6 D6 D6 D6 S0 x2
S1 M-CDS
C D1 D1 D1 D1 D1 D1 D1 D1 D1 S0 x2
S1 M-CDS
C D1 D1 D1 D1 D1 D1 D1 D1 D1 S0 x2
S1 M-CDS
C D1 D1 D1 D1 D1 D1 D2 D2 D2 S0 x2
613
Figure 13 Example Transport Pattern: High Bandwidth PCM
621
Figure 14 Example of SWI3S Payload Visualizer Tool
SWI3S Registers
Peripheral Command
Non-SWI3S Registers (local)
Model for Registers Non-SWI3S Registers (remote)
Transfers
Command Transport Phases
Protocol Elements of Phases
Bytes
E.g.,
Impedance,
PHY, e.g., DLV Signaling Levels,
Signal Timing.
640
Figure 15 Command Protocol Layer Stack: Overview
Peripheral / Manager
Interleaved Raw Bits
Packet_Length =1
Packet_Length_H Packet_Length_H=0x0
Packet_Length_L Packet_Length_L=0x1
Address[23:16] Manager_CRC16_L
Packet_Length
Packet
Write Data
...
...
...
Manager_CRC16_H
CRC
Manager_CRC16_L
Protocol Spacer Protocol Spacer
Peripheral Response WRITE_OK
715
Figure 18 Examples of Write Phases
Peripheral
READ_DATA_NOW READ_DEFERRED Protocol Spacer
Response
Peripheral Packet_Length
Peripheral ...
Packet ...
...
Peripheral Peripheral_CRC16_H
CRC Peripheral_CRC16_L
Protocol Spacer
Manager
READ_DATA_OK
728 Response
Packet_Length_H=0x0 Packet_Length_H=0x0
Packet_Length
= 0x01
Manager
Opcode: Ping Opcode: SSCR Opcode: DSCR
= 0x03
Packet
Manager
Manager Manager_CRC16_H Group Mask Group Mask
Packet
CRC Manager_CRC16_L Row Delay Row Delay
Protocol Spacer Manager Manager_CRC16_H Manager_CRC16_H
Peripheral 0 PingInfo CRC Manager_CRC16_L Manager_CRC16_L
Peripheral 1 PingInfo Protocol Spacer Protocol Spacer
Peripheral 2 PingInfo Peripheral 0 Response Peripheral 0 Response
Peripheral 3 PingInfo Peripheral 1 Response Peripheral 1 Response
4.4.4 Commands
741 This Section is an overview of Commands, which are specified in detail in Section 9.
742 Commands are the data format that describes the operations to be performed in the Peripheral, along with
743 data representing the parameters and/or result. Commands can be categorized as:
744 • Basic operations for link status and control.
745 • Read and write transactions for, e.g., accessing address-mapped registers.
746 • Synchronization operations for orchestrating simultaneous behavior in multiple Peripherals.
Non-SWI3S Behavior
(other MIPI Specifications and/or
Remote Registers
Implementation-defined) On-chip infrastructure
& Memory (variable latency)
(can be buffered/deferred)
Remote address
Local Registers
Device Power & Memory Address?
(never buffered/deferred) Local address
Management
SWI3S Behavior
Peripheral Behavior Non-SWI3S address
Command Transport
ReadSetup
Unblock Cal_PHY GetInfo Announce Commit Protocol Write ReadData
(Transfers & Phase Types)
PHY
(e.g., DLV signaling)
774
Figure 21 Peripheral Command Model
775 Note:
776 Figure 21 is a duplicate copy of Figure 114 in Section 9, where there is a more detailed definition
777 of Commands.
787 A complex Peripheral design might add registers (or other resources) using an internal architecture that
788 cannot guarantee completion within the constrained latency (e.g., accessed via slow internal infrastructure,
789 or provided by an internal DSP). These registers are referred to as Remote Registers. When a Read or Write
790 Command addresses a Remote Register it is referred to as a Remote Read or Remote Write Command. The
791 set of possible Responses to Remote Commands is extended to include indications that a Remote Write
792 operation has been buffered (a Buffered Write), or that a Remote Read data transfer operation has been
793 deferred (a Split Read).
794 Note:
795 All of the Peripheral registers defined within this Specification are Local registers, so a Peripheral
796 can support writing and reading these registers without implementing the optional support for
797 Buffered Writes or Split Reads.
Cold Standby
Sleeping Bus Idle
Standby
Start Audio-mode
DP: Link Control signaling PHY signaling
Start Audio-mode
DP: Link Control signaling PHY signaling
Start Audio-mode
DN: Link Control signaling PHY signaling
916
Figure 25 Warm Start Sequence (Simplified)
4.5.3 Resets
934 ###TODO-Author: update the wording to use “sleep-wake” for the action of a warm reset followed
935 by a wake up. Soft Reset and Warm Reset have now been merged into 1 Warm Reset because
936 the effects are very similar.
937 SWI3S defines 2 sets of reset effects, categorized by severity, and one or more potential source of each of
938 these severities. Resets are described in more detail in Section 5.1.5.
1010 5. The Manager waits for the Ping Command results to indicate that all expected Peripherals are
1011 attached.
1012 Note: DLV:Safe-Lock-4 has no audio streaming capability. If a boot sequence wants to generate
1013 sounds at this time then it needs some simple tone generation capability internal to the amplifier
1014 that can be controlled by writing to registers.
1015 6. The Manager programs *_NEXT Registers in the Peripherals with parameters ready for “normal”
1016 operation including:
1017 A. PHY transceiver parameters such as output amplitude, drive strength, slew time, drive type.
1018 B. Clock Config parameters within the PHY-specific range of Column Count (4 to 32), Row Rate
1019 Hint (nominal 600 kRows/sec to 6 MRows/sec), and UI Hint (nominal 4.8 to 76.8 Mbits/s).
1020 C. Link transport parameters: e.g., new position and width of Control Data Stream within the
1021 “normal” Transport Pattern.
1022 7. [Optional, e.g., in systems where the Link will switch to a slower Row Rate and thus lower CDS
1023 bandwidth than is available in Safe-Lock-4] The Manager programs Registers in the Peripheral,
1024 e.g.:
1025 A. Data Port transport settings ready for later use.
1026 B. Other system-specific setup.
1027 8. The Manager performs an SSCR Command to commit the new parameters from Step #6:
1028 A. The Manager and Peripherals switch to using the new PHY transceiver parameters, Clock
1029 Config, and Transport Pattern synchronously with the SSCR Commit Point.
1030 9. The Manager attempts to synchronize all Peripherals by generating frequent Ping Commands
1031 using the new Clock Config and Transport Pattern (Command-Only and thus a single rising edge
1032 per Row) that were prepared in Step #6 and committed in Step #8.
1033 10. The Manager waits for the Ping Command results to indicate that all expected Peripherals are
1034 attached.
1035 11. [Optional] Manager PHY Calibration. In parallel with Steps #9 and #10, the Manager might
1036 perform internal PHY calibration to optimize its internal timing, e.g., to adjust for internal path
1037 delays. (This optional process is implementation-defined.)
1038 12. [Optional] The Manager uses DLV Calibration Commands to perform PHY calibration on the
1039 attached Peripherals with the current operation settings (see Section 9.1.12).
1040 Note: This step might be omitted in systems with very short links at low bit rates.
1041 13. [Optional] If the initial “normal” speed Transport pattern was using wide CDS bits then, after
1042 Peripheral PHY Calibration is complete, the Manager might reprogram the Command Transport
1043 parameters to reduce the number of Columns being used for the Control Data Stream, and use an
1044 SSCR to commit the changes.
1045 Note: The initial “normal-speed” Transport Pattern in Step #9 uses a CDS width that is wide
1046 enough for successful communication between Manager and Peripherals, even before they have
1047 calibrated their PHYs at the new Clock Config. This CDS width could be as small as 1 or 2
1048 Columns or as large as ColumnCount/4 used with Special Drive Mode so that the waveform on the
1049 bus mimics that of Safe-Lock-4.
1050 The Manager can now issue Commands to start audio payload transport, see Section 4.6.6.
4.6.4.1 Preparing the Clock Config and Transport Pattern for Sleep-Wake
1088 When the Manager wakes the Peripherals from Sleeping, the Clock Config and Transport Pattern will be
1089 whatever had been prepared in the *_NEXT registers in the Peripheral(s), and that will have been
1090 committed into the *_CURR registers by the SSCR in Step #4 in Section 4.6.4 that caused the Peripheral to
1091 enter Sleeping.
1092 To give the quickest return to normal operation, this will typically be an identical Clock Config (Row Rate,
1093 Column Count, and Bit Rate) to what was in use before the Link was put to sleep. In some cases, the
1094 Transport Pattern might have small differences, e.g., programming the *_NEXT registers to restart the Link
1095 using Wide Bits for the Control Data Stream, so that it is capable of operating at high bit rates even if the
1096 PHY calibration has drifted during a long time in the Sleeping state.
1134 Note:
1135 The Manager will align an SSCR to the current SSPs to avoid disrupting Data Port operation so
1136 that this transition in the transport is seamless, and no other streams are perturbed.
Manager Manager
SWI3S Link #1 SWI3S Link #2
#1 #2
Peripheral Peripheral
Amp #1 Amp #2
1149
Figure 27 An Example System Using Multiple SWI3S Links
1161 Figure 28 shows the simplest possible physical topology: a point-to-point Link to a single Peripheral. This
1162 facilitates highest bandwidth or longest separation of the Manager and Peripheral.
Manager
P
1163
Figure 28 Physical Topology: Point-to-Point
1164 Figure 29 illustrates a generic physical topology with Peripherals distributed along a broadly linear signal
1165 path on the physical medium, and the Manager positioned anywhere on that signal path. This topology
1166 could be referred to as “generic multi-drop”.
Manager
P P P P P P P P
1167
Figure 29 Physical Topology: Generic Multi-Drop
1168 Figure 30 shows a physical topology in which the Manager is positioned at one end of the medium, but
1169 there is no constraint on the position of Peripherals, so it is a special case of multi-drop, but one that is
1170 commonly used to reduce signal integrity issues.
Manager
P P P P P P P P
1171
Figure 30 Physical Topology: Multi-drop – Manager-at-End
1172 Figure 31 shows a further special case of the Manager-at-End physical topology from Figure 30 in which
1173 Peripherals are positioned within a limited distance of the far end of the medium. This has the effect of
1174 limiting the maximum time between when a Peripheral receives the incident wave from the Manager, and
1175 the corresponding reflection of that wave from the far end of the medium. This topology is named
1176 “Star-on-a-Stick” because it resembles a star topology attached to a longer (stick) section containing no
1177 Peripherals.
P-far
short
Manager
short
P-far
short
P-far
1178
Figure 31 Physical Topology: Star-on-a-Stick
1179 Figure 32 shows a different special case of the Manager-at-End physical topology in which the Peripherals
1180 are positioned in a group at the far end of the medium from the Manager. This topology has similar
1181 advantages to the star-on-a-stick, in that Manager-to-Peripheral and Peripheral-to-Manager communication
1182 are each relatively easy (e.g., not needing Wide Bits). This topology is named “Toothbrush” because it
1183 resembles the bristles on a toothbrush.
Manager
(short)
P-far P-far
1184
Figure 32 Physical Topology: Toothbrush
1185 Figure 33 shows a different special case of the Manager-at-End physical topology in which the Peripherals
1186 are positioned in one of two groups near to each end of the medium. This is similar to the Manager-at-End
1187 topology, but the close spacing of the groups of peripherals might mean that handover between transmitters
1188 within these groups can be shorter. This topology is named “Dumbbell” because it resembles the weights
1189 being distributed at the end of a dumbbell bar.
Manager
(short) (short)
Single Peripheral
Control / Status
Manager Audio Stream(s) Peripheral #1
Multi-Peripheral
Control / Status
Audio Stream(s) P1
Control / Status
Manager Audio Stream(s) P2
Control / Status
Audio Stream(s) P3
Control / Status
Manager Audio Stream(s) P2
Control / Status
Audio Stream(s) P3
1203
Figure 34 SWI3S Logical Topologies
1204 The logical topologies shown in the figure have the following properties:
1205 • Single Peripheral: One Manager communicates with one Peripheral. This configuration facilitates
1206 physical link topologies with electrically very difficult (e.g., long, or less uniform) physical paths
1207 between Manager and Peripheral.
1208 • Multi-Peripheral: One Manager communicates with any of up to 12 Peripherals. This
1209 configuration provides some flexibility for the system design, but imposes tighter constraints on
1210 the physical link topology and/or operating speed than a Single Peripheral configuration.
1211 • Multi-Peripheral with any-to-any payload: One Manager and up to 12 Peripherals communicate
1212 with each other. This is the most flexible system, but might need more sophisticated circuit
1213 analysis in order to program the devices correctly.
1253 Note:
1254 The End-Half-Column-Early feature gives finer granularity of handover periods to yield denser
1255 packing of data in systems where the topology and bitrate allow this. See Section ###XREF.
1256 The details of how some of these concepts are implemented are a property of each PHY (e.g., recovered bit
1257 clock versus forwarded bit clock), and are described in the Section for each PHY. This Specification
1258 includes PHY-specific sub-sections where other behavior is affected by the Audio-mode PHY that is in use:
1259 • PHY-Specific Bits and UIs in Section 10.1.5.4.
1260 • Reset and Link Management in Section 5.1.11.
1261 • Registers for each PHY within Section 14.2.
Manager
60 cm
P P P P P P P P
1349
Figure 35 DLV PHY, Example of a Medium Length Multi-Drop Physical Topology
Manager
30 cm
P P P P P P P P
1358
Figure 36 DLV PHY, Example of a Shorter Multi-Drop Physical Topology
Manager
200 cm
P-far
1366
Figure 37 DLV PHY, Example of a Long Point-to-Point Physical Topology
P-far
Manager
5 cm
100 cm 5 cm
P-far
5 cm
P-far
1374
Figure 38 DLV PHY, Example of a Star-on-a-Stick Physical Topology
Manager
60 cm
5 cm 5 cm
4.9 Registers
1386 Note:
1387 This Section is an overview of the Registers, which are specified in detail in Section 14.
4.9.2 Interrupts
1405 This Section is an overview of Interrupts, which are specified in detail in Section 15.
1406 SWI3S provides a similar model to the SoundWire interface ([MIPI01]) for reporting asynchronous events
1407 in various layers within the Peripheral Device, referred to as interrupts. There are registers for bitwise
1408 interrupt status/clear and interrupt enable that are read and written using normal read and write commands.
1409 These registers are arranged within the address map to provide efficient gathering of status with multi-byte
1410 reads. The Manager can determine which Peripheral Devices have one or more active interrupts that need
1411 attention by examining the status that can be collected from every Peripheral Device with a single Ping
1412 command.
1413 The sources of interrupts within a SWI3S Peripheral Device are:
1414 • SWI3S Error Indications from various layers, e.g,:
1415 • Data Ports (Port ready, PRBS testing failure).
1416 • Control Data Transport (8b/10b decoder and CRC).
1417 • Command Transport Protocol (incorrectly formatted Commands).
1418 • …
1419 • SSP indication received at unexpected time.
1420 • Other parts of the Device outside the SWI3S Peripheral interface:
1421 • Implementation-defined device-specific behavior (e.g., thermal overload in amplifiers).
1422 • Standard interrupts described in other specifications, e.g., SDCA ([MIPI02]).
1496 Note on clock-gating: the Peripheral does need to count the 30 Rows after the good header before it has
1497 confirmed that it will become attached.
1498
1499
5.1.1 Overview
Cold Standby
Sleeping Bus Idle
Standby
1545 3. PHY Activation edge, which directs all Peripherals to change to using the selected Audio-mode
1546 PHY and attempt to synchronize to the Control Data Stream from the Manager.
1547 Warm Start: (see Section 5.1.2.5) used to resume operation after Peripherals have previously been active
1548 using an Audio-mode PHY and then placed in the Sleeping Link State to save power. This sequence
1549 enables a short Sleep-Wake cycle and relies on the Peripherals preserving the state at various layers (e.g,
1550 PHY settings and calibration, clock rate ranges for clock recovery, Data Port registers for payload
1551 transport). Warm Start does not affect Peripherals that are in the Cold_Standby Link State.
Start Audio-mode Period of electrical transition between Link Control PHY and
PHY signaling Audio-mode PHY signaling.
Min Max Timing parameter for which the Specification constrains both
minimum and maximum values
Min Max Timing parameter for which the Specification constrains only the
Per_tXYZ minimum value
1681 Man_tXYZ
1682 The state machine names referenced in the sequence diagrams are:
1683 PL_SM: Peripheral Link State Machine, see Figure 57 in Section 5.1.7 and Figure 60 in
1684 Section 5.1.8.
1685 PLCR_SM: Peripheral Link Control Request State Machine, see Figure 59 in Section 5.1.7.4.
1686 ML_SM: Manager Link State Machine, see Figure 61 in Section 5.1.9 and Figure 63 in
1687 Section 5.1.10.
Bus Reset
PBR_SM Delay1 Armed Delay2
Detected
Idle
Max
Man_tReset00 Man_tReset10 tResetRecovery tClock1 tClock0 tClock1 tClock0 tClock1 tClock0 tClock1 tClock0 tClock1 Man_tPhyStart
Min Min Min Max
Start Audio-mode
DP signal: 1 2 3 4 5A 5C 5A 5C 5A 5C 5A 5C 6 8
PHY signaling
5B 5B 5B 5B 7 9
Per_tPhy_Inactivity_HoldOff
Min Max
Activate Syncing
PL_SM Sleeping Warm Start Check
PHY (Locking_to_Row / Syncing_to_Command)
E.g., DLV
ML_SM Standby / Bus Idle Generate Warm Start Activate PHY
Command-Only
Max
Per_tPhyStart
Man_tPhyStart
Start Audio-mode
DP signal: LC:weak 0 1 2 8
PHY signaling
7 9
Start Audio-mode
DN signal: LC:0 PHY signaling
1718
Figure 43 Warm Start Sequence (Detail)
Per_tLC_ReqArmingDelay
PLCR_SM Arming Delay Armed Output LC_Req LC_Req_Idle Arming Delay Armed
Generate
ML_SM Standby / Bus Idle Standby / Bus Idle
Wake Ack
DN signal: LC:0
1737
Figure 44 Peripheral LC_Request and Manager LC_Acknowledge (Detail)
PBR_SM
Armed Delay2 (tReset10) Idle Delay1 (tReset00) Armed
(Per3)
PL_SM
Cold Standby
(Per3)
PL_SM
Sleeping Warm Start Check Sleeping
(Per2)
PLCR_SM
Arming Delay Armed Output LC_Req LC_Req_Idle Arming Delay Armed
(Per1)
Generate
ML_SM Standby / Bus Idle Standby / Bus Idle
Wake Ack
Min Max
Man_tLC_ReqIn
DN signal: LC:0
1755
Figure 45 Manager LC_Acknowledge does not Trigger Warm Start or Cold Start
1756
PLCR_SM #B Arming Delay Armed Output LC_Req LC_Req_Idle Arming Delay Armed
PLCR_SM #A Arming Delay Armed Output LC_Req LC_Req_Idle Arming Delay Armed
Generate
ML_SM Standby / Bus Idle Standby / Bus Idle
Wake Ack
Min Max
15 16
DN signal: LC:0
1760
Figure 46 Overlapping LC_Requests from 2 Peripherals
Start mission-mode
DP signal: P1 M1 M2
PHY signaling
Per: tLC_ReqOut
Start mission-mode
DN signal: PHY signaling
P1 M3 Start mission-mode
DP signal: PHY signaling
Per: tLC_ReqOut
Start mission-mode
DN signal: PHY signaling
1778
Figure 47 Warm Start After an LC_Request
Activate Syncing
PL_SM Sleeping Warm Start Check
PHY (Locking_to_Row / Syncing_to_Command)
E.g., DLV
ML_SM Standby / Bus Idle Generate Warm Start Activate PHY
Command-Only
Start Audio-mode
DN signal: LC:0 PHY signaling
1779
Figure 48 LC_Request Extended Directly into Warm Start
LC_Req + LC_Ack (short time) LC_Req + LC_Ack (short time) Warm Start (medium time)
Per_tLC_ReqArmingDelay
Start mission-mode
DP signal: P1 M1 P2 M2 M3 PHY signaling
P3 P6
Min
P8
Min Max
Change to
DP & DN Stop PHY LC signaling
M1 M2 M4 M5 M7
SSCR
DN signal: LC:0
1801
Figure 50 Re-entering Inactive Link States
P3 P6
Min
P8
Min Max
M1 M2 M4 M5 M7
SSCR
Change from DLV
to LC signaling
1820
Figure 51 Re-entering an Inactive Link States from PHY3:DLV Using an SSCR
5.1.5 Reset
1884 SWI3S devices have some mandatory and some optional sources of reset. Each of these sources is
1885 categorized into 1 of 2 possible severities, which determines how much of the Device is affected by that
1886 reset. These severities are:
1887 Cold Reset: affects all of the SWI3S interface, returning it to the same condition as after power-on
1888 reset, and typically also affects most or all of the rest of the device. The Audio-mode PHY is
1889 deactivated. The Link State in a Peripheral changes to Cold_Standby, and in the Manager to
1890 Standby.
1891 Some Peripheral designs might remove power from most of the SWI3S interface for almost all of
1892 the time that they are in Cold_Standby. This is not visible outside the Peripheral because the
1893 register values that result from the Cold Reset are only observable when the Cold Start sequence
1894 directs the Peripheral to activate its Audio-mode PHY and attach to the bus.
1895 Warm Reset: affects a small amount of state within the SWI3S interface and stops any payload
1896 streaming, but typically affects very little in other parts of the device. Depending on the cause of
1897 the Warm Reset, the Audio-mode PHY might remain activated (e.g., if this Warm Reset was from
1898 the Peripheral losing sync and momentarily becoming detached from the bus), or be deactivated
1899 (e.g., if this Warm Reset resulted from commiting a PM_Action of Enter_Sleeping).
1900 The specific registers and other state in the Peripheral that is affected by each of Cold Reset and Warm
1901 Reset is specified in Table 9 in normative Section 5.2.1.
1902 ###TODO-Author: simple text about Manager Reset (not Cold/Warm). and Table 11 (Manager).
All Peripherals are guaranteed to detect the All Peripherals are guaranteed to detect All Peripherals are guaranteed to be ready to
first part of Bus Reset before point A because Bus Reset before point B because accept PHY Selection part of Cold Start sequence
1942 Per_tReset00_Max < Man_tReset00_Min Per_tReset10_Max < Man_tReset10_Min before point C, Man_tResetRecovery_Min
1943 Figure 52 shows each of steps ‘A’, ‘B’, and ‘C’ of the Bus Reset Sequence exceeding a defined minimum
1944 time. The corresponding Bus Reset detection circuitry in each Peripheral has threshold times for when it
1945 successfully detects each of the three steps. The threshold times will not be identical in every Peripheral, so
1946 some Peripherals will detect Bus Reset before others, but all Peripherals will have detected Bus Reset
1947 before the Manager has completed step ‘B’ of this Bus Reset sequence (i.e., the step when DP=LC:1 and
1948 DN=LC:0).
1949 The range of acceptable threshold times in Peripherals has wide timing tolerances to facilitate designs using
1950 (or re-using) simple low power timers, such as internal RC delays.
PHY Selection in
DP: Link Control signaling: LC:0 LC:1 LC:0
DP & DN DLV: Keeper DLV: 0 Cold Start sequence
All Peripherals are guaranteed All Peripherals are guaranteed All Peripherals are guaranteed All Peripherals are guaranteed to be
to have detected that DLV PHY is to have detected the first part of to have detected Bus Reset ready to accept PHY Selection part of
1968 no longer in use before this point Bus Reset before this point before this point Cold Start sequence before this point
Figure 53 Bus Reset Sequence from Manager when DLV PHY is Active
1969 The PHY-specific preamble that deactivates PHY1 or PHY2 (FBCSE) is the Manager driving
1970 DP=FBCSE:0 and DN=FBCSE:0 for a longer period than the slowest allowed clock cycle. This
1971 PHY_Inactivity Detector is described in Section ###XREF.
1972 ###TODO-Author: add a similar figure showing the Manager generating this FBCSE Idle sequence
1973 to trigger the Peripheral PHY_Inactivity Detectors, and then generating bus reset using LC
1974 signaling. The period Man_tReset00 will be just an extension of the FBCSE:00.
Idle
[LC Rx]
Delay1
(tReset00)
[LC Rx]
(DP/DN=LC:00)
AND (Time Per_tReset00)
Armed
[LC Rx]
DP/DN=LC:10
Delay2
(tReset10)
[LC Rx]
(DP/DN=LC:10)
AND (Time Per_tReset10)
Bus
Reset
Detected
[LC Rx]
1980
Figure 54 Peripheral Bus Reset State Machine (PBR_SM)
The Peripheral has not yet received any part of the Bus Reset sequence.
Idle Note:
A Cold Reset (e.g., Power-on) forces the PBR_SM to start in this state.
The Peripheral is monitoring the first part of the Bus Reset sequence
Delay1
(Per_tReset00).
Armed The Peripheral has received the first part of the Bus Reset sequence.
The Peripheral is monitoring the second part of the Bus Reset sequence
Delay2
(Per_tReset10).
The Peripheral has detected the complete Bus Reset sequence. This generates a
Cold Reset within the Peripheral, which includes:
• Forcing the PL_SM to move to the state PL:Wait_for_End_of_Bus_Reset
• Forcing this PBR_SM to move back to state PBR:Idle.
Note:
The PBR_SM is active continuously. When it detects a Bus Reset it will override
the Peripheral Link State, forcing it to PL:Wait_for_End_of_Bus_Reset. In
normal operation, the Peripheral will already be in state PL:Cold_Standby or
Bus_Reset_Detected
PL:Sleeping before the Manager generates a Cold Start sequence, and will thus
be in one of PL:Cold_Standby or PL:Warm_Start_Check at the moment when
the PBR_SM detects the Bus Reset.
Note:
PBR:Bus_Reset_Detected is a transient state used to clarify the description of
behavior. In Figure 54, the exit from this state and the entry to the PBR:Idle
state are shown with the double-headed arrow that is used to indicate transitions
associated with reset.
Normal PHY signaling might have left the The PBR_SM in every Peripheral is
PBR_SM in any state at the moment when guaranteed to have reached state PBR:Armed
the Manager starts the first part of the Bus before the Manager starts the second part of
1996 Reset sequence the Bus Reset sequence
1997 The PBR_SM monitors the DP and DN inputs continuously using the Link Control PHY receiver (LC_Rx).
1998 Depending on which Audio-mode PHY(s) are implemented in a device, the signaling voltage levels used
1999 for an Audio-mode PHY might also be detected by the LC_Rx (e.g., PHY1/PHY2 (FBCSE) use the same
2000 voltage levels as LC, and might share an input circuit). Thus, the PBR_SM might (incorrectly) detect part
2001 of the Bus Reset sequence. However, the Manager behavior is defined such that Audio-mode PHY
2002 signaling can never trigger the whole of the Bus reset sequence. E.g., when using PHY1/PHY2, the
2003 Manager pauses the clock only in a bus condition of DP=1 and DN=1, which will cause the PBR_SM to
2004 return to state Idle.
2005 Figure 55 shows that the PBR_SM will successfully detect a genuine Bus Reset independently of any state
2006 that false signaling might have taken it to.
2007 Note:
2008 For a system using PHY3 (DLV) that has been correctly programmed, there is no voltage overlap
2009 between PHY3 and LC_PHY signaling so that no false signaling occurs.
Peripherals with shorter delay timers will Peripherals with shorter delay timers will
move into the Armed state earlier but all detect Bus Reset earlier, but all Peripherals
Peripherals move into Delay2 together are guaranteed to detect Bus Reset before
2017 when DP changes to LC:1 the end of the Bus Reset sequence
Figure 56 Peripheral Bus Reset Detection: Effect of Wide Timing Tolerances in PBR_SM
Cold
Sleeping
(4 DP Falling Edges)
Get PHY
DP Falling Edge Number
D3 D2 D1 D0
AND PHY Num [LC Rx]
is NOT supported
(PHY-Specific Conditions)
PHY #n PHY #n
PHY_Ready
PHY_Stopped
PM_Action = Enter_Sleep
PM_Action = Enter_Cold_Standby
One set of states for each PHY Number that is implemented in the Peripheral.
2022 (See detail in PHY-specific sections.)
2023 A Peripheral implements one or more of the Audio-mode PHYs described in this Specification. The PL_SM
2024 behaves as described by the set of PHY-independent inactive Link States shown in Figure 57, and then one
2025 set of the PHY-specific active link states (for transition, synchronization, and active communication) shown
2026 in Figure 60 for each of the PHYs that are implemented within the Peripheral.
State Inactive Link State in which the Peripheral uses A thinner outline represents states that clarify
State
Name Link Control signaling to sense the input on DP the informative description, but are not needed
Name
[LC Rx] and DN. in the normative material.
State Name PHY-specific states for graceful transition Normal state transition caused by logical conditions
PHY #n between Inactive states (LC PHY signaling) within the Peripheral.
[Tx Off] and Active states (Audio-mode PHY signaling).
Shorthand notation for forced direct state transition
from any state to PL:Cold_Standby when the
Peripheral receives an initial cold reset (such as
Peripheral uses the Audio-mode PHY Rx to internal power-on detection).
Syncing
attempt to synchronize to the Row Sync and
[TxPowerOn]
Control Data Stream from the Manager. State transition caused by Link Control signaling
from the Manager on DP and DN.
Peripheral is fully active, and uses the Bus Reset Detected Shorthand notation for forced direct state transition
Attached (see PBR_SM) ...
Audio-mode PHY Rx and Tx to participate from any state to PL:Held_in_Cold_Reset when the
[TxEnabled]
in bus activity (Commands and Payload). Peripheral sees a Bus Reset from the Manager.
Wait_for_End_of_Bus_Reset[2] The Peripheral waits for the end of the Bus Reset part of the Cold Start
(Cold Start #1) sequence from the Manager (see PBR_SM in Section 5.1.6).
Get_PHY_Number The Peripheral captures the 4-bit PHY Number (see Section 5.1.4)
(Cold Start #2) transmitted by the Manager in the Cold Start sequence.
Warm_Start_Check The Peripheral checks that the LC_Rx has received a valid Warm Start
(Warm Start #1) sequence from the Manager (see Figure 43 in Section 5.1.2.5).
See the active half of the PL_SM in Figure 60 and the description of states
in Table 4.
<PHY-specific Active Link
States> I/O Control:
• The selected Audio-mode PHY Rx and Tx behave as described in
Table 4.
2033 Note:
1. The state names PL:Cold_Standby and PL:Sleeping are colored purple to indicate that these
states correspond to terms used in the normative material in Section 5.2.2. Other states are
included only to help with the informative description, such as the 2 states used for tracking
progress through the Cold Start sequence.
2. The Peripheral checks for Bus Reset continuously, independent of its current Link State, even if
the state indicates that an Audio-mode PHY is expected to be active. See PBR_SM in
Section 5.1.6.
LC_Req_
Idle
Output
LC_Req (t Per_tLC_ReqOut)
[LC Tx:1]
2048
Figure 59 Peripheral Link Control Request State Machine (PLCR_SM)
2049 LC_Requests are generated only when the bus is in the LC_Idle condition and the Peripheral is in an
2050 Inactive Link State (PL_SM is in Sleeping or Cold_Standby), so the PLCR_SM returns to and remains in
2051 the PLCR:LC_Req_Idle state whenever the PL_SM leaves Sleeping or Cold_Standby.
2052 The PLCR:Arming_Delay state prevents the Peripheral generating LC_Requests for a short period after the
2053 Peripheral has entered a Link State of PL:Sleeping or PL:Cold_Standby to allow time for the Manager to
2054 reach ML:Standby_Bus_Idle (when its output on DP changes from LC:0 to LC:weak0, so that the
2055 Peripheral can now overdrive this with LC:1 to indicate the LC_Request). This arming delay also allows all
2056 other Peripherals to reach PL:Sleeping or PL:Cold_Standby ready to receive Warm Start or Cold Start,
2057 even if they were slower to detect the bus having been parked at LC_Idle (DP=LC:0 and DN=LC:0).
2058 After the Peripheral reaches PLCR:Armed, if it then detects the (implementation-defined) internal trigger
2059 condition it generates an LC_Request output of DP=LC:1 for a time defined by the limits of
2060 Per_tLC_ReqOut.
2061 If another Device drives DP to LC:1 (either another Peripheral generating an LC_Request or the Manager
2062 signaling Warm Start or Cold Start) before the trigger condition occurs then this causes the PLCR_SM to
2063 return to PLCR:LC_Req_Idle, so disarms the Peripheral LC_Request output until both the bus has returned
2064 to LC_Idle and another full arming delay has expired. This prevents multiple Peripherals driving a series of
2065 consecutive LC_Requests that could be confused with other signaling. If the trigger conditions in 2 or more
2066 Peripherals occur very close together in time (separated by, e.g., 0.5 microseconds, and by not more than
2067 parameter Per_tLC_ReqDisarm) then multiple Peripherals might drive LC_Request outputs onto DP
2068 simultaneously (see Figure 46 in Section 5.1.2.8). This overlapping drive does not cause any problem
2069 because the Peripherals are actively driving in only one direction (DP=LC:1).
Note:
When the Peripheral moves from Activate_PHY to Activate Deactivate
Locking_to_Row, the PHY_Inactivity detector is not PHY #n PHY #n
enabled until a time of Per_tPhy_Inactivity_Holdoff [Tx Off] [Tx Off]
has expired.
PHY_GoodRowLock
PHY_Inactivity
PHY_BadRowLock OR PHY_Inactivity
Bad_Command_Confidence
Tx_Power_is_OK AND
PHY_BadRowLock OR Command_Sync_is_OK
Bad_Command_Confidence OR Commit PM_Action:
Commit PM_Action: Force_Resync Enter_Cold_Standby ExitDormant Command OR
PHY_Inactivity ( WakeReqEnable AND ImpDef Trigger Condition )
PHY_Inactivity
Commit PM_Action:
Enter_Sleeping
Attached Dormant
[TxEnabled] Commit PM_Action: [Tx Off]
Enter_Dormant
Commit PM_Action:
2131 Stay_Attached
See the inactive half of the PL_SM in Figure 57 and the description of
states in Table 3.
<Inactive Link Behavior>
I/O Control:
• The Audio-mode PHY is not active.
The Peripheral is waiting for the Manager to stop using the Audio-mode
PHY to communicate with other Peripherals on the bus (PHY-specific
condition).
Power Control:
Ready_for_Cold_Standby [2] • The Peripheral might remove power from all circuitry (except for the
PHY_Inactivity Detector and the Bus Reset Detector) in advance of
the pending change to Cold_Standby.
I/O Control:
• The Audio-mode PHY_Inactivity Detector is enabled (but not
necessarily all of the Rx circuit).
2135 Note:
1. The state names Locking_to_Row and Syncing_to_Command are included to help with the
informative description; they correspond to the single state of Syncing in the normative material
in Section 5.2.2.
2. The state names Syncing, Attached, Ready_for_Cold_Standby, Ready_for_Sleeping, and
Dormant are colored purple to indicate that these states correspond to terms used in the
normative material in Section 5.2.2.
2136 Note:
2137 The Peripheral Bus Reset detector is permanently active, so it remains active even in states when
2138 the Audio-mode PHY might be off (Sleeping or Cold_Standby) or only partially on (Dormant,
2139 Ready_for_Sleeping, or Ready_for_Cold_Standby).
2140 Note:
2141 Some of the conditions that cause changes between the Active Link states are PHY-Specific: see
2142 the links from the normative material in Section 5.2.2 to PHY-specific sections. These conditions
2143 are colored red in Figure 60, e.g., PHY_BadRowLock.
2144 Note:
2145 PHY_Inactivity is a PHY-specific condition described and specified in the PHY-specific sections
2146 and can involve both dynamic and static conditions. E.g, the Manager can avoid triggering the
2147 FBCSE PHY_Inactivity Detector by pausing the clock (DN) at 1 with data (DP)=1.
2148 Table 5 summarizes the stimulus conditions for the PL_SM in Figure 60.
2149 Table 5 Transitions in the PL_SM (Active States)
Condition Description
The Command Transport Protocol decoder has not decoded any valid and
error-free Phase Header addressed to this Peripheral for the last 8192 Rows.
Bad_Command_Confidence This depends only on good Robust Tokens in the Header and a valid
PhaseID. It is not affected by transport errors in the Manager Packet or
by Command Errors.
PHY-specific conditions for deciding that Row clock and Bit clock are good.
PHY_GoodRowLock E.g., for PHY3 (DLV), the bit clock PLL/DLL is locked to the Row Sync
sequence.
PHY-specific conditions for deciding that Row clock and Bit clock are bad.
PHY_BadRowLock E.g., for PHY3 (DLV), the Peripheral has not seen an S0-to-S1 Sync
edge for any of the last 10 Rows.
Parking
Bus LC
LC Tx: {0,0}
Man_tParkBus_LC00
Host_DoColdStart OR Host_DoWarmStart OR
(LC_Request AND HostChoosesColdStart) (LC_Request AND HostChoosesWarmStart)
Generate Generate
Cold Start Warm Start
D3 D2 D1 D0
LC Tx: LC Tx:
sequence sequence
Tx_Ready_LC_PHY
Bus_Is_Parked_PHY#n
One set of states for each PHY Number that is implemented in the Manager.
2186 (See detail in PHY-specific sections.)
2187 A Manager implements one or more of the Audio-mode PHYs described in this Specification. The ML_SM
2188 contains the set of generic Link States shown in Figure 61, plus one set of the PHY-specific states (for
2189 transition, synchronization, and active communication) for each of the PHYs that are implemented within
2190 the Manager. The PHY-specific states are described in more detail in Section 5.1.10.
State Name Link Control state in which the Manager uses PHY-specific states for graceful
State Name
LC Tx: DP/DN Link Control signaling to drive specified values transition between LC PHY signaling
PHY #n
(or a sequence of values) on DP and DN. and Audio-mode PHY#n signaling.
The Manager actively parks the bus in the Link Control Idle (LC_Idle) condition
Parking_Bus_LC [1]
(driving DP=LC:Strong0 and DN=LC:0) before moving to ML:Standby_Bus_Idle.
The Manager holds the bus in the LC_Idle condition (driving DP=LC:weak0 and
Standby_Bus_Idle [1] DN=LC:0) while all Peripherals are either powered off or in Sleep or Cold_Standby.
The Manager uses the LC_Rx to detect LC_Requests from the Peripheral(s).
The Manager generates a Cold Start sequence (Bus Reset + PHY Selection +
Generate_ColdStart
PHY Activation Edge, see Section 5.1.2.4).
The Manager generates a Warm Start sequence (Warm Start Pulse + PHY
Generate_WarmStart
Activation Edge, see Section 5.1.2.5).
2197 Note:
1. The state names ML:Parking_Bus_LC and ML:Standby_Bus_Idle are colored purple to indicate
that these states corresponds to terms used in the normative material in Section 5.2.3; other
states are included only to help with the informative description, such as the 3 states used for
generating each of LC_Ack, Cold Start, and Warm Start.
(Standby_Bus_Idle)
Inactive States
Parking
Bus LC
LC Tx: {0,0}
LC PHY Tx Activated
DLV PHY-Specific
Start_Link
Bus_is_Parked_DLV
(DP/DN = DLV:0)
Payload
DLV Stop_Link
[DLV Tx]
2203
Figure 63 Manager Link State Machine (ML_SM): Active Link Behavior for PHY3 (DLV)
(Standby_Bus_Idle)
Inactive States
Parking
Bus LC
LC Tx: {0,0}
LC PHY Tx Activated
FBCSE PHY-Specific
Start_Link
Bus_is_Parked_FBCSE
(DP = FBCSE:0)
(DN = FBCSE:0)
Clock Pause
FBCSE
[FBCSE Tx]
Payload
FBCSE Stop_Link
[FBCSE Tx]
2204
Figure 64 Manager Link State Machine (ML_SM): Active Link Behavior for PHY1 or PHY2
(FBCSE)
2205 Table 7 States in the Manager Link State Machine: Active Link
<Inactive Link States> See description of states in the ML_SM: Inactive States in Table 6.
The Transport Pattern contains only a Control Data Stream co-ordinated by the
Command_Only_DLV Manager. Neither the Manager nor any of the Peripherals generate any Payload
Command_Only_FBCSE data streams. This “clean” Transport Pattern facilitates the Peripherals
synchronizing to the Control Data Stream.
This is the “normal” state of an active link: The Transport pattern contains a
Payload_DLV
Control Data Stream co-ordinated by the Manager, and might also contain
Payload_FBCSE payload data streams output by any of the Manager and Peripherals.
The Manager generates a value or sequence of values that will trigger the
Parking_Bus_DLV
PHY_Inactivity Detector in the Peripherals, so causing them to deactivate their
Parking_Bus_FBCSE PHY and change to either Sleeping or Cold_Standby.
5.1.11.2 Clock Config and Transport Pattern for Cold Start (Safe-Lock-N)
2211 When the Manager issues a Cold Start sequence, it starts with a Clock Config and Transport Pattern that is
2212 referred to as a “Safe-Lock-N” config. This is a combination of:
2213 • A Clock Config (combination of Row rate, Bit Rate, and Column Count) that is known to operate
2214 correctly when Peripherals are using the reset values of the PHY Control parameters (drive
2215 impedance, slew rate, etc.), and
2216 • A Command-Only Transport Pattern using CDS Transport parameters that makes it easy for
2217 Peripherals to synchronize to the Control Data Stream.
2218 The software controling the Manager will program PHY settings that are appropriate for the system prior to
2219 issuing the Cold Start sequence.
2220 The clock and transport settings for Safe-Lock-N are PHY-Specific, and are described within the Section
2221 for each PHY, e.g.,
2222 • PHY1 and PHY2 (FBCSE), see Section 11.1.2.
2223 • PHY3 (DLV), see Section 12.1.6.
Activate PHY
Do Peripheral(s)
No
Set New Clock Config: Any need Command-Only
to Re-attach?
Yes
Yes
Host Wants to
No
Change Clock Config?
Yes
Yes
2235
Figure 65 Manager Flow for Changing Clock Config
2236 ###TODO-Author: update this figure to show Warm Start using the previous settings rather than
2237 Safe-Lock-N. Replace this with a flow chart that is generic to all PHYs (see 2 v0.4r39 review comments
2238 on Figure 15).
5.2.1 Reset
2239 Requirements
2240 1. {} A Peripheral shall implement each source of reset listed in Table 8 for which the table indicates
2241 either of:
2242 A. Mandatory, or:
2243 B. Conditional (and the stated condition is true).
2244 (See also Permission 1.)
Mandatory
Source of Reset Severity Description / Notes
/ Optional?
Mandatory
Source of Reset Severity Description / Notes
/ Optional?
###TODO-Author: replace
ImpDef_WarmReset with Optional Warm Implementation-defined source.
new ImpDef_ForceResync
2246 2. When a Peripheral receives a reset from any of the sources listed in Table 8, it shall change all of
2247 the state shown in Table 9 as being affected by the Severity of that reset (i.e., Cold or Warm, as
2248 shown in Table 8).
2249 3. When a Peripheral receives a reset, it shall preserve the value of any state listed in Table 9 where
2250 the table shows that the state is not affected by the Severity of that reset (i.e., Cold or Warm, as
2251 shown in Table 8).
2252 Table 9 Effects of Reset in Peripheral
Affected
State or Function by which Action of Reset on that State or Function
Reset
Affected
State or Function by which Action of Reset on that State or Function
Reset
Command Transport Cold Any incomplete Phase that is in progress is abandoned, and
Protocol Decoder Warm the Peripheral resumes waiting for a new SPM.
Cold
SDCA-defined Registers and
(Optional: See SDCA Specification, [MIPI02].
state.
Warm)
Affected
State or Function by which Action of Reset on that State or Function
Reset
Interrupt Enable
Cold Disable all SWI3S-defined interrupts (i.e., IntEnable[c]=0).
(SWI3S-defined interrupts)
2253 4. A Manager shall implement each source of reset listed in Table 10 for which the table indicates
2254 Mandatory. (See also: Permission 3.)
2255 Table 10 Sources of Reset in Manager
Mandatory
Source of Reset Description / Notes
/ Optional?
2256 5. When a Manager receives a reset from any of the sources listed in Table 10, it shall change all of
2257 the state shown in Table 11 shown as Mandatory.
2258 Table 11 Effects of Reset in Manager
Mandatory /
State or Function Action of Reset on that State or Function
Optional?
Command Transport
Mandatory Discard any incomplete Phases.
Protocol
Any implementation-defined
Optional Behavior is implementation-defined.
Registers and state.
2259 Permissions
2260 1. A Peripheral may implement any of the sources of reset listed in Table 8 that are shown as
2261 Optional.
2262 2. When a Peripheral receives a Warm Reset from any of the sources listed in Table 8, it may reset
2263 the state shown in Table 9 as being affected by “(Optional: Warm)” Reset.
2264 3. A Manager may implement any of the sources of reset listed in Table 10 that are shown as
2265 Optional.
2266 4. When a Manager receives a reset from any of the sources listed in Table 10, it may reset the state
2267 shown in Table 11 as being Optional.
2268 Recommendations
2269 1. When a Peripheral resets Optional state according to Permission 2, it should reset it to the value
2270 shown in Table 9.
2271 Requirements
2272 1. {6101} A Peripheral shall be in one of the Link States shown in Table 12:
2273 Table 12 Peripheral Link States
Mandatory Which PHY is Rules Describing Behavior in this
State Name
/ Optional? Active? State (Informative)
Power off — — —
Requirements 5, 6, 7, 8, 9, 10.
Cold_Standby Mandatory Link Control Permissions: 1, 3, 5.
Recommendations: 2.
Requirements 6, 7, 8, 11, 12.
Sleeping Mandatory Link Control Permissions: 1, 2, 4.
Recommendations: 1.
Audio-mode PHY Requirements: 2, 6, 7, 8, 13, 19, 20.
Syncing Mandatory
(only the Rx) Permissions: 6.
Requirements: 2, 6, 7, 8, 14, 15, 16,
Attached Mandatory Audio-mode PHY 17, 20.
Permission: 11.
Audio-mode PHY Requirements: 2, 6, 7, 8, 20, 23.
Ready_for_Cold_Standby Mandatory (only the Inactivity
Permissions: 1.
Detector)
Audio-mode PHY Requirements: 2, 6, 7, 8, 20, 23.
Ready_for_Sleeping Mandatory (only the Inactivity
Permissions: 1, 9.
Detector)
Audio-mode PHY Requirements: 2, 6, 7, 8, 20, 21, 22.
Dormant Optional
(only the Rx) Permissions: 1, 7, 8.
2274 2. {6102} While a Peripheral is in any of Link States: Syncing, Attached, Dormant,
2275 Ready_for_Sleeping, or Ready_for_Cold_Standby, it shall transfer data using the Audio-mode
2276 PHY according to Table 13:
2277 Table 13 Summary of Peripheral Data Transfer in Link States
Control Data Stream Payload Data
Link State Notes
Activity Activity
Rx-Only, searching for
valid Ping Command to
Syncing None —
attach to bus.
(Requirement 13.B)
Tx & Rx, interpreting When
Attached Commands normally. EnableCh<c>=1 —
(Requirement 16) (see Section 13.2)
Rx-Only, searching for Imp-Def condition can
Dormant ExitDormant Command None cause change to Syncing
(Requirement 21) (Permission 7)
2278 3. {6103} When the Peripheral detects or generates the Link Control signals described in this Section
2279 (5.2.2), it shall use the Link Control signaling levels described in Section 6.
2280 4. {6104} The Peripheral shall use values for the timing parameters named in this Section (5.2.2) that
2281 are between the lower and upper bounds in Table 14.
2282 Note: i.e., the Min and Max values in the table are the lower and upper bounds for the values in a
2283 Peripheral datasheet.
See PHY-specific
recommendations in See Requirements 10.A and
Per_tPhyStart [1]
PHY-specific tables linked 12.A.
from Table 16.
2285 Note:
1. All Audio-mode PHYs have a PHY-specific required maximum for Per_tPhyStart, some also have
a required or recommended minimum.
2. The cycle-based and time-based timing parameters are alternatives, depending on the method
that the Peripheral uses to control duration of its LC_Request output pulse.
2286 5. {6105} After any Cold Reset (see Section 5.2.1 Requirement 1), a Peripheral shall start in Link
2287 State: Cold_Standby with its Link Control PHY Rx activated and wait for Cold Start signaling
2288 according to Requirement 8.
2289 Note: see also Peripheral Cold Boot Request in Permission 3.
2290 6. {6106} Independently of the Link State or whether any Audio-mode PHY is active, a Peripheral
2291 shall continuously monitor the DP and DN signals for the Bus Reset sequence described in
2292 Requirement 7 using the Link Control signaling levels described in Section 6.
2293 7. {6107} A Peripheral shall detect Bus_Reset when it sees the following sequence of inputs:
2294 A. DP=LC:0 and DN=LC:0 for a time of ≥ Per_tReset00, followed by:
2295 B. DP=LC:1 and DN=LC:0 for a time of Per_tReset10.
2296 Note: The Min and Max values of Per_tReset00 in Table 14 constrain the Peripheral-specific
2297 duration that must be exceeded for that Peripheral to consider the 00 condition to be a valid
2298 Reset00 in Step 7A. The Manager will always park the bus at 00 for longer than
2299 Per_tReset00_Max, possibly very much longer.
2300 8. {6108} A Peripheral shall detect Cold Start (see waveform in informative Figure 42) when it sees
2301 the following sequence of inputs:
2302 A. A Bus_Reset according to Requirement 7, followed by:
2303 B. DP=LC:0 and DN=LC:0 for a time of Per_tResetRecovery, followed by:
2304 C. 4 clock cycles on DP for times of Per_tClock1 and Per_tClock0, during which the Peripheral
2305 captures data values from DN provided that they have times of at least Per_tSetup before, and
2306 Per_tHold after, the DP falling edge:
2307 i. PhyNum[3] on DP falling edge #1, followed by:
2308 ii. PhyNum[2] on DP falling edge #2, followed by:
2309 iii. PhyNum[1] on DP falling edge #3, followed by:
2310 iv. PhyNum[0] on DP falling edge #4, followed by:
2311 D. DP=LC:1 for a time of Per_tClock1, followed by:
2312 E. A falling edge on DP.
2313 9. {} When a Peripheral detects a Cold Start sequence according to Requirement 8, but does not
2314 implement the Audio-mode Phy number that was identified by PhyNum in Requirement 8.C then
2315 it shall remain in Link State: Cold_Standby.
2316 10. {} When a Peripheral detects a Cold Start sequence according to Requirement 8, and does
2317 implement the Audio-mode Phy number that was identified by PhyNum in Requirement 8.C then,
2318 after the Phy activation edge described in Requirement 8.E, it shall:
2319 A. Wait for a time of Per_tPhyStart (see PHY-specific required and recommended limits linked
2320 from Table 16), and then
2321 B. Start receiving signals using the Audio-mode PHY (selected according to Table 15), and then
2322 C. Enter Link State: Syncing.
2323 Table 15 Audio-mode PHYs in Peripheral
PHY PHY
Section Containing PHY-Specific Rules:
Number Short Name
Peripheral remains in Cold_Standby (see Requirement 9).
0 Reserved Note: this PhyNum might be used in a future version of this Spec
for a 1-pin SE PHY with clock recovery similar to the DLV PHY.
1 FBCSE FBCSE PHY behavior is specified in Section 11.
2 FBCSE FBCSE PHY behavior is specified in Section 11.
3 DLV DLV PHY behavior is specified in Section 12.2.
4 – 15 Reserved Peripheral remains in Cold_Standby (see Requirement 9).
2324 11. {xx00} A Peripheral that is in Link State: Sleeping shall detect Warm Start (see waveform in
2325 informative Figure 43) when it sees the following sequence of inputs:
2326 A. DP=LC:1 and DN=LC:0 for a time of Per_tWarmStart, followed by
2327 B. A falling edge on DP.
2328 12. {} When a Peripheral detects a Warm Start sequence according to Requirement 11 then, after the
2329 Phy activation edge described in Requirement 11.B, it shall:
2330 A. Wait for a time of Per_tPhyStart (see PHY-specific required and recommended limits linked
2331 from Table 16), and then
2332 B. Start receiving signals using the Audio-mode PHY that was in use prior to entering Link
2333 State: Sleeping, and then:
2334 C. Enter Link State: Syncing.
2335 13. {} When a Peripheral is in Link State: Syncing, it shall change to Link State: Attached when both:
2336 A. It satisfies the Phy-specific requirement(s) for becoming attached identified in Table 16, and
2337 B. The Command Transport Protocol decoder decodes a Get_Status Phase that:
2338 i. Selects this Peripheral (see Section 8.2.1 Requirement 4), and
2339 ii. Contains a Ping Command, and
2340 iii. Has zero Transport Errors (Either 8b10b errors or failure of the Manager CRC, see
2341 Section 7.2.2 or Section 8.2 ###XREF to sub-section).
2342 (See also Permission 6.) ###TODO: migrate this PERM to PHY-specific section
2345 14. {} When the Peripheral is in Link State: Attached, it shall change to Link State: Syncing when
2346 any of the following occur:
2347 A. It commits a PM_Action of Force_Resync (see Requirement 17.B.ii), or
2348 B. It commits a PM_Action of Test_###TODO-name (see Requirement 17.B.ii), or
2349 C. It satisfies the PHY-specific requirement(s) for becoming detached due to the
2350 PHY_BadRowLock condition identified in Table 16, or
2351 D. It detects a Bad_Command_Confidence condition, i.e., the Command Transport Protocol
2352 decoder has seen 8192 Rows without encountering a valid and error-free Phase Header in
2353 which this Device was selected.
2354 Note: “error-free” means no Transport Errors in the Control Data Stream, see Section 7.2.2;
2355 “valid” means meeting the Command Transport Protocol rules in Section 8.2.1.
2356 Note: the state change from Attached to Syncing causes a Warm Reset (see Table 8).
2357 (See also Permission ###XREF).
2358 15. {} When a Peripheral enters Link State: Attached, it shall treat the Phase described in
2359 Requirement 13.B as the first Phase interpreted according to the rules in Requirement 16.
2360 Note: So if there is any interrupt condition for which both IntStatus=1 and the corresponding
2361 IntEnable=1, then the Peripheral Ping Response to this first Command will indicate an Alert
2362 condition.
2363 16. {} While the Peripheral is in Link State: Attached it shall interpret the Control Data Stream,
2364 Command Transport Protocol, and Commands according to the rules in Sections 7.2, 8.2, and 9.2.
2365 17. {} When a Peripheral in Link State: Attached commits the current value of PM_Action, it shall do
2366 both of A and B:
2367 A. Perform the usual Commit behavior of copying *_NEXT Registers in the selected Commit
2368 Groups to the corresponding *_CURR Registers as specified in Section 9.2.7
2369 Requirement XREF, and then:
2370 B. Perform the actions listed in Table 17 for the current value of PM_Action, which are zero or
2371 more of the following actions, in this order:
2372 i. Perform a Warm Reset (see Table 8), and then:
2373 ii. Change to a new Link State, and then:
2374 iii. Change the value of PM_Action.
2375 Table 17 Effect of Explicitly Commiting a Peripheral Management Action (PM_Action)
PM_Action Warm New Peripheral Link Effect on Value
Numeric Reset? State of PM_Action
Name 17.B.ii 17.B.iii
Value 17.B.i
Ready_for_Cold_Standby
(and then later:
0xC Enter_Cold_Standby YES Unchanged [1]
Cold_Standby, see
Requirement 20.E.i)
Ready_for_Sleeping
(and then later:
0x8 Enter_Sleeping YES Unchanged [1]
Sleeping, see
Requirement 20.E.i)
Test_Detach [3]
[###TODO-Author: Reset to 0x0
0x3 check that we say YES Syncing (Stay_Attached)
[2]
that this does set
BLOCKED]
Force_Resync
[###TODO-Author: Reset to 0x0
0x2 check that we say YES Syncing (Stay_Attached)
[2]
that this does NOT
set Blocked]
Unchanged at
Attached 0x0
0x0 Stay_Attached No
(unchanged) (Stay_Attached)
[2]
1. The value of PM_Action is unchanged because the requested action will not be completed until
the Peripheral reacts to subsequent PHY_Inactivity according to Requirement 20.E.iii.
2. The value of PM_Action is reset to 0x0 (Stay_Attached) because the requested action is
complete.
3. PM_ACTION value 3 (Test_Detach is optional to implement, see ###XREF).
4. This PM_Action value is conditional to support. If the Peripheral does not implement the optional
Dormant state then the corresponding value cannot exist in the PM_Action field (see
Requirement 18 and also Section 5.2.3 Recommendation 1).
2376 18. {} If the Manager attempts to write a value of Enter_Dormant into the PM_Action field of a
2377 Peripheral that does not support Link State Dormant then the Peripheral shall set the value of
2378 PM_Action to Stay_Attached (0x0, see Table 17).
2379 Note: There is a general rule that the Peripheral chooses a substitute value when the Manager
2380 attempts to write an unsupported value, but this rule makes it clear exactly which substitue value is
2381 used in this case.
2382 19. {} When a Peripheral moves to Link State: Syncing as described in Requirement 10.C (Cold
2383 Start) or Requirement 12.C (Warm Start), it shall not start checking for the PHY_Inactivity
2384 condition described in the PHY-specific rule indicated in Table 16 until either:
2385 A. It has remained in Link State: Syncing for a time of Per_tPhy_Inactivity_Holdoff, or
2386 B. It has moved to Link State: Attached as described in Requirement 13.
2387 Note: This requirement applies only when first entering Link State: Syncing after a Cold Start or
2388 Warm Start, not after having previously been Attached.
2389 20. {} When a Peripheral in one of Link States: Syncing (see Requirement 19), Attached,
2390 Ready_for_Sleeping, Ready_for_Cold_Standby, or Dormant detects the PHY_Inactivity
2391 condition described in the PHY-specific rule indicated in Table 16, it shall do all of the following
2392 in this order:
2393 A. If the Peripheral is currently in Link State: Attached then
2394 i. Perform a Warm Reset (see Table 8), and then:
2395 B. Deactivate the Audio-mode PHY, and then:
2396 C. Activate the Link Control PHY, and then:
2397 D. Wait for the bus to be parked at Link Control Idle (DP=LC:0, DN=LC:0), and then:
2398 E. Perform the actions listed in Table 18 for the current value of PM_Action, which are 2 or 3 of
2399 the following actions, in this order:
2400 i. Change to a new Link State, and then:
2401 ii. Perform a Cold Reset (see Table 8), and then:
2402 iii. Change the value of PM_Action to be 0x0 (Stay_Attached).
2403 Note: Step 20.A performs the Warm Reset ONLY if the Peripheral was Attached when the
2404 (unexpected) PHY_Inactivity occurred. This is because the Peripheral will ALREADY have
2405 performed a Warm Reset when it reached any of the other Active states in this list.
2407 21. {} When a Peripheral is in Link State: Dormant and decodes a valid ExitDormant Command (see
2408 Section 9.2.6) it shall change to Link State: Syncing.
2409 (Note: see also Permission 7.)
2439 Permissions
2440 1. {} When a Peripheral is in one of Link States: Cold_Standby, Sleeping,
2441 Ready_for_Cold_Standby, Ready_for_Sleeping, or Dormant, it may remove power from parts
2442 of the Device provided that it retains the minimum functionality and state described in Table 19.
2443 Table 19 Power Saving in Peripheral Link States
Mandatory
State Name Minimum Functionality and Retained State
/ Optional?
Power off — —
Cold_Standby [1] Mandatory Detect Bus Reset (Requirement 6).
Detect Bus Reset (Requirement 6).
Detect Warm Start (Requirement 11).
Sleeping Mandatory
Retain SWI3S Register State.
Retain other state as defined in the device datasheet.
Detect Bus Reset (Requirement 6).
Ready_for_Cold_Standby [1] Mandatory
Detect PHY Inactivity (Requirement 20).
Detect Bus Reset (Requirement 6).
Detect PHY Inactivity (Requirement 20).
Ready_for_Sleeping Mandatory
Retain SWI3S Register State.
Retain other state as defined in the device datasheet.
Detect Bus Reset (Requirement 6).
Detect PHY Inactivity (Requirement 20).
Dormant Optional Detect ExitDormant Command (Requirement 21).
Retain SWI3S Register State.
Retain other state as defined in the device datasheet.
All Link Control and Command functionality and device
Syncing Mandatory
state.
All Link Control and Command functionality and device
Attached Mandatory
state.
2444 Note:
1. When a Peripheral that has removed power from registers in Link State: Cold_Standby or
Ready_for_Cold_Standby receives a Cold Start sequence (see Requirement 8) it will restore
power to registers before applying the Cold Reset caused by the Bus Reset (see Table 8).
2445 2. {} When a Peripheral is in Link State: Sleeping and the WakeReqEnable register field has the
2446 value 1, it may generate an LC_Request (see Requirement 24 or 25).
2447 Note: an LC_Request from Link State: Sleeping is sometimes described as a “WakeUp Request”.
2448 3. {} When a Peripheral is in Link State: Cold_Standby and is confident that there is no signaling on
2449 the bus associated with any of the Audio-mode PHYs implemented in that Peripheral, it may
2450 generate an LC_Request (see Requirement 24 or 25).
2451 Note: an LC_Request from state: Cold_Standby is sometimes described as a “Cold Boot Request”.
2452 4. {} When a Peripheral has generated a WakeUp Request according to Permission 2, but has
2453 remained in Link State: Sleeping without the Audio-mode PHY being reactivated, it may repeat
2454 the WakeUp Request for the same or different internal conditions a reasonable number of times.
2455 (See also: Recommendation 1.)
2456 5. {} When a Peripheral has generated a Cold Boot Request according to Permission 3, but has
2457 remained in Link State: Cold_Standby without an Audio-mode PHY being activated, it may
2458 repeat the Cold Boot Request for the same or different internal conditions a reasonable number of
2459 times. (See also: Recommendation 2.)
2460 6. {} When a Peripheral is in Link State: Syncing, and the Link traffic includes Payload Data in
2461 addition to the Control Data Stream, the Peripheral may do any of:
2462 A. Change to Link State: Attached as specified in Requirement 13, or
2463 B. Change to Link State: Attached after a longer time than the PHY-Specific requirement
2464 referenced by Requirement 13.A, or
2465 C. Fail to change to Attached.
2466 Note: i.e., some Peripherals will attach to the bus only when the traffic is Command-Only.
2467 7. {} When a Peripheral is in Link State: Dormant and the WakeReqEnable register field has the
2468 value 1, the Peripheral may change to Link State: Syncing as a result of an
2469 implementation-defined trigger condition.
2470 8. {} When a Peripheral is in Link State: Dormant it may deactivate some or all Error Counters (see
2471 Section 15.2.1 Permission ###XREF).
2472 Note: i.e., counting errors and setting the corresponding interrupt conditions is optional while in
2473 Link State: Dormant.
2474 9. {} When a Peripheral is in Link State: Ready_for_Sleeping and the WakeReqEnable register field
2475 has the value 1, the Peripheral may change to Link State: Syncing as a result of an
2476 implementation-defined trigger condition.
2477 10. {} When a Peripheral activates an Audio-mode PHY according to Requirement 10.B or 12.B, it
2478 may prevent its PLL/DLL clock recovery circuit reacting to the input until a time of
2479 Per_tPhy_Inactivity_HoldOff after the Phy activation edge described in Requirement 8.E or
2480 Requirement 11.B.
2481 11. {} When a Peripheral is in Link State: Attached it may change to Link State: Syncing for any
2482 Implementation-defined reason (e.g., a higher layer function in the Device has requested this).
2483
2484 ###TODO-Author: insert 4 new Permissions per Niel’s email to Audio-WG on 4 June 2024. (behavior
2485 relating to Dormant)
2486 Figure 60:
2487 RECO: After committing EnterDormant, the Host should NOT send any Commands to that Peripheral
2488 except Ping or ExitDormant until the Peripheral replies to a Ping.
2489
2490 Peripheral Behavior:
2491 While waiting in Dormant, what to do if:
2492 (A) the Peripheral loses CommandSync?
2493 (B) the Peripheral loses Row Sync?
2494 PROPOSAL: there are 4 permissions (with separate DRUIds and 4 boolean DisCo properties):
2495 (1) The Peripheral MAY reacquire Row/CommandSync (and increment the error counter) and remain in
2496 Dormant.
2497 (2) The Peripheral MAY reacquire Row/CommandSync (and increment the error counter) and treat this as
2498 an internal trigger for ExitDormant (subject to an the enable in the Register).
2499 (3) The Peripheral MAY reacquire Row/CommandSync (and increment the error counter) and treat this as
2500 an internal trigger for ExitDormant (NOT subject to the enable in the Register).
2501 (4) The Peripheral MAY remain in Dormant until it sees PHY_Inactivity (and hence changes to Sleeping).
2502 [this is essentially migrating to Ready_for_Sleeping]
2503
2504 Recommendations
2505 1. {} When a Peripheral has generated an LC_Request according to Permission 2, but has remained
2506 in Link State: Sleeping without the most recently used Audio-mode PHY being reactivated, the
2507 Peripheral should wait for a time of Per_tLC_ReqRepeat before repeating the LC_Request.
2508 2. {} When a Peripheral has generated an LC_Request according to Permission 3, but has remained
2509 in Link State: Cold_Standby without one of the Audio-mode PHYs being activated, the
2510 Peripheral should wait for a time of Per_tLC_ReqRepeat before repeating the LC_Request.
2511 3. {} When a Peripheral activates an Audio-mode PHY according to Requirement 10.B or 12.B, it
2512 should initialize any hysteresis-related state in the PHY such that any remaining period of
2513 receiving DP=LC:0 and DN=LC:0 is treated as an input of 0 using the selected Audio-mode PHY.
2514 Requirements
2515 1. {} A Manager controlling a Link shall be in one of the Link States shown in Table 20:
2516 Table 20 Manager Link States
Rules Describing Behavior in this
State Name PHY in use
State
Powered off None. —
Link Control PHY.
Parking the Bus in the Link
Control Idle condition prior to
Parking_Bus_LC Requirement 6.
entering the Standby_Bus_Idle
Link State.
This is usually the initial state.
Requirements 7, 8, 9, 10, 11.
Standby_Bus_Idle Link Control PHY.
Recommendation 4.
Requirements 12, 13, 14, 5, 15, 16.
Command_Only Audio-mode PHY. Permissions 2, 4, 5.
Recommendations 2, 3.
Requirements 12, 13, 14, 5, 15.
Payload Audio-mode PHY. Permissions 1, 3, 4, 5.
Recommendation 3.
Audio-mode PHY.
Transitioning from Audio-mode
PHY to Link Control PHY.
Parking_Bus_PHYn This is optionally the initial Requirement 5.
state for the special case
when a Manager Reset
occurs during Audio-mode
PHY operation.
2517 2. {} When the Manager generates or detects the Link Control signals described in this Section
2518 (5.2.3), it shall use the Link Control signaling levels described in Section 6.
2519 3. {} The Manager shall use values for the timing parameters named in this Section (5.2.3) that are
2520 between the lower and upper bounds in Table 21.
2521 Note: i.e., the Min and Max values in the table are the lower and upper bounds for the values in a
2522 Manager datasheet.
###DRAFT:
72.5 — 80 µs
Man_tWarmStart00
2524 4. {} After a Manager Reset (see Section 5.2.1 Requirement 4), a Manager shall do either:
2525 A. Start in Link State: Parking_Bus_PHYn with the previous Audio-mode PHY still active (see
2526 Requirement 5), or:
2527 B. Start in Link State: Parking_Bus_LC with its Link Control PHY activated (see
2528 Requirement 6).
2529 5. {} When the Manager is in Link State: Parking_Bus_PHYn, it shall do all of:
2530 A. Park the bus using the PHY-specific rule shown in Table 23, and then:
2531 B. Deactivate the Audio-mode PHY, and then:
2532 C. Activate the Link Control PHY, and then:
2533 D. Enter Link State: Parking_Bus_LC, and then:
2534 E. Follow Requirement 6.
2535 6. {} When the Manager is in Link State: Parking_Bus_LC, it shall do all of:
2536 A. Drive DP=LC:0 and DN=LC:0 for a time of Man_tParkBus_LC00, and then:
2537 B. Enter Link State: Standby_Bus_Idle, and then:
2538 C. Follow Requirement 7.
2539 7. {} While the Manager is in Link State: Standby_Bus_Idle, it shall do both:
2540 A. Drive a bus idle condition (DP=LC:weak0 and DN=LC:0) for any time duration, and then:
2541 B. Do one of:
2542 i. Generate a Cold Start sequence according to Requirement 9, or:
2543 ii. Generate a Warm Start sequence according to Requirement 10, or:
2544 iii. React to a Peripheral LC_Request according to Requirement 8.B.
2545 8. {} When the Manager is in Link State: Standby_Bus_Idle and the DP input changes to LC:1, the
2546 Manager shall do both:
2547 A. Detect the change on DP within a time of Man_tLC_ReqIn, and then:
2548 B. Immediately do one of:
2549 i. Generate a Cold Start sequence according to Requirement 9, or:
2550 ii. Generate a Warm Start sequence according to Requirement 10, or:
2551 iii. Generate an LC_Acknowledge sequence according to Requirement 11.
2552 9. {} When a Manager generates a Cold Start sequence (see waveform in informative Figure 42) it
2553 shall perform the following sequence of actions:
2554 A. Drive DP=LC:0 and DN=LC:0 for a time of Man_tReset00, and then:
2555 B. Drive DP=LC:1 and DN=LC:0 for a time of Man_tReset10, and then:
2556 Note: see also Recommendation 4.
2557 C. Drive DP=LC:0 and DN=LC:0 for a time of Man_tResetRecovery, and then:
2558 D. Drive 4 clock cycles on DP for times of Man_tClock1 and Man_tClock0, during which the
2559 Manager drives the following data values on DN with times of at least Man_tSetup before,
2560 and Man_tHold after, the DP falling edge:
2561 i. PhyNum[3] on DN during cycle #1, and then
2562 ii. PhyNum[2] on DN during cycle #2, and then
2563 iii. PhyNum[1] on DN during cycle #3, and then
2564 iv. PhyNum[0] on DN during cycle #4, and then
2565 E. Drive DP=LC:1 and DN=LC:0 for a time of Man_tClock1, and then:
2566 F. Drive DP=LC:0 and DN=LC:0 for a time of Man_tPhyStart, and then:
2567 G. Start generating signals using:
2568 i. The Audio-mode PHY that was identified by PhyNum in Step D, selected according to
2569 Table 22, and
2570 ii. The Clock Config and CDS transport parameters identified as the Safe-Lock Config by the
2571 PHY-specific rule in Table 23, and then:
2572 H. Enter Link State: Command_Only.
2573 Table 22 Selecting Audio-mode PHYs in Manager
PHY
PHY Section Containing
Short Notes
Number PHY-Specific Rules:
Name
0 Reserved The Manager never generates this PHY Number. —
1 FBCSE FBCSE PHY behavior is specified in Section 11.2. PHY1 and PHY2 use the
same electrical transceiver
2 FBCSE FBCSE PHY behavior is specified in Section 11.2. but with different timing rules.
3 DLV DLV PHY behavior is specified in Section 12.2. —
4 – 15 Reserved The Manager never generates this PHY Number. —
2575 10. {} When the Manager generates a Warm Start sequence (see waveform in informative Figure 43)
2576 it shall perform the following sequence of actions:
2577 A. Drive DP=LC:1 and DN=LC:0 for a time of Man_tWarmStart, and then:
2578 B. Drive DP=LC:0 and DN=LC:0 for a time of Man_tPhyStart, and then:
2579 C. Start generating signals using:
2580 i. The same Audio-mode PHY and Clock Config as before the Manager entered Link State:
2581 Standby_Bus_Idle, and
2582 ii. The Transport parameters for the Control Data Stream that were commited in Peripherals
2583 when the Manager entered Link State: Standby_Bus_Idle, and then:
2584 D. Enter Link State: Command_Only.
2585 11. {} When the Manager generates an LC_Acknowledge sequence (see waveform in informative
2586 Figure 44), it shall perform the following sequence of actions:
2587 A. Drive DP=LC:1 and DN=LC:0 for a time of Man_tLC_AckOut, and then:
2588 B. Drive DP=LC:0 and DN=LC:0, for a time of Man_tParkBus_LC00, and then:
2589 C. Remain in Link State: Standby_Bus_Idle (so return to generating a bus idle condition
2590 according to Requirement 7.A).
2591 12. {} When the Manager is in either of Link States: Command_Only or Payload, it shall generate
2592 Rows according to the Phy-specific rule(s) in Table 23.
2593 13. {} Before the Manager changes the Clock Config according to Requirement 14, it shall perform
2594 any pre-condition actions described by the Phy-specific rule(s) in Table 23.
2595 14. {} When the Manager is generating Rows according to Requirement 12, it shall only change the
2596 Clock Config (i.e., the generated Row Rate and Column Count) when this change is synchronous
2597 with the Commit Point of an SSCR Command addressed to all currently attached Peripherals that
2598 commits the changed values in all of:
2599 A. NumColumns (see ###XREF), and
2600 B. The RowRateRange field (see ###XREF), and
2601 C. The UnitIntervalRange field (see ###XREF), and
2602 15. {} When the Manager is in either of Link States: Command_Only or Payload, it shall generate a
2603 Control Data Stream, containing valid Command Transport Protocol and Commands according to
2604 the rules in Sections 7.2, 8.2, and 9.2.
2605 16. {} When the Manager is in Link State: Command_Only, it shall:
2606 A. Not generate any payload data, and
2607 B. Not send Commands to any Peripheral that causes that Peripheral to generate payload data.
2608 (See also Permission 1.)
2609 Permissions
2610 1. {} When the Manager is in Link State: Payload, it may:
2611 A. Generate payload data, and:
2612 B. Send Commands to any Peripheral that cause that Peripheral to generate payload data.
2613 2. {} When the Manager is in Link State: Command_Only, it may change to the Link State:
2614 Payload at any time (but see also Recommendation 2).
2615 3. {} When the Manager is in Link State: Payload it may change to the Link State: Command_Only
2616 at any time.
2617 4. {} When the Manager is in Link States: Command_Only or Payload it may change to the Link
2618 State: Parking_Bus_PHYn at any time (but see also Recommendation 3)
2619 5. {} When the Manager issues an SSCR Command to change the Clock Config according to
2620 Requirement 14, then it may commit a PM_Action of Stay_Attached for any Peripheral.
2621 (See also Recommendation 5.).
2622 Note: Some Peripherals will detach from the bus in response to some changes in Clock Config.
2623 Recommendations
2624 1. {} The Manager should not program a PM_Action of Enter_Dormant into a Peripheral that does
2625 not support Dormant behavior.
2626 Note: see Peripheral behavior in Table 17.
2627 2. {} When the Manager is in Link State: Command_Only it should change to Link State: Payload
2628 only after a Ping Command (see Section 9.2.8) has indicated that all expected Peripherals are
2629 attached.
2630 3. {} When the Manager is in Link States: Command_Only or Payload, it should change to Link
2631 State: Parking_Bus_PHYn only when this change is synchronous with a Commit Command
2632 addressed to all currently attached Peripherals that commits a PM_Action of either:
2633 A. Enter_Sleeping, or
2634 B. Enter_Cold_Standby.
2635 Note: The Manager might already have caused some Peripherals to become detached by earlier
2636 commiting a PM_Action of Enter_Sleeping or Enter_Cold_Standby.
2637 4. {} When the Manager generates a Cold Start sequence (see Requirement 9), it should drive the
2638 Reset10 condition in Step 9.B for a time of not longer than Man_tReset10Limit.
2639 Note: If the Manager were to drive the Reset10 condition for an extended period then this would
2640 prevent Peripherals from signaling an LC_Request to the Manager (see Section 5.2.2
2641 Permission 3).
2642 5. {} When the Manager issues an SSCR Command to change the Clock Config according to
2643 Requirement 14 and a Peripheral is known not to be able to remain synchronized throughout that
2644 change of Clock Config then it should also program the PM_Action in that Peripheral so that the
2645 same SSCR also commits a PM_Action of one of (Force_Resync, Enter_Dormant,
2646 Enter_Sleeping, or Enter_Cold_Standby).
2647 (See also Permission 5.)
2648
2649 6. {} When the ###TODO-Author: … describe Man_tActiveLinkMin …
2650 TEMP Notes from the parameter definition: Man_tActiveLinkMin is the minimum duration for which
2651 the Manager generates Rows before deactivating the Audio mode PHY (unless all expected
2652 Peripherals have responded to a Ping).
2653
2656 Requirements
2657 1. {} A SWI3S Device shall implement the Link Control PHY Behavior specified in Section 6.2.1.
2658 2. {} A SWI3S Device shall implement the Audio-mode PHY behavior described in 1 or more of the
2659 Audio-mode PHY Sections shown in Table 24 (see also Requirement 3).
2660 Table 24 Audio-mode PHYs
PHY PHY Section containing description Notes
Number Short Name and rules for the PHY
0 Reserved — —
1 FBCSE PHY1 and PHY2 share the same
Section 11 electrical transceiver, but have
2 FBCSE different timing parameters.
3 DLV Section 11.3 —
4–7 Reserved — —
8 ImpDef_A —
9 ImpDef_B Section ###XREF —
10 ImpDef_C —
11 – 15 Reserved — —
2661 3. {} If a SWI3S Device implements PHY1 then it shall also implement PHY2.
2662
2663
2664 ###TODO-Author: check for informative description of RowRateRange_CURR and
2665 UI_RateRange_CURR.
2666
2667
2668 4. {} A SWI3S Device shall interpret the value in the UI_RateRange_CURR Register field according
2669 to Table ###XREF.
2670
2671 5. {} A SWI3S Device shall interpret the value in the RowRateRange_CURR Register field
2672 according to Table 25. ###TODO-Author: colour the rows in this table. 8 colours.
2673 Table 25 Encoding of RowRateRange Field
Register Setting Row Rate (Rows/sec)
Register Value Octave Frequency
Min Max
(RowRateRange, Number Family [3] Nom
−15% +15%
see Table 153) Bits[6:3] Bits[2:0]
0x00 — — Not Known [1]
0x01 – 0x07 — — Reserved
0x08 1 0 31,340 [2] 32,768 37,638.2
0x09 1 1 37,500
0x0A 1 2 44,100
0x0B 1 3 46,875
0x0C 1 4 48,000
0x0D 1 5 50,000
0x0E 1 6 50,781.25
0x0F 1 7 60,000
0x10 2 0 65,536
0x11 2 1 75,000
0x12 2 2 88,200
0x13 2 3 93,750
0x14 2 4 96,000
0x15 2 5 100,000
0x16 2 6 101,562.5
0x17 2 7 120,000
0x18 3 0 131,072
0x19 3 1 150,000
0x1A 3 2 176,400
0x1B 3 3 187,500
0x1C 3 4 192,000
0x1D 3 5 200,000
0x1E 3 6 203,125
0x1F 3 7 240,000
0x20 4 0 262,144
0x21 4 1 300,000
0x22 4 2 352,800
0x23 4 3 375,000
0x24 4 4 384,000
0x25 4 5 400,000
0x26 4 6 406,250
2675
2676 Permissions
2677 1. A SWI3S Peripheral may implement any set of 0 to 32 Data Ports.
2678 Note: i.e., they might not start at DP0 and might not have consecutive numbers.
2679
2680
6.1.1 Overview
2682 Link Control (LC) signaling uses simple “CMOS” signaling, i.e., single-ended and full swing between the
2683 voltage supply rails. The two values that can be signaled are named LC:0 and LC:1. The Manager
2684 sometimes drives LC:0 with a weaker drive strength, named LC:weak0. The detailed electrical
2685 characteristics of LC inputs and outputs are specified in ###XREF-Table in normative Section ###XREF.
2686 To simplify the description, this Specification describes the Link Control signaling behavior as a separate
2687 PHY. However, Managers and Peripherals that include PHY1 and / or PHY2 (forwarded-bit-clock
2688 single-ended PHY, see Section 11) might share some I/O circuitry between that PHY and the Link Control
2689 PHY, e.g., using a subset of the transistors in a multi-finger FBCSE PHY transmitter to provide the LC_Tx
2690 behavior.
2691 The Link Control PHY comprises the Link Control transmitter (LC_Tx) and Link Control receiver
2692 (LC_Rx). The capabilities of the transmitters and receivers in each of Manager and Peripheral are different,
2693 as described in Section 6.1.2 and Section 6.1.3.
Vdd_LC_Tx Vdd_LC_Tx
LC:1 LC:1
DP
input Manager Manager
DP pin DN pin
LC:0
LC:weak0
LC:strong0 LC:0
2702 The LC_Tx in the Manager can drive each of the DP and DN signals either high (signal level LC:1) or low
2703 (LC:0). When the link is in the LC_Idle condition the DP signal is maintained by a weaker drive from the
2704 Manager (LC:weak0) because DP becomes a shared signal, which the Manager or any of the Peripherals
2705 can pull high to request that the Manager wakes up the link. The Manager has a strong driver for DP=LC:0
2706 to guarantee that it can force a Bus Reset condition even while a Peripheral tries to generate an
2707 LC_Request.
2708 The LC_Rx in the Manager monitors the DP signal to receive LC_Requests from Peripherals but ignores
2709 the DN signal.
Vdd_LC_Tx
DP Peripheral DN Peripheral
2712 input DP pin input DN pin
Figure 67 Link Control PHY in the Peripheral
2713 The LC_Tx in the Peripheral can drive only the DP signal, and only to a high level (LC:1) used for
2714 requesting that the Manager wakes the link from standby (see Section 5.1.7.4). The Peripheral output
2715 strength is constrained in order to guarantee that a Manager can overdrive it to force a Bus Reset condition
2716 if necessary. Peripherals that do not have LC_Request functionality do not have an LC_Tx.
2717 The LC_Rx in a Peripheral monitors both DP and DN. This receiver is always active, and its outputs are
2718 used by both the Peripheral Link State Machine (see Section 5.1.7) and the Peripheral Bus Reset State
2719 Machine (see Section 5.1.6).
2736 output might have a dedicated table. Impedance specs for LC output need to cover Man_weak0 <
2737 Per_medium1 < Man_strong0. And also maybe a level for Man_medium0.
2738 Man DN for LC: strong0, medium1.
2739 Man DP for LC: ???strong1, strong0, medium0 (because of crosstalk), medium1, weak0.
2740 Per DP for LC: medium1 (> Man weak0).
2747 Requirements
2748 1. {} [LC PHY] The Link Control Interface in a Device shall support at least one of the nominal VDD
2749 values shown in Table 26.
2750 Table 26 [LC PHY] Supply Voltage for Link Control Interface
2751
2752 2. {} [LC PHY] The input and output voltage parameters for the Link Control Phy shall be within the
2753 ranges shown in Table 27.
2754 Table 27 [LC PHY] Input and Output Voltage Parameters
2755 Note:
1. In the LC_PHY in Peripherals, the only output capability is optional VOH on the DP pin.
2756 3. {} [LC PHY] The ###TODO-Author-wording LC PHY output impedance shall be in accordance
2757 with Table 28.
2758 Table 28 [LC PHY] Output Impedance
Manager DP Logic 0
during Cold Reset (see ZOUT_LC_Strong0_TypeA IOL = +100 µA 16.0 — 600 Ω
Permission ###XREF)
Manager DP Logic 0
during Cold Reset (see ZOUT_LC_Strong0_TypeB IOL = +4000 µA 16.0 44.5 53.4 Ω
Permission ###XREF)
Weak_Drive_Boost = 0 [2]
5.0 7.0 10.0 kΩ
IOL = +30 µA
Manager : DP Logic 0
ZOUT_LC_Weak0
while bus held in Standby (Optional)
Weak_Drive_Boost = 1 [2] 2.5 3.5 5.0 kΩ
IOL = +30 µA
2759 Note:
1. A Peripheral LC PHY drives DP only if the Peripheral generates the optional LC_Requests (see
Section 5.2.2 Requirement 24.C and Requirement 25.C).
2. In a Manager that implements PHY1 and PHY2 (FBCSE) the Weak_Drive_Strength impedances
also apply to the FBCSE Bus Keeper (see Section ###XREF Requirement ###XREF).
2760
2761 Permissions
2762 1. {} [LC PHY] The ###TODO-Author-wording LC PHY output impedance for the Manager DP Pin
2763 may use the Row labelled # Table 28, provided that the Manager will only be used in systems that
2764 either:
2765 A. Do not use PHY3 (DLV), or:
2766 B. Have sufficiently low crosstalk between the differential pair that the Manager outputs on DP
2767 and DN will not cause false signaling on DN and DP respectively.
2768
2769 Requirements
2770 1. {} The total pin capacitance presented by the combination of all PHYs within a SWI3S Device
2771 shall meet the limits shown in Table 29.
2772 Table 29 [Device] Pin Capacitance
2773 2. {} The total leakage current due to all PHYs within a SWI3S Device shall meet the limits shown in
2774 Table 30.
2775 Table 30 [Device] Pin Leakage Current
Measured single-ended on
IHIGH_Leak_Man — — +7 µA
Manager device pin to VDD
Leakage Current Manager
Measured single-ended on
ILOW_Leak_Man −7 — — µA
Manager device pin to GND
Measured single-ended on
IHIGH_Leak_Per — — +6 µA
Peripheral device pin to VDD
Leakage Current Peripheral
(see Recommendation 1)
Recommended Measured single-ended on
— — +1 µA
IHIGH_Leak_Per Peripheral device pin to VDD
Measured single-ended on
ILOW_Leak_Per −6 — — µA
Peripheral device pin to GND
Leakage Current Peripheral
(see Recommendation 1)
Recommended Measured single-ended on
− — — µA
ILOW_Leak_Per Peripheral device pin to GND
2776 Recommendations
2777 1. {} A SWI3S Peripheral should meet the tighter limits on pin leakage current that are labeled as
2778 “Recommended” in Table 30.
2779 Requirements
2780
2781
2782 1. {} A system should use electrical parameters within the range shown in Table 31.
2783 Table 31 Recommended System Parameters [LC PHY]
Recommended total
bus capacitance seen
by a device including CBUS_DP
— — — 200 pF
the total pin CBUS_DN
capacitance of the
devices on the bus.
2784
2785
2786 2. {} ###.
2787
2788
SWI3S Registers
Peripheral Command
Non-SWI3S Registers (local)
Model for Registers Non-SWI3S Registers (remote)
Transfers
Command Transport Phases
Protocol Elements of Phases
Bytes
E.g.,
Impedance,
PHY, e.g., DLV Signaling Levels,
Signal Timing.
2793
Figure 68 Layer Stack: Control Data Stream
2811 • Control bytes, where certain special values are allowed (encoded as 8b/10b K-codes), as
2812 “commas” in the stream of encoded symbols. The Command Transport Protocol Layer uses one of
2813 these K-codes (K.28.7) as a Sync Marker to align the Peripheral receivers with the Manager.
7.1.1.2 Synchronization
2821 The Control Data Stream decoder in the Peripheral needs to acquire synchronization with the sequence of
2822 symbols that is transmitted by the Manager. The encoding described in Section 7.1.3 provides some control
2823 byte symbols with bit patterns that will not occur anywhere else (at any bit alignment) within any
2824 combination of symbols (or idle bit periods) used by the Command Transport Protocol Layer.
2825 The Command Transport Protocol Layer uses one of these symbols (K.28.7) for its Start of Phase Marker,
2826 and this is the only point in the bitstream where there will be a sequence of either two 1s followed by five
2827 0s, or two 0s followed by five 1s. Thus, the decoder can unambiguously determine both the presence and
2828 bit alignment of the K.28.7 symbol, and hence of the following symbols that make up a Phase at the
2829 Command Transport Protocol Layer. The Peripheral continuously searches for this symbol at every possibly
2830 bit alignment so that it will always regain synchronization with the Command Transport Protocol at the
2831 earliest possible opportunity.
2832 Start of Phase Markers are described in Section 8.1.2.1.
The first column allocated to the CDS bit. The range is limited
depending on the selected PHY.
Note:
For some PHYs (e.g., PHY1 and PHY2, FBCSE) this value
is fixed at 0.
CDS_HorizontalStart[4:0] 0–31 Note:
For some PHYs (e.g., PHY3, DLV, see Section 12.1.6.1) the
Manager will additionally transmit the CDS bit value in all
columns after the end of the Sync1 symbols up to the
programmed HStart, so effectively expand the Width to the
left of CDS_HStart.
0–7 The number of consecutive UIs allocated to the CDS bit. This
CDS_BitWidth[2:0]
(width of 1–8) value is excess-1 encoded.
CDS_GuardPolarity 0–1 The value transmitted during the Guard Bit, when this is enabled.
2909 When the Manager next transmits symbols, the values of both its RD and the RD in the Peripheral
2910 decoder(s) are again re-initialized to the value after the most recent symbol that was transmitted by the
2911 Manager.
2912 In the Command Transport Protocol Phases described in Section 8, when the Manager next transmits after
2913 receiving information from a Peripheral, it will be doing one of:
2914 • Starting a new Phase with an SPM that will forcably re-initialize the RD in all Peripheral
2915 receivers.
2916 • Driving a Manager Response to a Commit, ReadSetup, or ReadData Phase, all of which use HD10
2917 tokens which are encoded and decoded to the same symbols, independent of current RD.
2978 Note:
2979 The binary byte value and encoded bit pattern in Table 34 are shown using green- and
2980 orange-colored text to emphasize the ordering of the fragments resulting from each of the 5b/6b-
2981 and 3b/4b-encoding steps.
2989 valid 10-bit patterns that correspond to Robust Tokens 0 and 15, and returns an indication of whichever has
2990 the closest Hamming Distance (biassed towards Robust Token Number 0). If the received symbol was not
2991 an exact match then the decoder will also indicate an error as described in Section 7.1.5.3.
3064 0101 abcdei fghj abcdei fghj abcdei fghj abcdei fghj
3065 Note: idle bit sequences are always [01]^n, independently of initial RD, and the RD remains unchanged.
3066
3069 Requirements
3070 1. {} Each Device (Manager or Peripheral) shall have one 8b/10b-Encoder.
3071 2. {} Each Device (Manager or Peripheral) shall have a ###TODO-Author complete this
3072 3. {} The 8b/10b-Encoder shall maintain a record of the Running Disparity with values chosen from
3073 {+1, -1}.
3074 Note: Running Disparity is abbreviated to “RD” in the following rules in this Section.
3075
3076 4. {} In the Manager: After a Cold Reset, the Manager shall initialize its RD to −1.
3077 Note: The Peripheral does not need a reset value for its RD because the Peripheral will use the RD
3078 from the Decoder, which will have been initialized by the SPM received from the Manager (see
3079 Section 7.2.2 Requirement 5A and 6A).
3080 5. {} In the Manager: At the beginning of each sequence of one or more symbols generated by the
3081 8b/10b-Encoder, the Encoder shall initialize its RD to the value of the RD in the Manager’s
3082 Decoder at the end of the most recently received 8b/10b symbol from a Peripheral.
3083 Note: Calibration Packets are not 8b/10b symbols, so they do not affect the RD in the Manager.
3084 6. {} In a Peripheral: At the beginning of each sequence of one or more symbols generated by the
3085 8b/10b-Encoder, the Encoder shall initialize its RD to the value of the RD in that Peripheral’s
3086 Decoder at the end of the most recently received 8b/10b symbol from the Manager.
3087 Note: Calibration Packets and Protocol Spacers are not 8b/10b symbols, so they do not affect the
3088 RD in the Peripheral.
3089 7. {} The 8b/10b Encoder shall produce a 10-bit symbol for a D-code by:
3090 A. Encoding the 5 LSbs of the input byte as a 6-bit codeword according to Table 35 and updating
3091 the RD according to Table 37, and then
3092 B. Encoding the 3 MSbs of the input byte as a 4-bit codeword according to Table 36 (using the
3093 RD after it was updated in Step 7A) and updating the RD according to Table 37.
3094 Table 35 8b/10b 6-bit Codewords for D-codes
3096 Note:
3097 The choice between 4-bit codewords is normally a function of the 3-bit value to be encoded plus
3098 the current RD. In the special case of D.x.7, the choice of 4-bit codeword is also a function of the
3099 preceding 6-bit codeword (i.e., the value of ‘x’).
3100 The 3b/4b encodings used for D.x.7 when x={17,18,20} with RD=-1, and when x={11,13,14} with
3101 RD=+1 are sometimes referred to as the “alternate encodings”, and are defined in this way so that
3102 the complete D-code symbols do not accidentally duplicate the unique bit pattern found in K-codes
3103 used for synchronization (see Table 33). These cells are highlighted in pink in Table 36.
-1 +2 +1
-1 0 -1
+1 0 +1
+1 -2 -1
3105 8. {} The 8b/10b encoder shall produce a 10-bit symbol for a K-code by:
3106 A. Encoding the 5 LSbs of the input byte as a 6-bit value according to Table 38 and updating the
3107 RD according to Table 37, and then:
3108 B. Encoding the 3 MSbs of the input byte as a 4-bit value according to Table 39 (using the RD
3109 after it was updated in Step 8A) and updating the RD according to Table 37.
3110 Table 38 8b/10b 6-bit Codewords for K-codes
3111 Note: The 6-bit and 4-bit codewords for K-codes highlighted in yellow in Table 38 and Table 39 are
3112 different to those used for the corresponding D-codes (in Table 35 and Table 36).
K.x.7 for x =
K.x.7 111 0111 1000
{23, 27, 28, 29, 30}
3114 9. {} When the Command Transport Protocol Engine instructs the 8b/10b Encoder to transport a
3115 Robust Token, the Encoder shall use the 8b/10b symbol assigned to that Robust Token Number
3116 according to Table 40.
Table 40 Robust Token Values
0 D.05.1 37 0x25
2 D.11.2 75 0x4B
4 D.21.2 85 0x55
5 D.10.1 42 0x2A
7 D.18.2 82 0x52
9 D.22.1 54 0x36
12 D.12.2 76 0x4C
14 D.25.1 57 0x39
3117 Note:
3118 The two values used for “HD10 Robust Tokens” are Robust Token Numbers 0 and 15, which are
3119 highlighted with green color in Table 40.
3120 Note:
3121 The 10-bit codewords used for the Robust Tokens are not sensitive to (and do not change) the
3122 Running Disparity, thus they can be correctly decoded even when the Decoder starts with the
3123 wrong value of RD. The codewords are shown in informative Table 34.
3127 Requirements
3128 1. {} The Manager shall have one 8b/10b-Decoder.
3129 2. {} The Peripheral shall behave as if it has two 8b/10b-Decoders, co-ordinated by the
3130 Phase-decoding rules in Section 8.2.1:
3131 A. Decoder #1 for the Phase-in-Progress.
3132 B. Decoder #2: for Header Detection.
3133 Note: Decoder #2 is used by the rules that search for potential new Headers even while in the
3134 middle of an existing Phase. See Section 8.2.1 Requirements #, #, and #.
3135 Note: Decoding an error-free Header is independent of RD, thus an implementation of Decoder #2
3136 could use the RD state from Decoder #1.
3137 Note: An implementation of the two decoders might save gates by multiplexing a single copy of the
3138 combinatorial logic used to perform the 5b/6b and 3b/4b decoding.
3139 3. {} An 8b/10b-Decoder shall maintain a record of the Running Disparity (abbreviated “RD” in the
3140 remainder of this Section) in received symbols with values chosen from {+1, -1}.
3141 Note: Typical implementations use the same 1 flip-flop for both Decoder RD and Encoder RD (see
3142 Section 7.2.1 Requirement 3).
3143 Note: Running Disparity is abbreviated to “RD” in the following rules in this Section.
3144 4. {} When the Peripheral is not driving CDS bits, it shall search for both of the 10-bit patterns that
3145 correspond to the K.28.7 sync marker at every bit boundary in the contiguous received Control
3146 Data Stream.
3147 Note: i.e., the search does not examine bits driven by this Peripheral, and does not span across
3148 CDS bits received either side of a symbol driven by this Peripheral.
3149 5. {} When the 8b/10b-Decoder in a Peripheral detects the bit pattern “0011111000” (K.28.7) at any
3150 bit alignment within the contiguous received Control Data Stream, it shall:
3151 A. Set the RD to -1.
3152 B. Treat the next bit as the first bit of a 6-bit codeword to be decoded according to
3153 Requirement 9A.
3154 C. Signal to the Command Transport Protocol Decoder that this is the starting point of a possible
3155 Phase Header (see Section 8.2.1 Requirement 5).
3156 Note: “at any bit alignment” in this Requirement includes starting at a bit that was part way through
3157 another valid SPM pattern.
3158 6. {} When the 8b/10b-Decoder in a Peripheral detects the bit pattern “1100000111” (K.28.7) at any
3159 bit alignment within the contiguous received Control Data Stream, it shall:
3160 A. Set the RD to +1.
3161 B. Treat the next bit as the first bit of a 6-bit codeword to be decoded according to
3162 Requirement 9A.
3163 C. Signal to the Command Transport Protocol Decoder that this is the starting point of a possible
3164 Phase Header (see Section 8.2.1 Requirement 5).
3165 Note: “at any bit alignment” in this Requirement includes starting at a bit that was part way through
3166 another valid SPM pattern.
3167 7. {} When the Command Transport Protocol Decoder State Machine (see ###XREF) in a Peripheral
3168 is not in state Idle, the 8b/10b-Decoder shall:
3169 A. Count received bits modulo 10 to maintain alignment with symbols.
3170 B. If the Command Transport Protocol Decoder indicates that the current symbol is generated by
3171 the Manager then decode the symbol and update its RD according to Requirement 9.
3172 Note: See also: Recommendation 1.
3173 8. {} When the Command Transport Protocol Decoder State Machine (see ###XREF) in a Manager
3174 is not in state Idle, the 8b/10b-Decoder shall:
3175 A. Count received bits modulo 10 to maintain alignment with symbols.
3176 B. If the Command Transport Protocol Decoder indicates that the current symbol is generated by
3177 a Peripheral then decode the symbol and update its RD according to Requirement 9.
3178 9. {} When the Command Transport Protocol Decoder (see ###XREF) indicates that the current
3179 symbol is to be decoded, the 8b/10b-Decoder shall:
3180 A. Decode the first 6 bits received (and the current RD) to either D.x or K.x according to
3181 Table 35 and Table 38 and update the RD from the 6-bit value according to Table 41, and
3182 then:
3183 B. Decode the next 4 bits received (and the RD after it was updated in step 9A) to either D.x.y or
3184 K.x.y according to Table 36 and Table 39 and update the RD from the 4-bit value according to
3185 Table 41 and then:
3186 C. Pass the decoded D.x.y or K.x.y symbol to the Command Transport Protocol Decoder, along
3187 with any error conditions detected (see Requirements 10, 11, and 12).
3188 Table 41 Running Disparity in 8b/10b Decoder
-1 +4, +6 +1 Yes
-1 +2 +1 No
-1 0 -1 No
+1 0 +1 No
+1 -2 -1 No
+1 -4, -6 -1 Yes
3189 Note: The rows highlighted in color in Table 41 are a result of decoding invalid inputs (see the error
3190 in Requirement 10.C).
3191 10. {} When the Command Transport Protocol Decoder (see ###XREF) indicates that the current
3192 symbol is to be decoded, the 8b/10b-Decoder shall indicate an error condition of “Bad 8b/10b
3193 Symbol Transport Error” (see Table 163) if it detects any of the following conditions:
3194 A. The 5b/6b-decoding step in Requirement 9A encounters a codeword that is not listed in either
3195 Table 35 or Table 38, or:
3196 B. The 3b/4b-decoding step in Requirement 9B encounters a codeword that is not listed in either
3197 Table 36 or Table 39, or:
3198 C. Either of the decoding steps in Requirements 9A or 9B encounters a codeword that would
3199 cause a Running Disparity Overflow as indicated in Table 41, or:
3200 D. The combination of decoding steps in Requirements 9A and 9B does not correspond to a valid
3201 D.x.y or K.x.y symbol, or:
3202 E. The combination of decoding steps in Requirements 9A and 9B produces a K-code that is not
3203 K.28.7.
3204 Note: it is possible for a single 10-bit received codeword to trigger more than 1 of the error
3205 conditions described in 10A through 10E. The error counters (see Table 163) might count this as
3206 either 1 or more errors.
3207 11. {} When the Command Transport Protocol Decoder indicates that it is expecting a Robust Token,
3208 the 8b/10b-Decoder shall indicate an error condition of “Bad Robust Token Transport Error”
3209 (see Table 163) if it detects the following condition:
3210 A. The combination of decoding steps in Requirements 9A and 9B does not produce a D-code
3211 that is one of the 16 D-codes listed in Table 40.
3212 12. {} When the Command Transport Protocol Decoder indicates that it is expecting an HD10 Robust
3213 Token, the 8b/10b-Decoder shall indicate an error condition of
3214 “Bad HD10 Token Transport Error” (see Table 163) if it detects any of the following
3215 conditions:
3216 A. The combination of decoding steps in Requirements 9A and 9B does not produce a D-code
3217 that is one D.05.1 or D.26.6 (i.e., Robust Token Number 0 or 15 in Table 40).
3218 13. {} When the Command Transport Protocol Decoder indicates that it is expecting an HD10 Robust
3219 Token, the 8b/10b-Decoder shall evaluate the Hamming Distance between the received 10-bit
3220 symbol and the bit pattern “1010011001” (a correctly encoded D.05.1), and choose one of the
3221 following two values for the decoded output in Requirement 9C:
3222 A. D.05.1 (Robust Token 0), if the 10-bit symbol matches 5 or more of the bits in the pattern for
3223 D.05.1, or
3224 B. D.26.6 (Robust Token 15), if the 10-bit symbol matches 4 or fewer of the bits in the pattern
3225 for D.05.1.
3226 ###TODO-author: check that we have a normative REQ for incrementing the Bad_HD10 error
3227 counter.
3228 Recommendations
3229 1. {} When the ###TODO-Author:rephrase this: Command Transport Protocol Decoder State
3230 Machine (see ###XREF) in a Peripheral is in state Idle, the 8b/10b-Decoder should ignore
3231 received bits other than attempting to detect the K.28.7 symbol described in
3232 Requirements 4, 5 and 6.
3233
3234 Requirements
3235 1. {} When the Manager Command Interpreter FSM is in state MCI:Idle the Manager shall generate a
3236 CDS Idle pattern, which consists of pairs of CDS bits with values of 0 and then 1.
3237 ###TODO-Author: rephrase “… MCI:Idle” because this FSM does not exist: it was not needed for
3238 the Manager rules.
3239 2. {} The bits in the CDS Idle pattern shall be encoded with the PHY-specific encoding, e.g., NRZS
3240 for PHY1 & PHY2 (FBCSE PHY).
3241 ###TODO-Author: add a table defining the encodings and including XREF links. DLV is None.
3242 FBCSE is NRZS from previous UI (not previous CDS bit).
3243
3254 Requirements
3255 1. {} The Control Data Stream shall transport 1 bit per Row.
3256 2. {} The direction (transmit or receive) of the CDS bit shall be determined by the Command
3257 Transport Protocol (see Section 8.2.1).
3258 3. …###TODO-Author: write some simple rules to explain this transport. These might be a subset of
3259 what will be written for the Data Port in v1.1. As much as possible, use simple pointers to the CDS
3260 Registers Fields rather than writing more explicit rules. Differences that apply to the CDS:
3261 [HStart is a function of the current PHY: fixed at 0 in PHY1/2, programmable in PHY3]. Check
3262 whether REQ_202 through REQ_204 are the right thing for this.
3263 4. The CDS transport parameters shall have Cold Start values for:
3264 A. PHY-independent parameters according to Table 42, and
3265 B. PHY-dependent parameters according to one of:
3266 i. Table 43 when using PHY1 (FBCSE-zero-handover), or
3267 ii. Table 44 when using PHY2 (FBCSE-scheduled-handover), or
3268 iii. Table 45 when using PHY3 (DLV).
3269 5. The Manager shall program CDS transport parameters to be within the valid range shown for:
3270 A. PHY-independent parameters according to Table 42, and
3271 B. PHY-dependent parameters according to one of:
3272 i. Table 43 when using PHY1 (FBCSE-zero-handover), or
3273 ii. Table 44 when using PHY2 (FBCSE-scheduled-handover), or
3274 iii. Table 45 when using PHY3 (DLV).
3275 Table 42 Transport Parameters for Control Data Stream (PHY-independent)
3276 Table 43 Transport Parameters for Control Data Stream (PHY1, FBCSE-zero-handover
3277 PHY)
3280 Table 45 Transport Parameters for Control Data Stream (PHY3, DLV)
SWI3S Registers
Peripheral Command
Non-SWI3S Registers (local)
Model for Registers Non-SWI3S Registers (remote)
Transfers
Command Transport Phases
Protocol Elements of Phases
Bytes
E.g.,
Impedance,
PHY, e.g., DLV Signaling Levels,
Signal Timing.
3285
Figure 69 Layer Stack: Command Transport Protocol
GetStatus Transfer
Announce Transfer
Read Transfer
Transfers Write Transfer
Commit Transfer
Calibrate_PHY Transfer
GetStatus Phase
Announce Phase
ReadSetup Phase, ReadData Phase
Phases Write Phase
Commit Phase
Calibrate_PHY Phase
Start of Phase Marker
Header
Elements of Manager Packet, Peripheral Response
Phases Peripheral Packet, Manager Response
PHY_Calibration Packet
Peripheral Calibration Result
Start of Phase Marker
Robust Tokens
HD10 Robust Tokens
Bytes Normal Data Bytes
<No_Response>
30-bit PHY_Calibration Blocks
1x Protocol Spacer
10-bit sequences within DLV Calibration Packets
3321 1x No Response (all 1s)
8.1.1.2 Phases
3322 Phases are a structured sequence of bytes that follow a general format shown in Figure 72. Some of the
3323 parts of this generic phase structure are not present in particular types of Phase or are conditional upon the
3324 contents of earlier parts of the Phase such as the Peripheral Response. In the special case of CalibratePhy
3325 Phases, the Peripheral Packet is replaced by a Calibration Packet, which contains a mix of bits driven by
3326 the Peripheral and by the Manager. The detailed structures for each type of Phase are described in
3327 Section 8.1.2.
3328 Note:
3329 The color coding in this figure and the other more detailed figures within this Section is:
3330 The pink or blue colored Command Transport Protocol elements are transmitted by the Manager.
3331 The grey and white striped protocol spacer is an idle period driven by the Manager to allow time for
3332 Manager, peripheral, or both to react to the preceding element.
3333 The yellow or orange colored Command Transport Protocol elements are transmitted by a
3334 Peripheral.
3335 In the special case of the Calibration Packet, the yellow parts represent bits transmitted by a
3336 Peripheral and the purple parts represent bits transmitted by the Manager.
3338 All Phases except for the Announce Phase include the opportunity for a Peripheral Response, which
3339 indicates how the Peripheral treated that Phase (see Section 8.1.2.4).
3340 The components of the Phase use different methods to facilitate detecting the effects of bit errors that
3341 occurred when transporting the Control Data Stream (i.e., errors before 8b/10b decoding):
3342 • The Phase Header, Peripheral Response, and Peripheral Calibration Result use Robust Tokens
3343 (these parts of the Phase are illustrated in the figure with a second, bold, rectangle around the
3344 name).
3345 • The Manager Response uses HD10 Robust Tokens, where the Peripheral can perform some error
3346 correction.
3347 • The Manager Packet and Peripheral Packet use normal data bytes and include a 16-bit CRC.
3348 • The Calibration Packet uses pairs of complementary bit values for the value reflected from
3349 Manager to Peripheral, but this is not primarily used for error detection (see Section ###XREF).
3350 A Phase is an indivisible object in the Command Transport Protocol: the elements that make up the Phase
3351 are never separated either by any other bytes or by any idle bits in the Control Data Stream.
3352 The Manager orchestrates the sequence of Phases in the Command Transport Protocol.
3353 The Phases used to construct each type of Transfer are shown in Table 47 in Section 8.1.1.3.
8.1.1.3 Transfers
3361 A Transfer is the data communication mechanism in the Command Transport Protocol for moving data
3362 between the Manager and Peripheral(s). Each Transfer is comprised of 1 Phase except for a Read Transfer,
3363 which can be split over multiple Phases (see more detailed description in Section 8.1.8.1).
3364 All types of Transfer identify the Command by using a Command Opcode in the first byte of the Manager
3365 Packet. Most Transfers include further Command Info bytes in the remainder of the Manager Packet that
3366 refine the Command (e.g., a register address or a byte count).
3367 Table 47 is a summary of all of the types of Transfer.
Selection Command(s)
Phase
Method that use this
Transfer Structure
(see Transfer Description
Name (and link to
Section (see
Section)
8.1.1.5) Section 9)
Selection Command(s)
Phase
Method that use this
Transfer Structure
(see Transfer Description
Name (and link to
Section (see
Section)
8.1.1.5) Section 9)
8.1.1.4 Commands
3369 A Command is the operation conveyed by the Command Transport Protocol. It describes an action to be
3370 performed in the Peripheral, including parameters and then a result. Commands can be categorized as:
3371 • Basic operations for link status and control.
3372 • Read and write transactions for accessing address-mapped registers, which might map onto
3373 functional requests (e.g., reset, get, or set).
3374 • Synchronization operations for orchestrating simultaneous behavior in multiple Peripherals and/or
3375 aligned to payload streams.
3376 • Calibration operations for maintaining the correct internal adjustment of time delays
3377 (PHY-specific).
3378 Commands are described in Section 9 and the Peripheral Command Model in Section 9.1.2.
3438 The Peripheral Command Model and local and remote registers are illustrated in Figure 114 in
3439 Section 9.1.2.
ReadSetup Phase #1 ReadSetup Phase #2 ReadSetup Phase #3 ReadData Phase #1 ReadData Phase #2
One Peripheral One Peripheral fails to One Peripheral defers One Peripheral One Peripheral fails
produces data produce data producing data until later produces data to produce data or
defers data until later
Start of Phase Marker Start of Phase Marker Start of Phase Marker Start of Phase Marker Start of Phase Marker
Phase Header Phase Header Phase Header Phase Header Phase Header
Protocol Spacer
Manager Response
Peripheral Support for Calibration Phase is Conditional
on which PHYs are implemented (e.g., PHY#3, DLV)
Calibration Packet
Protocol Spacer
Peripheral Cal Result
3474
Figure 73 Phase Patterns
PhaseID: ...
Device Mask_H
Device Mask_M
Device Mask_L
Packet_Length_H
Packet_Length_L
3488
Figure 75 Phase Header
3489 PhaseID: 1 Robust Token that identifies the type of Phase (and hence the type of Transfer). Table 47
3490 summarizes how the various types of Phase are used for the Transfers for each Command.
3491 Device_Mask: 3 Robust Tokens that identify the set of Peripherals that is targeted by this Phase. Each part
3492 of the Device Mask is derived from 4 bits of the Robust Token Number (see Table 63), and the 3 parts are
3493 combined to form a 12-bit mask (most significant 4 bits from the first Robust Token, next 4 bits from the
3494 second token, and the least significant 4 bits from the third Robust Token). Each bit in this mask
3495 corresponds to one Peripheral, with a bit set to 1 indicating that the corresponding Peripheral is included in
3496 the set that is addressed by this Command.
3497 Note:
3498 The Device Mask for Write, ReadSetup, ReadData, and CalibratePhy Phases always selects
3499 exactly 1 Device.
3500 Packet_Length: 2 Robust Tokens which describe the length of the following Manager Packet (excluding
3501 the Manager_CRC bytes). Each half of the Packet Body Length is derived from the 4 bits of the Robust
3502 Token Number (see Table 63), and the two halves are combined to form an 8-bit count (most significant
3503 4 bits from the first Robust Token, least significant 4 bits from the second Robust Token).
3504 Note:
3505 Packet_Length==0 indicates that there is no Manager Packet in this Phase (e.g., in ReadData
3506 Phases), and hence also no Manager_CRC.
WRITE_FAILED
Peripheral: No Response COMMAND_ERROR
REMOTE_WRITE_BUFFERED
PROTOCOL_ERROR
READ_DATA_NOW
CALIBRATE_NOW
COMMIT_READY
COMMIT_NOT_READY
3549
Figure 77 Peripheral Responses
Peripheral Data
...
...
...
Peripheral_CRC16_H
Peripheral_CRC16_L
3584
Figure 80 Peripheral Packet
CANCEL_COMMIT READ_DATA_ERROR
3600
Figure 81 Manager Responses
Protocol Spacer
3609
Figure 82 Protocol Spacer
0 RR 0 RR 0 RR 0
Calibration Packet
RR 0 RR 0 RR 0 R
Length
R 0 RR 0 RR 0 RR
...
Total of (N + 1) blocks
of 3 x10 bits
...
3617
Figure 83 Calibration Packet
3618 Note:
3619 This figure illustrates only the CDS bits: on the bus these are spread out to 1 bit per Row, and
3620 typically separated by many payload data bits.
PHY_CAL_GOOD
PHY_CAL_FAILED
TRANSPORT_ERROR
3625
Figure 84 Peripheral Calibration Results
3626 ###TODO-Author: maybe move this table to the Calibration Command in Section 9.2.10.
3628
PHASE NAME
Protocol Spacer Send Protocol Spacer Skip over Protocol Spacer to continuation
Peripheral to Manager
Get
Peripheral behavior Peripheral behavior
Peripheral Byte Send Peripheral Packet:
Peripheral Packet & Read data & CRC during this phase after this phase
Peripheral CRC Byte CRC
Processing step Processing step
Get Send Peripheral Response:
Peripheral Response RESPONSE_NAME
Peripheral Response
Decision Decision
Peripheral Response
Get 12 x
Peripheral Response
Peripheral Response
Peripheral Response End of Phase End of Command
Peripheral PingInfo[3..0]
Get 12 x Send Peripheral Info:
Peripheral PingInfo[3..0] PING_INFO Multi-way branch based on inputs
Peripheral Info
Peripheral PingInfo[3..0]
PhaseID
Peripheral Cal Result GetCalibration Result Send Calibration Result Command
& Address
Manager Flow
(common to all Phases)
(runs continuously)
START
Yes
Send:
SPM
Send:
Phase Header
(6 robust tokens)
PhaseID
Get Get
PhaseID Peripheral Response Peripheral Response
No No
Peripheral Peripheral
Response == Yes Response == Yes
End of Phase End of Phase
TRANSPORT_ERROR? PROTOCOL_ERROR?
No No
Peripheral
Response == Yes
End of Phase
COMMAND_ERROR?
No
PhaseID
Command
& Address
3652
Figure 86 Protocol Flowchart: Common to All Phases (Manager)
Peripheral
SPM Detector
(runs continuously)
Cold Reset or
Warm Reset
Peripheral
This Peripheral drove
previous CDS bit
Get first 9 CDS bits Header Detector
(restarts from here whenever the
SPM Detector indicates an SPM)
Restart Header
Get next CDS bit
Detector
Get Header
Most recent No (6 robust tokens)
10 bits
== SPM?
Is this a Yes
ReadData Phase?
End of Phase
No
Yes Commands are Yes Commands are Commands are Yes Send Peripheral Response:
End of Phase
No No No End of Phase
End of Phase
No No End of Phase No End of Phase
Yes Bad Command Info? Bad Command Info? Yes Send Peripheral Response: Bad Command Info? Yes Send Peripheral Response:
(e.g., Bad Opcode (e.g., Wrong Packet Length COMMANDS_BLOCKED (e.g., Bad Opcode COMMAND_ERROR
for this PhaseID) for Write(Unblock)) for this PhaseID)
End of Phase
No No End of Phase No End of Phase
End of Phase
Yes
PhaseID
Command
& Address
ANNOUNCE WRITE GET_STATUS COMMIT CALIBRATE_PHY WRITE READ_SETUP WRITE READ_SETUP READ_DATA
(ExitDormant, (Unblock) (Ping) (SSCR / DSCR) local address local address remote address remote address
3662
SSPA)
8.1.3.4 Protocol Flow for Phases when Peripheral is in Link State: Dormant
3663 Figure 88 shows the protocol flow for all PhaseIDs when the Peripheral is in the (optional) Link State:
3664 Dormant (see Figure 60). This flowchart follows on from the Peripheral Header Detector shown in
3665 Figure 87.
Is this an No
Announce Phase?
End of Phase
Yes
End of Phase
Is this an No
Exit_Dormant
Command?
End of Phase
Yes
End of Phase
3666
Figure 88 Protocol Flowchart: Peripheral in Link State: Dormant
Manager Peripheral
GET_STATUS GET_STATUS
8.1.3.6 Protocol Flow for Announce Phase (SSPA & ExitDormant Commands)
3671 Figure 90 shows the protocol flow in the Manager and Peripheral for an Announce Phase. These flowcharts
3672 follow on from the generic Manager and Peripheral flow shown in Figure 86 and Figure 87.
3673 Note:
3674 This figure shows that a Peripheral in Link State: Attached can process an ExitDormant Command
3675 without error, but the ExitDormant Command is normally used when a Peripheral is in Link State:
3676 Dormant, for which the protocol flow is illustrated in Figure 88.
Manager Peripheral
ANNOUNCE ANNOUNCE
Schedule the internal Skip Rows to Sync Point Skip Rows to Sync Point
Schedule the internal
SSP Event (Command:Row_Delay) (Command:Row_Delay –
SSP Event
SyncPointOffset register)
End of Command
3677 End of Command
Manager Peripheral
COMMIT COMMIT
Ready to accept No
a Commit now?
Yes
Get 12 x Send Peripheral Response: Send Peripheral Response:
Manager decides No
whether to proceed
Yes
End of Phase Do scheduled Commit Event End of Phase Do scheduled Commit Event
and SSP Event (only for SSCR) and SSP Event (only for SSCR)
on selected commit groups on selected commit groups
Manager Peripheral
Unblock WRITE Unblock WRITE
End of Phase
No
Manager Peripheral
Local WRITE Local WRITE
End of Phase
No No
WRITE_FAILED or
Peripheral Unexpected Response Send Peripheral Response: Send Peripheral Response:
WRITE_OK
Manager Peripheral
READ_SETUP READ_SETUP
(local address) (local address)
Peripheral
Yes Did the read Yes
Response == End of Phase
Send Peripheral Response:
No No End of Phase
Yes
Send Protocol Spacer Send Protocol Spacer Skip over Protocol Spacer
Send Protocol Spacer Send Protocol Spacer Skip over Protocol Spacer
No
Fail
Check CRC
Pass
Send Manager Response: Send Manager Response: Send Manager Response: Get Manager
READ_DATA_OK READ_DATA_ERROR READ_DATA_ERROR Response (HD10)
READ_DATA_OK
Manager Peripheral
CALIBRATE_PHY CALIBRATE_PHY
CALIBRATE_NOW? CALIBRATE_NOW
Yes
Send Protocol Spacer Send Protocol Spacer Skip over Protocol Spacer
Send Protocol Spacer Send Protocol Spacer Skip over Protocol Spacer
End of Phase
End of Phase
No
TRANSPORT_ERROR or
PHY_CAL_FAILED Peripheral Unexpected Robust Token
Calibration Result?
PHY_CAL_GOOD
RemoteDisabled? REMOTE_ACCESS_DISABLED
No End of Phase
No
Set RemoteOpState = Buffered Write completes
RemoteWriteBusy some time later
End of Phase
Did the Write Yes Did the Write Yes Did the Write Yes
operation fail? operation fail? operation fail?
No No No
Send Peripheral Response: Send Peripheral Response: Send Peripheral Response: Send Peripheral Response:
WRITE_OK WRITE_FAILED WRITE_OK WRITE_FAILED
End of Phase End of Phase End of Phase End of Phase End of Command End of Command
3711
Figure 96 Protocol Flowchart: Write Phase (Remote WriteA32 Command)
8.1.3.13 Protocol Flow for Remote ReadSetup & ReadData Phases (Manager)
3712 Figure 97 shows the protocol flow in the Manager for Remote ReadSetup and ReadData Phases (i.e., ones
3713 where the address is Remote, see Section Note:). These flowcharts follow on from the generic Manager and
3714 Peripheral flow shown in Figure 86 and Figure 87. The Manager Responses shown in this figure are
3715 specified in normative Table 88.
3716 Note:
3717 The Local ReadSetup Phase from Figure 94 is repeated in this diagram (with grey background) for
3718 easy comparison with the Remote ReadSetup Phase.
Manager Manager
READ_SETUP READ_SETUP
READ_DATA
(local address) (remote address)
Peripheral
Response = Yes
REMOTE_ACCESS_
End of Phase
DISABLED?
No
Peripheral
Response = Yes
REMOTE_WRITE_BUSY? End of Phase
No
Peripheral Peripheral
Yes Yes
Response == End of Phase Response = End of Phase
READ_FAILED? READ_FAILED?
No No
Send Protocol Spacer Send Protocol Spacer Send Protocol Spacer Send Protocol Spacer
Send Protocol Spacer Send Protocol Spacer Send Protocol Spacer Send Protocol Spacer
No No
Fail Fail
Check CRC Check CRC
Pass Pass
Send Manager Response: Send Manager Response: Send Manager Response: Send Manager Response: Send Manager Response: Send Manager Response:
READ_DATA_OK READ_DATA_ERROR READ_DATA_ERROR READ_DATA_OK READ_DATA_ERROR READ_DATA_ERROR
End of Phase End of Phase End of Phase End of Phase End of Phase End of Phase End of Phase
8.1.3.14 Protocol Flow for Remote ReadSetup & ReadData Phases (Peripheral)
3720 Figure 98 shows the protocol flow in the Peripheral for Remote ReadSetup and ReadData Phases (i.e., ones
3721 where the address is Remote, see Section Note:). These flowcharts follow on from the generic Manager and
3722 Peripheral flow shown in Figure 86 and Figure 87. The Peripheral Responses shown in this figure are
3723 specified in normative Table 82 and Table 83.
3724 Note:
3725 The Local ReadSetup Phase from Figure 94 is repeated in this diagram (with grey background) for
3726 easy comparison with the Remote ReadSetup Phase.
Peripheral Peripheral
READ_SETUP
READ_DATA
(remote address)
Peripheral
READ_SETUP RemoteOpState = Yes Send Peripheral Response: RemoteOpState = Yes Send Peripheral Response:
RemoteWriteBusy? REMOTE_WRITE_BUSY
End of Phase
No
Discard any incomplete RemoteOpState = Yes Send Peripheral Response:
No RemoteOpState = No
Read operation Send Peripheral Response: Send Peripheral Response:
End of Phase
Read operation Yes Send Peripheral Response: Did the read Yes
failed immediately? READ_FAILED operation fail?
Yes No
Did the read Send Peripheral Response:
No
operation fail? READ_FAILED
Set RemoteOpState = Set RemoteOpState = Set RemoteOpState = Set RemoteOpState =
RemoteReadDataReady RemoteDisabled RemoteReadDataReady RemoteDisabled
No End of Phase
End of Phase End of Command End of Command
READ_DATA_OK READ_DATA_OK
Enact any side effects (discard the Enact any side effects Preserve the read
(e.g., arming IntClear) read data) Set RemoteOpState = data for a future
Remote_Idle ReadData Phase
3736
3746
3747 ###TODO-Author: complete the updates to responses below this point.
3748
3749 The details of which Peripheral Responses are used for which error conditions in each Phase, and the
3750 prioritization of those conditions, are described in the informative Sections for each type of Transfer and
3751 specified in Section 8.2.3.
3776 TRANSPORT_ERROR: The Phase Header was received OK, so the Peripheral knows the position and
3777 type of Response that is expected, but there was a transport error in the Manager Packet (bad 8b/10b
3778 decoding or the CRC failed). The Peripheral will not perform the Command or operation that was described
3779 by the Phase.
3780 PROTOCOL_ERROR: The Peripheral has received unexpected Phase information from the transport
3781 layer, because this information did not follow the protocol (e.g., receiving a ReadData Phase when there is
3782 no ongoing multi-phase Read Transfer).
3783 COMMAND_ERROR: The Peripheral has received valid Phase information from the transport layer, but
3784 it does not support the Command operation that was specified in the Manager Packet. (e.g., the write byte
3785 count is too large for this Peripheral). This Response indicates that the Manager sent incorrect information.
3786 BUSY: (REMOTE_WRITE_BUSY, COMMIT_NOT_READY) The Peripheral has received valid Phase
3787 information from the transport layer (including the Manager Packet CRC passing OK), but it is currently
3788 unable to accept the Command operation that was specified, e.g. because some internal resource such as a
3789 write buffer is busy. The Peripheral will not perform the Command or operation that was described by the
3790 Phase.
3791 FAILED: (WRITE_FAILED, READ_FAILED) The Peripheral has received valid Phase information from
3792 the transport layer, and attempted to perform the Command operation, but this failed.
3793 DEFERRED: (REMOTE_READ_DEFERRED). The Peripheral has received valid Phase information
3794 from the transport layer.
3795 ReadSetup Phase: The Peripheral might or might not yet have started the operation described by
3796 the Phase, but it is not yet ready to deliver the Peripheral read data.
3797 ReadData Phase: The Peripheral might or might not yet have started the operation described by
3798 that Phase, but it is not yet ready to deliver the Peripheral read data.
3799
3800 OK: (WRITE_OK, READ_DATA_NOW, COMMIT_READY) The Peripheral has received valid Phase
3801 information from the transport layer, and will perform the Command operation.
3802 Note:
3803 For Commit Phases, COMMIT_READY indicates that this Peripheral is ready to accept the
3804 scheduled operation, but this might subsequently be cancelled by the Manager Response at the
3805 end of the Commit Phase.
3826 ###TODO-Author: triage this old description and extract anything useful into the table.
3827 CONFIRM_COMMIT: The Manager is instructing the Peripherals selected in the Commit Phase that the
3828 Commit Transfer has completed successfully, so the Peripherals can now schedule the operation that was
3829 requested. Typically, this indicates that the Manager received Peripheral Responses of
3830 COMMAND_ACCEPTED from all of the Peripherals that were selected in the Commit Phase.
3831 CANCEL_COMMIT: The Manager is instructing the Peripherals selected in the Commit Phase that the
3832 Commit Transfer has not completed successfully, so the Peripherals abort the scheduling of the operation
3833 that was requested. Typically, this indicates that the Manager received a Peripheral Response from at least
3834 one of the selected Peripherals that was not COMMAND_ACCEPTED, or that contained a transport error
3835 (bad 8b/10b symbol).
3836 ###Question for Reviewers: are you happy that the Manager does NOT check for either of:
3837 • Response from unpopulated Peripheral DeviceNumbers being consistent with undriven
3838 response?
3839 • Response from populated but unselected Peripheral DeviceNumbers being consistent
3840 with undriven response?
3841
3842
GetStatus Phase:
Ping Command
Start of Phase Marker
GET_STATUS
Device Mask_H
– devices
Device Mask_M
selected
Device Mask_L
Packet_Length_H=0x0
Packet_Length
Packet_Length_L=0x1
= 0x01
Opcode: Ping
Manager_CRC16_H
Manager_CRC16_L
Protocol Spacer
Peripheral 0 PingInfo[3..0]
Peripheral 1 PingInfo[3..0]
Peripheral 2 PingInfo[3..0]
Peripheral 3 PingInfo[3..0]
Peripheral 4 PingInfo[3..0]
Peripheral 5 PingInfo[3..0]
Peripheral 6 PingInfo[3..0]
Peripheral 7 PingInfo[3..0]
Peripheral 8 PingInfo[3..0]
Peripheral 9 PingInfo[3..0]
Peripheral 10 PingInfo[3..0]
Peripheral 11 PingInfo[3..0]
3856
Figure 99 GetStatus Phase & Ping Command
Packet_Length (0x01)
Packet_Length (0x03)
Packet_Length_H=0x0 Packet_Length_H=0x0
Packet_Length_L=0x3 Packet_Length_L=0x1
Protocol Spacer
Peripheral Data
...
...
...
Peripheral_CRC16_H
Peripheral_CRC16_L
Protocol Spacer
Manager Response
3906
Figure 101 ReadSetup Phase & ReadA32 Command
Protocol Spacer
ReadSetup Phase)
Count in original
Peripheral Data
...
...
...
Peripheral_CRC16_H
Peripheral_CRC16_L
Protocol Spacer
Manager Response
3918
Figure 102 ReadData Phase
3919 A ReadData Phase is an optional part of a Read Transfer that is used when the Peripheral has deferred the
3920 transport of read data from the original ReadSetup Phase (or from one or more ReadData Phases that
3921 followed it).
3922 The Packet_Length in the Phase Header is 0x00 to indicate that there is no Manager Packet (and hence no
3923 Manager_CRC).
Address[23:16] Manager_CRC16_L
Packet_Length
Write Data
...
...
...
Manager_CRC16_H
Manager_CRC16_L
Protocol Spacer
Peripheral Response
3950
Figure 103 Write Phases and WriteA32 and Unblock Commands
Packet_Length_L=0x3
Packet_Length
Packet_Length_L=0x3
Packet_Length
Opcode: SSCR Opcode: DSCR
= 0x03
= 0x03
Group Mask Group Mask
Row Delay Row Delay
Manager_CRC16_H Manager_CRC16_H
Manager_CRC16_L Manager_CRC16_L
Protocol Spacer Protocol Spacer
Peripheral 0 Response Peripheral 0 Response
Peripheral 1 Response Peripheral 1 Response
Peripheral Responses Peripheral Responses Peripheral Responses Peripheral Responses Peripheral Responses
to a Commit Transfer to a Commit Transfer to a Commit Transfer to a Commit Transfer to a Commit Transfer
Example 1 Example 2 Example 3 Example 4 Example 5
P0: No Response P0: No Response P0: No Response P0: No Response P0: No Response
P1: COMMIT_READY P1: COMMIT_READY P1: No Response P1: COMMIT_READY P1: COMMAND_ERROR
P2: COMMIT_READY P2: COMMIT_READY P2: COMMIT_READY P2: COMMIT_NOT_READY P2: COMMAND_ERROR
P3: COMMIT_READY P3: TRANSPORT_ERROR P3: COMMIT_READY P3: COMMIT_READY P3: COMMAND_ERROR
P4: COMMIT_READY P4: COMMIT_READY P4: COMMIT_READY P4: COMMIT_READY P4: COMMAND_ERROR
P5: COMMIT_READY P5: COMMIT_READY P5: COMMIT_READY P5: COMMIT_READY P5: COMMAND_ERROR
P6: No Response P6: No Response P6: No Response P6: No Response P6: No Response
P7: No Response P7: No Response P7: No Response P7: No Response P7: No Response
Protocol Spacer Protocol Spacer Protocol Spacer Protocol Spacer Protocol Spacer
Protocol Spacer
0 RR 0 RR 0 RR 0
Calibration Packet
RR 0 RR 0 RR 0 R
Length
R 0 RR 0 RR 0 RR
...
Total of (N + 1) blocks
of 3 x10 bits
...
Protocol Spacer
Peripheral Cal Result
4026
Figure 106 Summary of CalibratePhy Transfer Containing a InitCal Command
4076 Data In
3 — 0 0x6C91 b0110_1100_1001_0001 …
4 — 0 0xD922 b1101_1001_0010_0010 …
6 — 0 0x215E b0010_0001_0101_1110 …
7 — 0 0x42BC b0100_0010_1011_1100 …
10 — 0 0xF2DD b1111_0010_1101_1101 …
11 — 1 0xE5BA b1110_0101_1011_1010 …
12 — 1 0xCB74 b1100_1011_0111_0100 …
14 — 1 0xCAED b1100_1010_1110_1101 …
Manager Packet
4213 from these 2 special cases, when this condition occurs the Peripheral will abandon the existing Phase and
4214 start interpreting the new Phase. The Peripheral makes an implementation-defined amount of effort to
4215 abandon the existing Phase cleanly, such as trying to reduce state changes that have occurred.
8.1.17.1 Example Error Scenario: Ping Command with Missing Peripheral Response
4218 Figure 110 illustrates a GetStatus Phase containing a Ping Command where one of the selected Peripherals
4219 has not generated a response, for example because a transport error in the Header meant that the Peripheral
4220 will ignore the Phase.
4221 In this example:
4222 • The Manager knows that Peripheral DeviceNumbers 2, 3, and 11 are not populated in this system,
4223 so has generated a Ping Command that selects only devices 0, 1, and 4 through 10. The Manager
4224 expects to see No Response in slots 2, 3, and 11.
4225 • Peripheral #4 has suffered a transport error in the Header (e.g., a bit error in the Device_Mask_L
4226 byte in the Header). This is not an error-free Header, so Peripheral #4 does not generate any
4227 response.
4228 • The Manager sees 8 valid responses (Robust Tokens encoding Ping Status information) in the slots
4229 for Peripherals 0, 1, and 5 through 10, and 3 expected (and thus not counted) Bad 8b/10b_Symbol
4230 Transport Errors caused by the b1111111111 from the No Response in the slots for Peripherals 2,
4231 3, and 11. However, the Bad8b/10b_Symbol Transport Error in the slot for Peripheral 4 is
4232 unexpected, so is handled as a genuine error.
Packet_Length = 0x06
Packet_Length_L=0x6 Packet_Length_L=0x6
Packet_Length = 0x06
Peripheral Packet_Length = 4
Packet_Length = 0x06
Packet_Length_L=0x6 Packet_Length_L=0x6
Protocol Spacer
Peripheral Ignore possible data
not driving Ignore possible data
read data
Ignore possible data
Protocol Spacer
READ_DATA_ERROR
4268 Note:
1. The 5 Rows that describe errors in the Header correspond to “Bad Phase Header” in normative
Table 77 and Table 78.
4269 Note:
4270 In the special case of HD10 Robust Tokens (where the received 10-bit symbol is translated to a
4271 1-bit yes/no answer, but with the option of a Bad HD10 Token Transport Error), the receiver does
4272 not increment any other 8b10-related error counters (e.g., Bad_RT or Bad_8b10b) even of those
4273 error conditions are satisfied.
4274
E.g.,:
The received symbol is a
• Read back the data to see if it
Peripheral correctly encoded Robust Token, was written. UnexpectedRT
Response but the particular RT is not valid in • Retry the Phase.
this Phase.
4276
4290 Requirements
4291 1. {xx01} The Manager shall co-ordinate the Control Data Stream to be a continuous stream of either
4292 of:
4293 A. Two idle bits (0 and then 1) transmitted by the Manager, or
4294 B. A Command Transport Protocol Phase made up of an uninterrupted sequence of CDS bits
4295 transmitted by the Manager and Peripheral(s) as defined in the rules within this
4296 Section (8.2.1).
4297 2. {xx02} The Manager shall start the Phases described in Requirement 1B by transmitting a Phase
4298 Header formatted according to Table 60.
4299 Table 60 Command Transport Protocol Phase Header (All Phases)
Byte
Name Sent By Description
Number
2 Device_Mask_H Manager Robust Token for selecting Device Numbers 11 through 8 [1]
3 Device_Mask_M Manager Robust Token for selecting Device Numbers 7 through 4 [1]
4 Device_Mask_L Manager Robust Token for selecting Device Numbers 3 through 0 [1]
Robust Token that indicates the 4 LSbs of the byte count for
6 Packet_Length_L Manager
the Manager Packet [2]
4300 Note:
1. The Table for each Command defines whether the Device_Mask selects exactly 1 Peripheral or a
set of 1 to 12 Peripherals.
2. Phases that do not include a Manager Packet (e.g., ReadData Phase) have a Packet Length field
of 0x00.
4301 3. {7003} The Phases described in Requirement 1B shall be formatted according to the Table
4302 indicated in Table 61.
4303 Table 61 Index to Phase Definition Tables
PhaseId Command Phase Structure Phase/Command-Specific
(see Table 63) (i.e., Opcode in Manager Specified in: Peripheral Responses Specified in:
Packet, see Table 95) (see Section 8.2.3)
GetStatus Ping Table 68 Table 87
Announce SSPA Table 69 — [3]
SSCR
Commit Table 71 Table 84
DSCR [1]
Write WriteA32 Table 72 Table 81
Write Unblock Table 73 Table 80
ReadSetup ReadA32 Table 74 Table 82
[1] [2]
ReadData (ReadA32) Table 75 Table 83
InitCal
CalibratePhy [1] Table 76 Table 85
TrimCal
4304 Note:
1. Peripheral support for some Phases or Commands is optional or conditional, see Table 95 in
Section 9.2.1.
2. The ReadData Phase does not have a Manager Packet so does not have an Opcode, but is
associated with the incomplete ReadA32 Command from the previous ReadSetup Phase.
3. The Announce Phase does not include any Peripheral Responses.
4305 4. {xx04} The Manager shall select Devices in a Phase Header by creating a 12-bit Device Mask
4306 value according to Table 62 and then encoding:
4307 A. DeviceMask[11:8] in the Robust Token Number for Device_Mask_H, and
4308 B. DeviceMask[7:4] in the Robust Token Number for Device_Mask_M, and
4309 C. DeviceMask[3:0] in the Robust Token Number for Device_Mask_L.
4310 Table 62 Device Selection in Phase Headers
DeviceMask[11:0] Value to Select this Device [1]
Unicast Phases: Multicast Phases:
Write GetStatus
ReadSetup Commit
ReadData Announce(SSPA)
Device CalibratePhy Announce(ExitDormant):Optional[3]
Number Announce(ExitDormant)[2]
0 000000000001 xxxxxxxxxxx1
1 000000000010 xxxxxxxxxx1x
2 000000000100 xxxxxxxxx1xx
3 000000001000 xxxxxxxx1xxx
4 000000010000 xxxxxxx1xxxx
5 000000100000 xxxxxx1xxxxx
6 000001000000 xxxxx1xxxxxx
7 000010000000 xxxx1xxxxxxx
8 000100000000 xxx1xxxxxxxx
9 001000000000 xx1xxxxxxxxx
10 010000000000 x1xxxxxxxxxx
11 100000000000 1xxxxxxxxxxx
4311 Note:
1. ‘x’ in the Device Mask value for Multicast Phases means that either 0 or 1 is valid in that bit
position.
2. All Peripherals that implement ExitDormant will accept an ExitDormant Command in which they
are the only selected Device.
3. Some Peripherals also accept an ExitDormant Command in which other Devices are also
selected.
4312 5. {xx05} When the Peripheral detects an SPM (see Section 7.2.2 Requirement 5C and 6C) it shall
4313 decode the immediately following 60 CDS bits as a Valid Phase Header (see Table 60) provided
4314 that:
4315 A. The 60 bits correspond to 6 valid Robust Tokens, and
4316 B. The Peripheral implements the PhaseID, and
4317 C. The DeviceMask selects this Peripheral (see Requirement 4), and
4318 D. Either:
4319 i. The Packet_Length is zero (when PhaseID is ReadData), or
4320 ii. The Packet_Length is non-zero (when PhaseID is not ReadData).
4321 Note: if the Peripheral detects a second SPM that starts after the first bit of the first SPM then the
4322 first SPM cannot be the start of an error-free header, so the Peripheral abandons the first potential
4323 header and perform a new search using the 60 CDS bits following the second SPM.
4324 6. {xx06} If the Peripheral is part way through processing one Phase when it detects the Valid Phase
4325 Header according to Requirement 5 then it shall increment the EC_UnexpectedNewHeader error
4326 counter (see ###XREF: Section # Requirement #).
4327 Note:
4328 The EC_UnexpectedNewHeader counter counts _all_ instances of a new header, even if that
4329 Header is ignored because of Requirement 7. This contrasts with EC_AbandonedPhase,
4330 which counts only the Unexpected New Headers that are NOT rejected by Requirement 7.
4331 7. {xx07} A Peripheral shall ignore the new Phase Header (#2) detected according to Requirement 5
4332 when all of the following are true:
4333 A. The Peripheral is currently processing a Commit Phase (#1) or GetStatus Phase (#1), and
4334 B. The Peripheral saw no transport errors (either Bad_8b10b or CRC failure) in the Manager
4335 Packet in that Commit Phase (#1) or GetStatus Phase (#1), and
4336 C. The 60th bit of the new Phase Header (#2) described in Requirement 5 occurs more than 10
4337 bits after the last bit of the Manager_CRC_L symbol, and
4338 D. The 1st bit of the SPM in the new Phase Header (#2) (see Section 7.2.2 Requirement 5C and
4339 6C) occurs on or before either:
4340 i. For the Commit Phase (#1): the 10th bit of the Manager_Response symbol, or
4341 ii. For the Get_Status Phase(#1): the 10th bit of the Peripheral 11 PingInfo symbol.
4342 Note: the notation “(#1)” and “(#2)” in this requirement is used to help clarify which of the 2 Phases
4343 is the subject of each clause.
4344 8. {xx08} When the Peripheral detects a Valid Phase Header according to Requirement 5 and this
4345 Header is not ignored according to Requirement 7 then the Peripheral shall do all of:
4346 A. If the Peripheral is part way through processing one Phase then
4347 i. Increment the EC_AbandonedPhase error counter (see ###XREF: Section #
4348 Requirement #), and
4349 ii. Abandon the incomplete Phase and clean up as well as it can, and then
4350 B. Interpret the Header and any subsequent bytes according to the Table indicated in Table 61,
4351 and
4352 C. Generate a Peripheral Response that is: ###TODO-Author: need to skip this for Announce
4353 Phase
4354 i. Selected according to the Rules in Section 8.2.3, and
4355 ii. At the position in the Phase identified by PhaseID, Packet_Length, and DeviceNumber
4356 (###XREF to tables), and then:
4357 D. ###TODO-Author: rephrase this: <If that Peripheral Response was “positive”> obey the
4358 Command according to the rules in Section 9.2.
4359 Note: If the Peripheral transmits any Peripheral Response, this is always at the position indicated
4360 by the Packet_Length in the Header, even if this position is not what the Peripheral expected.
4361 However, the Peripheral will not transmit a Peripheral Response when the unexpected
4362 Packet_Length changes between zero and non-zero because this is not a Valid Phase Header (see
4363 Requirement 5D).
4364 9. {xx09} Where any of the rules in this Section (8.2.1) describe a byte being a Robust Token, this
4365 shall be:
4366 A. Selected from Robust Tokens 0 through 15 as indicated by the context columns in either:
4367 i. Table 63 for Robust Tokens transmitted by the Manager, or:
4368 ii. Table 64 for Robust Tokens transmitted by the Peripheral, and:
4369 B. Encoded using the symbol shown in Table 40 in Section 7.2.1 Requirement 9.
4370 Table 63 Assignment of Robust Token Numbers (Manager)
READ_DATA_OK
0 GET_STATUS 0000 0
CONFIRM_COMMIT
1 WRITE 0001 1 —
2 READ_SETUP 0010 2 —
3 READ_DATA 0011 3 —
4 COMMIT 0100 4 —
5 ANNOUNCE 0101 5 —
6 CALIBRATE_PHY 0110 6 —
7 — 0111 7 —
8 — 1000 8 —
9 — 1001 9 —
10 — 1010 10 —
11 — 1011 11 —
12 — 1100 12 —
13 — 1101 13 —
14 — 1110 14 —
READ_DATA_ERROR
15 — 1111 15
CANCEL_COMMIT
4371
Robust
Peripheral_Info Peripheral Response Calibration
Token
(GetStatus Phase for Ping (All Phases except SSPA, Result
Number
Command) ExitDormant, and GetStatus) (CalibratePhy Phase)
(decimal)
WRITE_OK
READ_DATA_NOW
0 PING_ATTACHED PHY_CAL_GOOD
COMMIT_READY
CALIBRATE_NOW
1 — — —
2 — COMMIT_NOT_READY —
3 — — —
WRITE_FAILED
4 — —
READ_FAILED
REMOTE_WRITE_BUFFERED
5 — —
REMOTE_READ_DEFERRED
6 PING_ATTACHED_BUSY REMOTE_WRITE_BUSY —
7 — REMOTE_ACCESS_DISABLED —
8 PING_ALERT — PHY_CAL_FAILED
9 — — —
10 PING_ALERT_BUSY — —
11 — — —
12 — PROTOCOL_ERROR —
13 COMMAND_ERROR COMMAND_ERROR —
15 COMMANDS_BLOCKED COMMANDS_BLOCKED —
4373
4374
4375 10. ###TODO-Author: a rule that 8b/10b symbols encoded and decoded according to Section 7.2.1
4376 and Section 7.2.2.
4377 11. ###TODO-Author: describe Calibration Packets according to Section ###XREF.
4378 12. TODO extra DRUID number for Calibration Packets
4379 13. TODO extra DRUID number for Calibration Packets
4380
4381 14. Where the tables within this Section (i.e., Table 68 through Table 76) define a Protocol Spacer
4382 within the Phase structure, the Peripheral shall ignore the value received for a number of
4383 consecutive CDS bits according to Table 65.
4384 Table 65 Size of Protocol Spacer
0 [1] 10 10 20
1 10 10 10
4385 Note:
1. Reset value of ShortProtocolSpacer is 0.
4386 15. Where the tables within this Section (i.e., Table 68 through Table 76) define a Protocol Spacer
4387 within the Phase structure, the Manager shall generate an idle pattern of alternating 0s and 1s for
4388 the number of consecutive CDS bits shown in Table 65.
4389 16. When the Peripheral executes an SSPA, SSCR, or DSCR Command, the Group Mask in the
4390 Command shall select Commit Group(s) according to Table 66.
4391 Table 66 Group Mask in SSPA, SSCR, and DSCR Commands
All Registers, Data Ports, etc. that are members of Commit Group 0.
0
(includes PHY Control Registers and Link Control Registers).
1 All Registers, Data Ports, etc. that are members of Commit Group 1.
2 All Registers, Data Ports, etc. that are members of Commit Group 2.
3 All Registers, Data Ports, etc. that are members of Commit Group 3.
4–7 Reserved
4392 Note: When a Register, Data Port, etc. is a member of more than one Commit Group, this selection
4393 is an OR operation, i.e., the object is selected if any of the corresponding Group Mask bits is set: it
4394 does not require that all of the relevant bits are set.
4395 17. When the Peripheral executes an SSPA, SSCR, or DSCR Command, the Commit Sync Point
4396 and/or Stream Synchronization Point shall be delayed from the beginning of the Row that follows
4397 the 10th bit of the last 8b10b symbol in the Phase by a number of Rows indicated in Table 67.
4398 Note: for SSPA, the last symbol is Manager_CRC16_L; for SSCR and DSCR, the last symbol is
4399 Manager Response.
4400 Table 67 Sync Point Delay in SSPA, SSCR, and DSCR Commands
0 15 15
0 14 14
1 15 14
1 14 13
2 15 13
2 14 12
3 15 12
3 14 11
4 15 11
4 14 10
5 15 10
5 14 9
4401
4402
4403
4404
Byte
Name Sent By Details
Number
Opcode=0x00 (Ping)
7 Manager Packet Manager
(see Section 9.2.8 Requirement ###XREF)
11 Peripheral 0
12 Peripheral 1
13 Peripheral 2
14 Peripheral 3
15 Peripheral 4
16 Peripheral Peripheral 5
One Robust Token from each Peripheral
PingInfo
(see Section 9.2.8 Requirement ###XREF)
17 (see Table 87) Peripheral 6
18 Peripheral 7
19 Peripheral 8
20 Peripheral 9
21 Peripheral 10
22 Peripheral 11
Byte
Name Sent By Details
Number
Opcode=0x00 (SSPA)
7
(see Section ###XREF Requirement ###XREF)
Byte
Name Sent By Details
Number
Opcode=0x01 (ExitDormant)
7 Manager Packet Manager
(see Section ###XREF Requirement ###XREF)
Byte
Name Sent By Details
Number
Opcode:
• 0x00 (SSCR) or
7
• 0x01 (DSCR)
(see Section 9.2.7 Requirement ###XREF)
Manager Packet Manager
Group Mask
8
(see Section 9.2.7 Requirement ###XREF)
13 Peripheral 0
14 Peripheral 1
15 Peripheral 2
16 Peripheral 3
17 Peripheral 4
Peripheral
18 Peripheral 5 One Robust Token from each Peripheral
Responses
(see Section 9.2.7 Requirement ###XREF)
(see Table 84)
19 Peripheral 6
20 Peripheral 7
21 Peripheral 8
22 Peripheral 9
23 Peripheral 10
24 Peripheral 11
Byte
Name Sent By Details
Number
1. When ShortProtocolSpacer=0, the Peripheral-to-Manager Protocol Spacer also occupies byte 26,
so the Manager Response is at byte 27.
7 Opcode=0x00 (WriteA32)
Peripheral
One Robust Token from the selected Peripheral
(15 + WBC) Response Peripheral
(see Section 9.2.3 Requirement ###XREF)
(see Table 81)
Peripheral
One Robust Token from the selected Peripheral
11 Response Peripheral
(see Section 9.2.9 Requirement ###XREF)
(see Table 80)
7 Opcode=0x00 (ReadA32)
Peripheral
One Robust Token from the selected Peripheral
16 Response [1, 2, 3] Peripheral
(see Section 9.2.4 Requirement ###XREF)
(see Table 82)
(18 + 0)
(R + 1) bytes of read data from the selected
to Peripheral Packet Peripheral
Peripheral
(18 + R)
1. If the Peripheral generates any Peripheral Response except for READ_DATA_NOW then it
considers the Phase to be complete after the Peripheral Response (byte #16).
2. If the Manager receives any defined Peripheral Response except for READ_DATA_NOW then it
considers the Phase to be complete after the Peripheral Response (byte #16).
3. If the Manager receives a Peripheral Response of READ_DATA_NOW or a bad or unexpected
Robust Token (i.e., one that is not a defined Peripheral Response) then it considers the Read
Phase to be complete after the Manager Response (byte #(22 + R)).
4. The Manager always owns the 10 bits following the Peripheral Response, and drives Idle Pattern
/ Protocol Spacer unless it has already recognized a Peripheral Response that ends the Phase, in
which case it might start driving an SPM during these 10 bits.
5. When ShortProtocolSpacer=0, the Peripheral-to-Manager Protocol Spacer also occupies byte
(22 + R), so the Manager Response is at (23 + R).
4412 ###TODO: add XREFs from these footnotes to the Manager Response table.
4413
4414 Table 75 ReadData Phase for Completing a ReadA32 Command
Peripheral
One Robust Token from the selected Peripheral
8 Response [1, 2, 3] Peripheral
(see Section 9.2.4 Requirement ###XREF)
(see Table 83)
(10 + 0)
(R + 1)[5] bytes of read data from the selected
to Peripheral Packet Peripheral
Peripheral
(10 + R) [5]
1. If the Peripheral generates any Peripheral Response except for READ_DATA_NOW then it
considers the Phase to be complete after the Peripheral Response (byte #8).
2. If the Manager receives any defined Peripheral Response except for READ_DATA_NOW then it
considers the Phase to be complete after the Peripheral Response (byte #8).
3. If the Manager receives a Peripheral Response of READ_DATA_NOW or a bad or unexpected
Robust Token (i.e., one that is not a defined Peripheral Response) then it considers the Read
Phase to be complete after the Manager Response (byte #(14 + R)).
4. The Manager always owns the 10 bits following the Peripheral Response, and drives Idle Pattern
/ Protocol Spacer unless it has already recognized a Peripheral Response that ends the Phase, in
which case it might start driving an SPM during these 10 bits.
5. R is the encoded ReadByteCount parameter from the original ReadSetup Phase.
6. When ShortProtocolSpacer=0, the Peripheral-to-Manager Protocol Spacer also occupies byte
(14 + R) and the Manager Response is at (15 + R).
Byte
Name Sent By Details
Number
Opcode:
• 0x00 (InitCal) or
7
• 0x01 (TrimCal)
(see Section 9.2.10 Requirement ###XREF)
AdjustLength (A)
9
(see Section 9.2.10 Requirement ###XREF)
4416 Note:
1. If the Peripheral generates any Peripheral Response except for CALIBRATE_NOW then it
considers the CalibratePhy Phase to be complete after the Peripheral Response (byte #13).
2. If the Manager receives any defined Peripheral Response except for CALIBRATE_NOW then it
considers the CalibratePhy Phase to be complete after the Peripheral Response (byte #13).
4424 Permissions
4425 ###TODO-Author: add a permission for the Manager to drive an Idle Pattern in Rows that correspond to
4426 the Peripheral Response(s) from Peripheral(s) that is/are not selected in a Commit or Ping Phase.
4427 1. .
4428
4429
4430 Requirements
4431 1. When a Peripheral receives a Manager Packet, it shall calculate a CRC on the Manager Packet
4432 data bytes and check this against the Manager CRC from the last 2 bytes.
4433 2. When a Manager receives a Peripheral Packet, it shall calculate a CRC on the Peripheral Packet
4434 data bytes and check this against the Peripheral CRC from the last 2 bytes.
4435 3. When a Device receives a Packet according to Requirement 1 or 2, if any of the Packet data bytes
4436 or CRC bytes generated an 8b10b decoding error then the Device shall:
4437 A. Not check the CRC value (because the 8b10b error is already a Transport Error), and
4438 B. Not increment the EC_BadCRC counter (see Table 163).
4439 4. When calculating a CRC, a Device shall use the generator polynomial:
4440 x16 + x15 + x13 + x9 + x7 + x6 + x5 + x3 + x + 1
4441 with the variable, X, initialized to 0x0000 at the start of the calculation.
4442 5. When calculating a CRC, a Device shall re-initialize the state variable before processing the first
4443 bit of the Manager or Peripheral Packet.
4444 Note: i.e., each CRC is independent of all previous CRCs
4445 6. When calculating a CRC, a Device shall process 8-bit bytes, not 10-bit symbols.
4446 Note: i.e., before 8b10b encoding in the transmitter and after 8b10b decoding in the receiver.
4447 7. When calculating a CRC, a Device shall process the bytes in the order that they are transported.
4448 Note: i.e., lowest numbered bytes first.
4449 8. When calculating a CRC, a Device shall process the bits of a byte starting with bit 7 (MSb) and
4450 finishing with bit 0 (LSb).
4451 Requirements
4452 1. {xxxx} When the Command Execution State is Blocked (see Section 9.2.1 Requirement 1), the Peripheral shall generate a Peripheral Response
4453 according to Table 77.
4454 Table 77 Peripheral Responses When Command Execution State is Blocked
Bad Phase Header Device is SPM Transport Error in This is an Bad Command Info in
i.e., one of: Correctly Selected Received Manager Packet [3] Unblock Manager Packet [3]
• Bad Robust Token by DeviceMask During i.e., one of: Command i.e.,
• Bad PhaseID [1] (see Table 62) Manager • Bad 8b/10b • Packet_Length
• Bad Packet_Length[2] Packet or Symbol not valid for
CRC • Bad CRC Unblock Opcode Peripheral Response
NO YES NO NO NO X COMMANDS_BLOCKED
4455 Note:
1. Bad PhaseID includes both Reserved and unimplemented values of PhaseID (i.e., READ_DATA or CALIBRATE_PHY in a Peripheral that does not
support the corresponding phase types).
2. Bad Packet_Length means non-zero for ReadData Phase or zero for any other Phase.
3. There is no Manager Packet in a ReadData Phase.
4. Bad Phase Header and Not Selected are identical to the first 2 Rows in Table 78.
5. ‘X’ represents “don’t care”.
6. Note that COMMANDS_BLOCKED takes precedence over TRANSPORT_ERROR even when there is a transport error in the Manager Packet.
4456 Note: The prioritization of Peripheral Responses in Table 77 is illustrated in the informative flowchart in Figure 87.
Bad Phase Header Device is SPM Transport Error in Bad Command Info in
i.e., one of: Correctly Received Manager Packet [3] Manager Packet [3]
• Bad Robust Token Selected by During i.e., one of: e.g.,
• Bad PhaseID[1] DeviceMask Manager • Bad 8b/10b • Bad Opcode
• Bad Packet_Length [2] (see Table 62) Packet or Symbol • Packet_Length not
CRC • Bad CRC valid for this Opcode [4]
• Parameters not valid
for this Opcode [5] or
Device [6] Peripheral Response
NO NO X X X No Response
4460 Note:
1. Bad PhaseID includes both Reserved and unimplented values of PhaseID (i.e., READ_DATA or CALIBRATE_PHY in a Peripheral that does not support
the corresponding phase types).
2. Bad Packet_Length means non-zero for ReadData Phase or zero for any other Phase.
3. There is no Manager Packet in a ReadData Phase.
4. The Peripheral Response always occurs at the position identified by the Packet_Length field from the Header, even if that was not a valid packet length
for this Opcode (see Section ###XREF Requirement ###XREF).
5. E.g., Commit Delay not in the set {14, 15}.
6. E.g., An address in the remote region for Peripherals that do not implement remote writes and reads (see Section 9.2.3 Permission 2.A and
Section 9.2.4 Permission 2.A).
7. ‘X’ represents “don’t care”.
Figure 93
Write WriteA32 Table 81
Figure 96
Figure 94
ReadSetup ReadA32 Table 82
Figure 98
SSCR
Commit Table 84 Figure 91
DSCR
InitCal
CalibratePhy Table 85 Figure 95
TrimCal
1. The ReadData Phase does not have a Manager Packet so does not have an Opcode but is associated with the incomplete ReadA32 Command from
the previous ReadSetup Phase.
No WRITE_OK [1]
1. The Unblock Command has no effect on the Peripheral when the Command Execution State is not Blocked.
Peripheral Command Address is Remote Access State Remote Access This Write (Immediate) Result Peripheral Response
Interpreter Ignored Remote is Remote_Disabled[2] State is Operation of Write Operation
the Command (see Remote_Write_ is Buffered was Failed
Because of a Table 98) Busy[3] for Later e.g., internal error.
Common Error Execution (See Section 9.2.3
(see Table 78) Requirement 16.)
No No X X X YES WRITE_FAILED
No No X X X No WRITE_OK
1. Remote Addresses are not used for any of the SWI3S Registers, but might be used for resources that are implementation-defined or are defined by
other Specifications.
2. Remote Access State of Remote_Disabled (see Section 9.2.2) occurs when a previous Remote Read or Remote Write ended in failure.
3. An unfinished remote write operation is not pre-empted by a new remote write, so it is non-destructive for the Manager to attempt the new remote write
without checking the status of the previously buffered remote write. This contrasts with a deferred remote read, which is pre-empted by either of a new
remote read or remote write (see Section 9.2.2).
4. The 3 responses: REMOTE_ACCESS_DISABLED, REMOTE_WRITE_BUSY, and REMOTE_WRITE_BUFFERED apply only to write commands to the
optional remote address space.
Peripheral Command Address is Remote Access Remote Access Read Operation Remote ReadData is Peripheral Response
Interpreter Ignored Remote State is State is Failed Immediately Ready Immediately [4]
the Command (see Table 101) Remote_Disabled Remote_Write_Busy e.g., internal error.
[2] [3]
Because of a
Common Error
No No X X YES X READ_FAILED
No No X X No X READ_DATA_NOW
1. Remote Addresses are not used for any of the SWI3S-defined Registers, but might be used for resources that are implementation-defined or are
defined by other Specifications.
2. Remote Access State of Remote_Disabled (see Section 9.2.2) occurs when a previous Remote Read or Remote Write ended in failure.
3. An unfinished Remote Write operation is NOT pre-empted by a new Remote Read, so it is non-destructive for the Manager to attempt the new Remote
Read without checking the status of the previously buffered Remote Write. This contrasts with a deferred Remote Read, which is pre-empted by either
of a new Remote Read or Remote Write (see Section 9.2.2).
4. The 3 responses: REMOTE_ACCESS_DISABLED, REMOTE_WRITE_BUSY, and REMOTE_ READ_DEFERRED apply only to read commands to the
optional remote read address space.
4466
No No YES X REMOTE_READ_DEFERRED
No No No YES READ_DATA_NOW
No No No No PROTOCOL_ERROR [2]
4468 Note:
1. Deferred remote read operations are considered to occur outside of Phases (even if the actual operations overlap in time), Thus, if a deferred read
subsequently fails then the response to the ReadData Phase will either be REMOTE_ACCESS_DISABLED if the failure occurs before the response is
selected), or REMOTE_READ_DEFERRED (if the failure occurs after the response is selected). A ReadData Phase can never receive a
READ_FAILED response.
2. Devices that do not implement any remote addresses might still implement the ReadData Phase, in which case the Remote Access State is effectively
always Remote_Idle, and the Peripheral Response will be PROTOCOL_ERROR.
No YES COMMIT_NOT_READY
No No COMMIT_READY
4470 Note:
1. Note: Detecting this is optional, see ###XREF.
4471 ###TODO-Author: Text for somewhere else … Some Devices will not check for unsupported clock configurations, so commiting an unsupported
4472 configuration might cause a Peripheral to detach from the bus and not reappear until it is reset.
4473 ###TODO-Author: add a note in the informative section that COMMIT_NOT_READY can happen for any ImpDef reason. There should be a way for the
4474 software to determine the condition and fix it (e.g., an overtemp interrupt in the amplifier).
4475
4476 Table 85 Peripheral Responses Specific to CalibratePhy Phase
No CALIBRATE_NOW
4477
YES X TRANSPORT_ERROR
No No PHY_CAL_GOOD
No YES No PING_ALERT
No No YES PING_ATTACHED_BUSY
No No No PING_ATTACHED
1. Incomplete Buffered Write means that the internal write operation has not yet reached one of success or failure.
2. Incomplete Split Read means that the internal read operation has not yet reached one of success or failure (this condition is NOT checking for whether
the read data has been delivered to the Manager).
4481
4482 ###notes:
4483 REQUIREMENT: When A Peripheral generates a Peripheral Response of READ_DATA_NOW in a ReadSetup or ReadData Phase it shall ###TODO: <follow
4484 this with a Peripheral Packet and CRC>.
4489 Requirements
4490 ###Note for Reviewers: the prioritization of error conditions and responses is shown in the informative material in flowcharts (see Section 8.1.3).
4491 REQUIREMENT: A Manager shall generate a Manager Response in a ReadSetup Phase according to Table 88.
4492 Table 88 Manager Response in ReadSetup Phase
Bad Peripheral Peripheral Terminated the Peripheral not Ready Peripheral Transferred Peripheral Transferred
Response Read Transfer Properly to Provide Read Data Data with Transport Data Successfully [1]
i.e., one of i.e., Peripheral Response of: i.e., Peripheral Errors i.e., Peripheral
• Bad 8b/10b COMMANDS_BLOCKED Response of: i.e., Peripheral Response Response of:
Symbol TRANSPORT_ERROR REMOTE_READ_ of: READ_DATA_NOW
• Bad Robust COMMAND_ERROR DEFERRED READ_DATA_NOW
Token with no Transport Errors
REMOTE_ACCESS_DISABLED with one of:
• Unexpected
Robust REMOTE_WRITE_BUSY • Bad 8b/10b Symbol
Token READ_FAILED • CRC fail Manager Response
YES X X X X READ_DATA_ERROR
No No No YES X READ_DATA_ERROR
1. The condition in column 5 is the complement of the first 4 columns, i.e., after 4 “No” entries column 5 must be “YES”.
2. See Section # Requirement #.
4493 REQUIREMENT: A Manager shall generate a Manager Response in a ReadData Phase according to Table 89.
4494 Table 89 Manager Response in ReadData Phase
Bad Peripheral Peripheral Terminated the Peripheral not Ready Peripheral Transferred Peripheral Transferred
Response Read Transfer Properly to Provide Read Data Data with Transport Data Successfully
i.e., one of i.e., Peripheral Response of: i.e., Peripheral Errors i.e., Peripheral
• Bad 8b/10b COMMANDS_BLOCKED Response of: i.e., Peripheral Response of:
Symbol REMOTE_READ_ Response of: READ_DATA_NOW
PROTOCOL_ERROR
• Bad Robust DEFERRED READ_DATA_NOW
Token REMOTE_ACCESS_DISABLED with no Transport Errors
• Unexpected with one of:
Robust • Bad 8b/10b
Token Symbol
• CRC fail Manager Response
YES X X X X READ_DATA_ERROR
(No Manager
No YES X X X
Response)
(No Manager
No No YES X X
Response)
No No No YES X READ_DATA_ERROR
No No No No (YES) READ_DATA_OK
Transport Error in One or more Responses Valid Response from a All Populated & Manager Response
Peripheral Response of not-Ready from a Peripheral Selected Peripherals
from a Peripheral Peripheral DeviceNumber that is are Ready
DeviceNumber that is DeviceNumber that is Populated but not i.e., Peripheral
Populated & Selected Populated & Selected Selected Responses of:
i.e., one of i.e., a Peripheral i.e., one of: COMMIT_READY
• Bad 8b/10b Symbol Response of anything COMMANDS_BLOCKED
• Bad Robust Token except for: TRANSPORT_ERROR
• Unexpected Robust COMMIT_READY COMMAND_ERROR
Token COMMIT_NOT_READY
COMMIT_READY
YES — — — CANCEL_COMMIT
No YES — — CANCEL_COMMIT
No No YES — CANCEL_COMMIT
No No No YES CONFIRM_COMMIT
4497 Permissions
4498 ###TODO-Author: rule relating to Read Command in Section 9.1.8:
4499 1. When the Manager terminates the Read Phase early as a result of the Peripheral Response (see Table 88) it may start a new Phase immediately after the
4500 Peripheral Response.
4501 Requirements
SWI3S Registers
Peripheral Command
Non-SWI3S Registers (local)
Model for Registers Non-SWI3S Registers (remote)
Transfers
Command Transport Phases
Protocol Elements of Phases
Bytes
E.g.,
Impedance,
PHY, e.g., DLV Signaling Levels,
Signal Timing.
4508
Figure 113 Layer Stack: Commands and Register Model
Indicate a Stream
SSPA Announce
SSPA 120 Synchronization Point to 1 or
9.1.6 8.1.7 more Peripherals.
Read Transfer
220 + Read 1 or more bytes of data
Address-Mapped (ReadSetup /
(N_bytes × 10) [#1] from address-mapped register
ReadA32 Read ReadData
###TODO / memory locations in 1
9.1.8 Phases)
[+10 for PM] Peripheral
8.1.8
1. If a ReadSetup Phase is deferred and then zero or more ReadData Phases are deferred before data is
provided on the final ReadData Phase then the total length is:
170 + (N_ReadDataPhases_Deferred × 90) + 140 + (N_bytes × 10).
Non-SWI3S Behavior
(other MIPI Specifications and/or
Remote Registers
Implementation-defined) On-chip infrastructure
& Memory (variable latency)
(can be buffered/deferred)
Remote address
Local Registers
Device Power & Memory Address?
(never buffered/deferred) Local address
Management
SWI3S Behavior
Peripheral Behavior Non-SWI3S address
Command Transport
ReadSetup
Unblock Cal_PHY GetInfo Announce Commit Protocol Write ReadData
(Transfers & Phase Types)
PHY
(e.g., DLV signaling)
4521
Figure 114 Peripheral Command Model
Cold Reset
Running
Peripheral unexpectedly
detached from the Bus
(i.e., the Link State changed from
Attached to Syncing)
4524
Figure 115 Peripheral Command Execution State
4525 The Command Execution State of Blocked enables the Manager or Host Controller Interface (HCI) to manage
4526 Command queues that might be implemented in the Manager to improve performance.
4527 If a Peripheral detaches from the bus either:
4528 • By commiting a PM_Action of Force_Resync (see ###XREF), or:
4529 • In a way that is not directed by the Manager (i.e., due to sync errors or low command confidence),
4530 then it enters the Blocked state. If the Peripheral subsequently succeeds in re-Attaching to the bus, then it will
4531 discard all further Commands (or ReadData Phases) until it receives an error-free Unblock Command. The
4532 Peripheral generates a response of COMMANDS_BLOCKED to each Command (or ReadData Phase) that is
4533 discarded.
4534 This mechanism gives time for the Manager driver software to assess the results of a sequence of queued Commands
4535 that has been partially executed, and choose what new sequence of Commands to issue. The driver software can
4536 consider the first Command that received COMMANDS_BLOCKED and any instances of an absent (undriven)
4537 Peripheral Response to determine the last Command that was successfully passed to the Peripheral for execution
4538 before it detached from the bus. The Manager sends an Unblock Command to return the Peripheral to the Running
4539 state, and might issue further reads to interrogate the state of the Peripheral.
4540 The Manager can determine the Peripheral Command Execution State any time that it sends a Command to that
4541 Peripheral, because a Peripheral in the state Blocked prioritizes sending a response of COMMANDS_BLOCKED
4542 over any other response (even over signaling a Transport Error in the Manager Packet).
Host indication:
• Ping Response is not Busy
ReadData Phase:
Warm Reset Per: READ_DEFERRED
ReadData Phase:
Per: READ_DATA_NOW
Man: READ_DATA_OK
Remote
Bus Reset Idle Remote Write Phase:
(part of Cold Start) Per write result: SUCCEEDED
Per: WRITE_OK
Remote ReadSetup Phase:
Remote Write Phase:
Per read result: SUCCEEDED
Per write result: FAILED
Per: READ_DATA_NOW
Per: WRITE_FAILED
Man: READ_DATA_OK
Remote ReadSetup Phase:
Per read result: FAILED
Per: READ_FAILED
4557 The Remote_Idle state indicates that the Peripheral is not currently processing any remote read or write operation.
4558 If the Peripheral accepts a WriteA32 Command that targets a remote address (a Remote Write) but cannot complete
4559 the operation in time to deliver a definitive Peripheral Response of WRITE_OK or WRITE_FAILED, then it sends a
4560 response of REMOTE_WRITE_BUFFERED, stores the command information (address and data), and changes to
4561 Remote Access State: Remote_Write_Busy.
Remote
Read Data
Ready Remote Write: WRITE_BUFFERED
(ReadData or
New Remote ReadSetup):
READ_DEFERRED
Host indication:
Ping will report one of the 2 Remote Write: WRITE_BUFFERED
BUSY Peripheral Status values New Remote Write: REMOTE_WRITE_BUSY OR
Remote Bus Reset Remote Remote ReadSetup: REMOTE_WRITE_BUSY
Read (part of Cold Start Remote ReadSetup: Write
sequence) Per:READ_DATA_NOW AND
Busy Man: READ_DATA_ERROR Busy
Remote ReadSetup: READ_DEFERRED
Warm Reset OR
Remote Write: WRITE_FAILED OR
New Remote ReadSetup: READ_FAILED OR
Existing Deferred Read operation fails Remote
Idle
Remote ReadSetup: Remote Write: WRITE_OK
Per: READ_DATA_NOW AND
Man: READ_DATA_OK
State transition resulting from detaching from bus (Warm reset) Remote
Disabled
State transition not resulting directly from a Phase, i.e., from attempting to Host indications:
perform the Read or Write operation after the Command Transport Phase • Register Read from IntStat_RemoteDisabled bit is
• Ping Response is Alert if (IntEn_RemoteDisabled=1).
• ReadData or Remote Read/Write Phases receive Peripheral Response
of REMOTE_ACCESS_DISABLED.
State transition resulting from a Command Transport Protocol Phase
Phase Name: RESPONSE_NAME Remote ReadSetup: REMOTE_ACCESS_DISABLED OR
Remote Write: REMOTE_ACCESS_DISABLED OR
4629 ReadData: REMOTE_ACCESS_DISABLED
Figure 117 TEMP OLD VERSION TO BE DELETED: Peripheral Remote Access State
9.1.5.4 Ping Info from Peripherals that are Not Attached or Not Present in the System
4646 When there is no Peripheral with a given Device Number on the bus, or that Peripheral is currently not Attached (see
4647 Section ###XREF) or not selected by the Device Mask in the Transfer, then the corresponding Peripheral Status
4648 “slot” will be undriven for the whole of the 8b/10b symbol. This would typically generate a Bad 8b/10b Symbol
4649 Error in the Control Data Stream layer in the Manager (see Section 8.1.16.2). However, the Control Data Stream
4650 uses PHY-specific behavior (see Section 7.1.1.4) to ensure that these undriven periods are actually decoded to a
4651 specific 8b10b pattern of 10’b1111111111, so a Manager might detect this particular pattern and exhibit different
4652 behavior to when occasional bit errors generate a Bad 8b/10b Symbol Error.
4653 When the missing Ping Response is unexpected (i.e., the Peripheral exists, was previously attached, and has not
4654 been put into a Dormant state), the initial Manager reaction might be to repeat the Ping Command to try to
4655 differentiate between the Peripheral having simply missed the first Ping Command due to a simple bit error or
4656 having completely detached from the bus.
9.1.9.3 Executing WriteA32 Commands At-Risk (i.e., before the CRC is known)
4758 An implementation might have some parts of its address map that can be updated “at risk” by WriteA32 Commands
4759 prior to the CRC being checked. E.g., a scratch buffer used as a staging area for indirect writes to internal memories.
0x00 (SSCR) or
Opcode 1
0x01 (DSCR).
4835 ###…
9.1.12 InitCal & TrimCal Commands Used for Peripheral PHY Calibration
4889 ###TODO-Author: expand these notes.
4890 ###TODO-Author: edit this diagram to indicate that the values that follow Manager_CRC16_L are “Peripheral
4891 Response” and are different to the “PHY Cal Result”.
4892 ###NOTE: this is only applicable to some PHYs (e.g., PHY3 (DLV))
InitCal maximum 10
TrimCal current
4946
4947
5031
Figure 118 Command Reference Point for Measuring Row Delay
5046
Figure 119 #INCORRECT#: SSP Timing Details (when using DLV PHY)
5051 Requirements
5052 1. {xx01} The Command Engine in the Peripheral shall be in one of the 2 Command Execution States shown
5053 in Table 94, which influence the Peripheral Responses in the Command Transport Protocol (see
5054 Section 8.2.3):
5055 Table 94 Summary of Command Execution States
Command Execution State Effect on Executing Commands
All Commands are executed normally.
Running
See Table 78.
Only Unblock Commands are executed.
(See Section 9.2.9 Requirement 2).
Blocked All other Commands receive a Response of
COMMANDS_BLOCKED.
See Table 77.
5056 2. {xx02} After a Cold Reset, the Command Execution State shall be set to Running.
5057 Note: Thus when the Peripheral first attaches to the bus after Cold_Standby, Command Execution will not
5058 be blocked.
5059 3. {xx03} When the Peripheral changes from Link State: Attached to Link State: Syncing (i.e., the Peripheral
5060 ‘detaches from the bus’, see Section 5.2.2 Requirement 14) the Peripheral Command Execution State shall
5061 change to Blocked.
5062 Note: If the Peripheral subsequently goes through a Sleep-Wake cycle (i.e. changes to Link State: Sleeping
5063 and then back to Syncing), the Execution State will still be Blocked.
5064 4. The first byte of the Manager Packet in a Phase shall contain an Opcode that identifies which Command is
5065 described by that Manager Packet, according to Table 95.
5066 5. A Peripheral shall implement Opcodes that are shown in Table 95 as either:
5067 A. Mandatory, or
5068 B. Conditional, and the Condition is true for that Peripheral.
5069 6. When a Peripheral that is in Command Execution State: Running receives a Command in a Phase that has
5070 not terminated with a common error (i.e., one of NoResponse, TRANSPORT_ERROR, or
5071 COMMAND_ERROR in Table 78), the Peripheral shall behave according to the rules in the Section
5072 indicated for that Command in Table 95.
5073 7. If a Peripheral receives a Valid Phase Header where the Opcode value is shown in Table 95 as Optional or
5074 Conditional and that Opcode is not implemented in the Peripheral, then the Peripheral shall do both:
5075 A. Discard the Command, and
5076 B. (For all PhaseIDs except for Announce): generate a Peripheral Response of COMMAND_ERROR
5077 (see Table 78).
5078 8. If a Peripheral receives a Valid Phase Header for any PhaseId except for Announce, and the Opcode value
5079 is shown in Table 95 as Reserved, then the Peripheral shall do both:
5080 A. Discard the Command, and
5081 B. (For all PhaseIDs except for Announce): generate a Peripheral Response of COMMAND_ERROR
5082 (see Table 78).
Stream-Synchronous Commit
SSCR 9.2.7 Commit 0x00 Mandatory
Request
Device-Synchronous Commit
DSCR 9.2.7 Commit 0x01 Optional [2]
Request
InitCal 9.2.10 CalibratePhy 0x00 Conditional [3] Used with PHY3 (DLV)
TrimCal 9.2.10 CalibratePhy 0x01 Conditional [3] Used with PHY3 (DLV)
9.2.1 GetStatus
Reserved 0x01 — Generates a Bad Opcode error
Rule 8 Read
9.2.1 0x02–
Reserved All PhaseIDs — Generates a Bad Opcode error
Rule 8 0xFF
1. ExitDormant is mandatory in a Peripheral that implements the Dormant Link State (see Section 5.2.2
Requirement 1).
2. DSCR is used only with dual-ranked registers that are implementation-defined, or defined in other
specifications. All of the dual-ranked registers specified within this Specification are normally updated
using SSCR.
3. InitCal and TrimCal are both mandatory in a Peripheral that implements PHY3 (DLV).
5084 Permissions
5085 1. A Peripheral may implement any Opcode that is shown in Table 95 as Optional.
5086 Requirements
5087 1. {xa01} A Peripheral Device that implements the optional Remote Read and Write Accesses (address value
5088 from 0x80000000 to 0xFFFFFFFF) shall follow the rules in this Section (9.2.2).
5089 2. {xa02} The Remote Access Engine in the Peripheral shall be in one of the 5 Remote Access States shown in
5090 Table 96, which influence the Peripheral Responses in the Command Transport Protocol (see Section 8.2.3)
5091 and the behavior of Commands:
5092 Table 96 Summary of Remote Access States
Ping IntStat_
Indicates RemoteDisabled
Remote Access State Description
Busy (see
(see informative Figure 116) (informative)
(see Requirements 5
Table 109) and 6)
The Peripheral is ready to start a
Remote_Idle No 0
remote read or write.
No remote read or remote write
Remote_Disabled No 1 can be executed until this
condition is cleared.
The Peripheral is temporarily busy
Remote_Write_Busy Yes 0
with a buffered write.
The Peripheral is attempting to
Remote_Read_Busy Yes 0
perform a deferred read.
The Peripheral is waiting for the
Remote_Read_Data_Ready No 0 Manager to collect the read data
from a previously deferred read.
5093 3. {xa03} After a Cold Reset, the Remote Access State shall be Remote_Idle.
5094 4. {xa04} When the Peripheral Link State (see Table 12 in Section 5.2.2) changes from Attached to any other
5095 state, if the Peripheral Remote Access State is not currently Remote_Idle then it shall change to
5096 Remote_Disabled.
5097 5. {xa05} When the Remote Access State changes to Remote_Disabled, IntStat_RemoteDisabled shall
5098 change to 1.
5099 6. {xa06} When the Remote Access State is Remote_Disabled and a 1 is written to the
5100 IntStat_RemoteDisabled bit, the Remote Access State shall change to Remote_Idle.
5103 Note: The Remote Access State transitions in Table 97 are represented in informative Figure 116.
5104
5105 ###TODO-Author: add a note elsewhere in the informative error handling discussion: any Warm Reset
5106 (falling off the bus or intentionally going to Dormant or Sleep) discards any outstanding deferred read or
5107 buffered write (and sets Remote_Disabled if any were discarded). The Manager will always be using some
5108 kind of restart or error recovery from these conditions.”
5109
5118 Requirements
5119 1. The structure of the Write Phase that describes a WriteA32 Command shall be according to Table 72.
5120 2. A Peripheral shall use the Write_Address to determine whether a WriteA32 Command describes a Local
5121 Write or Remote Write, according to the Local/Remote Access column in Table 146.
5122 3. A Peripheral shall accept WriteA32 Commands that have a WriteByteCount that is within the range shown
5123 in Table 98.
5124 Table 98 Local & Remote Writes
Type of Write Range of WriteByteCount [1] Notes
Local Write 1 to Max_WBC_Local [2] —
Remote Write
1 to Max_WBC_Remote [2] Support for Remote Writes is optional
(see Section 9.2.2)
5125 Note:
1. WriteByteCount is calculated from (Packet_Size – 5), see Table 72.
2. The values of Max_WBC_Local and Max_WBC_Remote are implementation-defined and might be
reported in the datasheet and/or the DisCo data for the Peripheral Device.
5126 4. A Peripheral shall have a value of Max_WBC_Local that is between 1 and 250 inclusive.
5127 5. A Peripheral that supports Remote Writes shall have a value of Max_WBC_Remote that is between 1 and
5128 250 inclusive.
5129 6. A Manager shall be capable of generating WriteA32 Commands that have a WriteByteCount of every
5130 integer between 1 and 4.
5131 See also Permission 1 and Recommendation 1.
5132 7. A multi-byte WriteA32 Command to a SWI3S-defined Register address (see Table 146) shall access the set
5133 of bytes at adjacent increasing addresses starting at the 32-bit Write Address in the Manager Packet.
5134 Note: The set of bytes accessed by a multi-byte WriteA32 Command to a Device-defined address is
5135 implementation-defined and not necessarily the same as sequential incrementing addresses. The set of
5136 bytes accessed by a WriteA32 Command to an SDCA address is defined in [MIPI02].
5137 8. The Manager shall not generate WriteA32 Commands that address bytes in both the Local and Remote
5138 regions in Table 146.
5139 9. The Manager shall not generate WriteA32 Commands with addresses that wrap (i.e., that require the
5140 address to be incremented to (0xFFFFFFFF + 1)).
5144 11. When all of the bytes that are addressed in a WriteA32 Command are implemented, the Peripheral shall do
5145 both:
5146 A. Accept the Command, and
5147 B. Write each data byte to the corresponding address.
5148 Note: see also Permission 2.
5149 12. When a Peripheral is in Remote Access State: Remote_Disabled and attempts to execute an error-free
5150 WriteA32 Command to a Remote Address, it shall discard the Command and generate a Peripheral
5151 Response of REMOTE_ACCESS_DISABLED (see Table 81).
5152 13. When a Peripheral is in Remote Access State: Remote_Write_Busy and attempts to execute an error-free
5153 WriteA32 Command to a Remote Address, it shall discard the Command and generate a Peripheral
5154 Response of REMOTE_WRITE_BUSY (see Table 81).
— Failed WRITE_FAILED.
WRITE_OK.
Write the bytes now (i.e., finishing before 79
No Succeeded Rows after the start of the Peripheral response).
Set Remote Access State to Remote_Idle (see
Section 9.2.2 Requirement ###XREF).
WRITE_FAILED.
Remote No Failed Set Remote Access State to Remote_Disabled
Address (see Section 9.2.2 Requirement ###XREF).
REMOTE_WRITE_BUFFERED.
Set Remote Access State to
Remote_Write_Busy (see Section 9.2.2
Yes —
Requirement ###XREF).
Attempt to write the bytes later (i.e., after an
implementation-defined delay).
5157 15. When a WriteA32 Command updates a SWI3S-defined Register in which some or all of the bits are
5158 Reserved, the Peripheral shall ignore the values written to the Reserved bits.
5159 Note: the Reserved bits will always read as zero.
5160 16. When the Peripheral attempts to perform a write operation it shall yield a result that is either:
5161 A. Succeeded, if every byte was successfully written to the corresponding address, or
5162 B. Failed, if 1 or more bytes were not successfully written to the corresponding address (e.g., due to an
5163 internal bus error).
5164 Note: in the case of a Remote Write that was buffered, this result occurs after the Peripheral produced its
5165 Response within the Write Phase, but will influence the Remote Access State (see Table 100).
5166 17. When a WriteA32 Command updates a SWI3S-defined Register in which some or all of the bits are
5167 Reserved, the Peripheral shall ignore the values written to the Reserved bits.
5168 Note: The Reserved bits will always read as zero.
5180 3. When a WriteA32 Command stores a value in a SWI3S-defined Register that is not in the set of valid
5181 values for this Peripheral then the Peripheral may substitute a different value that is in the set of valid
5182 values.
5183 Note: A subsequent read will return the actual value that was stored.
5184 4. When a WriteA32 Command targets an address that is in a region defined in the address map (see
5185 Table 146) as Device-defined or SDCA, the Peripheral may store the values to the addressed bytes before
5186 having checked the ManagerCRC.
5187 Note: A Peripheral would perform these “speculative” writes only in regions that it knew to be scratch
5188 memories.
5189 Recommendations
5190 1. A Manager should be capable of generating WriteA32 Commands that have a WriteByteCount of up to 16.
5211 Requirements
5212 1. The structure of the ReadSetup Phase that describes a ReadA32 Command shall be according to Table 74.
5213 2. A Peripheral shall use the ReadAddress to determine whether a ReadA32 Command describes a Local Read
5214 or Remote Read, according to the Local/Remote column in Table 146.
5215 3. A Peripheral shall accept ReadA32 Commands that have a ReadByteCount (= R + 1) that is within the
5216 range shown in Table 101.
5217 Table 101 Local & Remote Reads
Type of Access Range of ReadByteCount Notes
Local Read 1 to Max_RBC_Local [1] —
Remote Read
1 to Max_RBC_Remote [1] Support for Remote Reads is optional
(see Section 9.2.2)
5218 Note:
1. The values of Max_RBC_Local and Max_RBC_Remote are implementation-defined and might be reported
in the datasheet and/or the DisCo data for the Peripheral Device.
5219 4. A Peripheral shall have a value of Max_RBC_Local that is between 1 and 256 inclusive.
5220 5. A Peripheral that supports Remote Reads shall have a value of Max_RBC_Remote that is between 1 and
5221 256 inclusive.
5222 6. A Manager shall be capable of generating ReadA32 Commands that have a ReadByteCount of every
5223 integer between 1 and 4.
5224 See also Permission 1 and Recommendation 1.
5237 11. When all of the bytes that are addressed in a ReadA32 Command are implemented, the Peripheral shall do
5238 both:
5239 A. Accept the Command and
5240 B. Return a valid data byte from each corresponding address.
5241 Note: see also Permission 2.
5242 12. When a Peripheral is in Remote Access State: Remote_Disabled and attempts to execute an error-free
5243 ReadA32 Command to a Remote Address, it shall discard the Command and generate a Peripheral
5244 Response of REMOTE_ACCESS_DISABLED (see Table 82).
5245 13. When a Peripheral is in Remote Access State: Remote_Write_Busy and attempts to execute an error-free
5246 ReadA32 Command to a Remote Address, it shall discard the ReadA32 Command and generate a
5247 Peripheral Response of REMOTE_WRITE_BUSY (see Table 81).
READ_DATA_NOW.
Set Remote Access State to
Remote_Read_DataReady (see Section 9.2.2
Requirement ###XREF).
No No
Save the bytes for possible future retry in a
Read_Data Phase.
Attempt to deliver the bytes in a Peripheral Packet
Remote
followed by a CRC (see Requirement ###XREF) [#].
(Deferable)
Address READ_FAILED.
No Yes Set Remote Access State to Remote_Disabled
(see Section 9.2.2 Requirement ###XREF).
REMOTE_READ_DEFERRED.
Set Remote Access State to Remote_Read_Busy
Yes —
(see Section 9.2.2 Requirement ###XREF).
Attempt to perform the read operation later. [#]
1. “Failed” means that the internal Peripheral read operation failed (not the Command Transport Protocol).
2. A Local Read can fail only when it is reading from Registers in the ImpDef or SDCA spaces. A Read from
the SWI3S-defined Registers (see tables in Section 14.2) cannot result in a failure.
5250 15. ###TODO: Rules about interpreting the Manager Response (HD10): pick closest response (see
5251 Section 7.2.2 Requirement 13) and then …
5252 Deferable Address & READ_DATA_OK => state = Remote_Idle & retire the saved bytes and enact any side-effects
5253 (e.g., arming for IntClear).
5254 Deferable Address & READ_DATA_ERROR => state = Remote_Read_DataReady & retain the saved bytes and
5255 NOT enact any side-effects.
5256 ###TODO Author: Answers from AudioWG: for non-deferable (aka Local) reads, is the Peripheral behavior
5257 any different depending on the Manager Response of OK or Error? (yes, side-effects, see above)
5258 No, there should there NOT be an interrupt for reporting “Peripheral delivered this read data but the
5259 Manager rejected it so now it’s been discarded. If this was 5-9 bit errors in a READ_DATA_OK then the
5260 Peripheral will indicate BadHD10. If it was a clean READ_DATA_FAIL then the Manager knew what it was
5261 doing.
5262 16. ###TODO: Rules about the deferred read operation, which is asynchronous to the command transport
5263 protocol.
5264 Completed OK => set state = Remote_Read_DataReady.; enact any side-effects.
5265 Failure => set state = Remote_Disabled.; do not enact any side-effects.
5266
5267 17. ###TODO: Rules about the behavior of ReadData Phases.
5268
5270 ###TODO:Author add note that if the read operation had failed then READ_DATA will see Remote Access
5271 State= Remote_Disabled and deliver Peeripheral response of REMOTE_DISABLED (see Table 83)
5272 18. {} When there is any internal side-effect of a read operation within the Peripheral, this shall happen
5273 synchronously with the Row Sync Point after the Row containing the 10th bit of the Manager Response
5274 symbol of READ_DATA_OK.
5275 19. {} For any bit shown in a Peripheral register as Reserved, the Peripheral shall return a 0 in the
5276 corresponding bit of the read data byte (see Permission 2).
5277 Permissions
5278 1. {} A Manager may be capable of generating ReadA32 Commands that have a ReadByteCount of up to 256.
5279 2. {} When 1 or more of the bytes addressed in a ReadA32 Command is/are Reserved or not implemented, the
5280 Peripheral may do either:
5281 A. Reject the Command by responding with COMMAND_ERROR, or
5282 B. Accept the Command (Requirement 11) and
5283 i. Return valid data for bytes that correspond to implemented addresses, and
5284 ii. Return data value zero for bytes that correspond to unimplemented or Reserved addresses.
5285 Note: “unimplemented” in this Permission includes Remote Address space in a Peripheral that does not
5286 implement any of that space.
5287 Recommendations
5288 1. {} A Manager should be capable of generating ReadA32 Commands that have a ReadByteCount of up to
5289 16.
5290
5291 Requirements
5292 1. {} The Peripheral shall interpret any of the conditions listed in Table 105 as command encoding errors in an
5293 SSPA Command:
5294 Table 105 SSPA Command Errors
Notes
Error Name Condition
(informative)
Invalid Manager Packet Size Header:PacketLength ≠ 3 Fixed size of Manager Packet
ManagerPacket:RowDelay
Invalid Row Delay not in the set of valid values: ###
{14, 15}
5302 Requirements
5303 1. {} The Peripheral shall interpret any of the conditions listed in Table 106 as command encoding errors in an
5304 ExitDormant Command:
5305 Table 106 ExitDormant Command Errors
Notes
Error Name Condition
(informative)
Invalid Manager Packet Size Header:PacketLength ≠ Fixed size of Manager Packet
ManagerPacket:Opcode is Duplicate of Section 9.2.1
ExitDormant Command not
0x01 (ExitDormant) and this Requirement 7.B shown here
implemented
Opcode is not implemented. for clarity.
5306 2. {} When the Peripheral detects a command encoding error shown in Table 106 it shall;
5307 A. Discard the command, and
5308 B. [optional when in state Dormant] Increment the Command Error counter.
5309 Note: Announce Phases do not include a Peripheral Response, so this error is not signaled to the Manager
5310 within the Protocol.
5311 3. {} When a Peripheral in Link State:Dormant detects an error-free ExitDormant Command, it shall re-attach
5312 to the bus (see Section 5.2.2 Requirement 21).
5313 Requirements
5314 1. {} The Peripheral shall interpret any of the conditions listed in Table 107 as a Command Error in an SSCR
5315 or DSCR Command (see Table 78 in Section 8.2.3 Rule #2):
5316 Table 107 SSCR / DSCR Command Errors
Notes
Error Name Condition
(informative)
Invalid Manager Packet Size Header:PacketLength ≠ 3 Fixed size of Manager Packet
ManagerPacket:RowDelay
Invalid Row Delay not in the set of valid values: —
{14, 15}
ManagerPacket:Opcode is Duplicate of Section 9.2.1
DSCR not implemented 0x01 (DSCR) and this Requirement 7.B shown here
Opcode is not implemented. for clarity.
5317 2. {} When the Peripheral executes an error-free DSCR Command it shall issue a Commit Synchronization
5318 Point at a time described by Section 8.2.1 Requirement 17 to all Data Ports that are a member of 1 or more
5319 of the Commit Groups selected according to Section 8.2.1 Requirement 16.
5320
5321 3. {} When the Peripheral executes an error-free SSCR Command it shall issue a both a Commit
5322 Synchronization Point and a Stream Synchronization Point at a time described by Section 8.2.1
5323 Requirement 17 to all Data Ports that are a member of 1 or more of the Commit Groups selected according
5324 to Section 8.2.1 Requirement 16.
5325
5326 ###TODO-Author: Add a requirement describing effect of Commit Synchronization Point in the Register chapter.
5327 At a Commit Synchronization Point, the Peripheral shall copy the value of all selected *_NEXT Registers to the
5328 corresponding *_CURR Register.
5329 ###TODO-Author: check whether this statement about HD10 has been completely replaced by the special rules in
5330 the Command parsing about not abandoning Commands in the critical section.
5331 Explain that IF the Peripheral Phase Engine gets to the start of the Manager Response then the HD10 symbol
5332 detector will consume the next 10 CDS bits to make its go/no-go decision, even if the SPM detector fires part way
5333 through that symbol.
5334
5345 Requirements
5346 1. {} The Peripheral shall interpret any of the conditions listed in Table 108 as a Command Error in a Ping
5347 Command (see Table 78 in Section 8.2.3 Rule #2):
5348 Table 108 Ping Command Errors
Notes
Error Name Condition
(informative)
Manager Packet is just 1 byte
Invalid Manager Packet Size Header:PacketLength ≠
(Opcode)
5349
5350 ###TODO-Author: missing requirement to introduce Table 109.
5351 Table 109 Peripheral Status Information in Ping Command
Alert Status
Remote Access State
(one or more Peripheral Info
is Remote_Write_Busy
enabled Robust Token Notes
or Remote_Read_Busy
interrupts are (See Table 64)
(see Table 96)
active)
Alert AND
PING_ALERT_BUSY
YES YES Remote Transaction in
10
Progress
PING_ALERT
YES No Alert
8
PING_ATTACHED
No No Attached
0
5352
1. ###
5353 ###TODO-Author:
5354 Return status indicating:
5355 • whether or not the Peripheral has an alert status (i.e. at least one interrupt source has (IntStat_nn=1) AND
5356 (IntEn_nn=1).
5357 • for peripherals that implement remote accesses: whether the Remote Access State is busy, i.e. is there an
5358 incomplete buffered write operation or a split read transfer that is NOT yet ready to deliver its read data.
5359 Note:
5360 A split read for which data becomes ready will report Ping Info of simply Attached (or Alert): it is up to the
5361 Manager to know that it had issued a ReadSetup and thus that not being remote_busy means that the
5362 peripheral is ready for a READ_DATA Phase.
5363
5372 Requirements
5373 1. The Peripheral shall interpret any of the conditions listed in Table 110 as a Command Error in an Unblock
5374 Command (see Table 78 in Section 8.2.3 Rule #2):
5375 Table 110 Unblock Command Errors
Notes
Error Name Condition
(informative)
Manager Packet is just 1 byte
Invalid Manager Packet Size Header:PacketLength ≠
(Opcode)
5376 2. Executing an error-free Unblock Command sets the Command Execution State to Running. (See Table 94
5377 in Section 9.2.1 Requirement 1).
5378 Note: The Unblock Command does not affect the Remote Access State. If the Remote Access State is
5379 Remote_Disabled then this can be cleared to Remote_Idle by writing 1 to the RW1C bit:
5380 IntStat_RemoteDisabled (see Section 9.2.2 Requirement 6).
5381 Requirements
5382 1. The Peripheral shall interpret any of the conditions listed in Table 111 as a Command Error in a InitCal or
5383 TrimCal Command (see Table 78 in Section 8.2.3 Rule #2):
5384 Table 111 InitCal & TrimCal Command Errors
Notes
Error Name Condition
(informative)
Invalid Manager Packet
Header:PacketLength ≠ 3 Fixed length Manager Packet
Size
Maximum calibration packet
Bad Calibration Length ManagerPacket:CalibrationLength > 63
length is 64 × 30 = 1920 Rows.
min_adjust_length is imp-def,
ManagerPacket:AdjustLength <
Bad Adjust Length see Section 9.2.10
Peripheral_min_adjust_length
Rule ###XREF.
C D S0 x2
Bit name x2 C x2 D x2
Bit name x3 C x3 D x3
Bit name x4 C x4 D x4
5485
Figure 120 Key to Wide Bits in Transport Pattern Diagrams
S1 M-CDS
C HandOver (S1-to-CDS) M-CDS x2
5489 C: or CDS: represents a generic Control Data Stream bit that might be driven by either the Manager or a Peripheral
5490 (or indeed by undriven in some special cases). The rules for driving these bits are defined as part of the Command
5491 protocol Layer (see Section 8).
5492 Control Data Special: (with a grey dotted line above it) represents a PHY-specific special drive mode
5493 (passive-1-active-0) for the Control Data Stream that is used in the boot-up mode for some PHYs (see, e.g.,
5494 [###XREF to DLV PHY]).
5495 HandOver (S1-to-CDS): (for some PHYs, e.g., DLV) represents a special case that is either Manager CDS or
5496 HandOver (see Section 10.1.5.4.1).
5497 Idle: represents a Control Data Stream bit when the Manager is driving the Idle pattern (pairs of 0 and 1 bits).
D Payload Datastream D x2
PD Datastream: Peripheral PD x2
MD Datastream: Manager MD x2
D1 Datastream Number 1 D1 x2
5500 Blue Dot in Red Ring: represents a Stream Synchronization Point (SSP) when all of the streams shown in the figure
5501 would simultaneously experience a sampling event and the Transport Pattern starts its periodic repeat.
5502 D: represents a Payload bit from a Data Port, which might be driven by either the Manager or a Peripheral.
5503 PD: represents the specific case of a Payload bit from a Data Port that is known to be driven by the Peripheral.
5504 MD: represents the specific case of a Payload bit from a Data Port that is known to be driven by the Manager.
5505 D1, PD2, MD3, etc.: represent the case when different Data Ports and/or devices are driving Payload bits.
HandOver
M-CDS
HandOver (S1-to-CDS) M-CDS x2
K Bus Keeper
K0 Bus Keeper 0
K1 Bus Keeper 1
PHY: Tail
PHY: Tail
PHY: Tail
5510 Red Arrow: represents the Row Sync Point that defines the start of the Row, i.e., the start of Column 0. How this is
5511 information is conveyed to the Peripherals is PHY-specific (see Section 4.2.4.2).
5512 S0: (for DLV PHY) represents a Sync0 bit driven by the Manager. The Manager drives one or more Sync0 bits prior
5513 to Sync1 in order to dampen any existing signal reflections on the bus and so reduce ISI impact on clock jitter of the
5514 following Row Sync Point.
5515 S1: (for DLV PHY) represents a Sync1 bit driven by the Manager. The signal transition from Sync0 to Sync1
5516 defines the Row Sync Point in this PHY.
5517 Two Black Arrows: represents a HandOver Unit Interval. These are allocated within a Transport Pattern to create
5518 undriven Unit Interval(s) to separate periods when the bus is driven by two different transmitters. This provides
5519 timing margin for the possible time offset (due to systematic error and jitter within devices) between when the two
5520 transmitters drive the bus, and for propagation delays between different transmitting and receiving devices.
5521 HandOver (S1-to-CDS): (for some PHYs, e.g., DLV PHY) represents a special case that is either Manager CDS or
5522 Handover (see Section 10.1.5.4.1).
5523 K: represents a Keeper Unit Interval. When no transmitter is driving the bus then a bus keeper circuit (in the PHY
5524 within the Manager) maintains the current signal level.
5525 K0: represents a Keeper Unit Interval when it is known that the bus keeper is maintaining the value 0 from a
5526 preceding Bit.
... 14 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0
... S0 x2 S1 M-C
C K K K K K K K K K K S0 x2 S1
5558
Figure 124 Command-Only Transport Pattern
5559 The effect of this Transport Pattern and the keeper behavior leads to a waveform on the bus that has a single rising
5560 edge (i.e., DLV-0 to DLV-1 transition) at the Row Sync Point, and a single falling edge at a position that is
5561 modulated by the owner and contents of the Control Data Stream, as shown in Figure 125.
... 14 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0
... S0 x2 S1 M-C
C0 K0 K0 K0 K0 K0 K0 K0 K0 K0 K0 S0 x2 S1
... S0 x2 S1 M-C
C1 K1 K1 K1 K1 K1 K1 K1 K1 K1 K1 S0 x2 S1
Manager CDS=0
Peripheral CDS=0
5562
Figure 125 Command-Only Transport Pattern: Single Rising Edge
10.1.7.1 Initial Clock Config and Transport Pattern for DLV PHY after Cold Start (Safe-Lock-4)
5563 In systems that use the DLV PHY, the initial Clock Config after a Cold Start is compatible with Devices that have
5564 default values in their PHY control registers. This initial Clock Config operates at a “Safe Speed”, i.e., a bit rate with
5565 a unit interval large enough for signals to propagate reliably between the Manager and any Peripheral (in either
5566 direction) in any valid size of system and when the Transmitters in the PHYs have default edge rates and PHY
5567 timing calibration has not yet been completed.
5568 The initial Transport Pattern is a Command-Only pattern that facilitates Peripheral Devices locking their clock
5569 recovery circuits to the waveform; the combination of 4-Column Clock Config at a safe speed and Transport Pattern
5570 that facilitates PLL/DLL lock is named “Safe-Lock-4”.
5571 Figure 126 shows the Transport Pattern used in Safe-Lock-4. When the Peripheral owns the CDS bits it uses a
5572 special drive mode (passive 1, active 0) to avoid clashing with the subsequent Sync0 bit driven by the Manager. The
5573 Cold Reset values of the Peripheral UI Rate Range and Row Rate Range register fields allow for a range of possible
5574 frequencies in the actual Clock Config generated by the Manager. This figure illustrates 4 possibile Clock Configs:
5575 • 2.400 MRows/sec × 4 columns = 9.600 Mbps.
5576 • 2.8224 MRows/sec × 4 columns = 11.2896 Mbps.
5577 • 3.072 MRows/sec × 4 columns = 12.288 Mbps.
5578 • 3.200 MRows/sec × 4 columns = 12.800 Mbps.
0 1 2 3
S1 CDS-Special S0
0 1 2 3
S1 CDS-Special S0
0 1 2 3
S1 CDS-Special S0
0 1 2 3
S1 CDS-Special S0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-C
C S0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-C
C S0 x2
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-C
C x2 S0 x2
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-CDS x2 C x4 S0 x2
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-CDS x4 *C x4 S0 x4
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
S1 M-C
C S0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
S1 M-C
C S0 x2
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
S1 M-C
C x2 S0 x2
5591
Figure 127 Example Transport Patterns: Command-Only for DLV PHY (Lock-N)
5592
5593 ###TODO-AUTHOR: show Command-Only patterns that will be more typical for Sleep-Wake cycles, e.g., Row
5594 with some data, row with data removed which will be Command-Only, row with some or all of the data reinstated
5595 (maybe a 2-pase process with Mics beingf switched on immediately and amps a bit later after more re-initialization /
5596 preparation).
5597
10.1.8.1 Initial Transport Patterns for FBCSE PHY after Cold Boot or Warm Boot (Sleep-Wake)
5598 The FBCSE PHY uses a forwarded bit clock so that the Peripherals can unambiguously sample data bits from the
5599 bus. Thus the Command-Only Transport Patterns for this PHY are much simpler than the DLV PHY. Figure 128 and
5600 Figure 129 show some example Command-Only Transport Patterns that might be used with the FBCSE PHYs after
5601 either Cold Start (cold boot) or Warm Start (sleep-wake). The UIs allocated to the Control Data Stream are identical
5602 for both PHYs, and the only difference is whether UIs are reserved for HandOver:
5603 • FBCSE PHY2 (Figure 128) uses explicitly allocated HandOver UIs.
5604 • FBCSE PHY1 (Figure 129) uses self-timed intra-UI (“hidden”) HandOvers.
0 1
CDS
0 1 2 3
CDS
...
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
CDS
5605
Figure 128 Example Transport Patterns: Command-Only for FBCSE PHY2
0 1
CDS
0 1 2 3
CDS
...
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
CDS
5606
Figure 129 Example Transport Patterns: Command-Only for FBCSE PHY1
N-2 N-1 0 1 2 3 4
Data Data Data Data Data
(N-2) (N-1) CDS (2) (3) (4) Fragment of Transport Pattern for FC-SE PHY
N-1 0
Data CDS=0 is encoded by inverting the data from
(N-1)
CDS
Column N-1 at the end of the previous Row
___
N-1 N-1
Decoded CDS=0
N-1 0
Data CDS=1 is encoded by repeating the data from
(N-1) CDS
Column N-1 at the end of the previous Row
N-1 N-1
Decoded CDS=1
N-1 0 When CDS is undriven (e.g., because a Peripheral is not yet responding to Ping),
Data
(N-1) CDS the bus-keeper maintains the data from Column N-1 at the end of the previous
Row, which is thus decoded as CDS=1.
N-1 (N-1)
C= 0 C= 0 C= 1 C= 1 C= 0 C= 1 C= 0 C= 0 C= 0
5618
Figure 131 Example of Data Waveform for Command-Only Transport Pattern for FBCSE PHY
5619 ###TODO-Author: illustrate (either here or in the FBCSE PHY chapter) that the FIRST rising edge on DP is
5620 the clock edge that starts column 0. This helps with instant start up. The first 10 CDS bits from the Manager
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-CDS
C D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 S0
S1 M-CDS
C D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 S0
S1 M-CDS
C D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 S0
S1 M-CDS
C D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 S0
S1 M-CDS
C D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 S0
S1 M-CDS
C D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 S0
S1 M-CDS
C D4 D4 D4 D4 D4 D4 D4 D4 D4 D4 S0
S1 M-CDS
C D4 D4 D4 D4 D4 D4 D4 D4 D4 D4 S0
S1 M-CDS
C S0
5646
Figure 132 Example Transport Pattern: PCM Stream
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-CDS
C D1 D2 D3 D4 D5 S0 x2
S1 M-CDS
C D1 D2 D3 D4 D5 S0 x2
S1 M-CDS
C D1 D2 D3 D4 D5 S0 x2
S1 M-CDS
C D1 D2 D3 D4 D5 S0 x2
S1 M-CDS
C D1 D2 D3 D4 D5 S0 x2
5657
Figure 133 Example TP: PDM Streams Without Sample Grouping (DLV PHY)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-CDS
C D1 D1 D1 D1 D2 D2 D2 D2 S0 x2
S1 M-CDS
C D3 D3 D3 D3 D4 D4 D4 D4 S0 x2
S1 M-CDS
C D5 D5 D5 D5 D6 D6 D6 D6 S0 x2
S1 M-CDS
C D7 D7 D7 D7 D8 D8 D8 D8 S0 x2
S1 M-CDS
C D1 D1 D1 D1 D2 D2 D2 D2 S0 x2
5667
Figure 134 Example TP: PDM Streams with Sample Grouping (DLV PHY)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-CDS
C D1 K K K K K K K K S0 x2
S1 M-CDS
C D1 K K K K K K K K S0 x2
S1 M-CDS
C D1 K K K K K K K K S0 x2
S1 M-CDS
C D1 K K K K K K K K S0 x2
S1 M-CDS
C D1 K K K K K K K K S0 x2
5679
Figure 135 Example TP: 1 Low-Power PDM Mic Stream (DLV PHY)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
S1 M-CDS
C D1 D1 D1 D1 D5 D5 D5 D5 MD1 MD1 MD1 MD1 MD1 MD1 MD1 MD1 S0 x2
S1 M-CDS
C D2 D2 D2 D2 D6 D6 D6 D6 MD1 MD1 MD1 MD1 MD1 MD1 MD1 MD1 S0 x2
S1 M-CDS
C D3 D3 D3 D3 D7 D7 D7 D7 MD2 MD2 MD2 MD2 MD2 MD2 MD2 MD2 S0 x2
S1 M-CDS
C D4 D4 D4 D4 D8 D8 D8 D8 MD2 MD2 MD2 MD2 MD2 MD2 MD2 MD2 S0 x2
S1 M-CDS
C D1 D1 D1 D1 D5 D5 D5 D5 S0 x2
S1 M-CDS
C D2 D2 D2 D2 D6 D6 D6 D6 S0 x2
S1 M-CDS
C D3 D3 D3 D3 D7 D7 D7 D7 S0 x2
5695
Figure 136 Example TP: 24 Columns (DLV PHY)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
C MD1 MD1 MD1 MD1 P3Da P3Da P3Da P3Da P3Da P3Da P3Da P3Da
C MD1 MD1 MD1 MD1 P3Da P3Da P3Da P3Da P3Da P3Da P3Da P3Da
C MD1 MD1 MD1 MD1 P3Db P3Db P3Db P3Db P3Db P3Db P3Db P3Db
C MD1 MD1 MD1 MD1 P3Db P3Db P3Db P3Db P3Db P3Db P3Db P3Db
C MD2 MD2 MD2 MD2 P4Da P4Da P4Da P4Da P4Da P4Da P4Da P4Da
C MD2 MD2 MD2 MD2 P4Da P4Da P4Da P4Da P4Da P4Da P4Da P4Da
C MD2 MD2 MD2 MD2 P4Db P4Db P4Db P4Db P4Db P4Db P4Db P4Db
C MD2 MD2 MD2 MD2 P4Db P4Db P4Db P4Db P4Db P4Db P4Db P4Db
C MD1 MD1 MD1 MD1 P3Da P3Da P3Da P3Da P3Da P3Da P3Da P3Da
5711
Figure 137 Example TP: PCM Streams (FBCSE PHY2)
0 1 2 3 4 5
C D1 D2
C D1 D2
C D1 D2
C D1 D2
5719
Figure 138 Example TP: PDM Streams Without Sample Grouping (FBCSE PHY2)
0 1 2 3 4 5
C D1 D1 D1
C D2 D2 D2
C D3 D3 D3
C D1 D1 D1
5727
Figure 139 Example TP: PDM Streams with Sample Grouping (FBCSE PHY2)
0 1
C D1
C D1
C D1
5740
Figure 140 Example TP: 1 Slow PDM Mic (FBCSE PHY1)
5741 Figure 141 illustrates that the absence of HandOver UIs with FBCSE PHY1 means that multiple streams can be
5742 packed efficiently without the need to use sample grouping, which would increase latency.
5743 The Clock Config in the example in Figure 141 is 3.072 MRows/sec × 4 columns = 12.288 Mbps.
5744 The audio streams in this example Transport Pattern are:
5745 • 3 streams of 3.072 MHz × 1-bit PDM.
5746 The SSP Rate in this example is 3.072 MHz because the pattern repeats every Row.
0 1 2 3
C D1 D2 D3
C D1 D2 D3
C D1 D2 D3
5747
Figure 141 Example TP: 3 PDM Mics (FBCSE PHY1)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-CDS
C G D1 D1 D1 G D4 D4 D4 S0 x2
S1 M-CDS
C G D2 D2 D2 G D5 D5 D5 S0 x2
S1 M-CDS
C G D3 D3 D3 G D6 D6 D6 S0 x2
S1 M-CDS
C G D1 D1 D1 G D4 D4 D4 S0 x2
5767
Figure 142 Example Traffic Pattern: Guard Bits
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-CDS
C P1-to-P P1-to-P MD1 MD1 MD1 MD1 MD1 S0 x2
S1 M-CDS
C P1-to-P P1-to-P MD1 MD1 MD1 MD1 MD1 S0 x2
S1 M-CDS
C P1-to-P P1-to-P MD1 MD1 MD1 MD1 MD1 S0 x2
S1 M-CDS
C P1-to-P P1-to-P MD1 MD1 MD1 MD1 MD1 S0 x2
S1 M-CDS
C P1-to-P P1-to-P MD1 MD1 MD1 MD1 S0 x2
S1 M-CDS
C P1-to-P P1-to-P MD2 MD2 MD2 MD2 MD2 S0 x2
S1 M-CDS
C P1-to-P P1-to-P MD2 MD2 MD2 MD2 MD2 S0 x2
S1 M-CDS
C P1-to-P P1-to-P MD2 MD2 MD2 MD2 MD2 S0 x2
S1 M-CDS
C P2-to-P P2-to-P MD2 MD2 MD2 MD2 MD2 S0 x2
S1 M-CDS
C P2-to-P P2-to-P MD2 MD2 MD2 MD2 S0 x2
S1 M-CDS
C P2-to-P P2-to-P S0 x2
S1 M-CDS
C P2-to-P P2-to-P S0 x2
S1 M-CDS
C P2-to-P P2-to-P S0 x2
S1 M-CDS
C P2-to-P P2-to-P S0 x2
S1 M-CDS
C P2-to-P P2-to-P S0 x2
S1 M-CDS
C P2-to-P P2-to-P S0 x2
S1 M-CDS
C S0 x2
S1 M-CDS
C S0 x2
... ... Total of 48 spare Rows ... ...
S1 M-CDS
C S0 x2
S1 M-CDS
C S0 x2
S1 M-CDS
C P1-to-P P1-to-P MD1 MD1 MD1 MD1 MD1 S0 x2
S1 M-CDS
C P1-to-P P1-to-P MD1 MD1 MD1 MD1 MD1 S0 x2
5780
Figure 143 Example Transport Pattern: Wide Bits
10.1.14.1 Example Transport Patterns for PDM Audio with Tail Bits (DLV PHY)
5781 Figure 144 shows an example Transport Pattern similar to that in Figure 134, but including Tail bits. A Tail bit is
5782 inserted after the block of all bits transmitted from each component before the subsequent HandOver UI (i.e., in
5783 Columns 1, 4 and 12 in this example). The Sample Grouping has been increased to 6 to reduce the number of UIs
5784 used for Tail bits.
5785 The Clock Config in the example in Figure 134 is 3.072 MRows/sec × 16 columns = 49.152 Mbps.
5786 The audio streams in this Transport Pattern are:
5787 • 6 channels of 3.072 MHz × 1-bit PDM; Sample Grouping = 6, so latency = 1.95 µsec.
5788 The SSP Rate in this example is 512 kHz because the pattern repeats every 6 Rows.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-CDS
C D1 D1 D1 D1 D1 D1 S0 x2
S1 M-CDS
C D2 D2 D2 D2 D2 D2 S0 x2
S1 M-CDS
C D3 D3 D3 D3 D3 D3 S0 x2
S1 M-CDS
C D4 D4 D4 D4 D4 D4 S0 x2
S1 M-CDS
C D5 D5 D5 D5 D5 D5 S0 x2
S1 M-CDS
C D6 D6 D6 D6 D6 D6 S0 x2
S1 M-CDS
C D1 D1 D1 D1 D1 D1 S0 x2
5789
Figure 144 Example Transport Pattern: PDM Streams with PHY Tail Bits
5790 In contrast, Figure 145 shows the effects of adding PHY Tail bits to a Transport Pattern similar to Figure 133 that
5791 has 1-bit samples without using sample grouping. Here the “cost” of tails and handovers significantly reduces the
5792 usable bandwidth.
5793 The Clock Config in the example in Figure 145 is 3.072 MRows/sec × 16 columns = 49.152 Mbps.
5794 The audio streams in this Transport Pattern are:
5795 • 2 streams of 1 channel of 3.072 MHz × 1-bit PDM; Sample Grouping = 1, so latency = 326 nsec.
5796 The SSP Rate in this example is 3.072 MHz because the pattern repeats every Row.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-CDS
C D1 D2 S0 x2
S1 M-CDS
C D1 D2 S0 x2
5797
Figure 145 Example Transport Pattern: PDM Streams with PHY Tail Bits (No Sample Grouping)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-CDS
C D1 D1 D2 D2 S0 x2
S1 M-CDS
C D3 D3 D4 D4 S0 x2
5804
Figure 146 Example Transport Pattern: PDM Streams with PHY Tail Bits (Small Sample Grouping)
10.1.14.2 Example Transport Pattern for PCM Audio with Tail Bits
5805 Figure 147 shows an example Transport Pattern with PCM streams and PHY Tail bits. The Sync1 and Control Data
5806 Stream bits are followed by Tail bits in Columns 1 and 4 respectively. A run of 8 bits for the stream from a
5807 Peripheral is followed by a Tail bit in Column 14 before the HandOver UI in Column 15. The streams from the
5808 Manager have been allocated to Columns 16 to 21 because this avoids the need to waste columns on Handover UIs
5809 between payload data and the Manager Sync0 bits in Column 22.
5810 The Clock Config in the example in Figure 147 is 3.072 MRows/sec × 16 columns = 49.152 Mbps.
5811 The audio streams in the example Transport Pattern are:
5812 • Peripheral Tx: 3 streams of 1 channel of 16 bits.
5813 • Manager Tx: 1 stream of 2 channels of 18 bits.
5814 • The Sample rate for the Manager Tx and the SSP rate both depend on how frequently this block of 6 Rows
5815 repeats, e.g.:
5816 • Sample Rate and SSP Rate = 48 kHz when the repeat length is 64 Rows (meaning that these channels
5817 occupy ~9% of potentially usable payload bandwidth).
5818 • Sample Rate and SSP Rate = 96 kHz when the repeat length is 32 Rows (meaning that these channels
5819 occupy 19% of potentially usable payload bandwidth).
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
S1 M-CDS
C PD PD PD PD PD PD PD PD MD1 MD1 MD1 MD1 MD1 MD1 S0 x2
S1 M-CDS
C PD PD PD PD PD PD PD PD MD1 MD1 MD1 MD1 MD1 MD1 S0 x2
S1 M-CDS
C PD PD PD PD PD PD PD PD MD1 MD1 MD1 MD1 MD1 MD1 S0 x2
S1 M-CDS
C PD PD PD PD PD PD PD PD MD2 MD2 MD2 MD2 MD2 MD2 S0 x2
S1 M-CDS
C PD PD PD PD PD PD PD PD MD2 MD2 MD2 MD2 MD2 MD2 S0 x2
S1 M-CDS
C PD PD PD PD PD PD PD PD MD2 MD2 MD2 MD2 MD2 MD2 S0 x2
5820
Figure 147 Transport Pattern Example: PCM Streams with PHY Tail Bits
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
S1 M-CDS
C MD1 MD1 MD1 MD1 MD1 MD1 MD1 MD1 MD1 MD1 MD1 MD1 S0 x2
S1 M-CDS
C MD1 MD1 MD1 MD1 MD1 MD1 MD1 MD1 MD2 MD2 MD2 MD2 S0 x2
S1 M-CDS
C MD2 MD2 MD2 MD2 MD2 MD2 MD2 MD2 MD2 MD2 MD2 MD2 S0 x2
S1 M-CDS
C MD2 MD2 MD2 MD2 PD PD PD PD S0 x2
S1 M-CDS
C S0 x2
S1 M-CDS
C S0 x2
S1 M-CDS
C S0 x2
S1 M-CDS
C PD PD PD PD S0 x2
5835
Figure 148 Example Transport Pattern: PCM & PDM Streams with PHY Tail Bits
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-CDS
C D1 D1 D1 D1 D1 D1 S0 x2
S1 P-CDS D1 D1 D1 D1 D1 D1 S0 x2
S1 M-CDS M-CDS D1 D1 D1 D1 D1 D1 S0 x2
5848
Figure 149 Example TP: Detail of DLV PHY Sync with PHY Tail Bits
0 1 2 3 4 5 6 7
S1 M-CDS
C D1 D1 S0
S1 M-CDS
C D2 D2 S0
S1 M-CDS
C D1 D1 S0
S1 M-CDS
C D2 D2 S0
5862
Figure 150 Example TP: 2 PDM Mics in 8 Columns
5863 The Clock Config in the example in Figure 151 is 3.072 MRows/sec × 8 columns = 24.576 Mbps.
5864 The audio streams in this Transport Pattern are:
5865 2 streams of 3.072 MHz × 1-bit PDM; Sample Grouping = 1, so latency = 326 nsec.
5866 The SSP Rate in this example is 3.072 MHz because the pattern repeats every Row.
0 1 2 3 4 5 6 7
S1 M-CDS
C 1 2 S0 x2
S1 M-CDS
C 1 2 S0 x2
5867
Figure 151 Example TP: 2 PDM Mics in 8 Columns Using EndHalfEarly
Row Sync Point Commit Point for SSCR Command is at this SSP
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-CDS
C D1 D1 D1 D1 D2 D2 D2 D2 S0 x2
S1 M-CDS
C D3 D3 D3 D3 D4 D4 D4 D4 S0 x2
S1 M-CDS
C D5 D5 D5 D5 D6 D6 D6 D6 S0 x2
S1 M-CDS
C D7 D7 D7 D7 D8 D8 D8 D8 S0 x2
S1 M-CDS
C D1 D1 D1 D1 D2 D2 D2 D2 S0 x2
S1 M-CDS
C D3 D3 D3 D3 D4 D4 D4 D4 S0 x2
S1 M-CDS
C D5 D5 D5 D5 D6 D6 D6 D6 S0 x2
S1 M-CDS
C D7 D7 D7 D7 D8 D8 D8 D8 S0 x2 S1
S0 S1 M-CDS
C D2 D2 D2 D2 S0 x2
S1 M-CDS
C D3 D3 D3 D3 S0 x2
S1 M-CDS
C S0 x2
S1 M-CDS
C D7 D7 D7 D7 D8 D8 D8 D8 S0 x2
S1 M-CDS
C D2 D2 D2 D2 S0 x2
S1 M-CDS
C D3 D3 D3 D3 S0 x2
S1 M-CDS
C S0 x2
S1 M-CDS
C D7 D7 D7 D7 D8 D8 D8 D8 S0 x2
5881
Figure 152 Example TP: Disabling PDM Streams
Row Sync Point Commit Point for SSCR Command is at this SSP
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1 M-CDS
C D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 S0
S1 M-CDS
C D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 S0
S1 M-CDS
C D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 S0
S1 M-CDS
C D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 S0
S1 M-CDS
C D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 S0
S1 M-CDS
C D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 S0
S1 M-CDS
C S0
S1 M-CDS
C S0 S1
S0 S1 M-CDS
C D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 S0
S1 M-CDS
C D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 S0
S1 M-CDS
C D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 S0
S1 M-CDS
C D2 D2 D2 D2 D2 D2 D2 D2 D2 D2 S0
S1 M-CDS
C D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 S0
S1 M-CDS
C D3 D3 D3 D3 D3 D3 D3 D3 D3 D3 S0
S1 M-CDS
C D4 D4 D4 D4 D4 D4 D4 D4 D4 D4 S0
S1 M-CDS
C D4 D4 D4 D4 D4 D4 D4 D4 D4 D4 S0
S1
5891
Figure 153 Example TP: Adding a PCM Channel
10.1.17.1 ###TODO: Dynamic Clock Config Switching with the FBCSE PHY
10.1.17.1.1 ###TODO: Example #1: Changing number of columns at fixed ROW RATE to increase
payload bandwidth
5896 Increase payload BW, unchanged CDS BW
5897 From:
5898 2 columns: CDS+D1
5899 3.072 MRows/sec × 2 columns = 6.144 Mbps
5900 To:
5901 4 columns: CDS+D1+D2+D3
5902 3.072 MRows/sec × 4 columns = 12.288 Mbps
5903 ###NOTE: the columns in the “before” config will be 2x the width of columns in the “after” picture.
0 1
C D1
C D1
C D1
C D1
C D1
5904
Figure 154 ### Placeholder
5905
5906
10.1.17.1.2 ###TODO: Example #2: Changing number of columns at fixed bit rate to vary the
ratio of CDS to payload.
5907 Unchanged payload BW; decrease CDS BW
5908 From:
5909 2 columns: CDS+D1
5910 3.072 MRows/sec × 2 columns = 6.144 Mbps
5911 To:
5912 192 kHz × 32 columns= 6.144 Mbps
5913 CDS + 16x D1
0 1
C D1
C D1
C D1
C D1
C D1
5914
Figure 155 #DRAFT Single MIC (PHY1, FBCSE)
5915 ###TODO-Author: add some text to explain that Figure 156 shows the same microphone as Figure 155, but uses
5916 SRI (Sub-Row Intervals) so that there are fewer CDS bits, which would save power.
Row Sync Point
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
192 kRows/sec
6.144 Mbps C D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1
1 stream: C D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1
* 3.072 Mbps Mic1 C D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1 D1
5917 Latency 326 ns
Figure 156 #DRAFT Single Mic Using SRI for Reduced Control Bandwidth (PHY1, FBCSE)
10.1.17.1.3 ###TODO: Example #3: Changing both bit rate and row rate
5918 Increased payload BW; decreased CDS BW
5919 From:
5920 2 columns: CDS+D1
5921 3.072 MRows/sec × 2 columns = 6.144 Mbps
5922 To:
5923 8 columns: CDS+D1+D1+D2+D2+D3+D3+D4
5924 1.536 MRows/sec × 4 columns = 12.288 Mbps
5925 ###NOTE: the columns in the “before” config will be 2x the width of columns in the “after” picture.
5926
5927
5928
5929
5930 These 2 examples illustrate changing the column count while either Row Rate or Bit Rate remains constant, but it is
5931 also
5932
5933
Activate
PHY #1
Start_Link after
Hard Reset
Safe-
Lock-N
Lock-4
All_Peripherals_Attached
Command-Only
Row Structure
Normal
Key:
Three different cases for when
the Manager continues for long
5942 enough for Slaves to Sync
10.1.17.2.1 Example of Clock Config Switching by Reducing Row Rate (DLV PHY)
5944 Figure 158 shows an example of two Clock Configs that might be used in the same system under different operating
5945 conditions, with the Row Rate being scaled by a factor of 4. The upper line completely shows 1 Row and partly
5946 shows 3 more Rows of 16 Columns at a Row Rate of 3.072 MRows/s (bit rate of 49.152 Mb/s). The lower line
5947 partly shows 1 Row of 16 Columns at one quarter of the Row rate, i.e., 768 kRows/s (bit rate of 12.288 Mb/s).
5948 Figure 159 shows the detail of how UIs of the Clock Config #1 correspond to UIs of Clock Config #2.
5949 Clock Config #1 in the example in Figure 158 is 3.072 MRows/sec × 16 columns = 49.152 Mbps.
5950 Clock Config #2 in this example is 768 kRows/sec × 16 columns = 12.288 Mbps.
Row Sync Point
5951 S0 S1 M-CDS
C D ... ... ... ... S0 S1
Figure 158 Clock Config Example: Scaling Down Row Rate (DLV PHY)
... 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 4 ...
... S0 S1 M-CDS
C D S0 S1 M-CDS
C D ...
... 15 0 1 2 3 4 ...
... S0 S1 M-CDS
C D ...
5952
Figure 159 Clock Config Example: Scaling Down Row Rate (DLV PHY) - Detail
10.1.17.2.2 Example of Clock Config Switching by Increasing Row Rate (DLV PHY)
5953 Figure 160 shows the complementary change to Figure 158 with the Row Rate being scaled up by a factor of 4.
5954 Clock Config #1 in the example in Figure 160 is 768 kRows/sec × 16 columns = 12.288 Mbps.
5955 Clock Config #2 in this example is 3.072 MRows/sec × 16 columns = 49.152 Mbps.
5956
Row Sync Point
... 14 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 ...
... S0 x2 S1 M-CDS
C D1 D1 D1 D1 D2 D2 D2 D2 S0 x2 S1 ...
... 14 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 0 ...
... S0 x2 S1 M-CDS
C D1 D1 D1 D1 D2 D2 D2 D2 MD MD MD MD S0 x2 S1 ...
5963
Figure 161 ###TBD-not-DLV? Clock Config Example: Changing Column Count
5964 Permissions
5965 1. {} A Manager may own any UIs in the Transport Pattern that it knows are either:
5966 A. CDS UIs that are allocated to a Peripheral that is known not to be Attached, or:
5967 B. UIs that are not allocated to any of Sync, CDS, or a Data Port.
5968 Note: It might choose to own only those that are easy to decode, such as completely empty columns.
6000
6001 The additional rows using the “raw” I/O behavior discussed today look like:
Row number Initial bit Adjacent bit(s) Notes
5-PHY1 Raw-E Raw-E Raw-E Raw-E The new “simple PHY ” behavior
Raw-E for adjacent bits is odd
5-PHY2 Raw-E Raw-E Raw-E Raw-E
behavior for PHY2 (?)
PHY1 behavior is to disable output
6-PHY1 Raw-E Raw-D Raw-D Raw-D between bits, so Raw-D does not
make sense.
6-PHY2 Raw-E Raw-D Raw-D Raw-D The new “simple PHY ” behavior
Is there any value to add the
complexity of Raw-D for intial (which
7 Raw-D ***
would need something similar to the
“vV” behavior).
It seems weird to “half use” the
8 Raw-E VVV
controlled ramp time.
It seems weird to “half use” the
9 Raw-E GGG
controlled ramp time.
Raw-E It seems weird to “half use” the
10 G
controlled ramp time.
Raw-E It seems weird to “half use” the
11 vV
controlled ramp time.
Raw-D It seems weird to “half use” the
12 G
controlled ramp time.
Raw-D It seems weird to “half use” the
13 vV
controlled ramp time.
6002
FClock TX DN
SlewControl
TxDriveEnabl
e
TxData TX
BusHoldEnable DP
hold
RxData RX
RxEnable
RxHysteresisControl SE IO
6032
Figure 162 Block Diagram of FBCSE PHY Interface Pins in Manager
Clock signal
(DN pin)
Data signal
(DP pin)
6045 Some examples of when Clock Pause might be used in a system are:
6046 • A bus containing only sensors, when the clock is only needed while they deliver a value.
6047 • When the bus is Command-Only, i.e., while no audio streams are running (e.g., while booting intermediate
6048 OSes).
11.1.2.1 Combinations of Clock Config and Transport Pattern for PHY1 or PHY2 (FBCSE)
6063 The Clock Config and Transport Pattern generated by the Manager with PHY1 or PHY2 (FBCSE) can be
6064 characterized into one of 2 groups. The ranges of parameters for these groups are summarized in Table 112 (for
6065 PHY1) and Table 113 (for PHY2).
6066 Safe-Lock-2 (see ###XREF) is a combination of Clock Config and Transport Pattern used when PHY1 or
6067 PHY2 is activated after a Cold Start. Peripherals use special drive for CDS bits to minimize the probability
6068 of drive clashes.
6069 Lock-N is a Command-Only Transport Pattern used when PHY1 or PHY2 is activated after Warm Reset
6070 (e.g., when waking from Sleep), and at any other times when it is desirable to make it easier for Peripherals
6071 to re-synchronize to Row boundaries. Peripherals might need non-default PHY settings and/or PHY timing
6072 calibration in order to operate in some parts of this range.
6073 Running is used after Lock-N when all Peripherals have responded correctly to a Ping Command. If the
6074 Transport Pattern assigns fewer UIs to the Control Data Stream (i.e., bits that are less wide) then this might
6075 need finer timing calibration than Lock-N.
6076 Table 112 Combinations of Clock Config and Transport Pattern for PHY1 (FBCSE)
Peripheral Transport
Nominal Row Rate Column PHY Pattern
Name Limitations Notes
UI Rate (kRows/s) Count Output Bit
kUI/s) Encoding
6077 Note:
1. ###.
Peripheral Transport
Nominal
Row Rate Column PHY Pattern
Name UI Rate Notes
(kRows/s) Count Output Bit Limitations
kUI/s) Encoding
6079 Note:
1. ###.
6091 Requirements
6092 1. {} [PHY1 & PHY2] The Peripheral shall use values for the timing parameters named in this Section (11.2.1)
6093 that are between the lower and upper bounds in Table 114.
6094 Table 114 PHY1 & PHY2 (FBCSE): Timing Parameters for Peripheral Link Control
6095 2. {} [PHY1 & PHY2] The Peripheral shall detect PHY_Inactivity (see Section 5.2.2 Requirement 20) when it
6096 detects a static condition of DN(Clock)=FBCSE:0 and DP(Data)=FBCSE:0 for a time of
6097 Per_tPhy_Inactivity_FBCSE.
6098
6099 ###NOTES
6100
6101 Manager Clock Pause generation: 11 for t < ∞.
6102 Periperal Clock Pause detection (implicit).
6103
6104 Peripheral: Long unchanging 01 or long unchanging 10 is also implicit clock pause
6105
6106
6107 ###TEMP ###XREF to tables of Register values in Section 5.2.4.
— — — µs
— — — µs
— — — µs
6154 10. {} [FBCSE] The Manager shall park the bus (see Section 5.2.3 Requirement 5) by generating
6155 DN=FBCSE:0 and DP=FBCSE:0 for a time of Man_tParkBus_FBCSE.
6156 11. {} [FBCSE] When the Manager starts generating Rows after a Cold Start it shall use a combination of
6157 Safe-Lock Config (see Section 5.2.3 Requirement 9.G.ii) and Transport Pattern that have:
6158 A. Column_Count=2, and
6159 B. CDS_HorizontalStart=0, and
6160 C. CDS_BitWidth=1.
6161 12. {} [FBCSE] The Manager shall generate Rows (see Section 5.2.3 Requirement 12) that have:
6162 A. A ColumnCount that is an even number between 2 and 32 inclusive.
6163
6164 Permissions
6165 1. {} [PHY1 & PHY2] The Peripheral may reattach by using the *_NEXT register values, provided that:
6166 A. The Manager is using the same values that are in *_NEXT.
6167 Note: If the Peripheral fails to join using the *_CURR values (see Requirement 3) then it is possible that the
6168 Peripheral fell off the bus just as the Manager was changing to using the *_NEXT values, so these are a
6169 good candidate to try.
6170 2. {} [PHY1 & PHY2] The Peripheral may reattach by using values calculated by the Peripheral.
6171 Note: E.g., the Peripheral might try all possible Column Counts until it reattaches.
6172 3. {} … .
6173
6174 Recommendations
6175 1. {} [FBCSE] When the Peripheral is attempting to attach to the bus (Section 5.2.2 Requirement 13), the
6176 clock recovery circuitry should correctly identify Column 0 after a maximum of
6177 Per_nRowsToLockTyp_FBCSE Rows, provided that the conditions in Requirement 4 are satisfied.
6178 2. {} … .
6179
6180 Requirements
6181 1. {} [PHY1 & PHY2] A Device that implements PHY1 and/or PHY2 (FBCSE) shall support at least one of
6182 the nominal VDD values shown in Table 116.
6183 Table 116 [PHY1 & PHY2] Supply Voltage for PHY1 / PHY2 Interface
6184 2. {} [PHY1 & PHY2] The input and output electrical parameters for PHY1 and PHY2 (FBCSE) shall be
6185 within the ranges shown in Table 117.
6186 Table 117 [PHY1 & PHY2] Input and Output Voltage Parameters
Settings
Parameter Symbol (PHYn_DriveImpedance, Conditions Min Typ Max Units
see Table 159)
0 [1] 20.0
1 [1] 24.5
2 [1] 30.0
3 [1] 36.5
Output IOL = 1 mA
ZOUT − 0% +20% Ω
Impedance[2] IOH = 1 mA
4 44.5
5 [1] 54.5
6 [1] 66.5
7 89.0
6190 Note:
1. Drive Impedance settings 0, 1, 2, 3, 5, and 6 are optional (see ###XREF to register table).
2. ZOUT is the impedance at the end of the rise or fall time (i.e., either after 80% of the voltage ramp or
statically measured).
3. The overlap between ranges means that the function might be non-monotonic, i.e., a higher register
setting could map to lower impedance.
6191
6192 4. {} [PHY1 & PHY2] The electrical parameters for the Manager Bus Keeper shall be within the ranges shown
6193 in Table 119.
6194 Table 119 [PHY1 & PHY2] Bus Keeper Behavior
Keeper
Response Time
Note: measured
from input crossing
tKeeper_Response — — — 3 ns
Vih/Vil to change in
sign of output
current.
6195
6196
6197 Requirements
6198 1. {####} [PHY1 & PHY2] A Device using PHY1 (FBCSE) shall tolerate a clock that is anywhere within the
6199 range shown in Table 120.
6200 Note: this is different to the clock frequency range for PHY2 (FBCSE), see ###XREF.
— 0.032 — — MHz
FCLK_Phy1
— — — 6.6 MHz
Optional extended
frequency range — — 26.4 MHz
6206 Recommendations
6207 1. {} [PHY3] When any Peripherals are using the Bus Clock edges as an audio clock, the Manager Bus Clock
6208 output jitter (LΦ_TX_MGR) should be within the limits in Table 121.
6209
6210 Table 121 PHY1&2: Jitter Parameters
6211
6212
6213 Recommendations
6214 1. {} [PHY1 & PHY2] A system using PHY1 or PHY2 should use system parameters within the range shown
6215 in Table 122.
6216 Table 122 Recommended System Parameters [PHY1 & PHY2]
Recommended total
CBUS_Phy1 Using PHY1 — — 60 pF
bus capacitance seen
by a device including
the total pin
capacitance of the CBUS_Phy2 Using PHY2 — — 200 pF
devices on the bus.
6217 Requirements
6218 1. {} When the Rules in Sections (###XREF to Section #) describe transmitting a CDS bit, the Device shall
6219 drive DP according to Table 123.
6220 Table 123 PHY1 & PHY2 (FBCSE): NRZS Encoding for CDS
Value on DP Pin Before Drive on DP when CDS_DriveType_CURR = …
CDS Bit to be the CDS Bit
Transmitted 1 (Normal) 0 (Special)
(see Requirements 2 & 3)
High-Z
0 0
(bus keeper maintains 0)
1
High-Z
1 1
(bus keeper maintains 1)
0 1
0
1 0
6221 2. {} The NRZS Encoder for the CDS bit shall use as the “Value on DP pin before the CDS Bit” in Table 123
6222 either:
6223 A. When this Device was driving the last UI before the CDS Bit, it uses the value that it was outputting to
6224 the DP Pin during that UI, or
6225 B. When this Device was not driving the last UI before the CDS Bit, it uses the value captured from the
6226 DP Pin in that UI.
6227 3. {} When a Device is programmed to use Wide Bits for the CDS (i.e., CDS_BitWidth ≠ 0), it shall perform
6228 the NRZS encoding in Table 123 exactly once for each CDS Bit and then use the same drive output for all
6229 subsequent UIs in that CDS Bit.
6230 Note: i.e., all UIs in a CDS Wide Bit are driven with the same value of 0, 1, or High-Z.
6231 4. {} When a Device using PHY1 is programmed to use Wide Bits (i.e., CDS_### or DP_ ###), the Peripheral
6232 shall not change its output to high impedance between the multiple UIs that transport a single bit.
6233 Note: i.e., a Wide Bit is driven as one continuous block.
6234 5. {} When the Rules in Sections (###XREF to Section #) describe receiving a CDS bit, the Device shall:
6235 A. Capture a value from DP in the last UI before the CDS Bit, and then:
6236 B. Capture a value from DP in the last UI of the CDS Bit, and then:
6237 C. Decode the the 2 values according to Table 124 to produce a CDS Bit.
6238 Table 124 PHY1 & PHY2 (FBCSE): NRZS Decoding for CDS
0 1
1
1 0
0 0
0
1 1
6241 Permissions
6242 1. {} PHY1 may support the ApertureAdjust field (see Data Port Register fields in Section 14.2.3 and CDS
6243 Register fields in Section 14.2.5).
6244 2. {} PHY2 may support the ApertureAdjust field (see Data Port Register fields in Section 14.2.3 and CDS
6245 Register fields in Section 14.2.5).
6246
11.3 TEMP OLD DRAFT Tables from v0.5r11 PHY#1 and PHY#2 (FBCSE)
6247 ###NOTE to Reviewers: These tables are copied from the WG-authored material in the previous draft and
6248 are in the process of being migrated to the correct sections of the document and edited for style and content.
6249 Where the material has been migrated elsewhere, the table caption includes a cross-reference to the new
6250 table highlighted in light blue, and the old table is greyed out but left in the document to simplify comparison
6251 with the new material.
6252 Please DO NOT add any review comments in the greyed out tables.
6253 GRAVESTONE OF OLD Table 201 Supply and Ground Voltages [see new Table 26 and Table 122]
6254
6255 GRAVESTONE OF OLD Table 202 noise requirements [see new Table 122 and Table 31]
6256
6257 GRAVESTONE OF OLD Table 203 PHY#1 Timing Characteristics [see new Table 120]
6258
6259 Table 204 Electrical Characteristics (Voltage Requirements PHY1 & PHY2) [see new Table 117]
NOTE: The limits of the Logic Output voltage are reported at the default configuration for the ZO = 44.5Ω
VDD=0.9 V: IOH=3.3 mA
VDD=1.2 V: IOH=4.4 mA 80 % — — VDD
Logic High Output Voltage VOH VDD=1.8 V: IOH=6.6 mA
VDD=0.9 V: IOL=3.3 mA
VDD=1.2 V: IOL=4.4 mA — — 20 % VDD
Logic Low Output Voltage VOL VDD=1.8 V: IOL=6.6 mA
Same as VHYS_LC
Input Hysteresis VHYS — — — —
(see XREF to Table)
Overshoot tolerance
VOVER VDD = 1.2 V VGND−0.390 — VDD+0.390 V
from VDD (recommended)
Manager_Keeper_Control=0
Zkeeper_normal 5.0 7.0 10.0 kΩ
IOH / IOL = 11 µA
Keeper Impedance
Manager_Keeper_Control=1
ZKeeper_boost 2.5 3.5 5.0 kΩ
IOH / IOL = 27 µA
Keeper
Response Time
Note: measured
from input
tKeeper_Response — — — 3 ns
crossing Vih/Vil to
change in sign of
output current.
6261
6262
6263 Table 299 Electrical Characteristics (Voltage Requirements Link Control PHY)
6264
6265
6267 Note:
4. Peripheral only uses this if it can generate the optional LC_Requests (see ###XREF).
5. When using the LC_PHY, the Manager typically uses the Normal Mode output impedance for LC:Weak0
(ZOUT_LC_Weak0_a).
6268
0 (default) 1
1 (optional) 2
2 (optional) 3
3 (optional) 4
4 (optional) 5
5 (optional) 6
6 (optional) 7
7 (optional) 8
Rise and Fall
tRF ns
time
8 (optional) 9
9 (optional) 10
10 (optional) 11
11 (optional) 12
12 (optional) 13
13 (optional) 14
14 (optional) 15
15 (optional) 16
6279 Table 210 [FBCSE] Rise and Fall Time with Voltage Ramping
Register values refer to the register field PHYn_RiseFallTime_CURR
Ramp time is measured from 20 to 80% of final (not nominal) VOUT.
Rise time/fall time between 20% and 80% for both clock and data
PHYn_DriveImpedance_CURR=4 and CExtLOAD = 5 pF and VDD = any supported voltage level
VIH VIH
CLK
VIL VIL
VIH
VIH VIH
DATA 1
VIL VIL
VIL
6280
VIH
CLK
VIL
tZD tDZ
VOH VOH
DATA 1
VOL VOL
tDZ tZD
VOH VOH
DATA 2
VOL VOL
6281
6282
6283 Table 211 PHY#1 Inter-UI Handover
For the Time to valid DATA/DN use the condition column with the following register definition:
PHYn_RiseFallEnable_CURR=1 where not specified differently and value representing the
PHYn_RiseFallTime_CURR register value.
Time to enable
Both after positive or negative edge on
DATA/DN output tZD 14.1 — — ns
CLK/DP clock input signal
signal.
PHYn_FirstBitRampType_CURR=0 or
— — 51.7
Time to valid PHYn_AdjBitRampType_CURR=0
DATA/DN output
signal after positive or 0 (fast ramp) — — 51.7
negative edge on
tOV ns
CLK/DP clock input 1 (medium fast ramp) — — 54.7
signal, PHY.Z_out =
4 (44.5 Ohms) 60pF 2 (optional) — — 57.7
load
3 (optional) — — 60.7
6284
0.8*VDD VDD
VCM
0.2*VDD
tR tF
6285
6286
6287
VIH VIH
tOV,max tOV
VIL VIL
VOH
VOL
6288
6289
6290
6291
6292 Table 213 PHY#2 Manager
###TODO: how do you measure you are still Z and not yet D? same way around too.
###TODO: explain
Setup time tIS — — 2.0 ns
“Max”
###TODO: explain
Hold time Input tIH — — 2.0 ns
“Max”
6294
6295 Table 215 PHY#2 Peripheral Output Delays
For the Time to valid DATA/DN use the condition column with the following register definition:
PHYn_RiseFallEnable_CURR=1 where not specified differently and value representing the
PHYn_RiseFallTime_CURR register value.
NOTE: no min value specified since we are interested in meeting the requirements, ###Author: Rise and Fall
time with Conductance Ramping is in table named: Rise and Fall time with Voltage Ramping.
Time to disable ns
DATA/DN output signal
after positive or
negative edge on
tDZ_PHY2M — — 10.8
CLK/DP clock input
signal of Manager (Eqn:
1/(4 x fCLK_PHY2L+1ns)
5pF load.
6296
6297 ###TODO-Author: remove this “page-break-before”
12.1.2 [DRAFT] PHY3 (DLV): Special Drive Type for CDS Bits
6332 The DLV PHY supports a special drive type, which is used after Cold Start when the Peripheral output timing might
6333 be inaccurate. At this time the Traffic pattern will be Command-only with no audio Payload, so there will be only 1
6334 rising edge per row (Sync0 to Sync1 transition) and only 1 falling edge per row (wither caused by CDS logic 0, or
6335 by the Sync0 immediately before the next Row).
... 14 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 ...
... S0 S0 S1 S1 S1 S1 CDS-special S0 S0 S0 S0 S1 S1 S1 S1 ...
CDS
CDS
CDS
CDS
CDS
CDS
Peripheral is late:
Manager samples are 90%/10% 1/0
Peripheral is early:
Manager samples are 10%/90% 1/0
6362 ###TODO-Author: describe that the Manager (and Peripheral) aperture is the middle of the last UI (which is the
6363 only UI when not using wide bits). Also note that the Peripheral has ApertureAdjust.
6364 ###TODO-Author: modify this diagram to show Safe-Lock-4, i.e., 4 columns, 1xS0, 1xS1, 1xHO, 1xCDS-special.
6365
Peripheral Transport
Nominal
Row Rate Column PHY Pattern
Name UI Rate Notes
(kRows/s) Count Output Bit Limitations
(Mbps) Encoding
6428 Note:
1. Peripheral PHY Output encoding of “Special” will typically also work correctly, but for high UI rates this
might need to be verified with system simulations.
6438 Requirements
6439 1. {} [PHY3] The Peripheral shall use values for the timing parameters named in this Section (12.2.1) that are
6440 between the lower and upper bounds in Table 126.
6441 Table 126 DLV PHY: Timing Parameters for Peripheral Link Control
6442 Note:
1. There is both a required maximum and a recommended maximum for Per_nRowsToLock_DLV.
2. There is both a required maximum and (for Devices with particular behavior) a recommended minimum for
Per_tPhyStart_DLV.
6443 2. {} [PHY3] When the Peripheral is in Link State: Attached, the PHY shall generate a PHY_BadRowLock
6444 condition (Section 5.2.2 Requirement 14.C) if any of the following occur:
6445 A. The Clock recovery circuitry has both:
6446 i. Not seen a RowSync event for Per_tRowSyncCount number of Rows, and:
6447 ii. Not seen a RowSync event for a time of Per_tRowSyncMissing, or:
6448 B. The Clock recovery circuitry (e.g., PLL or DLL) is no longer correctly locked to the Row_Syncs from
6449 the Manager.
6450 3. {} [PHY3] The Peripheral shall indicate PHY_Inactivity (see Section 5.2.2 Requirement 20) when it
6451 detects no signal transitions for a time of Per_tPhy_Inactivity_DLV.
6452 4. {} [PHY3] When the Peripheral is attempting to attach to the bus (Section 5.2.2 Requirement 13), the clock
6453 recovery circuitry shall lock to the periodic Row Syncs after a maximum of Per_nRowsToLockMax_DLV
6454 Rows, provided that all of the following conditions are satisfied:
6455 A. The Manager is generating Rows that match the values in the RowRateRange (###XREF), Unit
6456 Interval Rate Range (see Table 127), and NumColumns (see Table 153) register fields, and
6457 B. The Link traffic includes only the Control Data Stream (i.e. Command-only).
6458 Note: see also Permission 1 and Recommendation 1.
6459
6460 ###TODO-Author: move to Section 5.2.4.
6461 Table 127 ###TODO PHY3 (DLV): Unit Interval Rate Range
Register Setting
(UI_RateRange, see Min Typ Max Units
Table 153)
16 4.585 — 6.484
MHz
17 5.453 — 7.711
18 6.484 — 9.170
19 7.711 — 10.905
20 9.170 — 12.968
21 10.905 — 15.422
22 12.968 — 18.340
23 15.422 — 21.810
24 18.340 — 25.937
25 21.810 — 30.844
26 25.937 — 36.680
27 30.844 — 43.620
28 36.680 — 51.874
6462 Note:
1. If the PHY3 implementation does not need Some PHYs (e.g., PHY1&2) do not have behavior that is
affected by the UI_RateRange Register. If the Device implements the Register because it has other PHYs
that do need it, , has other PHYs that do use the Register then when using PHY1&2 it will be
resetneed , so the Register is reset to 0 and the Manager will not write a value other than 0.
2. UI_RateRange settings 13, 14, and 15 are optional (see Table 153).
— — — µs
— — — µs
6466 6. {} [PHY3] The Manager shall park the bus (see Section 5.2.3 Requirement 5) by driving a value of DLV:0
6467 for a time of Man_tParkBus_DLV.
6468
6469 7. {} [PHY3] When the Manager starts generating Rows after a Cold Start it shall use a combination of
6470 Safe-Lock Config (see Section 5.2.3 Requirement 9.G.ii) and Transport Pattern that have:
6471 A. A Row Rate between 2.40 and 3.20 MRows/sec, and
6472 B. Column_Count=4 Columns, and
6473 C. CDS_HorizontalStart=Column 2, and
6474 D. CDS_HorizontalCount=1 UI, and
6475 E. CDS_BitWidth=1 UI, and
6476 F. CDS_DriveType=Special.
6477 8. {} [PHY3] The Manager shall generate Rows (see Section 5.2.3 Requirement 12) that have:
6478 A. A ColumnCount of 4 or more.
6479 B. A Sync0 symbol (1 or more Bit Periods of DLV:0), followed by
6480 C. A Sync1 symbol (1 or more Bit Periods of DLV:1 starting in Column 0), such that:
6481 D. The transition between the Sync0 and Sync1 symbols occur at a constant periodic interval defined by
6482 the Row Rate.
6483 Permissions
6484 1. {} [PHY3] When the Peripheral is attempting to attach to the bus but the condition in Requirement 4.B is
6485 not satisfied (i.e., there is some traffic on the bus in addition to the Control Data Stream), the clock
6486 recovery circuitry may take an Implementation-Defined number of Row Syncs to lock to the periodic Row
6487 Syncs.
6488 Note: the typical number of Rows, Per_nRowsToLockTyp_ActiveBus_DLV, is not constrained by the
6489 Specification, but could be reported in a device data sheet.
6490
6499 Requirements
6500 1. {} [PHY3] The output voltage levels for PHY3 (DLV) shall be within the ranges shown in Table 129.
6501 Table 129 [PHY3] Single-Ended Output Swing
Settings
Parameter Symbol (PHY3_SEOutputSwing, Conditions Min Typ Max Units
see Table 162)
0 [1] 50
1 [1] 100
2 [1] 150
5 [1] 300
6 [1] 350
7 [1] 400
6502 Note:
1. VSEOS_NOM settings 0, 1, 2, 4, 5, 6, and 7 are each independently optional (see Table 162).
6503
6504 ###TODO-Author: add a rule to introduce Table 130.
6505 Table 130 [PHY3] Output Voltage Levels
Logic High
Output VOH_Phy3 IOH = ±10 uA (95 % of VSEOS_NOM) — (105 % of VSEOS_NOM) —
Voltage TX
Settings
Parameter Symbol (PHY3_DriveImpedance, Conditions Min Typ Max Units
see Table 162)
0 [1] 20.0
1 [1] 24.5
2 [1] 30.0
3 [1] 36.5
Output IOL = 1 mA
ZOUT − 0% +20% Ω
Impedance[2] IOH = 1 mA
4 44.5
5 [1] 54.5
6 [1] 66.5
7 89.0
Single-ended
driver impedance
mismatch IOL = 1 mA
between DP and ∆ZDriver — −3 — +3 %
IOH = 1 mA
DN
(i.e., ZOUT_DP –
ZOUT_DN)
6510 Note:
1. Drive Impedance settings 0, 1, 2, 3, 5, and 6 are optional (see Table 162).
2. ZOUT is the single-ended output impedance measured separately on each output and at the end of the rise
or fall time (i.e., either after 80% of the voltage ramp or statically measured).
3. The overlap between ranges means that the function might be non-monotonic, i.e., a higher register
setting could map to lower impedance.
6511 3. {} [PHY3] The Receiver Parameters for PHY3 (DLV) shall be within the limits in Table 132.
6512 Table 132 [PHY3] Receiver Parameters
Single-Ended
Input Voltage VPhy3_RX_SE_### — −100 — VSEOS + 100 mV
Range
Common Mode
(50% VSEO) (50% VSEOS) +
Input Voltage VPhy3_RX_Diff_### — — mV
− 100 100
Range
Common Mode
CMRRPhy3 — 20 — — dB
Rejection Ratio
6513
6514
6515 4. {} [PHY3] The electrical parameters for the PHY3 Bus Keeper in the Manager shall be within the ranges
6516 shown in Table 133.
6517 Table 133 [PHY3] (DLV) Bus Keeper Behavior
Bus Keeper
Keeper_Drive_Boost
impedance, normal ZDLV_Keeper_Boost0 2.5 3.5 5.0 kΩ
Register Bit = 0
mode
Bus Keeper
impedance, boost DLV_Keeper_Boost
ZDLV_Keeper_Boost1 1.0 1.4 [1] 2.0 kΩ
mode. Register Bit = 1
(Optional)
Keeper
Response Time
Note: measured
from input
tDLV_Keeper_Response — — — 3 ns
crossing Vih/Vil to
change in sign of
output current.
6518 Note:
1. The Bus Keeper impedance for PHY3 (DLV) is lower than some other PHYs because PHY3 uses smaller
input voltage swings, so can tolerate less voltage drop caused by the leakage current.
6531 Requirements
6532 1. {} [PHY3] The UI_RateRange field in ### introduce timing table .
6533
6534 ###TODO-Author:
6535 • Grey out the old tables from Stefano
6536 • Duplicate this table for FBCSE with the following changes:
6537 • Register names are PHYn not PHY3.
6538 • Add footnote that V and G ramp are optional.
ZOUT = 4 (44.5 Ω)
Load Capacitance
2 1.3 2.1 3.2
CL_DP, = 5 pF
CL_DN = 5 pF
3 CL_DP_DN = 5 pF 1.9 3.0 4.6
Load Capacitance
10 [4] 6.2 9.7 15
CL_DP, = 30 pF
CL_DN = 30 pF
11 CL_DP_DN = 30 pF 6.8 11 16
12 7.4 12 18
13 8.0 13 19
14 8.6 14 21
15 9.2 15 22
6542 Note:
1. FirstBitRampType setting applies when this Device was not driving the bus during the previous UI;
AdjBitRampType applies when it was driving in that UI.
2. RampType of 1 (Voltage Ramp) uses the RiseFallTimeVRamp setting; RampType of 2 (Conductance)
uses the RiseFallTimeGRamp setting.
3. RampType of 0 (simple unramped output) selects a basic output that simply drives towards the desired
output voltage (i.e., VSEOS or Ground).
ns
6544
6545
6546 3. {} [PHY3] The Manager transport jitter (J_TX_MGR) shall be within the limits in Table 136.
6547 4. {} [PHY3] The Peripheral transport jitter (J_TX_PER) shall be within the limits in Table 136.
6548 Table 136 PHY3: Jitter Parameters
High fidelity.
Integrated Phase Noise in Row LΦ_TX_MGR_1 — — 150 ps
(e.g., 95 dB THD+N
Sync Edges, measured from
@ 20 kHz)
100 Hz to half of the Row Clock
(i.e., half of Row Rate).
Low fidelity
(Audio clock quality, see
LΦ_TX_MGR_2 (e.g., 72 dB THD+N — — 2000 ps
Recommendation 1).
@ 20 kHz)
Condition: Total
Random Jitter in all Peripheral Jitter in
Tx edges (RMS). RJ_TX_PER zero-crossing of — — 2.5 % UI
(see Requirement 4) received RowSync
Edge = 1 % UI.
Condition: Timing
###TBD Open Item #149:
Uncertainty in
resolve the definition of “timing
zero-crossing of
uncertainty” versus “jitter”. TU_TX_PER — — 65 % UI
Received Row
Timing Uncertainty in start time
Sync Edge
of all Peripheral Tx edges.
= 50 % UI.
6549 Note:
6550 All of the jitter parameters in Table 136 are measured at the zero crossing point of the differential signal.
6551
6552
6553
6554 Recommendations
6555 1. {} [PHY3] When any Peripherals are using the Row Sync edges as an audio clock, the Manager Row Sync
6556 output jitter (LΦ_TX_MGR) should be within the limits in Table 136.
6557
6558 Requirements
6559
6560
6561
6564
6565
6576
6577 ###TODO-Author: replace picture in Figure 165 with the correct Visio source.
6578
0.8*VOD VOD(PP)
0V
0.2*VOD
tR tF
6585
Figure 166 PHY3 Measurement Waveform #1 (###TBD-name)
6586 ###TODO-Author: replace picture in Figure 166 with the correct Visio source.
6587
12.3 TEMP OLD DRAFT Tables from v0.5r11 for PHY#3 (DLV)
6588 ###NOTE to Reviewers: These tables are copied from the WG-authored material in the previous draft and
6589 are in the process of being migrated to the correct sections of the document and edited for style and content.
6590 Where the material has been migrated elsewhere, the table caption includes a cross-reference to the new
6591 table highlighted in light blue, and the old table is greyed out but left in the document to simplify comparison
6592 with the new material.
6593 Please DO NOT add any review comments in the greyed out tables.
6594
6599
6600
6601
6602 Table 303 PHY3 Static Common Mode Offset Between Logic0 and Logic1 (∆VCM)
Settings
Parameter Symbol Conditions Typ Max Units
(PHY3_SEOutputSwing)
0 0 10.0
1 0 10.0
2 0 10.0
VCM mismatch
during static, 3 0 10.0
non-transient IOL = ±10 uA
∆VCM mV
signal IOH = ±10 uA
conditions. 4 0 12.5
5 0 15.0
6 0 17.5
7 0 20.0
6603
6604 ###TODO-Author: delete this TEMPORARY NOTE: VCM mismatch during static, non-transient signal
6605 conditions. ∆VCM is constant for register settings 0–3 because of measurement uncertainty, but then scales
6606 linearly for register settings 4-7.
6607
6608 ###TODO:PHY subgroup – find the missing spec for the dynamic/transient V_CM offset, is this named
6609 dynamic ∆VCM ?
6610
6611
PHYn_RiseFallEnable=0 0.7
10 (mandatory) AND
Enable=1 6.2 9.7 15
6616 Note:
6617 DLV PHY is a dual single-ended output, so Ramp Time for is measured individually on each of DP and DN
6618 outputs.
PHYn_RiseFallEnable=0 0.7
10 (mandatory) AND
Enable=1 6.2 9.7 15
6621 Note:
6622 DLV PHY is a dual single-ended output, so Ramp Time for is measured individually on each of DP and DN
6623 outputs.
6624
6639
Figure 167 #OLD# to be deleted: PortSyncOK
6640
Figure 168 #OLD# to be deleted: PortReady
Commit #1
Nch × PrepareCh<c>_NEXT
Nch × PrepareCh<c>_CURR
Nch × ReadyCh<c>
Nch × Prepare=ReadyCh<c>
(PortSyncOK=1) AND
PortReady (Nch × (Prepare=ReadyCh<c>) = 11...1111)
IntStat_PortReady
PortSyncOK
Commit #2
Nch × EnableCh<c>_NEXT
Nch × EnableCh<c>_CURR
Commit #1
Nch × PrepareCh<c>_NEXT
Nch × PrepareCh<c>_CURR
PortSyncOK Commit #2
Nch × EnableCh<c>_NEXT
Nch × EnableCh<c>_CURR
Nch × ReadyCh<c>
Nch × (Prepare=ReadyCh<c>)
(PortSyncOK=1) AND
PortReady (Nch × (Prepare=ReadyCh<c>) = 11...1111)
IntStat_PortReady
Nch × ReadyCh<c>
Nch × (Prepare=ReadyCh<c>)
(PortSyncOK=1) AND
PortReady (Nch × (Prepare=ReadyCh<c>) = 11...1111)
IntStat_PortReady
13.1.2.3 Starting and Stopping an Amp Render Stream, with Host Fade Out
6669 Figure 171 shows the control sequence for starting and stopping an Amp Render Stream when it is the Host that fades out the signal.
Commit #1 Commit #3
Nch × PrepareCh<c>_NEXT
Nch × PreparecCh<c>_CURR
Nch × ReadyCh<c>
Nch × (Prepare=ReadyCh<c>)
IntStat_PortNotReady
(PortSyncOK=1) AND
PortReady (Nch × (Prepare=ReadyCh<c>) = 11...1111)
IntStat_PortReady IntStat_PortReady
Nch × EnableCh<c>_NEXT
Nch × EnableCh<c>_CURR
Host software reaction after the data
source completes the fade out
Commit #1 Commit #3
Nch × PrepareCh<c>_NEXT
Nch × PrepareCh<c>_CURR
Nch × ReadyCh<c>
Nch × (Prepare=ReadyCh<c>)
IntStat_PortNotReady
(PortSyncOK=1) AND
PortReady (Nch × (Prepare=ReadyCh<c>) = 11...1111)
IntStat_PortReady IntStat_PortReady
Nch × EnableCh<c>_NEXT
Nch × EnableCh<c>_CURR
6673
6685 The normal sequence of operations for starting channels is is A-B-C (or just A-C for devices that need zero time for Prepare-to-start).
6686 The normal sequence of operations for stopping channels is C-D-A (or just C-A for devices that need zero time for Prepare-to-stop).
6687 When a Peripheral that was running falls off the bus (or is sent to Sleep) then it changes from C to E.
6688 If the Peripheral re-attaches and sees an SSPA then it changes from E to B. When the Manager sees that the Peripheral is re-attached then it uses an SSCR to
6689 write EnableCh<c>=1 so changes it from B to C (or directly from E to C).
6690
6691 Audio_Ready is approximately “PrepareD”.
B 0 0 X 1 External Circuitry Changing to Disabled (e.g., voltage regs & refs turning off)
External Circuitry Becoming Ready (e.g. voltage regs & refs ramping up)
C 1 0 0 0
Waiting for SSP (e.g., recovering from Sleep-Wake or re-attaching to bus)
E 1 0 1 0 External Circuitry Becoming Ready (e.g. voltage regs & refs ramping up)
External Circuitry Changing to Disabled (e.g., ramping amp gain down to zero)
K 0 1 1 1
Channel Transporting Valid Samples
6693
6694 >>>>>>>>>>>>>>>>>>>>
6695
6696 <<<<<<<<<<<<<<<<<<<
6733 Table 140 DRAFT: Data Port External Payload Interface Behavior (NORMAL SEQUENCE)
6734
Source DP Enable_Ch<c>
Sink DP Enable_Ch<c>
6738
Figure 173 Source DP Enabled Before and Disabled After the Sink DP
6739
Prepare_Ch<n>
Ready_Ch<n>
Enable_Ch<n>
Prepare_Ch<n>
Ready_Ch<n>
Enable_Ch<n>
Prepare_Ch<n>
Ready_Ch<n>
Enable_Ch<n>
Bus Data
Audio Data
Output by DP
6749
Figure 176 Source DP: Starting a Stream, Wait for Ready
Prepare_Ch<n>
Ready_Ch<n>
Enable_Ch<n>
Bus Data
Output by DP Silence or Audio Data Audio Data
6752
Figure 177 Source DP: Starting a Stream, Without Waiting for Ready
6753
Prepare_Ch<n>
Ready_Ch<n>
DP Output
Audio Data Audio Data
to Channel n
6756
Figure 178 Source DP: Pausing a Stream
13.1.6 DRAFT: Description of Data Port Algorithm from the Python Visualizer
(Informative)
6757 The following sections are fragments the Python Visualizer program, v1.59:
6758 ###NOTE to Reviewers: two parts of the following are copies of the old v1.40 code but might not be
6759 significantly changed in v1.59.
6760 <###TODO-Author: TEMP: switch to landscape orientation>
13.1.6.2 [v1.59] Visualizer Source Code Fragment: For Each Data Port
6822 # This is run for each DataPort.
6823 # Raster our frame
6824
6825 started = False
6826 Row = 0
6827 frac_accum = 0 # accumlate to decide when to skip this transport opportunity
6828 interval_counter = 0
6829 end_of_interval = False
6830
6831 if data_port.channel_grouping_REG == 0 or data_port.channel_grouping_REG > ( data_port.channels_REG + 1 ): # NDW check or
6832 data_port.sri_REG:
6833 effective_channel_group = data_port.channels_REG + 1
6834 else:
6835 effective_channel_group = data_port.channel_grouping_REG
6836
6837 data_port.reset()
6838
6839 # Row counter is not part of the needed data port mechanism but is to support drawing
6840 for row_counter in range( 0, self.rows_in_frame, 1 ) :
6841 Row += 1
6842 data_port.new_row( row_counter, self.interface.skipping_denominator_REG )
6843
6844
6845 last_bit_was_driven = 0
6846 column_counter = 0
6847 while column_counter < self.interface.columns_per_row :
6848 width, rrrr, sample_number_in_group = data_port.try_bit( row_counter, column_counter,
6849 self.interface.skipping_denominator_REG )
6850 if NOT_OWNED == rrrr :
6851 rrrr = data_port.get_guard_or_tails()
6852 if NOT_OWNED == rrrr :
6853 if last_bit_was_driven :
6854 if data_port.source_REG and data_port.handover :
6855 self.draw_handover( row_counter, column_counter, data_port.device_number)
6856 self.update_col_in_frame_model(row_counter, column_counter, data_port.number,
6857 data_port.source_REG, 0, 'HANDOVER', sample_number_in_group)
6858 last_bit_was_driven = False
6859 elif "tail" == rrrr :
6860 self.draw_tail( row_counter, column_counter, data_port.device_number, color )
6861 self.update_col_in_frame_model(row_counter, column_counter, data_port.number, data_port.source_REG,
6862 width, rrrr, 0 )
6863 last_bit_was_driven = True
6864 elif 'G' == rrrr :
6865 self.write_bit_slot( row_counter, column_counter, width, data_port.source_REG, rrrr, color,
6866 data_port.number ) #, data_port.sample_grouping_REG - data_port.samples_remaining_in_sample_group, data_port.current_channel,
6867 data_port.current_bit_in_sample )
6868 self.update_col_in_frame_model(row_counter, column_counter, data_port.number, data_port.source_REG,
6869 width, rrrr, 0)
6870 last_bit_was_driven = True
6871 else :
6872 error()
6873 else :
6874 self.write_bit_slot( row_counter, column_counter, width, data_port.source_REG, rrrr, color,
6875 data_port.number)
6876 self.update_col_in_frame_model(row_counter, column_counter, data_port.number, data_port.source_REG,
6877 width, rrrr, sample_number_in_group)
6878 last_bit_was_driven = True
6879 data_port.set_guards_and_tails() # A bit is owned so
6880 if data_port.source_REG:
6881 self.check_bus_clash(row_counter, column_counter, data_port.device_number, 'write')
6882 else:
6883 self.check_bus_clash(row_counter, column_counter, data_port.device_number, 'read')
6884 column_counter += width + 1
13.1.6.5 [v1.59] Visualizer Source Code Fragment: Data Port Behavior per UI
6929
6930 # This is called for each possible column that could start a bit (or wide bit). This is not called more than once per data
6931 bit.
6932 # try_bit returns a tuple containing
6933 # 1. the width (integer) of the "bit" (how many UIs) and
6934 # 2. the value to drive (a string coding ownership or the bit address withing the sample frames)
6935 def try_bit( self, row_number, column_number, denominator_REG ) :
6936 ret_value = 'error'
6937
6938
6939 if ( self.end_of_row or self.done_with_interval ) :
6940 return 0, NOT_OWNED, 0 # self.drive_guards_and_tails()
6941
6942 if self.last_column_evaluated == column_number :
6943 raise ValueError ( "This column was already evaluated " )
6944 self.last_column_evaluated = column_number
6945
6946 if self.started :
6947 # Rendering of bits starts when the column gets to horizontal_start
6948 if column_number == self.horizontal_start_REG :
6949 self.done_with_row = False
6950 if column_number < self.horizontal_start_REG :
6951 return 0, NOT_OWNED, 0
6952 if self.done_with_row or self.done_with_interval :
6953 return 0, NOT_OWNED, 0 # self.drive_guards_and_tails()
6954
6955 # Are we past the end of the row?
7034 self.channel_group_is_spacing = 0
7035 ret_value = 'started'
7036 else :
7037 self.last_row_evaluated = row_number
7038 self.last_column_evaluatted = -1
7039 self.end_of_row = False
7040 self.current_offset_in_interval += 1
7041 # Current_offset_in_interval should be 0 anytime an SSP occurs
7042 # and is reset when channels are enabled or prepared.
7043
7044 if self.current_offset_in_interval == ( self.interval_REG + 1 ) :
7045 self.current_offset_in_interval = 0
7046 self.done_with_interval = False
7047 if self.current_offset_in_interval == self.offset_REG:
7048 # These lines are for the optional skipping feature
7049 if ( self.skipping_numerator_REG != 0 ) :
7050 self.accumulated_fraction += self.skipping_numerator_REG
7051 if self.accumulated_fraction >= denominator_REG : # comment about skipping.
7052 self.done_with_interval = True
7053 self.accumulated_fraction -= denominator_REG
7054 ret_value = 'skipping'
7055 return
7056
7057
7058 self.started = True
7059 self.startInterval()
7060 ret_value = 'starting'
7061 return ret_value
7062
7063 <###TODO-Author: TEMP Note: switch to portrait orientation>
7064
7105 When starting up in FlowMode 2 or 3, the Source assumes that it received 1 (or 2) DRQ bits with value 1
7106 prior to the channel starting, so that the first 1 (or 2) samples can contain DataValid=1, and real data
7107 samples.
7108 Note: the number of these phantom DRQ bits (1 or 2) is dependent upon the value of FlowModeDelay (0 or
7109 1).
7110 Note2: if adding channels on the fly then … be careful :-)
7111
7112 There are 3 kinds of Flow Control error, reported in error counter EC_FlowControlError and signaled in
7113 IntStat_FlowControlError:
7114 • (applies to any of Source-controlled, Sink-controlled, or Sink-Source-controlled modes): if the
7115 DataValid flags in all of the active channels are not identical.
7116 • (applies to Sink-controlled mode): if DRQ=1 and DataValid=0.
7117 • (applies to Sink-Source-controlled mode): if DRQ=0 and DataValid=1.
7118
7119 TODO: give some examples of when flow-controlled transport might be used:
7120 • A Data Port attached to an audio application that uses a sample clock that is asynchronous to the
7121 SWI3S bus clock (e.g., from a local crystal or a radio interface).
7122
7123 RULES:
7124 A Source DP shall use the same value of DataValid bits for all Channels of a Sample Frame.
7125 A Source DP may use a different value of DataValid bits for each of the Sample Frames within a Sample
7126 Group.
7127 When a Source DP transmits DataValid=0, it should transmit a data value of all zeroes in the corresponding
7128 samples. ###TODO-Author: AudioWG on 20240130 decided that the data value bits are NOT driven if
7129 DataValid=0.
7130 When a Sink DP receives DataValid=0, it should ignore the data value in the corresponding samples (apart
7131 from feeding all the bits from both DataValid and the samples through the descrambler). ###TODO-
7132 Author: AudioWG on 20240130 these bits are NOT fed to the scrambler.
7133
13.1.11.1 DRAFT: New Terminology that might be deployed, or repurposed for Data
Ports
7215 • A DataSlot is an opportunity to transport information that has a duration that can be programmed
7216 to be N (1 to 8) UIs. [###TODO: add somewhere: The TX drive for the last DataSlot in a group
7217 can be terminated half a UI early].
7218 • A Wide DataSlot is a special case of a DataSlot, when it has a duration longer than the “standard”
7219 1 UI.
7220 • A Bit is 1 bit of information (a 0 or a 1) transported by the PHY in 1 DataSlot.
7221 • A Wide Bit is a special case of a Bit, when it is transported in (N>1) UIs, i.e., a Wide DataSlot.
7222 • Transport parameters for HorizontalStart, HorizontalCount, BitWidth, and TailWidth are
7223 programmed in UIs (i.e., columns).
7224 • The transport parameter for sample size is programmed in “Bits”, which might be Wide Bits.
7225 • Sample grouping is counted in number of Sample Frames (register value of 0 => 1 Sample
7226 Frame?)
7227 • Channel grouping is counted in number of channels (register value of 0 => 1 channel)
7228 • A PHY Control conceptual signal, EndHalfEarly, which facilitates the active drive of the last Bit
7229 owned by a Manager or Peripheral ending on mid-UI boundary that is half a column before the
7230 end of the allocated UI(s).
7231
7232
7233
7234 Transport Period: 10.33/10.33/10.33 The periods in which one or more Samples are transmitted.
7235 Transport Interval: 11/10/10 The periods in which one or more Samples are transmitted.
7236 Period_Integer
7237 Period_Numerator
7238 Period_Denominator
7239 Sample Period = Transport Period / Sample Grouping
7240
7241 10.33/10.33/10.33
7242 Word#1: 11/10/10
7243 Word#1: 24/24/24
7244
7267 • A Channel Group is a sequence of <Channel_Group_Count> of the active Channels (e.g. 2 of the
7268 6 active Channels).
7269
7270 • A Channel Group Sub-Frame [name-TBD] is a sequence of one Channel Sample from each
7271 Channel within one Channel Group (i.e., <Channel_Group_Count> x <Sample_Size> bits).
7272 • A Sample Group Sub-Frame is a sequence of <Sample_Group_Count> Channel Group
7273 Sub-Frames (i.e., <Sample_Group_Count> x <Channel_Group_Count> x <Sample_Size> bits).
7274 • A Sample Group Frame is a sequence of one Sample Group Sub-Frame from each Channel
7275 Group (i.e., (<Active_Channel_Count>/<Channel_Group_Count>) x <Sample_Group_Count> x
7276 <Channel_Group_Count> x <Sample_Size> bits).
7277 Note: This is the same Channel Sample bits as <Sample_Group_Count> Sample Frames, but
7278 arranged in a different sequence.
7279
7280 Fan in:
7281 Rx: 12*34*56*78
7282 Tx1: 12---------
7283 Tx2: ---34------
7284 Tx3: ------56---
7285 Tx4: ---------78
7286
7287 Fan out:
7288 Tx: 12345678
7289 Rx1: 12------
7290 Rx2: --34----
7291 Rx3: ----56--
7292 Rx4: ------78
7293
7294 Niel:
7295 Fan-IN from 1-bit PDM Mics is common.
7296 Fan-OUT is better illustrated on a multi-channel PCM stream.
7297
7298 Remember that when picking off 1 channel from an n-channel sream, the Sink DP will take the first bit
7299 from Column HStrat, so the TX might need to use Channel Group Spacing==0 to start the new chnannel in
7300 column HorizontalStart.
7301
7302 ###TODO: need to add Wide Bits into these rules.
7303
7304 Sequence of data bits:
7305 1. Bits from one Sample Group Sub-Frame are packed into BitSlots from HSTART to (HSTART +
7306 HCOUNT) in adjacent Rows:
7307 A. Bits within one Channel Sample (MSb first).
7308 B. Channel Samples from one Channel Group Sub-Frame, i.e., <Channel_Group_Count>
7309 number of Channel Samples
7310 C. Channel Group Sub-Frames from one Sample Group Sub-Frame, i.e.,
7311 <Sample_Group_Count> number of Channel Samples from each Channel within that Channel
7312 Group.
7313 2. The Data Port skips past up to (<Channel Group Spacing> –1) number of BitSlots within the
7314 current Row.
7315 A. If the <Channel_Group_Spacing> is 0 then the Data Port starts the next Sample Group
7316 Sub-Frame in the HSTART column in the next Row, otherwise:
7317 B. If skipping the specified number of BitSlots would exceed the (HSTART + HCOUNT)
7318 Column then the Data Port starts the next Sample Group Sub-Frame in the HSTART column
7319 in the next Row, otherwise:
7320 C. (skipping the specified number of BitSlots will not exceed the (HSTART + HCOUNT)
7321 Column, so) the Data Port starts the next Sample Group Sub-Frame at the resulting BitSlot
7322 within the current Row.
7323 3. Sample Group Sub-Frames from subsequent Channel Groups, in the sequence specified in
7324 steps 1 & 2.
7325 4. After the complete Sample Group Frame, the Data Port calculates the number of Rows to be
7326 skipped from the Row_Interval. [###TODO-Author: correction: the interval is the period from the
7327 start of one Sample Group to the start of the next Sample Group, and should be called “Transport
7328 Interval”].
7329 A. If (Row_Interval==0) the Data Port will use the immediately following Row, otherwise:
7330 B. …
7331
7332 ###TODO: check that the rules are aligned with:
7333 • Bits in one sample
7334 • Then channels up to channel grouping
7335 • Then samples up to sample grouping
7336 • Then insert Channel Group Spacing number of columns
7337
7338 Channel Grouping is for fan in.
7339
7340
Channel_Group_Count Channel 0 / 1 – 16 ?
Grouping
7343
13.1.12.1 Corner Case #1: How to combine Tail Enables from multiple DPs within the
same Peripheral?
7362 ###TODO-Author: turn the following discussion in to an illustrative example.
7363 ###TODO-Python-Author: check what the tool does when DPs are prgrammed like this. Are there any
7364 assertions that warn about unexpected combinations of parameters between multiple Data Ports?
7365 E.g., DP1 has 4 Tail bits in every Row.
7366 In some of the Rows, DP2 takes over immediately after DP1.
7367 What happens if DP2 ends its data while there are still tail bits outstanding for DP1?
7368 It's not useful to change the bus back to the echo of a long forgotten DP1 bit, but does DP1’s request for a
7369 Tail cause DP2’s value to be driven out until the end of DP1’s Tail-request?
7370 AudioWG FTF Vienna March 2024: Simplest & most natural is that the MAC layer simply ORs together
7371 the tail enables from all Data Ports and then, IF there are no data requests from any Data Port, plays out a
7372 copy of whatever it drove in the previous bit clock period.
7373
7374
7417 Requirements
7418 1. DPn_PortSyncOK shall change to 1 when all of the following are true:
7419 A. The Peripheral is in Link State: Attached, and
7420 B. The Data Port receives an SSP indication from either an SSCR or SSPA Command, and
7421 C. Either or both of:
7422 i. 1 or more of DPn_EnableCh<c>_CURR==1, or
7423 ii. 1 or more of DPn_PrepareCh<c>_CURR==1.
7424 Note: An SSCR Command that commits a value of 1 to any of the EnableCh<c> or PrepareCh<c>
7425 bits will satisfy all of these conditions.
7426 2. DPn_PortSyncOK shall change to 0 when either:
7427 A. The Peripheral is not in Link State: Attached, or
7428 B. Both:
7429 i. All of DPn_EnableCh<c>_CURR bits are 0, and
7430 ii. All of DPn_PrepareCh<c>_CURR bits are 0.
7431 3. When the Data Port receives an SSP indication from either an SSCR or SSPA Command it shall
7432 behave as if the Sync Point identified by the Command is an SSP (i.e., the beginning of an
7433 Interval).
7434 Note: see EC_UnexpectedSSP in Table 164.
7435 4. DPn_PortReady shall be 1 when both:
7436 A. DPn_PortSyncOK==1, and
7437 B. For every channel that is implemented in the Data Port, either:
7438 i. (DPn_PrepareCh<c>==0) AND (DPn_ReadyCh<c>==0), or
7439 ii. (DPn_PrepareCh<c>==1) AND (DPn_ReadyCh<c>==1).
7440 ###TODO-Author: PortReady interrupts
7441 The IntStat_DPn_PortReady interrupt condition occurs when DPn_PortReady changes from 0 to 1.
7442 The IntStat_DPn_PortNotReady interrupt condition occurs when DPn_PortReady changes from 1 to 0.
7443
7444 5. DPn_PortReady shall not change from 0 to 1 when DPn_PrepareCh<n> is 0.
7445
7446 Permissions
7447 1. When DPn_PrepareCh<n> is 1, a Data Port may change DPn_ReadyCh<c> for any
7448 implementation-defined reason (e.g., a sample clock PLL losing lock).
7449 Recommendations
7450 1. A Manager should update DPn_EnableCh<c>_CURR and DPn_PrepareCh<c>_CURR only by
7451 using SSCR Commands to commit values from the corresponding _NEXT Registers.
7452 2. For Sink DPs that are not using Source-Synchronous or Sink-Synchronous flow control (see
7453 ###XREF), the Manager should not commit DPn_EnableCh<c> = 1 until the Channel is ready
7454 (e.g., after it has read DPn_ReadyCh<c> = 1).
7455 ###TODO-Author: A Source DP on a Mic: Recommend that if ((Ready Ch<c>=0) and (Enable Ch<c>=1))
7456 then the external Channel SHOULD produce a silent stream (where “silence” is an ImpDef encoding,
7457 known to the audio circuitry that is outside the SWI3S interface). NOTE THAT: this is only a
7458 recommendation, so devices DO NOT need to do this.
7459 Requirements
7460 1. {…} A Sink DP shall transport an FCP_DRQ bit dependent upon the value of DPn_FlowMode
7461 according to Table 142 (see also Requirement 7).
7462 2. {…} A Source DP shall transport a Tx_Present bit dependent upon the value of DPn_FlowMode
7463 according to Table 142 (see also Requirement 7).
7464 3. {…} A Source DP shall transport Channel bits dependent upon the value of DPn_FlowMode
7465 according to Table 142 (see also Requirement 7).
7466 Table 142 Effect of DPn_FlowMode when DPn_PortMode is Normal
FCP DRQ Bit TxPresent Bit Are Channel Bits
DPn_FlowMode Name
from Sink DP from Source DP Transported? []
0 Normal Does not Exist Does not Exist Yes
Tx-Controlled /
1 Does not Exist SourceReady [2]
Source-Synchronous
Rx-Controlled / Copy of Only when
2 SinkReady [3]
Sink-Synchronous Earlier_FCP_DRQ [4] (TxPresent=1)
(SourceReady [2]
3 Asynchronous SinkReady [3] AND
Earlier_FCP_DRQ [4])
7467 Note:
1. “Not transported” means that the Source Data Port does not own the Channel bits so, e.g., for
PHY3 (DLV) the bus will not be driven.
2. SourceReady is a notional internal signal within the Source DP indicating that there is at least 1
Transport Interval’s worth of data for every channel that is ready to be transported.
3. SinkReady is a notional internal signal within the Sink DP indicating that the Sink DP will be ready
to receive 1 (or more) Sample Frames during the next (or next-but-one) Transport Interval (see
###XREF).
4. The Source DP uses the value of the FCP DRQ that was received either 1 or 2 Sample Intervals
earlier (see ###XREF).
7468 4. {…} When a Sink Data Port transports an FCP_DRQ bit, it shall use a value dependent upon
7469 DPn_PortMode according to Table 143.
7470 5. {…} When a Source Data Port transports a Tx_Present bit, it shall use a value dependent upon
7471 DPn_PortMode according to Table 143.
7472 6. {…} When a Source Data Port transports each Channel bit, it shall use a value dependent upon
7473 DPn_PortMode according to Table 143.
7474 Table 143 Effect of DPn_PortMode
Raw Value [1] in Each Bit (i.e., Before Any Scrambling)
Channel Bit TxPresent Bit FCP DRQ Bit
DPn_PortMode Name
(Source to Sink) (Source to Sink) (Sink to Source)
Next payload data SinkReady from internal
0 Normal See Table 142.
bit from a sample state of the Sink DP.
1 Reserved — — —
2 Test0 0 0 0
3 Test1 1 1 1
7475 Note:
1. Raw Value means before scrambling (if enabled) in the transmitting Device or after descrambling
in the receiving Device. See Section 13.2.3 Requirement ###XREF.
7476 7. {…} When DPn_PortMode indicates Test0 or Test1 (see Table 143), the effect of DPn_FlowMode
7477 shall be as shown in Table 144.
7478 Table 144 Effect of DPn_FlowMode when PortMode is a Test Mode
FCP DRQ Bit TxPresent Bit Are Channel Bits
DPn_FlowMode Name
from Sink DP from Source DP Transported?
0 Normal Does not Exist Does not Exist
Tx-Controlled /
1 Does not Exist Yes
Source-Synchronous
Fixed 0 or 1 [1] Fixed 0 or 1 [1]
Rx-Controlled /
2 Fixed 0 or 1 [1] (see Table 143) (see Table 143)
Sink-Synchronous
(see Table 143)
3 Asynchronous
7479 Note:
1. When DPn_PortMode is Test0 or Test1, the existence of Channel bits does not depend on the
value of TxPresent, and the value of TxPresent does not depend on the value of the received
FCP DRQ bit.
7480 8. {…} When DPn_PortMode indicates Test0 or Test1 (see Table 143), a Data Port shall treat each
7481 instance when the received bit does not match the fixed value described in Table 143 as a bit error
7482 (see ###XREF to ###TODO-Author: correct Error Counter name).
7483 Note: the Data Port checks the value after descrambling, if this is enabled.
14 Registers
14.1.2 Registers
Next Current
Value Value
Register Register
Update
Update
Reset Value
Reset
Reset
Cold Reset
Warm Reset
Commit
7589
Figure 179 Dual-Ranked Register with Read-Only Current Value (Dual-RO)
Current
Value
Next Register
Value
Register
Control Value
0 to Function
Write Data from
Command
1
Update
Reset
Update
Reset Value
Reset
Cold Reset
Warm Reset
Commit
7590
Figure 180 Dual-Ranked Register with Read-Write Current Value (Dual-RW)
7595 stored value. It shall behave correctly (e.g., lock within the right time limit) provided that the Manager
7596 continues to generate a rate that matches the value that it wrote.
7597 Does this question apply to any other fields where some values are optional?
7598 Table 153 System and Link Control Register Fields (SLC_*): RowRateRange & UI_RateRange: (1) are
7599 the widths of these fields dependent upon which PHY is currently selected? (2) are any of the LSbs
7600 optional, e.g., if the Peripheral uses wider bins for its internal behavior? If so, how does the Manager
7601 understand when the Peripheral is saying “I have wide ranges” vs. “I don’t support that value”?
7602 Table 158 Peripheral Register Map for PHY1 and PHY2 Dual-Ranked Registers (PHY1_*_NEXT and
7603 Table 161: Stefano’s question about checking PHYn_DriveImpedance for each of the PHYs (bit width is
7604 shown as 3 for PHY1/2 and 4 for PHY3).
7605
7606 ###TODO-Author: when the PHY lists have been finalized, find and describe(!) a clean notation to
7607 represent which values in a list are mandatory and which are optional.
7610 Requirements
7611 1. A Peripheral shall divide up its address map according to Table 146.
7612 Table 146 Peripheral Top-Level Address Map
Local / Remote
Address Range Size Region Further Details
Access [1]
SWI3S-defined
0x00000000–0x0FFFFFFF 256 MB See Table 147
Registers [2]
3× Peripheral Device
0x10000000–0x3FFFFFFF Local Device-defined
256 MB Documentation
4×
0x40000000–0x7FFFFFFF SDCA See [MIPI02]
256 MB
0x80000000–0x8FFFFFFF 256 MB Reserved —
3× Remote Peripheral Device
0x90000000–0xBFFFFFFF Device-defined
256 MB (i.e., bufferable write Documentation
4× or deferrable read)
0xC0000000–0xFFFFFFFF SDCA See [MIPI02]
256 MB
1. The Local/Remote Access column defines whether accesses to this address are treated as a
Local Write or Remote Write (see Section 9.2.3 Requirement 2) or a Local Read or Remote
Read (see Section 9.2.4 Requirement 2).
2. The SWI3S-defined Registers have defined sequencing for multi-byte Writes (see Section 9.2.3
Requirement 7) and multi-byte Reads (see Section 9.2.4 Requirement 7).
7613 2. A Peripheral shall implement all of the following SWI3S-defined Registers at blocks of addresses
7614 specified in Table 147:
7615 A. A block of System & Link Control Registers specified in Section 14.2.4 and Section 14.2.5.
7616 B. A block of Control Data Stream Transport Registers specified in Section 14.2.6, and
7617 Section 14.2.7.
7618 C. 1 block of Peripheral PHY Registers described in the Table(s) listed in Table 147 for each of
7619 PHY0 through PHY15 that is implemented in the Peripheral (see Section 5.2.4
7620 Requirement 2).
7621 D. 1 block of Data Port Registers described in Section 14.2.2 and Section 14.2.3 for each of DP0
7622 through DP31 that is implemented in the Peripheral (see Section 5.2.4 Permission 1).
7623 Table 147 Peripheral Address Map Blocks for SWI3S Registers
Reserved for
0x00000000–0x000000FF 1 × 256 — — —
PHY0 Registers []
Table 160
0x00000300–0x000003FF 1 × 256 PHY3 Registers [] PHY3_ Table 162
Table 161
Reserved for
0x00000400–0x00000FFF 12 × 256 — — —
PHY4–15 Registers []
DP0_
Data Port Registers for Table 148
0x00002000–0x00003FFF 32 × 256 … Table 150
DP0–31 Table 149
DP31_
Remainder
0x00004000–0x0FFFFFFF Reserved — — —
of 256MB
7624 Note:
1. It is implementation-defined whether the Registers for one PHY are accessible when a different
PHY is in use. It is possible to build a Device that re-uses the same flip-flops for Registers in the
address blocks for different PHYs (see Permission ###XREF).
7625 3. Within each of the blocks of Registers, a Peripheral shall implement all register fields that are
7626 specified as either:
7627 A. Mandatory, or:
7628 B. Conditional, and the specified implementation condition is true.
7629 Note: see also Permission 1.
7630 4. A Peripheral shall deliver a read data byte of 0 in response to a read from:
7631 A. A Register address that is specified as Reserved, or
7632 B. A Register address that is specified as Conditional or Optional, and the Register is not
7633 implemented.
7634 5. A Peripheral shall deliver a read data bit of 0 in response to a read from a Register that is
7635 implemented, but where:
7636 A. The bit is specified as Reserved, or
7637 B. The bit is specified as Conditional or Optional, and the bit is not implemented.
7638 Permissions
7639 1. Within each of the blocks of SWI3S-defined Registers, a Peripheral may implement any register
7640 field that is specified as either:
7641 A. Optional, or
7642 B. Conditional, and the specified implementation condition is not true.
7643 2. A Peripheral may implement Registers at any of the addresses shown as Device-defined in
7644 Table 146.
7645 3. A Peripheral may re-use the same flip-flops between 2 or more sets of PHY-specific Registers
7646 shown in Table 147.
7647 4. A Peripheral may implement Registers defined in the SDCA Specification, [MIPI02], at the
7648 blocks of addresses specified in Table 146.
7649 Requirements
7650 1. A Data Port Register Block shall include Registers defined in Table 148 containing Register Fields described in Table 150.
7651 2. Each DPn_Register shall have an address calculated from the base address of the Data Port Region shown in Table 147 + (256 × the Data Port number)
7652 + the Address Offset from Table 148.
7653 Table 148 Peripheral Register Map for Data Port (DPn_*)
Address
Access Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Offset
0x01–
— [ 3 x Reserved ]
0x03
DevStat_Receive
0x04 RW1C Reserved Reserved Reserved Reserved Reserved Reserved Reserved
dSSP
0x08 — Reserved
0x0C RW SkippingNumerator[7:0]
###TODO: FCP_
0x0E RW FlowControlDelay Reserved Reserved Reserved
ScramblerEn
Reserved FlowMode[1:0]
0x0F RW Reserved
0x21 RO EC_TestFail_Ch1[7:0]
0x22 RO EC_TestFail_Ch2[7:0]
0x23 RO EC_TestFail_Ch3[7:0]
0x24 RO EC_TestFail_Ch4[7:0]
0x25 RO EC_TestFail_Ch5[7:0]
0x26 RO EC_TestFail_Ch6[7:0]
0x27 RO EC_TestFail_Ch7[7:0]
0x28 RO EC_TestFail_Ch8[7:0]
0x29 RO EC_TestFail_Ch9[7:0]
0x2A RO EC_TestFail_Ch10[7:0]
0x2B RO EC_TestFail_Ch11[7:0]
0x2C RO EC_TestFail_Ch12[7:0]
0x2D RO EC_TestFail_Ch13[7:0]
0x2E RO EC_TestFail_Ch14[7:0]
0x2F RO EC_TestFail_Ch15[7:0]
0x30 RO EC_UnexpectedSSP[7:0]
0x31 RO EC_FlowControlFail[7:0]
0x32–
— [ 13 x Reserved ]
0x3E
0x3F RO COUNT_Received_SSP[7:0]
0x40–
— [ 48 × Reserved ]
0x6F
7654 3. A Data Port Register Block shall include dual-ranked Registers each comprising both:
7655 A. DPn_*_NEXT Registers defined in Table 149 containing DPn_*_NEXT Register Fields described in Table 150, and
7656 B. Corresponding DPn_*_CURR Registers containing DPn_*_CURR fields.
7657 4. Each DPn_*_NEXT Register shall have an address calculated from the base address of the Data Port Region shown in Table 147 + (256 × the Data Port
7658 number) + the Address Offset from Table 149.
7659 5. Each DPn_*_CURR Register shall have an address calculated from 0x40 + the address of the corresponding DPn_*_NEXT Register (from
7660 Requirement 4).
7661 Table 149 Peripheral Register Map for Data Port Dual-ranked Registers (DPn_*_NEXT)
Address
Access Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Offset
EnableCh0 PrepareCh0
0x81 Dual
_NEXT _NEXT
Reserved HorizontalCount_NEXT[4:0]
SubRowInterval
0x82 Dual TailWidth_NEXT[1:0]
_NEXT
Reserved Spacing_NEXT[3:0]
EndHalfEarly
0x86 Dual
_NEXT
Reserved Reserved Reserved ApertureAdjust_NEXT[3:0]
GuardEnable GuardPolarity
0x8A Dual Reserved Reserved Reserved Reserved Reserved Reserved
_NEXT _NEXT
0x94—
— [ 12 × Reserved ]
0x9F
0xA0 Dual FCP_BitWidth_NEXT[1:0] Reserved FCP_HorizontalStart_NEXT[4:0]
0xA1 — Reserved
0xA4 — Reserved
FCP_EndHalfEarl
0xA6 Dual y Reserved Reserved Reserved FCP_ApertureAdjust_NEXT[3:0]
_NEXT
0xA7–
— [ 3 × Reserved ]
0xA9
FCP_GuardEnabl FCP_GuardPolari
0xAA Dual Reserved Reserved Reserved Reserved Reserved Reserved
e_NEXT ty_NEXT
0xAB–
— [ 5 × Reserved ]
0xAF
0xB0–
ImpDef [ 16 × ImpDef ]
0xBF
7662 Requirements
7663 1. The Data Port Register Fields shall be implemented according to Table 150.
7664 Note: the full names of all of these fields are preceded by “DPn_”, e.g., DPn_IntStat_TestFail.
EC_TestFailCh<c>[7:1]
Optional
Counter for the TestFail events. One for each
EC_TestFailCh<c>[7:0] RO EC_TestFailCh<c>[0] 8’b0
implemented Channel.
Conditional on Channel <N>
implemented in the DP.
EC_UnexpectedSSP[7:1]
Optional
EC_UnexpectedSSP[7:0] RO 8’b0 Counter for the UnexpectedSSP events.
EC_UnexpectedSSP[0]
Mandatory
COUNT_Received_SSP[7:1]
Optional
COUNT_Received_SSP[7:0] RO 8’b0 Counter for the DevStat_Received_SSP events.
COUNT_Received_SSP[0]
Mandatory
EC_FlowControlFail[7:1]
Optional
EC_FlowControlFail[7:0] RO EC_FlowControlFail[0]] 8’b0 Counter for FlowControlFail events.
Conditional (Sink DP that
supports flow control)
Encoding:
0: Normal mode: payload data to/from the
audio function.
PortMode[1:0] RW Mandatory 0
1: Reserved.
2: Test mode: payload data is all 0s.
3: Test mode: payload data is all 1s.
RO
Encoding:
Conditional RW Implementation-
PortDirection Mandatory 0: Source: puts data on the bus.
(bidirectional Defined
1: Sink: reads data from the bus.
DP)
When using
PHY1: excess one number of UIs:
2 × RO ’b00: 1 UI (fixed RO value when using PHY1)
BitWidth_CURR[1:0]
Mandatory 2’b0 ’b01: 2 UIs
BitWidth_NEXT[1:0]
When using ’b10: 3 UIs
PHY2 or PHY3: ’b11: Reserved.
Dual
Channel Grouping:
The spacing between the last bit of the last
sample of the last channel for a Sample Group
and the first bit of the first Channel for the next
Channel Group.
Additionally, when SubRowInterval = 1:
Spacing_CURR[3:0] The spacing between the last bit of the last
sample of the last Channel in the last Channel
Spacing_NEXT[3:0] Group in an Interval and the first bit of the first
Conditional: sample of the first Channel of the first Channel
###TODO-Author: Per Niel’s (DP supports ≥ Channels) Group in the next Interval.
suggestion: in a future draft: create Dual OR 0 Encoding:
an illustration of the mix of (DP supports 0: Next Row (see Note)
SampleSize>1, Channel Grouping, SubRowIntervals) 1: Immediately next Column
Sample Grouping, and 2: 1 Column left blank
SubRowIntervals. 3: 2 Columns left blank
…
15: 14 Columns left blank
Note:
When SubRowInterval=1 the next sample group
must be transmitted in the same Row, so a
Spacing value of 0 (Next Row) is Reserved.
Optional AND
FCP_EndHalfEarly_CURR Conditional on (Sink DP AND
Dual ’b0 Same behavior as EndHalfEarly for main DP stream.
FCP_EndHalfEarly_NEXT (DP implements FlowMode 2
or 3))
7666 Requirements
7667 1. The System and Link Control Register Block shall include Registers defined in Table 151 containing Register Fields described in Table 153.
7668 2. Each SLC_ Register shall have an address calculated from the base address of the System & Link Control Region shown in Table 147 + the Address
7669 Offset from Table 151.
7670 Table 151 Peripheral Register Map for System and Link Control (SLC_*)
Address
Access Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Offset
0x01 RO ManufacturerID[15:8]
0x02 RO ManufacturerID[7:0]
0x03 RO PartID[15:8]
0x04 RO PartID[7:0]
0x05 RO Class[7:0]
0x06–
— [ 10 × Reserved]
0x0F
0x10 RW Reserved Reserved Reserved Reserved Reserved Reserved Reserved WakeReqEnable
0x13 RW SkippingDenominator[7:0]
0x15–
— [15 × Reserved]
0x1F
Force
0x20 W1C Reserved Reserved Reserved Reserved Reserved Reserved Reserved
RemoteFail
DevStat_
DevStat_
0x21 RW1C Reserved Reserved Reserved Reserved Reserved Reserved
LostLock
BadCommandCo
nfidence
IntStat_
IntStat_ IntStat_ IntStat_Abandone IntStat_ IntStat_CalibrationR IntStat_ IntStat_
0x22 RW1C
RemoteDisabled BadCRC dPhase
UnexpectedNew
BadHD10 eq Bad8b10b MissedRowSync
Header
###TODO
0x23 RO Reserved Reserved Reserved Reserved Reserved Reserved Reserved
IntStat_BadRT[1]
0x24–
— [ 3 × Reserved ]
0x26
IntCascade
0x27 RO Reserved Reserved Reserved Reserved Reserved Reserved
_ImpDef
IntCascade_SDCA
0x2C–
— [ 6 × Reserved ]
0x31
IntEn_ IntEn_Abandoned IntEn_Unexpecte IntEn_CalibrationRe IntEn_
0x32 RW
RemoteDisabled
IntEn_BadCRC
Phase dNewHeader
IntEn_BadHD10
q
IntEn_Bad8b10b
MissedRowSync
0x34–
— [ 12 × Reserved ]
0x3F
0x40 RW1C IntStat_SDCA07 IntStat_SDCA06 IntStat_SDCA05 IntStat_SDCA04 IntStat_SDCA03 IntStat_SDCA02 IntStat_SDCA01 IntStat_SDCA00
0x41 RW1C IntStat_SDCA15 IntStat_SDCA14 IntStat_SDCA13 IntStat_SDCA12 IntStat_SDCA11 IntStat_SDCA10 IntStat_SDCA09 IntStat_SDCA08
0x42 RW1C IntStat_SDCA23 IntStat_SDCA22 IntStat_SDCA21 IntStat_SDCA20 IntStat_SDCA19 IntStat_SDCA18 IntStat_SDCA17 IntStat_SDCA16
0x43 RW1C IntStat_SDCA31 IntStat_SDCA30 IntStat_SDCA29 IntStat_SDCA28 IntStat_SDCA27 IntStat_SDCA26 IntStat_SDCA25 IntStat_SDCA24
0x44 RW1C IntStat_SDCA39 IntStat_SDCA38 IntStat_SDCA37 IntStat_SDCA36 IntStat_SDCA35 IntStat_SDCA34 IntStat_SDCA33 IntStat_SDCA32
0x45 RW1C IntStat_SDCA47 IntStat_SDCA46 IntStat_SDCA45 IntStat_SDCA44 IntStat_SDCA43 IntStat_SDCA42 IntStat_SDCA41 IntStat_SDCA40
0x46 RW1C IntStat_SDCA55 IntStat_SDCA54 IntStat_SDCA53 IntStat_SDCA52 IntStat_SDCA51 IntStat_SDCA50 IntStat_SDCA49 IntStat_SDCA48
0x47 RW1C IntStat_SDCA63 IntStat_SDCA62 IntStat_SDCA61 IntStat_SDCA60 IntStat_SDCA59 IntStat_SDCA58 IntStat_SDCA57 IntStat_SDCA56
0x4D RW1C IntStat_ImpDef15 IntStat_ImpDef14 IntStat_ImpDef13 IntStat_ImpDef12 IntStat_ImpDef11 IntStat_ImpDef10 IntStat_ImpDef09 IntStat_ImpDef08
0x4E RW1C IntStat_ImpDef23 IntStat_ImpDef22 IntStat_ImpDef21 IntStat_ImpDef20 IntStat_ImpDef19 IntStat_ImpDef18 IntStat_ImpDef17 IntStat_ImpDef16
0x4F RW1C IntStat_ImpDef31 IntStat_ImpDef30 IntStat_ImpDef29 IntStat_ImpDef28 IntStat_ImpDef27 IntStat_ImpDef26 IntStat_ImpDef25 IntStat_ImpDef24
0x58–
— [ 4 × Reserved ]
0x5B
0x5C RW1C IntEn_ImpDef07 IntEn_ImpDef06 IntEn_ImpDef05 IntEn_ImpDef04 IntEn_ImpDef03 IntEn_ImpDef02 IntEn_ImpDef01 IntEn_ImpDef00
0x5D RW1C IntEn_ImpDef15 IntEn_ImpDef14 IntEn_ImpDef13 IntEn_ImpDef12 IntEn_ImpDef11 IntEn_ImpDef10 IntEn_ImpDef09 IntEn_ImpDef08
0x5E RW1C IntEn_ImpDef23 IntEn_ImpDef22 IntEn_ImpDef21 IntEn_ImpDef20 IntEn_ImpDef19 IntEn_ImpDef18 IntEn_ImpDef17 IntEn_ImpDef16
0x5F RW1C IntEn_ImpDef31 IntEn_ImpDef30 IntEn_ImpDef29 IntEn_ImpDef28 IntEn_ImpDef27 IntEn_ImpDef26 IntEn_ImpDef25 IntEn_ImpDef24
0x60 RO EC_BadCommandConfidence[7:0]
0x61 RO EC_LostLock[7:0]
0x62 RO EC_MissedRowSync[7:0]
0x63 RO EC_Bad8b10b[7:0]
0x64 — Reserved
0x66 RO EC_UnexpectedNewHeader[7:0]
0x68 RO EC_BadCRC[7:0]
0x69–
— [ 7 × Reserved ]
0x6F
0x70–
ImpDef [ 16 × ImpDef ]
0x7F
7671 Note:
1. IntStat_BadRT and IntEn_BadRT exist only in the Manager, not in the Peripheral.
7672 3. The System and Link Control Register Block shall include dual-ranked Registers each comprising both:
7673 A. SLC_*_NEXT Registers defined in Table 152 containing SLC_*_NEXT Register Fields described in Table 153, and
7674 B. Corresponding SLC_*_CURR Registers containing SLC_*_CURR fields.
7675 4. Each SLC_*_NEXT Register shall have an address calculated from the base address of the System & Link Control Region shown in Table 147 + the
7676 Address Offset from Table 152.
7677 5. Each SLC_*_CURR Register shall have an address calculated from 0x40 + the address of the corresponding SLC_*_NEXT Register (from
7678 Requirement 4).
7679 Table 152 Peripheral Register Map for System and Link Control Dual-Ranked Registers (SLC_*_NEXT)
Address
Access Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Offset
ShortProtocol
0x83 Dual Reserved Reserved Reserved Reserved Reserved Reserved Reserved
Spacer
0x84–
— [ 44 × Reserved ]
0xAF
7680 Requirements
7681 1. The System & Link Control Register Fields shall be implemented according to Table 153.
7682 Note: the full names of all of these fields are preceded by “SLC_”, e.g., SLC_DeviceNumber.
7683 Table 153 System and Link Control Register Fields (SLC_*)
EC_BadCommandConfidence [7:1]
Optional Counter for Bad Command Confidence
EC_BadCommandConfidence[7:0] RO 8’b0
EC_BadCommandConfidence [0] events.
Mandatory
EC_LostLock[7:1] Optional
EC_LostLock[7:0] RO 8’b0 Counter for Lost Lock events.
EC_LostLock[0] Mandatory
EC_MissedRowSync[7:1] Optional
EC_MissedRowSync[7:0] RO 8’b0 Counter for MissedRowSync events.
EC_MissedRowSync[0] Mandatory
EC_Bad8b10b[7:1] Optional
EC_Bad8b10b[7:0] RO 8’b0 Counter for Bad8b10b events.
EC_Bad8b10b[0] Mandatory
EC_BadHD10[7:1] Optional
EC_BadHD10[7:0] RO 8’b0 Counter for BadHD10 events.
EC_BadHD10[0] Mandatory
EC_UnexpectedNewHeader [7:1]
Optional
EC_UnexpectedNewHeader[7:0] RO 8’b0 Counter for UnexpectedNewHeader events.
EC_UnexpectedNewHeader [0]
Mandatory
EC_AbandonedPhase [7:1]
Optional
EC_AbandonedPhase [7:0] RO 8’b0 Counter for AbandonedPhase events.
EC_AbandonedPhase [0]
Mandatory
EC_BadCRC[7:1] Optional
EC_BadCRC[7:0] RO 8’b0 Counter for BadCRC events.
EC_BadCRC[0] Mandatory
Conditional (Peripheral implements The Remote Access Status FSM has entered
IntStat_RemoteDisabled RW1C ’b0
any remote registers) state Remote_Disabled.
Mandatory in a Manager.
IntEn_BadRT RW ’b0 Interrupt Enable for IntStat_BadRT.
Not implemented in a Peripheral.
Depends on which
Depends on which PHY has been
PHY has been Unit Interval Rate Range, see Table 127.
RO selected:
UI_RateRange_CURR[4:0] selected: For some PHYs this is defined to be a
or PHY1: Read-only 0
UI_RateRange_NEXT[4:0] PHY1: RO:0 read-only 0 (and value 0 means Peripheral
Dual PHY2: Read-only 0
PHY2: RO:0 behavior is not dependent upon this register).
PHY3: either Dual or Read-only 0.
PHY3: 4 (or RO:0)
7684 Requirements
7685 1. The Control Data Stream Transport Register Block shall include Registers defined in Table 154.
7686 2. Each CDS_* Register shall have an address calculated from the base address of the Control Data Stream Transport Region shown in Table 147 + the
7687 Address Offset from Table 154.
7688 Table 154 Peripheral Register Map for Control Data Stream Registers (CDS_*)
Address
Access Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Offset
0x00–
— [ 112 × Reserved ]
0x6F
0x70–
ImpDef [ 16 × ImpDef ]
0x7F
7689 3. The Control Data Stream Transport Register Block shall include dual-ranked Registers each comprising both:
7690 A. CDS_*_NEXT Registers defined in Table 155 containing CDS_*_NEXT Register Fields described in ###XREF, and
7691 B. Corresponding CDS_*_CURR Registers containing CDS_*_CURR fields.
7692 4. Each CDS_*_NEXT Register shall have an address calculated from the base address of the Control Data Stream Transport Region shown in Table 147 +
7693 the Address Offset from Table 155.
7694 5. Each CDS_*_CURR Register shall have an address calculated from 0x40 + the address of the corresponding CDS_*_NEXT Register (from
7695 Requirement 4).
7696 Table 155 Peripheral Register Map for Control Data Stream Dual-Ranked Registers (CDS_*_NEXT)
Address
Access Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Offset
0x80–
— [ 4 × Reserved ]
0x83
0x84 Dual Reserved Reserved Reserved CDS_HorizontalStart_NEXT[4:0]
0x85 — Reserved
CDS_DriveType
0x86 Dual
_NEXT
Reserved Reserved Reserved Reserved Reserved Reserved Reserved
0x88 — Reserved
0x8A–
— [ 38 × Reserved ]
0xAF
0xB0–
ImpDef [ 16 × ImpDef ]
0xBF
7699 Requirements
7700 1. Control Data Stream Transport Register Fields shall be implemented according to Table 156.
7701 Table 156 Control Data Stream Transport Register Fields (CDS_*)
PHY1 or #2:
RO, RO. First owned UI in the Row that is used for the CDS. Reset value and
CDS_HorizontalStart_CURR[4:0] PHY-depend valid values are both PHY-dependent.
Mandatory
CDS_HorizontalStart_NEXT[4:0] PHY3: ent value. • PHY1/2: Fixed at 0.
RO-Dual • PHY3: reset value=2 but Manager can re-program it.
RW-Dual
Conditional
(Required in a
Peripheral that
CDS_DriveType_CURR RO-Dual 0: Special (Passive 1, Active 0)
implements PHY3) 0
CDS_DriveType_NEXT RW-Dual 1: Normal (Active 1, Active 0)
Optional (when the
Peripheral does not
implement PHY3).
PHY1:
RO
RO Tails are counted after any Guard. Not impacted by BitWidth.
b00: 0 UI (fixed RO value when using PHY1)
CDS_TailWidth_CURR[1:0]
Mandatory 0 b01: 1 UIs
CDS_TailWidth_NEXT[1:0] PHY2 or b10: 2 UIs
PHY3: b11: Reserved.
RO-Dual
RW-Dual
Conditional (on
When GuardEnable is ’b :
CDS_GuardPolarity_CURR RO-Dual GuardEnable being
0 0: drive 0 as GuardBit.
CDS_GuardPolarity_NEXT RW-Dual implemented, per
1: drive 1 as GuardBit.
PHY).
Offset from the centre of the last UI of the bit (which is the only UI
when not using wide bits).
4-bit ’s complement number in 1/16ths of a UI.
’b 000: –8/16 UI
Bit 3 Mandatory in ’b 00 : –7/16 UI
PHY3:DLV or …
CDS_ApertureAdjust_CURR[3:0] RO-Dual Bit 3 Optional in ’b : –1/16 UI
4’b0000 ’b0000: +0 UI
CDS_ApertureAdjust_NEXT[3:0] RW-Dual PHY1/#2:FBCSE
Bits 2:0 are always ’b000 : + / 6 UI
Optional. …
’b0 : +7/ 6 UI
Note:
For PHY3, an effective value of +8/16 UI can be achieved by
adding 1 to HorizontalStart and setting ApertureAdjust to –
8/16 UI.
7702 Requirements
7703 1. The PHY1 Register Block shall include Registers defined in Table 157.
7704 2. The PHY2 Register Block shall include Registers defined in Table 157.
7705 3. Each PHY1_* or PHY2_* Register shall have an address calculated from the base address of the PHY1 or PHY2 Region shown in Table 147 + the
7706 Address Offset from Table 157.
7707 Table 157 Peripheral Register Map for PHY1 & PHY2 Registers (PHY1_*, PHY2_*)
Address
Access Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Offset
0x00–
— [ 112 × Reserved ]
0x6F
0x70–
ImpDef [ 16 × ImpDef ]
0x7F
7708 4. The PHY1 Register Block shall include dual-ranked Registers each comprising both:
7709 A. PHY1_*_NEXT Registers defined in Table 158 containing PHY1_*_NEXT Register Fields described in Table 159, and
7710 B. Corresponding PHY1_*_CURR Registers containing PHY1_*_CURR fields.
7711 5. The PHY2 Register Block shall include dual-ranked Registers each comprising both:
7712 A. PHY2_*_NEXT Registers defined in Table 158 containing PHY2_*_NEXT Register Fields described in Table 159, and
7713 B. Corresponding PHY2_*_CURR Registers containing PHY2_*_CURR fields.
7714 Note: A Peripheral that implements both PHY1 and PHY2 also implements PHY control registers in both blocks of addresses, but these are typically 2
7715 aliasses of the same storage locations, see Permission 1.
7716 6. Each PHY1_*_NEXT or PHY2_*_NEXT Register shall have an address calculated from the base address of the PHY1 or PHY2 Region shown in
7717 Table 147 + the Address Offset from Table 158.
0x83–
— [ 45 × Reserved ]
0xAF
0xB0–
ImpDef [ 16 × ImpDef ]
0xBF
7721 Note:
7722 In this Table, register fields with a name starting with “PHYn_” describe 2 fields with names starting with PHY1_ and PHY2_.
7723 Permissions
7724 1. A Peripheral may re-use the same register storage for the PHY1 and PHY2 Register Blocks.
7725 Requirements
7726 1. The PHY1 or PHY2 Register Fields shall be implemented according to Table 159.
7727 Table 159 Peripheral PHY1 or PHY2 (FBCSE) Register Fields (PHY1_*, PHY2_*)
7728 Note:
7729 In this Table, register fields with a name starting with “PHYn_” describe 2 fields with names starting with PHY1_ and PHY2_.
7730 Requirements
7731 1. The PHY3 Register Block shall include Registers defined in Table 160 containing Register Fields described in Table 162.
7732 2. Each PHY3 Register shall have an address calculated from the base address of the PHY3 Region shown in Table 147 + the Address Offset from
7733 Table 160.
7734 Table 160 Peripheral Register Map for PHY3 (PHY3_*)
Address
Access Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Offset
0x00 RW PHY3_CalibrationDelayMin[07:00]
0x01 — Reserved
0x02 — Reserved
0x03 — Reserved
0x04 RW PHY3_CalibrationDelayMax[07:00]
0x05 — Reserved
0x06 — Reserved
0x07 — Reserved
0x08 RW PHY3_CalibrationImpDef[07:00]
0x09 RW PHY3_CalibrationImpDef[15:08]
0x0A–
— [ 102 × Reserved ]
0x6F
0x70–
ImpDef [ 16 × ImpDef ]
0x7F
0x83–
— [ 5 × Reserved ]
0x87
0x88 Dual PHY3_CalibrationDelay_NEXT[07:00]
0x89–
— [ 39 × Reserved ]
0xAF
0x80–
ImpDef [ 16 × ImpDef ]
0xBF
7743 Requirements
7744 1. The PHY3 Register Fields shall be implemented according to Table 162.
7745 Table 162 Peripheral PHY3 (DLV) Register Fields (PHY3_*)
Mandatory /
Reset
Field Name Access Conditional / Optional / Description & Encoding
Value
…
Hysteresis control.
PHY3_Hysteresis_CURR[1:0] 0: Minimal
Dual Mandatory 1 1: (5–15%) of programmed VSEOS_NOM
PHY3_Hysteresis_NEXT[1:0]
2: (20–60%) of programmed VSEOS_NOM
3: Reserved
7756 Figure 181 shows an equivalent circuit for 1 IntStat chanel and the accompanying IntEn enable bit. The
7757 saturating counter register (colored red) is used for some error counters (EC_xyz).
Sync_Reset
7758
Figure 181 Interrupt Channel (with Optional Saturating Error Counter)
7759 ###TODO-Author in v0.7: add a simple waveform diagram illustrating successful and unsuccessful
7760 writes to the IntClear Register. Maybe include a >1-bit error counter in this.
7761 ###TODO-Author: (from AudioWG telco 26 September) clarify (somewhere) that DevStatClear has
7762 the same interlock behavior as IntStatClear: the only difference between DevStat and IntStat is that
7763 DevStat does not have an IntEnable_XYZ.
7773 Requirements
7774 1. After any Cold Reset, every Error Counter that is implemented in a Peripheral or Manager shall be
7775 reset to 0.
7776 2. When an Error Counter is active (see Requirement ###XREF and Permission ###XREF) and the
7777 related Error Condition occurs (see Table 163 or Table 164), an Error Counter shall either:
7778 A. Increment by 1, or:
7779 B. Remain at the maximum value that can be represented by the number of bits that are
7780 implemented in the Error Counter (i.e., not wrap to 0), see Permission 3.
7781 Note: see also Section ###XREF Permission ###XREF.
7782 ###TODO-Author: Section # Permission # permits error counters to be deactivated while the Peripheral is
7783 Dormant. Need to describe somewhere that DP error counters are always deactivated except when one or
7784 more channels is enabled (so going to Dormant would always correctly deactivate them).
7785 3. A Peripheral shall implement all of the Error Counters for which Table 163 indicates “P” or “MP”.
7786 4. A Manager shall implement all of the Error Counters for which Table 163 indicates “M” or “MP”.
7787 Table 163 Summary of Error Counters
8.2.2 REQ 1
CRC failure when checking
8.2.2 REQ 2
EC_BadCRC MP Manager/Peripheral Packet, see
(see also Section 8.1.16.5.
8.2.2 REQ 3.B)
7788 5. For each Data Port, DPn, that is implemented in a Peripheral, the Peripheral shall implement all of
7789 the Error Counters for which Table 164 indicates “P” or “MP”.
7790 6. For each Data Port, DPn, that is implemented in a Manager, the Manager shall implement all of
7791 the Error Counters for which Table 164 indicates “M” or “MP” (see also Permission 1).
7792 ###TODO-Author: Somewhere in the informative description of Data Ports, explain that
7793 DPn_UnexpectedSSP and DPn_COUNT_ReceivedSSP in the Manager are optional, and would be
7794 checking an _internal_ sync signal.
7795 Table 164 Summary of Data Port Error Counters
7796 7. For each Data Port, DPn, that is implemented in a Peripheral, the Peripheral shall implement all of
7797 the Event Counters for which Table 165 indicates “P” or “MP”.
7798 Table 165 Summary of Data Port Event Counters
7799 Permissions
7800 1. For each Data Port, DPn, that is implemented in a Manager, the Manager may implement all of the
7801 Error Counters for which Table 164 indicates “Optional: M” (see also Requirement 6).
7802 2. For each Data Port, DPn, that is implemented in a Manager, the Manager may implement all of the
7803 Event Counters for which Table 165 indicates “Optional: M”.
7804 3. Each Error counter that is implemented may have between 1 and 8 bits (see Requirement 2.B).
A.4 Interrupts
7816 32 IntStat_ImpDef bits in System & Link Control
7817 1 Calibration_Request interrupt in System & Link Control.
7818 2 IntStat_ImpDef bits per Data Port
7819
Rule Section Type Para Changed Rule Section Type Para Changed
6136 5.2.2 rec 1 ##02 6.2.2 REQ 2
6137 5.2.2 rec 2 ##03 6.2.2 rec 1
6138 5.2.2 rec 3
Rule Section Type Para Changed Rule Section Type Para Changed
7201 8.2.3
8901 12.2.1
7301 8.2.4
12.2.2
12.2.3
7401 8.2.5
9001
7501 9.2.1
Rule Section Type Para Changed Rule Section Type Para Changed
9101 13.2.1
9201 13.2.2
# obsolete — — v0.# r#
9301 13.2.3 # REQ v0.# r#
# PERM v0.# r#
9401 14.2.1 # rec v0.# r#
9411 14.2.2
9421 14.2.3
9431 14.2.4
9441 14.2.5
9451 14.2.6
9461 14.2.7
9501 14.2.8
9511 14.2.9
9521 14.2.10
9531 14.2.11
9601 15.2.1
7865