WO2019070361A1 - Bus multilignes à réglage dynamique partagés par des dispositifs multiprotocoles - Google Patents
Bus multilignes à réglage dynamique partagés par des dispositifs multiprotocoles Download PDFInfo
- Publication number
- WO2019070361A1 WO2019070361A1 PCT/US2018/049593 US2018049593W WO2019070361A1 WO 2019070361 A1 WO2019070361 A1 WO 2019070361A1 US 2018049593 W US2018049593 W US 2018049593W WO 2019070361 A1 WO2019070361 A1 WO 2019070361A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- wire
- bus
- devices
- mode
- wires
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4291—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4295—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
Definitions
- the present disclosure relates generally to an interface between a host processor and a peripheral device and, more particularly, to an interface and dynamically adjustable shared bus connecting both next-generation and legacy sensors and accommodating multiple modes of operation.
- Manufacturers of mobile devices may obtain components of the mobile devices from various sources, including different manufacturers.
- an application processor in a mobile computing device may be obtained from a first manufacturer, while sensors employed by the mobile computing device may be obtained from one or more other manufacturers.
- Various standards-based or proprietary interfaces have been defined, typically directed to a specific application or type of application.
- cellular telephones may use a communications interface that is compatible with or conforms to an Inter-Integrated Circuit (I2C) compatible bus standard specified by the Mobile Industry Processor Interface Alliance (MIPI).
- I2C Inter-Integrated Circuit
- MIPI Mobile Industry Processor Interface Alliance
- the I2C interface has become a widely adopted communication interface that may be optimized for specific applications.
- the MIPI standards define a camera control interface (CCI) that uses a two-wire, bi-directional, half duplex, serial interface configured as a bus connecting a master and one or more slaves.
- CCI camera control interface
- the CCI protocol uses the I2C Serial Clock (SCL) and Serial Data (SDA) lines, and CCI devices and I2C devices can be deployed on the same bus such that two or more CCI devices may communicate using CCI protocols, while any communication involving an I2C bus uses I2C protocols.
- Later versions of CCI can provide higher throughputs using modified protocols to support faster signaling rates.
- I2C may be implemented for sensor interfaces.
- serial interfaces configured as a bus connecting different types of peripherals or cooperating devices to a processor.
- Embodiments disclosed herein provide systems, methods and apparatus that can improve the performance of a shared bus such as a shared bus that couples multiple sensor devices to a host device.
- the host device may operate as a bus master, while the sensor devices may be addressed as or through slave devices.
- a method of data communications relates to a first device operating as a master device over a shared bus to which one or more slave devices are coupled.
- the first device may establish a connection on the two-wire serial bus with a second device, coupled to the two-wire serial bus, using a predefined base protocol.
- the first device may determine the availability of one or more additional connectors, wires, and/or lines that are configurable for data communications between the first device and the second device.
- the first device may switch from using the predefined base protocol to a second protocol having a higher data throughput than the predefined base protocol.
- the second protocol may be a high data rate I3C protocol.
- the second protocol may encode data in sequences of symbols for transmission over a combination of lines that includes the two-wire bus and at least one or more additional connectors, lines, and/or wires so as to transmit the sequences of symbols over the combination of connectors, lines and/or wires.
- Clock information may be encoded in transitions between pairs of consecutive symbols in the sequences of symbols that are transmitted over the two-wire bus and the at least one or more additional connectors, lines, and/or wires.
- a method performed by a first device coupled to a two-wire serial bus may include establishing a connection on the two-wire serial bus with a second device coupled to the two-wire serial bus using a base protocol associated with the two-wire serial bus, determining availability of at least one additional wire that is configurable for data communications between the first device and the second device, and responsive to a command transmitted on the two-wire serial bus, communicating with the second device using each wire of the two-wire serial bus and the at least one additional wire.
- the predefined base protocol includes a protocol that is compliant or compatible with an I2C mode of data communications.
- the predefined base protocol may be similar to a CCI data transport mode in which a first wire of the two-wire bus is used for serial data communications and a second wire of the two-wire bus is used for a clock signal.
- a high data rate (HDR) protocol may be implemented based on coded symbols.
- a clock may be embedded in the data stream (e.g., within the symbol transitions).
- This HDR protocol may be adapted to sensor applications and symbol coding may be expanded to use more than two wires (e.g., by repurposing lines used for other purposes in the predefined base protocol).
- symbol coding may be implemented on two, three or more wires.
- the embedded clock may be transmitted over one line/wire or over multiple lines. Additionally, multiple embedded clocks may be transmitted over different lines or sets of lines. Each embedded clock may support different configurations, for example.
- the two-wire serial bus and the at least one additional wire may be combined to obtain a combination bus. Data may be transmitted over two or more wires of the combination bus in accordance with a clock signal transmitted on a third wire of the combination bus.
- the combination bus may be operated in accordance with an I3C HDR double data rate (DDR) protocol.
- DDR I3C HDR double data rate
- the one or more additional connectors, lines, and/or wires may include a connector, line, and/or wire that is operable for transmitting an interrupt signal between the first device and the second device.
- the one or more additional connectors, lines, and/or wires may include a shared connector, line, and/or wire that is coupled between the first device (e.g., master device) and one or more slave devices.
- a connector, line, and/or wire may extend solely between the first device and the second device.
- the connector, line, and/or wire may extend between the first device, the second device, and a third device.
- each of the sequences of symbols may include 12 symbols.
- Each of the sequences of symbols, when spread over three wires, may encode a 33-bit binary word, for example.
- communications on the two-wire serial bus may resume in accordance with the predefined base protocol associated with the two-wire serial bus.
- Communications using the predefined base protocol typically involves only the two-wire serial bus.
- clock information may be encoded in transitions of signaling state of only the two-wire serial bus.
- Clock information may be encoded in transitions of signaling state of the combination of connectors.
- a device in an aspect of the disclosure, includes a bus having a first line and a second line, a first set of devices coupled to the bus and, in a first mode of operation, configured to use the first line for data transmissions and use the second line for a first clock signal, one or more additional lines connecting two or more of the devices in the first set of devices for transmitting signaling between the two or more devices, a second set of devices, within the first set of devices, further configured to use the bus and at least one of the additional lines for data transmissions in a second mode of operation.
- symbols are encoded across the first line, the second line, and the at least one of the additional lines.
- the first set of devices and second set of devices may concurrently monitor at least one of the first line and second line in both the first mode and second mode of operation.
- the first set of devices and second set of devices concurrently monitor both the first line and second line in both the first mode and second mode of operation.
- a master device in the second set of devices transmits data to a slave device in the first set of devices or the second set of devices over the first line of the bus.
- the first mode of operation may implement a first protocol for data transmissions over the bus and the second mode of operation implements a second protocol for data transmissions over the bus and the at least one of the additional lines.
- a master node in the second set of devices may send a first bit sequence over the first line indicating to the second set of devices a switch to the second mode of operation.
- a master device of the second set of devices transmits data to a slave device in the second set of devices over the first line and second line of the bus and the at least one of the additional lines.
- the first set of devices may receive a reset indicator over the first line and second line inhibiting detection of a valid slave node address.
- a reset indicator and/or stop indicator may be avoided in the first line and/or second line during data transmissions.
- a master node may send an exit symbol sequence over the bus indicating to the second set of devices a switch to the first mode of operation.
- a second clock signal is embedded within symbol transitions over the bus and the at least one of the additional lines.
- the second clock signal may be embedded within symbol transitions over a first subset of lines while a third clock signal is embedded within symbol transitions over a second subset of lines.
- a master device within the second set of devices may be adapted to ascertain a number of available lines with a particular slave device within the second set of devices, select one or more of the available lines, and dynamically adapt a protocol used in the second mode of operation to utilize the bus and the selected one or more available lines.
- the protocol is adapted to use a varying number of lines to encode symbols for transmission.
- one or more devices in the second set of devices are capable of operating in both the first mode of operation and the second mode of operation.
- the one or more additional lines may be provided for communicating interrupts from slave devices to a master device within the first and/or second set of devices.
- At least three lines are used in the second mode of operation to encode the symbols, and a plurality of symbols are further encoded as a septenary -based number. At least four lines may be used in the second mode of operation to encode the symbols, and a plurality of symbols may be further encoded as a pentadecimal-based number.
- the bus is an I2C-compatible bus. In some examples, the bus is an BC-compatible bus.
- a device in an aspect of the disclosure, includes a two-wire bus having a first line and a second line, means for determining availability of one or more additional lines that are configurable for data communications between the first device and the second device, means for encoding data, according to a high data rate protocol, in sequences of symbols for transmission over a combination of lines that includes the two-wire bus and the one or more additional lines, where clock information is encoded in transitions between pairs of consecutive symbols in the sequences of symbols, and means for transmitting the sequences of symbols over the combination of lines.
- a computer-readable medium may store data and instructions.
- the computer-readable medium may be a non-transitory storage medium.
- the instructions may be executable by one or more processors of a processing circuit.
- the instructions when executed, may cause the processing circuit to determine availability of one or more additional lines that are configurable for data communications between the first device and the second device, encode data according to a high data rate protocol.
- data may be encoded in sequences of symbols for transmission over a combination of lines that includes the two-wire bus and the one or more additional lines, where clock information is encoded in transitions between pairs of consecutive symbols in the sequences of symbols, and transmit the sequences of symbols over the combination of lines.
- a method includes operating a first set of devices according to a first mode of operation configured to use a first line of a bus for data transmissions and use a second line of the bus for a first clock signal, determining availability of one or more additional lines connecting two or more of the devices in the first set of devices for transmitting signaling between the two or more devices, operating a second set of devices, within the first set of devices, according to a second mode of operation configured to use the bus and at least one of the additional lines for data transmissions.
- symbols may be encoded across the first line, the second line, and the at least one of the additional lines.
- first device may include a communication interface configured to couple the first device to a two-wire serial bus with a second device coupled to the two-wire serial bus using a predefined base protocol associated with the two-wire serial bus, a processing circuit coupled to the communication interface.
- the processing circuit may be configured to determine availability of one or more additional lines that are configurable for data communications between the first device and the second device, encode data according to a high data rate protocol.
- a high data rate protocol may cause data to be encoded in sequences of symbols for transmission over a combination of lines that includes the two-wire bus and the one or more additional lines.
- Clock information is encoded in transitions between pairs of consecutive symbols in the sequences of symbols, and transmit the sequences of symbols over the combination of lines.
- FIG. 1 depicts an apparatus employing a data link between integrated circuit (IC) devices that selectively operates according to one of plurality of available standards.
- IC integrated circuit
- FIG. 2 illustrates a system architecture for an apparatus employing a data link between
- FIG. 3 illustrates certain aspects of a transmitter and a receiver according to certain aspects disclosed herein.
- FIG. 4 illustrates the signaling state of a high data rate protocol when transmitting symbols according to certain aspects disclosed herein.
- FIG. 5 illustrates one example of an encoding scheme for transcoding data according to certain aspects disclosed herein.
- FIG. 6 illustrates a timing diagram of an I2C one byte write data operation.
- FIG. 7 illustrates a configuration of devices coupled to a common serial bus.
- FIG. 8 illustrates signaling on a serial bus when the serial bus is operated in a single data rate (SDR) mode of operation defined by 13 C specifications.
- SDR single data rate
- FIG. 9 illustrates an example of a transmission in a high data rate (HDR) mode of operation defined by I3C specifications, where data is transmitted at double data rate (DDR) on a serial bus.
- HDR high data rate
- DDR double data rate
- FIG. 10 illustrates an example of a transmission in an I3C HDR mode, where data is transmitted in signaling state of a serial bus.
- FIG. 11 illustrates a configuration of I2C devices (e.g., legacy devices) and devices operated according to another protocol (e.g., an I3C protocol) devices, where the devices may include or support next generation sensors connected to a common serial bus.
- I2C devices e.g., legacy devices
- another protocol e.g., an I3C protocol
- FIG. 12 illustrates the initiation and termination of transactions on a serial interface configurable to support multiple protocols in accordance with certain aspects disclosed herein.
- FIG. 13 is a diagram that illustrates timing associated with multiple frames transmitted according to I2C protocols.
- FIG. 14 illustrates the occurrence of unintended I2C START and I2C STOP conditions.
- FIG. 15 illustrates certain aspects of an example of an encoding scheme over two wires that may be used in accordance with certain aspects disclosed herein.
- FIG. 16 illustrates examples of symbol coding schemes used for sensor global bus transmissions.
- FIG. 17 illustrates further examples of symbol encoding schemes used for sensor global bus transmissions.
- FIG. 18 illustrates a configuration of different devices connected to a common serial bus, where some devices may use additional connectors according to certain aspects disclosed herein.
- FIG. 19 illustrates an example of data symbol encoding three conductors or wires in accordance with certain aspects disclosed herein.
- FIG. 20 is a block diagram illustrating an example of an apparatus employing a processing system that may be adapted according to certain aspects disclosed herein.
- FIG. 21 is a flow chart of a first method for communicating using additional lines with a serial bus in accordance with one or more aspects disclosed herein.
- FIG. 22 is a flow chart of a second method for communicating using additional lines with a serial bus in accordance with one or more aspects disclosed herein.
- FIG. 23 is a diagram illustrating an example of a hardware implementation for an apparatus that communicates using a two-wire bus in a first mode and dynamically adjusting the two-wire bus to add one or more additional lines in a second mode in which symbols are encoded among the two-wire bus and the one or more additional lines.
- a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program and/or a computer.
- an application running on a computing device and the computing device can be a component.
- One or more components can reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers.
- these components can execute from various computer readable media having various data structures stored thereon.
- the components may communicate by way of local and/or remote processes such as in accordance with a signal having one or more data packets, such as data from one component interacting with another component in a local system, distributed system, and/or across a network such as the Internet with other systems by way of the signal.
- a dynamically reconfigurable high data rate bus that connects sensor devices or sensor controllers may be referred to herein as a Sensors Global Bus (or SGbus).
- an SGBus may be implemented using a known communication standard or protocol.
- an SGBus may be implemented using a serial bus operated in accordance with one or more I3C protocols.
- the SGBus may be implemented using a two-wire I2C-compatible bus.
- the SGBus may be implemented using a multi-wire bus, where one or more wires of the multi-wire bus may be dynamically repurposed for communications between one or more devices coupled to the SGBus.
- Data may be transmitted on two or more wires of the SGBus in accordance with a clock signal transmitted on another wire of the SGBus.
- data can be encoded in symbols to be transmitted using the two-wire I2C- compatible bus and one or more repurposed wires.
- This SGBus may support legacy I2C devices in a first mode of operation as well as next-generation devices.
- I3C protocols may be used to control the SGBus. I3C protocols derive certain implementation aspects from the I2C protocol. Original implementations of I2C supported data signaling rates of up to 100 kilobits per second (100 kbps) in standard- mode operation, with more recent standards supporting speeds of 400 kbps in fast-mode operation, and 1 megabit per second (Mbps) in fast-mode plus operation. Other protocols, such as the 13 C protocol, can increase available bandwidth on the serial bus through higher transmitter clock rates, by encoding data in signaling state of two or more wires, and through other encoding techniques.
- the I3C protocol is derived from corresponding aspects of the I2C protocol, and the I2C and 13 C protocols can coexist on the same serial bus.
- the System Management Bus may be used to control the SGBus.
- SMBus is a single-ended two-wire bus derived from the I2C bus.
- the SMBus protocols may be used to provide low-bandwidth, simplified communications from a processor to components.
- the SMBus may carry on-off signaling between a processor and a power supply.
- serial peripheral interface may be used to control the serial peripheral interface
- SPI is a general-purpose serial interface that may be included in mobile communication devices to provide synchronous serial communication between a processor and various peripheral devices.
- an SPI master device is coupled through the SPI bus to peripheral devices configured as slave SPI devices.
- the master device provides a clock signal on a clock line of the SPI bus, where the clock signal controls synchronous serial data exchanges between the master and slave devices.
- Data may be communicated using two or more data lines of the SPI bus. Since one or more of the data lines may be shared by multiple slave devices, the SPI bus provides a slave select line (or chip select) for each slave device to control access to shared data lines.
- FIG. 1 depicts an apparatus that may employ a communication link between IC devices.
- the apparatus 100 may include a wireless communication device that communicates through a radio frequency (RF) transceiver with a radio access network (RAN), a core access network, the Internet and/or another network.
- the apparatus 100 may include a communications transceiver 106 operably coupled to processing circuit 102.
- the processing circuit 102 may include one or more IC devices, such as an application-specific IC (ASIC) 108.
- ASIC application-specific IC
- the ASIC 108 may include one or more processing devices, logic circuits, and so on.
- the processing circuit 102 may include and/or be coupled to processor readable storage such as a memory device 112 that may maintain instructions and data that may be executed by processing circuit 102.
- the processing circuit 102 may be controlled by one or more of an operating system and an application programming interface (API) 110 layer that supports and enables execution of software modules residing in storage media, such as the memory device 1 12 of the wireless device.
- the memory device 1 12 may include read-only memory (ROM) or random- access memory (RAM), electrically erasable programmable ROM (EEPROM), flash cards, or any memory device that can be used in processing systems and computing platforms.
- ROM read-only memory
- RAM random- access memory
- EEPROM electrically erasable programmable ROM
- flash cards or any memory device that can be used in processing systems and computing platforms.
- the processing circuit 102 may include or access a local database 1 14 that can maintain operational parameters and other information used to configure and operate the apparatus 100.
- the local database 1 14 may be implemented using one or more of a database module, flash memory, magnetic media, EEPROM, optical media, tape, soft or hard disk, or the like.
- the processing circuit may also be operably coupled to external devices such as antenna 122, display 124, operator controls, such as button 128 and keypad 126 among other components.
- FIG. 2 is a block schematic illustrating certain aspects of an apparatus 200 connected to a communications bus, where the apparatus may be embodied in one or more of a wireless mobile device, a mobile telephone, a mobile computing system, a wireless telephone, a notebook computer, a tablet computing device, a media player, a gaming device, a personal digital assistants (PDA) or other handheld device, a netbook, a notebook computer, a television, an entertainment device, a wearable device, or the like.
- the apparatus 200 may include multiple devices 202, 210 and 222a-222n, which communicate using a shared bus 230.
- the shared bus 230 may extend the capabilities of a conventional I2C bus for devices that are configured for enhanced features supported by the high data rate bus 230.
- the shared bus 230 may support a higher bit rate than an I2C bus by utilizing ternary number symbol coding over two wires/lines.
- a device 202 may be configured to operate as a slave on the shared bus 230.
- the device 202 may be adapted to provide a sensor control function 204 that manages one or more generic sensors, high speed sensors, fingerprint sensors, image sensors (e.g. cameras), touchscreen sensors, and so on.
- the device 202 may include configuration registers or other storage 206, control logic 212, a transceiver 210 and line drivers/receivers 214a and 214b.
- the control logic 212 may include a processing circuit such as a state machine, sequencer, signal processor or general-purpose processor.
- the transceiver 210 may include a receiver 210a, a transmitter 210c and common circuits 210b, including timing, logic and storage circuits and/or devices.
- the transmitter 210c encodes and transmits data based on timing provided by a clock generation circuit 208.
- FIG. 3 is a block diagram illustrating an example of a transmitter 300 and a receiver 320 configured according to certain aspects disclosed herein.
- the transmitter 300 may transcode data 310 into ternary (base-3) numbers that are encoded as symbols transmitted on a pair of connectors, wires or line such as the SCL line 216 and SDA line 218 signal wires.
- each data element (also referred to as a data word) of the input data 310 may have a predefined number of bits, such as 8, 12, 16, 19 or 20 bits.
- a transcoder 302 may receive the input data 310 and produce a sequence of ternary numbers 312 for each data element.
- Each ternary number in the sequence of ternary numbers 312 may be encoded in two bits and there may be 12 ternary numbers in each sequence of ternary numbers 312.
- a ternary - to-symbols encoder 304 produces a stream of 2-bit symbols 314 that are transmitted through line drivers 306.
- the line drivers 306 include open- drain output transistors 308.
- the line drivers 306 may drive the SCL line 216 and SDA line 218 signal wires using push-pull drivers.
- the output stream of 2-bit symbols 314 generated by the encoder has a transition in the state of at least one of the SCL line 216 and SDA line 218 signal wires between consecutive symbols 314 by ensuring that no pair of consecutive symbols includes two identical symbols.
- the availability of a transition of state in at least one line 216 and/or 218 permits a receiver 320 to extract a receive clock 338 from the stream of data symbols 314.
- the receiver 320 may include or cooperate with a clock and data recovery (CDR) circuit 328.
- the receiver 320 may include line interface circuits 326 that provide a stream of raw 2-bit symbols 336 to the CDR circuit 328.
- the CDR circuit 328 extracts a receive clock 338 from the raw symbols 336 and provides a stream of 2-bit symbols 334 and the receive clock 338 to other circuits 324 and 322 of the receiver 320.
- the CDR circuit 328 may produce multiple clocks 338.
- a symbols-to-ternary decoder 324 may use the receive clock 338 to decode the stream of symbols 334 into sequences of 12 ternary numbers 332.
- the ternary numbers 332 may be encoded using two bits.
- FIG. 4 includes a timing diagram 400 illustrating the signaling state of the shared bus 230 when transmitting a sequence of symbols according to certain aspects disclosed herein.
- both the SDA line 218 and the SCL line 216 are used to encode data.
- Raw symbol values 402 cause line driving circuits to drive each of the SDA line 218 and SCL line 216 to voltage levels determined by one bit of the current symbol value 402.
- FIG. 4 provides a table showing the four possible signaling states for symbols 422 when each of the SDA line 218 and SCL line 216 can be at one of two voltage levels.
- a data element having K bits may be encoded in a sequence of L symbols. The values of K and L may be determined based on encoding scheme, word size and configuration and other application parameters, including latency, etc.
- the timing diagram 400 illustrates an extract or snapshot of a symbol transmission sequence that includes 7 slots 404, where a symbol 406 may be transmitted in each of the slots 404.
- the 7 slots illustrated may be part of a larger symbol sequence such as a 12-symbol sequence that encodes a 16-bit word, or may include two or more sequences of symbols (e.g., 2, 3 ... or 6 symbol examples, for example).
- a transmitter 300 may be configured or adapted to ensure that the same symbol is not transmitted in any two consecutive slots in a sequence of slots 404. Accordingly, at least one of the SDA line 218 and SCL line 216 changes signaling state at each boundary between consecutive symbols. The toggling of either of the SDA line 218 and the SCL line 216 marks the beginning of a new symbol.
- FIG. 5 is a drawing illustrating one example of an encoding scheme 500 that may be used by the ternary -to-symbols encoder 304 to produce a sequence of symbols 314 with an embedded clock for transmission on the shared bus 230.
- the encoding scheme 500 may also be used by a symbols-to-ternary decoder 324 to extract ternary transition numbers from symbols received from the shared bus 230.
- the two wires of the shared bus 230 permit definition of 4 basic symbols S: ⁇ 0, 1, 2, 3 ⁇ . Any two consecutive symbols in the sequence of symbols 314, 334 have different states, and the symbol sequences 0,0, 1,1, 2,2 and 3,3 are invalid combinations of consecutive symbols. Accordingly, only 3 valid symbol transitions are available at each symbol boundary, where the symbol boundary is determined by the transmit clock and represents the point at which a first symbol (previous symbol Ps) 522 terminates and a second symbol (current symbol Cs) 524 begins.
- the three available transitions are assigned a transition number digit (T) 526 for each Ps symbol 522.
- the value of T 526 can be represented by a ternary number.
- the value of a transition number digit 526 may be determined by assigning a symbol-ordering circle 502 for the encoding scheme.
- the symbol-ordering circle 502 allocates locations 504a-504d on the circle 502 for the four possible symbols, and a direction of rotation 506 between the locations 504a-504d.
- the direction of rotation 506 is clockwise.
- the transition number digit 526 may represent the separation between the valid current symbols 524 and the immediately preceding symbol 522.
- Separation may be defined as the number of steps along the direction of rotation 506 on the symbol-ordering circle 502 required to reach the current symbol Cs 524 from the previous symbol 522.
- the number of steps can be expressed as a single digit base-3 number. It will be appreciated that a three-step difference between symbols can be represented as a 0 ase -3-
- the table 520 in FIG. 5 summarizes an encoding scheme employing this approach.
- the table 520 may be used to lookup a current symbol 524 to be transmitted, given knowledge of the previously generated symbol 522 and an input ternary number, which is used as a transition number digit 526.
- the table 520 may be used as a lookup to determine a transition number digit 526 that represents the transition between the previously received symbol 522 and the currently received symbol 524.
- a transition number 540 may be formed from a plurality of transition number digits 526, each digit 526 being usable to determine a next symbol given a current symbol.
- the transition number 540 is a ternary number that includes 12 ternary digits 526.
- a transition number 540 having N digits (Ts) 526 with r possible transitions for each T 526 has a total of r ⁇ states.
- Ts N digits
- r N digits
- a plurality of next-generation devices may coexist on the same shared bus 230 with one or more legacy I2C devices. Accordingly, the high data rate protocol defines signaling schemes that can be ignored, undetected or otherwise disregarded by legacy I2C devices.
- the SGbus devices may transmit control information in signaling that is consistent with I2C mode signaling, and may transmit the data payload encoded according to ternary coding-based protocols to obtain faster transmission speeds.
- the next-generation devices may use other encoding modes for transmitting the data payload, including legacy I2C modes.
- FIG. 6 is a timing diagram 600 illustrating an I2C one-byte write data operation.
- a transmission is initiated when a master node provides an I2C START condition 606 by driving the SDA line 218 low while the SCL line 216 remains high.
- An I2C master node sends a 7-bit slave ID 602 on the SDA line 218 to indicate which slave node on the I2C bus the master node wishes to access, followed by a Read/Write bit 612 that indicates whether the operation is a read or a write operation, whereby the Read/Write bit 612 is at logic 0 to indicate a write operation and at logic 1 to indicate a read operation.
- the master node transmits at least 8-bits on the SDA line 218, together with 8 clock pulses on the SCL line 216.
- the master node provides a STOP condition 616 to terminate the transaction by driving the SDA line 218 high while the SCL line 216 remains high.
- the I2C interface is considered to be in a "Bus-Busy” state after an I2C START condition 606 and in a "Bus-Free" state after an I2C STOP condition 616. This behavior may be exploited to transmit data in high data rate operating modes in order to prevent legacy I2C slave nodes from reacting to high data rate operations.
- High data rate communications may use the combination of the SCL line 216 and the
- SDA line 218 of an I2C bus in addition to one or more other available lines between devices for data transmission.
- Symbols may be encoded across the two-wire I2C bus and one or more other available lines.
- a symbol may be transmitted at a time corresponding to each toggle of a clock signal pulse 614 transmitted on the SCL line 216 for an I2C transmission.
- the number of clock toggles transmitted in each frame transmission period may therefore define the number of symbols that may be transmitted for each transmission period. In one example, the number of symbols transmitted in each frame transmission period may depend on the technique used to facilitate coexistence between legacy I2C devices and next-generation devices (i.e., devices that have a higher throughput than legacy I2C devices).
- the coexistence scheme may be based on the I2C "Bus-Busy” condition.
- the I2C bus is considered busy after an I2C START condition until the I2C STOP condition. After the STOP condition, the I2C bus switches back to a "Bus-Idle” or "Bus-Free” condition.
- unintentional I2C RESTART and STOP conditions are avoided. This means that no SDA transitions are allowed, for as long the SCL line (of the I2C bus) is HIGH.
- the high data rate protocol implements "dummy translations"; meaning after each symbol that has the SCL line (of the I2C bus) HIGH, there is a dummy symbol that has the SCL line LOW, not changing the SDA line logic state.
- dummy translations meaning after each symbol that has the SCL line (of the I2C bus) HIGH, there is a dummy symbol that has the SCL line LOW, not changing the SDA line logic state.
- the SCL line 216 and/or the SDA line 218 of an I2C bus may be utilized for data transmission in high data rate mode when a clock signal has been embedded within symbol transitions. Consequently, the SDA line 218 and SCL line 216 can be used to transmit any arbitrary 12 symbols without affecting legacy I2C slave node functionality and without using a bridge device to segregate legacy I2C slave nodes from the high data rate-capable nodes.
- a START condition 606 may be provided only by an I2C master.
- a START condition 606 is provided by whichever node is going to transmit a 12-symbol word.
- the high data rate protocol illustrated in FIGS. 2-6 reuses an existing two-wire bus encode symbols across the two wires and embed a clock within symbol transitions.
- This concept may be expanded to additional wires/lines to further improve data throughput.
- additional wires that may be used for interrupts between I2C devices may be repurposed for data transmissions by the high data rate protocol. Consequently, in addition to the two-wire bus, one or more additional wires/lines may be used during high data rate mode/protocol to increase throughput.
- Symbols may be encoded across the three or more lines in other high data rate modes/protocols when additional lines are available, in a manner that is similar to the symbol encoding illustrated in FIGS. 3-5.
- FIG. 7 illustrates a system 700 having a configuration of devices 704, 706, 708, 710,
- I3C devices 704, 712, 714 and 716 connected to a serial bus 702, whereby I3C devices 704, 712, 714 and 716 may be adapted or configured to obtain higher data transfer rates over the serial bus 702 using I3C protocols.
- the I3C devices 704, 712, 714 and 716 may coexist with conventionally configured I2C devices 706, 708, and 710.
- the I3C devices 704, 712, 714 and 716 may alternatively or additionally communicate using conventional I2C protocols, as desired or needed.
- the serial bus 702 may be operated at higher data transfer rates when a master device
- a single master device 704 may serve as a bus master in I2C mode and in an I3C mode that supports a data transfer rate that exceeds the data transfer rate achieved when the serial bus 702 is operated according to a conventional I2C protocol.
- the signaling used for higher data-rate traffic may take advantage of certain features of I2C protocols such that the higher data-rate traffic can be carried over the serial bus 702 without compromising the functionality of legacy I2C devices 706, 708, 710 and 712 coupled to the serial bus 702.
- FIG. 8 illustrates aspects related to the operation of a serial bus in accordance with I3C
- the timing diagram 800 illustrates signaling on a serial bus when the serial bus is operated in one SDR mode of operation defined by I3C specifications.
- Data transmitted on a first wire (the SDA wire 802) of the serial bus may be captured using a clock signal transmitted on a second wire (the SCL wire 804) of the serial bus.
- the signaling state 812 of the SDA wire 802 is expected to remain constant for the duration of the pulses 814 when the SCL wire 804 is at a high voltage level. Transitions on the SDA wire 802 when the SCL wire 804 is at the high voltage level indicate a START condition 806, a STOP condition 808 or a repeated START 810.
- a START condition 806 is defined to permit the current bus master to signal that data is to be transmitted.
- the START condition 806 occurs when the SDA wire 802 transitions from high to low while the SCL wire 804 is high.
- the bus master may signal completion and/or termination of a transmission using a STOP condition 808.
- the STOP condition 808 is indicated when the SDA wire 802 transitions from low to high while the SCL wire 804 is high.
- a repeated START 810 may be transmitted by a bus master that wishes to initiate a second transmission upon completion of a first transmission.
- the repeated START 810 is transmitted instead of, and has the significance of a STOP condition 808 followed immediately by a START condition 806.
- the repeated START 810 occurs when the SDA wire 802 transitions from high to low while the SCL wire 804 is high.
- the bus master may transmit an initiator 822 that may be a START condition 806 or a repeated START 810 prior to transmitting an address of a slave, a command, and/or data.
- FIG. 8 illustrates a command code transmission 820 by the bus master.
- the initiator 822 may be followed in transmission by a predefined command 824 indicating that a command code 826 is to follow.
- the command code 826 may, for example, cause the serial bus to transition to a desired mode of operation.
- data 828 may be transmitted.
- the command code transmission 820 may be followed by a terminator 830 that may be a STOP condition 808 or a repeated START 810.
- FIG. 9 is a timing diagram 900 that illustrates an example of a transmission in an I3C HDR-DDR mode, in which data transmitted on the SDA wire 904 is synchronized to a clock signal transmitted on the SCL wire 902.
- the clock signal includes pulses 920 that are defined by a rising edge 916 and a falling edge.
- a master device transmits the clock signal on the SCL wire 902, regardless of the direction of flow of data over the serial bus.
- a transmitter outputs one bit of data at each edge 916, 918 of the clock signal.
- a receiver captures one bit of data based on the timing of each edge 916, 918 of the clock signal.
- a word generally includes 16 pay load bits, organized as two 8-bit bytes 910, 912, preceded by two preamble bits 906, 908 and followed by two parity bits 914, for a total of 20 bits that are transferred on the edges of 10 clock pulses.
- the integrity of the transmission may be protected by the transmission of the parity bits 914.
- the physical SDA wire 904 is driven actively by the sender of the data, and the receiver has no ability to send a request in a signal on the SDA wire 904 to cease or suspend transmissions.
- a request to cease or suspend transmission may be desirable to implement a flow-control capability for the serial link. Absent the availability of flow-control, the receiver must absorb all transmitted data, irrespective of the ability of the receiver to process, store or forward the data. In some instances, flow- control techniques may be useful or desirable when memory space of the receiver has been exhausted, the transfer delivers data too quickly, or the receiver is busy or burdened handling other tasks, etc.
- the I3C HDR-DDR protocol may support flow-control for read procedures, where a slave device is transferring data to a bus master device. Flow-control for a read procedure enables the master device to terminate a read transaction.
- devices coupled to a serial bus may be adapted to provide flow-control for I3C HDR-DDR write procedures, where the master device or a peer slave device is transmitting data to the slave device. Flow-control procedures implemented for I3C HDR-DDR write procedures enables a slave device to signal a request to the master device to terminate a write transaction.
- a slave device may request the master device to terminate a write transaction by manipulating one or more preamble bits 906, 908.
- a master device may assume control of the serial bus and terminate the current transaction in response to the request to terminate write transaction.
- the sender can either continue the data transfer. Termination or continuation of a transaction may depend on the type of transaction.
- a master device may initiate termination of a transaction by transmitting a HDR Restart or EXIT pattern.
- FIG. 10 includes an example of signaling 1020 that illustrates decoding of one HDR mode transmission in accordance with certain I3C protocols.
- Ternary digits 1022 are generated based each transition between signaling states of the SDA wire 402 and the SCL wire 404.
- the table 1026 illustrates one method of assigning ternary values to a transition in signaling state of the SDA wire 402 and the SCL wire 404. For example, a binary number representing the transition may have its least significant bit set to '0' when a change in signaling state was observed on the SDA wire 402 and set to T when no change in signaling state was observed on the SDA wire 402.
- the most significant bit of the binary number may be set to '0' when a change in signaling state was observed on the SCL wire 404and set to T when no change in signaling state was observed on the SCL wire 404. Since a transition must occur on at least one wire 402 or 404, the binary number is not set to ⁇ and the resultant 2-bit binary number represents a ternary value. When all 12 symbols have been received, each pair of digits in the 12-bit binary number may be transcoded to obtain an 18-bit data word 1024.
- One example of dynamically configuring a two-wire bus and one or more additional lines as a high data rate bus may be implemented for sensor devices and may be referred to herein as a "sensor global bus" (SGbus).
- the SGbus may be implemented using one or more I3C protocols and/or modes of operation.
- the SGbus may be implemented using I3C SDR and HDR modes, including an I3C HDR DDR mode that uses a clock signal and 13 C HDR modes that employ custom or proprietary symbol encoding with embedded clock information.
- an I3C HDR mode may employ symbol encoding using 3 wires/lines may be based on septenary numbers (base 7 numbers).
- symbol coding using 4 wires/lines may be based on pentadecimal numbers (base 15 numbers). Different number bases may be used for more than 4 wires/lines.
- FIG. 11 illustrates a configuration in which a shared bus 1102 (e.g., I2C bus / SGbus) couples I2C devices 1104i-1104 k , 1106 and SGbus devices 1112, 1114i-1114 n and 1116i-1116 m .
- the SGbus devices 1112, 1114i-1114 n and 1116i-1116 m may coexist with conventionally configured I2C devices 1104i-1104 k , 1106, and certain of the SGbus devices 1112, 1114i-l 114 n and 1116i-l 116 m may communicate using conventional I2C protocols, as desired or needed.
- the shared bus 1102 may be a two-wire bus that may operate according to multiple modes, e.g., an I2C mode and an HDR mode.
- an HDR mode symbol coding is implemented across the two-wire bus and one or more repurposed additional wires/lines 1118.
- data may be transmitted two or more wires of a combined bus that includes the two-wire bus and one or more repurposed additional wires/lines 1118, while another wire of the combined bus is used to carry a clock signal.
- the combined bus may also include a wire used for communicating control, error detection or data integrity information.
- 13 C HDR modes may coexist with the I2C mode over the shared bus such that legacy devices (e.g., I2C-compatible devices) and next-generation devices (e.g., SGbus-compatible devices) can share the shared bus 1102.
- legacy devices e.g., I2C-compatible devices
- next-generation devices e.g., SGbus-compatible devices
- Data transfer on the shared bus 1102, including configuration and other bus control messages, may be initiated and performed using modified versions of an I2C protocol or a variant of the I2C protocol. In one example, all transactions may be initiated using conventional I2C protocols to start the transaction.
- FIG. 12 illustrates a transaction 1200 on the shared bus 1102, in terms of bits and symbols 1202 provided to encoding logic and resultant signaling 1204 on the shared bus 1102 when operated according to certain aspects of the SGbus protocols described herein.
- the bus 1102 may be in a "Bus-Free" state 1222, and control signaling 1206 is handled in accordance with I2C protocols.
- an SGbus data exchange 1208 may occur, during which a data payload 1210 is transmitted to the SGbus master device 1112.
- An exit sequence 1212 provides a transition from signaling (including data payload 1210) according to SGbus protocols to signaling recognized as a STOP condition 1220 consistent with I2C protocols.
- a Bus-Free state 1222 may then result.
- a transaction 1200 on the shared bus 1102 may be initiated by an I2C START condition 1214 (see also START condition 606 of FIG. 6) that precedes an address 1216 (see I2C slave ID 602, for example) followed by a succession of command codes 1218.
- the command codes 1218 may have a variable length that may include a number of bytes predefined by a communication protocol used for the SGbus 1102.
- a command code 1218 may be transmitted to define a selected data transfer protocol and/or certain characteristics of the data transfer protocol.
- the command code 1218 may identify one of a plurality of available data transfer protocols to be used for subsequent data transfers.
- the identified data transfer protocol may control transactions until a different data transfer protocol command is inserted on the bus.
- a Bus-Free state 1222 may be defined as occurring when the SCL line 216 and SDA line 218 are in a logic high state for a predetermined period of time.
- the busy/free status of the bus 1102 is defined by START conditions 606, 1214 and STOP conditions 616, 1220.
- the Bus-Free state 1222 has a duration that includes the period of time after a STOP condition 616, 1220, during which the SCL line 216 and SDA line 218 are in a logic high state, regardless of whether data is transferred using SGbus or I2C-compatible protocols.
- the period of time during which the SCL line 216 and SDA line 218 are in a logic high state may be set to be double the period of the slowest clock used on the bus 1102.
- the clock signal transmitted on the SCL line 216 has a frequency of at least 400kHz, with a clock period of 2.5 and a 5 period may suffice to indicate the Bus-Free state 1222.
- the shared bus 1102 may support a legacy I2C devices, such as master device 1106, legacy I2C slave devices 1104i-1104 k , and next-generation devices, such as a primary SGbus master device 1112, SGbus slave devices 1114i-l 114 n and SGbus secondary master devices 1116i-1116 m .
- the primary SGbus master device 1112 may be preconfigured with certain operational information related to the legacy I2C devices 1106, 1104i-1104 k resident on the bus 1102.
- the primary SGbus master device 1112 may include non-volatile memory in which operational and other information may be preconfigured and/or updated in response to communications received from an application host device.
- legacy I2C devices may use a first wire of the two-wire shared bus 1102 for serial data transmission and a second wire of the two-wire bus 1102 for a clock signal.
- next-generation devices e.g., SGbus devices
- symbols may be encoded across the two wires/lines using a ternary number (base 3 numbers). Where three wires/lines are used, symbols may be encoded across the three wires/lines using a septenary number (base 7 numbers). Where four wires/lines are used, symbols may be encoded across the four wires/lines using a pentadecimal number (base 15 numbers). As more wires/lines are used for symbol transmissions, numbers of other or higher bases may be utilized for symbol encoding.
- 1114i-l 114 n may be configured to internally generate a random address.
- the SGbus slave devices 1114i-1114 n , 1116i-1116 m may be capable of generating an interrupt or causing an interrupt to occur using a reserved address, such that an SGbus master device 1112, 1116i-1116 m may recognize the existence of one or more SGbus slave devices 1114i-l 114 n , 1116i-l 116 m that do not have local addresses assigned.
- the SGbus master device 1112, 1116 1 -1116 m may perform a configuration process using random addresses to distinguish between the SGbus slave devices 1114i-1114 n , 1116 1 -1116 m that do not have local addresses assigned, where the configuration process involves assigning local addresses to SGbus slave devices 1114i-1114 n , 1116i-1116 m .
- the random addresses may be formed using a number large enough to significantly decrease the probability that two SGbus slave devices 1114i-l 114 n , 1116i-l 116 m resident on the bus 1102 would generate the same random address for any given configuration process.
- SGbus slave devices 1114i-1114 n , 1116 1 -1116 m may receive the same local address from the SGbus master device 1112, 1116 1 -1116 m , and the resulting conflicts may require reassignment of local addresses by reconfiguration using new random addresses.
- SGbus slave devices 1114i-1114 n , 1116 1 -1116 m may generate a 48-bit pseudo-random number to serve as the random address used during configuration. Other bit-widths for the pseudorandom number may be used in some instances. A number of suitable width may be employed to minimize the possibility of the apparition of the same random address on two SGbus slave devices 1114i-1114 n , 1116 1 -1116 m .
- the primary SGbus master device 1112 may transmit a "general call" code followed by a Dynamic Address Allocation command code.
- the primary SGbus master device 1112 may then drive a clock signal on the SCL line 216 of the bus 1102 while releasing the SDA line 218, which may be pulled to a logic high level.
- An arbitration process follows, whereby the SGbus devices 1114i-1114 n , 1116 1 -1116 m drive the SDA line 218 in accordance with their corresponding randomly -selected 48-bit address.
- the primary SGbus master device 1112 continues to drive a clock signal on the SCL line 216 with the SDA line 218 released.
- the winning device from among the SGbus devices 1114i-1114 n , 1116 1 -1116 m may then transfer one or more characteristic byte.
- the characteristic byte includes information identifying certain characteristics of the winning device, including whether the device functions as a slave device only, type of device (e.g. accelerometer), data width (e.g. 16 or 12 bits wide), and other characteristics.
- the primary SGbus master device 1112 may transfer a 7-bit wide local address for the winning device. This address incorporates the priority level that the primary SGbus master device 1112 assigns to the identified device. The primary SGbus master device 1112 may repeat this procedure until it receives no response from a device seeking address arbitration. The primary SGbus master device 1112 may terminate the arbitration procedure by sending a specific command code that terminates the Dynamic Address Allocation command code that enabled entry into the procedure.
- a secondary SGbus master device 1116i-1116 m connected to the shared bus 1102 may monitor the arbitration process and capture the information exchange during the process, such that the secondary SGbus master device 1116i-1116 m has a copy of the addressing, priority and configuration information for the bus 1102. Nevertheless, the primary SGbus master device 1112 may transfer information received from the SGbus slave devices 1114i-l 114 n to the secondary SGbus master device 1116i-l 116 m .
- Each of the SGbus devices 1114i-1114 n , 11161-1116 m may have one or more retaining registers that may be used for storing dynamic addresses, such that the SGbus configuration shall take place only after a cold power-up. If two SGbus devices 11 Mil l 14 n and/or 11161-1116 m select the same random 48-bit address, and have the same characteristic byte, the two devices may store the same local address. The double assignment may remain in effect until the SGbus master device 1112 requires a data transfer and the data transmitted concurrently by the two different two SGbus slave devices 1114i-l 114 n is different.
- At least one of the two SGbus slave devices 11 Mil l 14 n may recognize that it has the same address as another SGbus slave device 11 Mil l 14 n connected to the bus 1102 and may drop off the bus 1102.
- the dropped-off SGbus slave device 1114i-1114 n may request a new local address, using the dedicated control code for this requirement.
- Each of the SGbus devices 1114i-1114 n and/or 11161-1116 m is assigned a priority ranking by the primary SGbus master device 1112.
- the priority rank is defined by the SGbus master device 1112 using the level of the dynamically allocated local address, whereby lower address values have higher priority ranks.
- Each of the SGbus devices 1114i-1114 n , 11161-1116 m can assert an in-band Interrupt
- IRQ IRQ Request
- an SGbus slave device 1114i-1114 n can assert an in-band IRQ by pulling the SDA line 218 to a logic low signaling state.
- the primary SGbus master device 1112 may start driving a clock signal on the SCL line 216, while leaving the SDA line 218 undriven.
- the SDA line 218 may be pulled toward the logic high signaling state.
- the SGbus slave device 1114i-l 114 n may drive the SDA line 218 in order to transmit its own address.
- the primary SGbus master device 1112 acknowledges the IRQ, and then performs a REPEATED START using the address received from the SGbus slave device 1114i-1114 n .
- a REPEATED START condition 1328 (see FIG.
- Devices 1114i-1114 n , 1116i-1116 m and/or 1104i-1104 k may monitor the bus for their respective addresses after detecting a REPEATED START condition 1328.
- the primary SGbus master device 1112 may optionally configure the data transfer mode using the Data Transfer Protocol byte when, for example, the previously defined mode is different from a presently desired or required mode.
- the primary SGbus master device 1112 and the interrupting SGbus slave device 1114i-l 114 n may then commence communicating. Bus contention takes place during address evaluation, and any additional SGbus devices 1114i-1114 n , 1116i-1116 m and/or any legacy I2C devices 1104i- 1104 k trying to win the bus at the same time will lose the arbitration and may retry on the next Bus-Free state 1222.
- secondary SGbus master device 1116i-1116 m can assert an in-band
- IRQ using a procedure that is similar to that for SGbus slave devices 1114i-1114 n .
- the primary SGbus master device 1112 recognizes that the IRQ is asserted by a secondary SGbus master device 1116i-1116 m , the primary SGbus master device 1112 releases the SCL line 216 and the secondary SGbus master device 1116i-1116 m performs an immediate REPEATED START condition 1328 in order to address a target device for communication.
- a legacy I2C Master device 1106 may assert an IRQ in a procedure that is similar to that described for secondary SGbus master devices 1116i-1116 m .
- the legacy I2C Master device 1106 is typically unaware when it is competing with an SGbus master device 1112, since the SGbus master device 1112 has an equivalent higher address (e.g., I l l 1111) and would lose the arbitration.
- a primary SGbus master device 1112 that starts a communication transaction evaluates the address arbitration procedure, during an address call. Any SGbus slave device 1114i-l 114 n , secondary SGbus master device 1116i-l 116 m or legacy I2C Master device 1106 that attempts to interrupt the primary SGbus master device 1112 is typically successful. However, any device that has a lower priority rank may have to wait for the next Bus-Free state 1222.
- a legacy I2C master device 1106 there may be a competition between a legacy I2C master device 1106 and an SGbus slave device 1114i-1114 n .
- the primary SGbus master device 1112 starts the clock signal on the SCL line 216 when it sees a START condition (SDA line 218 low). Accordingly, an SGbus slave device 1114i-1114 n that has a higher priority rank presumptively wins the arbitration process.
- the primary SGbus master device 1112 is aware of the outcome of the arbitration process, including the winning address.
- an SGbus may be a multi-master bus in which one or more SGbus master devices 1112, 1116i-1116 m and a legacy I2C master device 1106 provide bus control and management functions for corresponding slave devices.
- Certain multi-master arbitration and bus control procedures employed in an SGbus may follow a global rule such as is as described for IRQ procedures. Accordingly, I2C rules may apply when a legacy I2C master device 1106 competes with one or more SGbus secondary master devices 1116i-l 116 m .
- an SGbus secondary master device 11161-1116 m acquires control of the bus 1102 to perform a transaction
- the SGbus secondary master device 11161-1116 m maintains control of the bus 1102 only for as long as is required to perform the transaction.
- a STOP condition causes the bus control to revert back to the primary SGbus master device 1112.
- a legacy I2C Master device 1106 generally transfers data to legacy I2C slave devices
- Communications between a legacy I2C Master device 1106 and SGbus devices 1114i-1114 n , 11161-1116 m may be managed at the system level.
- the primary SGbus master device 1112 may inform the legacy I2C Master device 1106 of the presence of the SGbus slave devices 1114i-1114 n .
- the primary SGbus master device 1112 may provide information regarding local addresses and characteristics of the SGbus slave devices 1114i-1114 n . Any resultant communication between the legacy I2C Master device 1106 and the SGbus slave devices 1114i-l 114 n may be consistent with I2C protocols.
- an SGbus may support a hot-plug capability in which an SGbus device 1112, 1114i-1114 n , or 11161-1116 m may be inserted into a bus 1102 that has already been dynamically configured and is operational.
- a hot-plugged SGbus device 1112, 1114i-1114 n , or 1116i-1116 m powers up on the bus and assumes a condition similar to a cold power-up, and the hot-plugged SGbus device 1112, 1114i-1114 n , or 1116i-1116 m does not initially have an assigned local address.
- a device 1112, 1114i-1114 n , or 1116i-1116 m that does not have an assigned local address may perform an IRQ using a predefined byte as an indicator that it needs a local address.
- the primary SGbus master device 1112 may perform a dynamic address allocation procedure, such as is described herein.
- one condition for switching modes into a different number of active wires/lines may be the physical number of wires/lines supported by the added SGbus device (e.g., traffic to that device may be limited to its supported number of wires/lines), the traffic loading imposed by the new SGbus device, or the power consumption target for bus operation involving the added SGbus device.
- an SGbus may support a plurality of data transfer protocols, including I2C protocols, CCI protocols and variants thereof.
- the encoding scheme may be selected or tailored to provide efficient, reliable and/or low- latency data transfer for a given number of lines, wires or other connectors.
- an HDR protocol based on septenary coding (7-base numbers) may be used to provide a data transport on the SGbus when the SGbus has 3 lines, wires or other connectors.
- the HDR protocol may be based on pentadecimal coding (15-base numbers) when the SGbus has 4 lines, wires or other connectors.
- Other HDR protocols may be employed including, for example, a unitrigesimal coding (31- base numbers) may be employed when the SGbus has 5 lines, wires or other connectors, and so on.
- a shared bus may be configured to support communications on a two-line shared bus
- a 4-line SGbus configured for septenary and/or pentadecimal coding-based communications and I2C communications may be performed on the two-line shared bus 1102, such that in a first time interval, data may be transmitted using septenary and/or pentadecimal encoding and other data may be transmitted in a different time interval according to I2C signaling conventions.
- a 5-line SGbus configured for septenary, pentadecimal, and/or unitrigesimal coding-based communications and I2C communications may be performed on the two-wire shared bus 1102, such that in a first time interval, data may be transmitted using septenary, pentadecimal, and/or unitrigesimal encoding and other data may be transmitted in a different time interval according to I2C signaling conventions.
- the SGbus may employ physical layer protocols that ensure that septenary (base-7), pentadecimal (base-15), and/or septenary, pentadecimal, unitrigesimal, and/or other coded SGbus transmissions do not violate I2C protocols.
- FIG. 13 includes timing diagrams 1300 and 1320 that illustrate timing associated with multiple data transmissions on an I2C bus.
- the period of time (the idle period 1314) that elapses between a STOP condition 1308 and a consecutive START condition 1310 may be prolonged, causing the conventional I2C bus to be idle during the idle period 1314.
- a busy period 1312 commences when the I2C bus master transmits a first START condition 1306, followed by data.
- the busy period 1312 ends when the I2C bus master transmits a STOP condition 1308 and an idle period 1314 ensues.
- the idle period 1314 ends with transmission of a second START condition 1310.
- the idle periods 1314 between successive data transmissions on the I2C bus may be reduced in number or eliminated by transmitting a REPEATED START condition (Sr) 1328 rather than a STOP condition 1308.
- the REPEATED START condition 1328 terminates the preceding data transmission and simultaneously indicates the commencement of a next data transmission.
- the state transition on the SDA line/wire 1322 is identical for a START condition 1326 occurring after an idle period 1330 and the REPEATED START condition 1328. Specifically, the SDA line/wire 1322 transitions from high to low while the SCL line/wire 1324 is high.
- a REPEATED START condition 1328 is used between data transmissions, a first busy period 1332 is immediately followed by a second busy period 1334.
- the data transfer segment can use any I2C or high data rate (e.g., HDR mode) protocol (e.g., ternary-based coding protocol for two wires/lines, septenary-based coding for three wires/lines, pentadecimal-based coding for four wires/lines, etc.) or variants thereof.
- the type of data transfer protocol to be used may be indicated by the SGbus master device 1112, or 1116i-1116 m , at the start of communication with an SGbus slave device 1114i-1114 n .
- each SGbus slave device 1114i-l 114 n remains in effect until changed by the SGbus master device 1112, or 1116i-1116 m .
- the primary SGbus master device 1112 may configure any devices that can communicate in both I2C and high data rate modes (e.g., ternary coding mode, septenary coding mode, pentadecimal coding mode, etc.) to use the I2C mode as a default mode.
- An exit from data transfer may be effected by inserting a STOP condition 1308 on the bus 1102, in which case the bus 1102 may enter a Bus-Free state 1222.
- Certain sequences of symbols transmitted in a transaction on the bus 1102 may produce signaling states that may be identified as a STOP condition 1228, 1308 or REPEATED START condition 1328 by detection logic of one or more devices 1104i-1104 n , 1114i- 1114 n , 1116i-l 116 m that are not participants in the transaction.
- FIG. 14 illustrates the occurrence of unintended START conditions 1406, 1408 and
- STOP conditions 1410, 1412 which may arise during normal data exchange, after a valid START condition 1402 and before a valid STOP condition (not shown) or REPEATED START condition 1404.
- an unintended START condition 1406 may occur when the SCL line 216 is maintained in a high signaling state across two symbols while the SDA line 218 changes from a high signaling state to a low signaling state at the transition between the two symbols.
- an unintended START condition 1408 may occur during a metastable period when the SDA line 218 changes from a high signaling state to a low signaling state at the transition between the two symbols while the SCL line 216 is in transition.
- an unintended STOP condition 1410 may occur when the SCL line 216 is maintained in a high signaling state across two symbols while the SDA line 218 changes from a low signaling state to a high signaling state at the transition between the two symbols.
- an unintended STOP condition 1412 may occur during a metastable period when the SDA line 218 changes from a low signaling state to a high signaling state at the transition between the two symbols while the SCL line 216 is in transition.
- These unintended START conditions 1406, 1408 and STOP conditions 1410, 1412 are unwanted, and may be avoided by configuring the encoder to identify sequences of symbols that may cause the unintended START conditions 1406, 1408 and STOP conditions 1410, 1412.
- the encoder may modify the stream of transmitted symbols to avoid generating the unintended START conditions 1406, 1408 and STOP conditions 1410, 1412.
- the coding protocol may provide a binary "00" dummy symbol insertion after any binary "01" symbol in order to avoid unintended STOP conditions 1412 while in data transfer mode.
- the coding protocol may provide a binary "10" dummy symbol insertion after any occurrence of a binary "11" symbol to avoid unintended START conditions 1406, 1408, which may cause a legacy I2C device to check for its address after a false START (or REPEATED START) condition 1406, 1408.
- a false START or REPEATED START
- the legacy I2C device may respond to a false START condition 1406, 1408 if it finds an address match and thereby adversely affect active drivers configured for SGbus operation.
- frame synchronization may be performed based on a count of the symbols transmitted on the bus 1102, commencing with the first symbol sent after the entry point into data transfer mode.
- REPEATED START condition 1328 there is no need for REPEATED START condition 1328 to be sent ahead of each sequence of 12 symbols or sequence of 20 symbols in the frame. The absence of the REPEATED START condition 1328 may increase data throughput.
- LSBs last three least significant bits
- a single error can be detected by checking the last three LSB of the binary decoded number.
- the single error may relate to a symbol error on any 12-symbol word, where no two consecutive symbols are identical.
- Symbols may be encoded as binary numbers [SDA:SCL], where the bit corresponding to signaling state of the SDA line 218 is in the most significant bit (MSB) position.
- MSB most significant bit
- One symbol error may be the result of an error in the sampled signaling state of one or both the SDA line 218 or the SCL line 216.
- a similar approach may be used for symbol coding using a different number base (septenary-based coding, pentadecimal-based coding, etc.) by checking n LSB.
- FIG. 15 illustrates symbol transitioning for a two-wire symbol coding (e.g., ternary- based number coding) that may be employed for certain types of protocol. It is contemplated that certain concepts associated with symbol transitioning may be expanded to include m-wires in the case of SGbus for example (e.g., septenary-based number coding for 3 wires/lines, pentadecimal-based number coding for 4 wires/lines, etc.).
- the transition numbers 1524 generated by an encoder e.g. the transcoder 302 of the transmitter 300
- a displacement across the circle 502 i.e., 2 steps clockwise or counterclockwise
- N wires W1... WN
- N > 3 for three or more wires
- encoding may be characterized by the transition number formula:
- error correction may be provided for
- the binary string of information may be transformed into an equal numerical value, coded as a base 3 (ternary) number. As such, fewer characters need to be transmitted between the nodes for the same information.
- the transformed ternary numbers are a polynomial sum, where the factors are the power of 3 and the coefficients are [0, 1, 2].
- T k ternary coefficients, e [0, 1, 2].
- formula (2) In order for the last bits of the LSB to be left unchanged by the error, formula (2) must be a multiple of the power of 2.
- the first rank of power of 2 that is not an integer multiple denotes how many LSB end bits must be known in advance so that one symbol error shall be identified.
- the factor 3 ⁇ ⁇ _1 ⁇ is a multiple of 3 and it will change the LSB bits, if unaltered.
- any known three bits at the LSB end will detect any one single symbol error.
- 3'b000 may be used, although any other three known bits may play the same role.
- 3'bxxx refers to a binary number that is 3 bits long.
- Any error in the SDA line 218, or the SCL line 216 may be detected by the last three bits.
- a supplementary error check can be based on the mandatory translation from symbol 2'b01 to 2'b00, or the mandatory translation from symbol 2'bl l to 2'blO, as necessary to avoid the false identification of a STOP condition 1308 or REPEATED START condition 1328 while data transfer is in progress.
- 4 symbols may be inserted, of which the last two may be 2'b01 followed by 2'bl 1, in order to produce a STOP condition 1228, 1308.
- the two coding styles may produce different symbols, although the decoded ternary coefficients are the same in both cases.
- the SGbus avoids the unintended (and unwanted) STOP conditions 1308 and REPEATED START conditions 1328 (i.e. the 2'b01 to 2'bl l transition, or the 2'bl l to 2'blO translation) on the bus 1102. For some data streams then, SGbus adds symbols to the transmission, thereby decreasing the data throughput.
- the timing diagram 1600 of FIG. 16 illustrates a sequence of transmitter ternary (Tx) transition numbers 1602 provided by a transcoder 302 of a transmitter 300 to a ternary-to-symbols encoder 304 (see FIG. 3).
- the converter produces a stream of symbols 1604 for transmission over the serial bus 230 to a receiver 320.
- a symbols-to-ternary decoder 324 of the receiver 320 produces receiver (Rx) transition numbers 1606.
- Rx receiver
- the timing diagram 1620 of FIG. 16 illustrates transmission of a first SGbus data frame, whereby a sequence of transmitter (Tx) ternary numbers 1622 provided by the transcoder 302 to the ternary-to-symbols encoder 304 (see FIG. 3).
- the ternary-to-symbols encoder 304 produces a stream of symbols 1624 that includes inserted additional symbols 1630.
- a symbols-to-ternary decoder 324 of the receiver 320 produces receiver (Rx) transition numbers 1626.
- the decoder 324 produces ternary Rx transition numbers 1626 that include additional numbers 1632 that are extracted by the transcoder 322.
- FIG. 17 includes third and fourth examples in the timing diagram examples 1700 and
- the ternary-to-symbols encoder 304 produces a stream of symbols 1704, 1724 that includes inserted additional symbols 1710 and 1730.
- a symbols-to- ternary decoder 324 of the receiver 320 produces receiver (Rx) transition numbers 1706, 1726.
- the symbols-to-ternary decoder 324 produces ternary Rx transition numbers 1706, 1726 that include additional ternary numbers 1712 and 1732 that are extracted by the transcoder 322.
- a 20-symbol modified ternary symbol encoded data transfer mode may be used, with a REPEATED START condition 1328 inserted before each 20-symbol frame.
- this mode no dummy translation is inserted, and no legacy I2C masters can be connected to the bus 1102.
- only legacy I2C devices are on the bus 1102 and primary master device controls the bus in I2C mode, with all data transfers using I2C modes, as per the capability of the bus.
- the SGbus can be implemented using a high-speed serial interface bus that may provide multi-drop and multi-master capabilities, using two wires.
- a conventional clock signal is not required and symbols transmitted using both wires are encoded within data.
- Clock information is embedded in a stream of symbols by ensuring a transition in signaling state of at least one of the two signal wires between each pair of consecutive symbols.
- An SGbus protocol may use command codes.
- An in-band interrupt capability is provided, and asynchronous hot-plug with low latency is supported.
- SGbus devices can co-exists on the same bus as I2C devices, obeying the same restrictions that apply to legacy I2C devices that might be connected to the same physical bus.
- the SGbus communicates using a container architecture, whereby data transfer is encapsulated between bus management elements.
- Data may be transferred using one of a plurality of protocols, as required or preferred by client devices connected to the bus.
- data may be transferred using symbol coding protocols (e.g., septenary number based for 3 wires/lines, pentadecimal number based for 4 wires/lines, etc.) and, in another example, data may be transferred according to I2C compliant protocols (e.g., over two wires/lines where one wire/line is used for a clock and the other wire/line is used for serial data transmissions).
- Data payload is typically carried using symbol coding protocols (e.g., ternary-based coding for 2 wires/lines, septenary-based number for 3 wires/lines, pentadecimal-based number for 4 wires/lines, etc.), although legacy I2C slaves may be addressed and payloads transported in corresponding I2C mode protocols.
- symbol coding protocols e.g., ternary-based coding for 2 wires/lines, septenary-based number for 3 wires/lines, pentadecimal-based number for 4 wires/lines, etc.
- Bus management functions associated with the SGbus protocol may include bus arbitration, in-band interrupt, hot-plug, multi-master, entry and exit into data transfer modes.
- An SGbus master device may have a dynamic address assignment capability.
- the SGbus master may include a clock generator used for in-band interrupts, a register based memory for retaining the addresses and characteristics of devices connected to the bus.
- the SGbus master device may communicate using either I2C or HDR data transfer protocols (e.g., using ternary-based symbol coding, septenary-based symbol coding, pentadecimal based symbol coding, etc.).
- An SGbus slave may be dynamically addressable, and may be able to request and receive its address for the bus on which it is connected.
- the SGbus slave device supports at least high data rate protocols (e.g., using ternary-based symbol coding, septenary-based symbol coding, pentadecimal based symbol coding, etc.) and, in some examples, an SGbus slave device may be capable of communicating using legacy I2C protocols.
- the SGbus supports HDR transfer protocol, including a data transfer protocol that adopts a n-based symbol coding (e.g., where n is 3, 7, 15, etc.), which can provide an optimized (least amount of energy per byte) during transmission.
- An in-band IRQ procedure may be supported and minimal latency restrictions (typically ⁇ ) may be imposed. Increased efficiency may be obtained because there is no need for a heartbeat- type signal.
- Asynchronous, hot-plug capability may be provided.
- Dynamic addressing reduces or eliminates dependency on global addressing entities. Dynamic addressing employs random address generators, thereby easing manufacturing overhead.
- Certain implementations of the SGbus can fully co-exist with all legacy I2C devices.
- the presence of certain low-speed and ultra-low-cost legacy I2C devices may prevent the use of legacy I2C masters.
- Legacy I2C devices need not evaluate their address match on the line for every symbol coded frame.
- enhanced capability and speed increases may be obtained by the addition of one or more supplementary lines, enabling a change in the coding base to higher numbers.
- supplementary lines For example, in addition to a two-wire bus, many I2C legacy systems use one or more dedicated interrupt lines between a master device and one or more slave devices. These dedicated interrupt lines may be repurposed (along with the two-wire bus) when the master device switches from a predefined base protocol (e.g., I2C) to a second protocol in which data symbols are encoded across the two-wire bus and one or more dedicated interrupt lines.
- I2C predefined base protocol
- the second protocol is able to transmit 8 symbols over 3 wires (as compared to only 4 symbols over 2 wires), thus allowing for coding in base 7.
- connectors or wires may be available for timeshared communication between SGbus devices 1802, 1804, 1806, and/or 1808, which may be referred to as multi-wire (Mwire) devices 1802, 1804, 1806, and/or 1808.
- Mwire multi-wire
- connector wire
- line may be interchangeably used herein to refer to an electrically conductive path. In some instances, a “connector”, “wire”, and “line” may apply to an optically conductive path.
- additional connectors or wires 1812, 1814, and/or 1816 may be employed to couple an Mwire master device 1802 to one or more Mwire slave devices 1804, 1806, and/or 1808 separately from the SGbus 1810.
- one Mwire slave device 1808 may be connected to the Mwire master device 1802 using a single, dedicated additional connector or wire 1812.
- one Mwire slave device 1804 may be connected to the Mwire master device 1802 using a single, shared additional connector or wire 1816.
- one Mwire slave device 1806 may be connected to the Mwire master device 1802 using two or more dedicated and/or shared additional connectors or wires 1814 and 1816.
- additional connectors or wires 1812, 1814, and/or 1816 can be selected to balance bandwidth and power consumption for communications between Mwire devices 1802, 1804, 1806, and/or 1808.
- the additional connectors may include optical or other types of connectors.
- any number of wires that is greater than two physical lines can be used in an SGbus interface.
- Two of the wires may be common wires, such as the SCL line 216 and SDA line 218 wires that are used for communicating with legacy devices 1818, 1820 and/or SGbus devices 1822 that are not configured for multi- wire operation.
- Legacy devices 1818, 1820 may include an I2C device 1818, an SGbus device 1822, or another type of device that uses a two-wire protocol compatible with other devices 1802, 1804, 1806, 1808, 1818, 1820, 1822 coupled to the shared bus 1810.
- Bus management messages may be included in shared bus management protocols implemented on the Mwire-capable bus clients 1802, 1804, 1806, and 1808. Bus management messages may be transferred between Mwire-capable devices 1802, 1804, 1806, and 1808 using the two-wire (shared) bus 1810. Bus management messages may include address arbitration commands and/or messages, commands and/or messages related to data transport mode entry and exit, commands and/or messages used in the exchange of configuration data including, for example, messages identifying supported protocols, number and allocation of available physical wires, and commands and/or messages that are to negotiate or select a mode of communications. [0154] As illustrated in FIG. 18, different legacy client devices 1818 and 1820 and SGbus devices 1822 that have more basic signaling capabilities may be supported by the SGbus interface.
- the devices 1802, 1804, 1806, 1808, 1818, 1820, 1822 coupled to the shared bus 1810 are compatible with at least one common mode of communication (e.g., predefined base protocol over the two-wire bus 1810).
- the predefined base protocol e.g., lowest common denominator protocol
- each of the devices 1802, 1804, 1806, 1808, 1818, 1820, 1822 may be adapted to at least recognize start and stop conditions defined by the predefined base protocol.
- Two or more devices 1802, 1804, 1806, 1808, 1820, and/or 1822 may communicate using a second protocol that is not supported by some of the other devices coupled to the shared bus 1810.
- the two or more devices 1802, 1804, 1806, 1808, 1818, 1820, 1822 may identify capabilities of the other devices using the predefined base protocol (e.g., an I2C protocol), after an SGbus exchange is initiated, and/or through signaling on one or more additional connectors or wires 1812, 1814 and/or 1816.
- the configuration of devices coupled to the shared bus 1810 may be predefined in the devices 1802, 1804, 1806, 1808, 1818, 1820, 1822.
- the additional connectors or wires 1812, 1814 and/or 1816 may include multipurpose, reconfigurable connectors, wires, or lines that connect two or more of the Mwire devices 1802, 1804, 1806, 1808.
- the additional connectors or wires 1812, 1814 and/or 1816 may include repurposed connections that may otherwise provide inter-processor communications capabilities including, for example interrupts, messaging and/or communications related to events.
- the additional connectors or wires 1812, 1814 and/or 1816 may be provided by design.
- the predefined base protocol may utilize the additional connectors or wires 1812, 1814 and/or 1816 for sending interrupts from the slave devices to the master device.
- the additional connectors or wires 1812, 1814 and/or 1816 may be repurposed to transmit data symbols in combination with the two-wire bus.
- FIG. 5 relates to a single interaction between two or more of the devices 1802, 1804, 1806, 1808, and/or 1822.
- the current master device 1802 can support extended communication capabilities with the other Mwire devices 1804, 1806, 1808, using a combination of the additional connectors or wires 1812, 1814, and 1816.
- the master Mwire device 1802 is connected to two slave devices 1804 and 1808 using a single additional connector or wire 1816 and 1812, respectively.
- the master Mwire device 1802 is connected to one slave device 1806 using a pair of additional wires 1814 and 1816.
- the master Mwire device 1802 may be configured to select a number of wires for communication based on the capabilities of all slave devices 1804, 1806, and/or 1808 that are involved in a transaction. For example, the Mwire master device 1802 may send data symbols to the first Mwire slave device B 1806 using the two-wire bus 1810 plus both repurposed wires 1814 and 1816. Additionally, the Mwire master device 1802 may send data symbols to the second Mwire slave device A 1804 using the two-wire bus 1810 plus a first repurposed wire 1816.
- FIGS. 2-14 illustrated the repurposing of the two-wire bus to transmit data symbols encoded over the two wires.
- FIGS. 2-14 illustrated the repurposing of the two-wire bus to transmit data symbols encoded over the two wires.
- one aspect provides for extending this protocol and approach of FIGS. 2-14 to three or more wires by repurposing any additional available wires, connectors, or lines between a master device and a slave device.
- the two-wire bus (FIG. 2, lines 216 and 218) and one or additional connectors or wires 1812, 1814, and/or 1816 may be used to transmit data symbols encoded across all wires.
- data when three connectors, wires or lines 216, 218, 1812, 1814, and/or 1816 are available, data may be encoded in 3-bit symbols, when four connectors, wires or lines 216, 218, 1812, 1814, and/or 1816 are available, data may be encoded in 4-bit symbols, and so on.
- FIG. 19 includes an example of symbol timing 1900 illustrating the encoding of data in symbols across three conductors or wires.
- a sequence of 7 symbols is illustrated, although data elements may be encoded in any number of symbols and/or symbols having any number of wires, lines or connectors.
- data is encoded in symbols 1902 that control the signaling state of three connectors 1904, 1906 and 1908 in each time slot 1910 corresponding to a symbol transmission interval.
- the table 1920 illustrates one example of mapping three-bit symbols 1902 to signaling states that can have one of two levels. Transmit clock information may be encoded in the transitions in signaling state between consecutive symbols.
- the clock information may be embedded in signaling states transitions of the common connectors, wires or lines 216, 218, with the additional connector or wires 1812, 1814, and/or 1816 being used to carry one additional bit in each symbol.
- certain devices 1802, 1804, 1806 or 1808 may be configured to increase data throughput even further by extracting clock information from transitions that occur on any of the connectors used in a communications transaction.
- a transition number can be formed that has 12 Base-7 digits (i.e., septenary numbering scheme). In the general case discussed herein, a transition number having N digits with r possible transitions for each digit has a total of r ⁇ states.
- FIG. 20 is a conceptual diagram 2000 illustrating a simplified example of a hardware implementation for an apparatus employing a processing circuit 2002 that may be configured to perform one or more functions disclosed herein.
- the processing circuit 2002 may include one or more processors 2004 that are controlled by some combination of hardware and software modules. Examples of processors 2004 include microprocessors, microcontrollers, digital signal processors (DSPs), field programmable gate arrays (FPGAs), programmable logic devices (PLDs), state machines, sequencers, gated logic, discrete hardware circuits, and other suitable hardware configured to perform the various functionality described throughout this disclosure.
- DSPs digital signal processors
- FPGAs field programmable gate arrays
- PLDs programmable logic devices
- state machines sequencers, gated logic, discrete hardware circuits, and other suitable hardware configured to perform the various functionality described throughout this disclosure.
- the one or more processors 2004 may include specialized processors that perform specific functions, and that may be configured, augmented or controlled by one of the software modules 2016.
- the one or more processors 2004 may be configured through a combination of software modules 2016 loaded during initialization, and further configured by loading or unloading one or more software modules 2016 during operation.
- the processing circuit 2002 may be implemented with a bus architecture, represented generally by the bus 2010.
- the bus 2010 may include any number of interconnecting buses and bridges depending on the specific application of the processing circuit 2002 and the overall design constraints.
- the bus 2010 links together various circuits including the one or more processors 2004, storage 2006.
- Storage 2006 may include memory devices and mass storage devices, and may be referred to herein as computer-readable media.
- the bus 2010 may also link various other circuits such as timing sources, timers, peripherals, voltage regulators, and power management circuits, which are well known in the art, and therefore, some of which may not be described any further.
- a bus interface 2008 may provide an interface between the bus 2010 and line interface circuits 2012.
- the line interface circuits 2012 provides a means for communicating with various other apparatus over a transmission medium such as a serial bus.
- a user interface 2018 e.g., keypad, display, speaker, microphone, joystick
- a processor 2004 may be responsible for managing the bus 2010 and for general processing that may include the execution of software stored in a computer-readable medium that may include the storage 2006.
- the processing circuit 2002 including the processor 2004, may be used to implement any of the methods, functions and techniques disclosed herein.
- the storage 2006 may be used for storing data that is manipulated by the processor 2004 when executing software, and the software may be configured to implement any one of the methods disclosed herein.
- One or more processors 2004 in the processing circuit 2002 may execute software.
- Software shall be construed broadly to mean instructions, instruction sets, code, code segments, program code, programs, subprograms, software modules, applications, software applications, software packages, routines, subroutines, objects, executables, threads of execution, procedures, functions, algorithms, etc., whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise.
- the software may reside in computer-readable form in the storage 2006 or in an external computer readable medium.
- the computer-readable medium and/or storage 2006 may be a non-transitory computer-readable medium.
- a non-transitory computer-readable medium includes, by way of example, a magnetic storage device (e.g., hard disk, floppy disk, magnetic strip), an optical disk (e.g., a compact disc (CD) or a digital versatile disc (DVD)), a smart card, a flash memory device (e.g., a "flash drive,” a card, a stick, or a key drive), a random access memory (RAM), a read only memory (ROM), a programmable ROM (PROM), an erasable PROM (EPROM), an electrically erasable PROM (EEPROM), a register, a removable disk, and any other suitable medium for storing software and/or instructions that may be accessed and read by a computer.
- a magnetic storage device e.g., hard disk, floppy disk, magnetic strip
- an optical disk e.g., a compact disc (CD) or a digital versatile disc (DVD)
- a smart card e.g., a "
- the computer-readable medium and/or storage 2006 may also include, by way of example, a carrier wave, a transmission line, and any other suitable medium for transmitting software and/or instructions that may be accessed and read by a computer.
- Computer- readable medium and/or the storage 2006 may reside in the processing circuit 2002, in the processor 2004, external to the processing circuit 2002, or be distributed across multiple entities including the processing circuit 2002.
- the computer-readable medium and/or storage 2006 may be embodied in a computer program product.
- a computer program product may include a computer-readable medium in packaging materials.
- the storage 2006 may maintain software maintained and/or organized in loadable code segments, modules, applications, programs, etc., which may be referred to herein as software modules 2016.
- Each of the software modules 2016 may include instructions and data that, when installed or loaded on the processing circuit 2002 and executed by the one or more processors 2004, contribute to a run-time image 2014 that controls the operation of the one or more processors 2004. When executed, certain instructions may cause the processing circuit 2002 to perform functions in accordance with certain methods, algorithms and processes described herein.
- Some of the software modules 2016 may be loaded during initialization of the processing circuit 2002, and these software modules 2016 may configure the processing circuit 2002 to enable performance of the various functions disclosed herein.
- some software modules 2016 may configure internal devices and/or logic circuits 2022 of the processor 2004, and may manage access to external devices such as the line interface circuits 2012, the bus interface 2008, the user interface 2018, timers, mathematical coprocessors, and so on.
- the software modules 2016 may include a control program and/or an operating system that interacts with interrupt handlers and device drivers, and that controls access to various resources provided by the processing circuit 2002.
- the resources may include memory, storage 2006, processing time, access to the line interface circuits 2012, the user interface 2018, and so on.
- One or more processors 2004 of the processing circuit 2002 may be multifunctional, whereby some of the software modules 2016 are loaded and configured to perform different functions or different instances of the same function.
- the one or more processors 2004 may additionally be adapted to manage background tasks initiated in response to inputs from the user interface 2018, the line interface circuits 2012, and device drivers, for example.
- the one or more processors 2004 may be configured to provide a multitasking environment, whereby each of a plurality of functions is implemented as a set of tasks serviced by the one or more processors 2004 as needed or desired.
- the multitasking environment may be implemented using a timesharing program 2020 that passes control of a processor 2004 between different tasks, whereby each task returns control of the one or more processors 2004 to the timesharing program 2020 upon completion of any outstanding operations and/or in response to an input such as an interrupt.
- a task has control of the one or more processors 2004, the processing circuit is effectively specialized for the purposes addressed by the function associated with the controlling task.
- the timesharing program 2020 may include an operating system, a main loop that transfers control on a round-robin basis, a function that allocates control of the one or more processors 2004 in accordance with a prioritization of the functions, and/or an interrupt driven main loop that responds to external events by providing control of the one or more processors 2004 to a handling function.
- FIG. 21 is a flowchart 2100 illustrating a method for data communications on an SGbus serial interface. Various steps of the method may be performed in an apparatus that includes some combination of the SGbus master device 220, an SGbus slave device 202 illustrated in FIG. 2, the devices 300 or 320 illustrated in FIG. 3, the processing circuit 2002 of FIG. 20, and/or other devices described herein.
- a first set of devices may be operated according to a first mode of operation in which one or more devices are configured to use a first line of a bus for data transmissions and use a second line of the bus for a first clock signal.
- the availability of one or more additional lines connecting two or more of the devices in the first set of devices for transmitting signaling between the two or more devices may be determined.
- a second set of devices within the first set of devices may be operated according to a second mode of operation whereby the second set of devices may be configured to use the first wire, the second wire, and the at least one additional wire for data transmissions in a second mode of operation.
- symbols are encoded across the first line, the second line, and the at least one of the additional lines.
- data is transmitted on one or more wires in accordance with a clock signal transmitted on another wire.
- the two-wire serial bus and the at least one additional wire may be combined to obtain a combination bus.
- Data may be transmitted over two or more wires of the combination bus in accordance with a clock signal transmitted on a third wire of the combination bus.
- the combination bus may be operated in accordance with an I3C HDR DDR protocol.
- control, error detection and/or data integrity or security information may be transmitted over a wire of the combination bus.
- the first mode of operation the at least one additional wire is configurable to carry a control signal from a master device to a slave device, or to communicate interrupts from the slave device to the master device.
- One or more of the first set of devices may be configured to operate in accordance with the flowchart illustrated in FIG. 22.
- FIG. 22 is a flowchart 2200 illustrating a method for data communications on an SGbus serial interface. Various steps of the method may be performed by a first device that includes some combination of the SGbus master device 220, the SGbus slave device 202 illustrated in FIG. 2, the devices 300 or 320 illustrated in FIG. 3, the processing circuit 2002 of FIG. 20, and/or other devices described herein.
- the first device may establish a connection on the two-wire serial bus with a second device coupled to the two-wire serial bus using a predefined base protocol associated with the two-wire serial bus.
- the predefined base protocol may be a protocol that is compliant or compatible with an Inter-Integrated Circuit (I2C) mode of data communications.
- the predefined base protocol may be compliant or compatible with a camera control interface (CCI) data transport mode.
- the first device may determine availability of one or more additional connectors that are configurable for data communications between the first device and the second device.
- the one or more additional connectors may include a connector that is may be configured or operable for transmitting an interrupt signal or a control signal between the first device and a second device.
- a control signal may be a chip select signal used when the serial bus is operated in accordance with an SPI protocol.
- the one or more additional connectors may include a shared connector that is coupled to at least three devices.
- the first device may communicate with the second device using each wire of the two- wire serial bus and the at least one additional wire.
- the first device may encode data in sequences of symbols for transmission over a combination of connectors that includes the two-wire bus and the one or more additional connectors.
- Clock information may be encoded in transitions between pairs of consecutive symbols in the sequences of symbols.
- Clock information may be encoded in transitions of signaling state of the two-wire serial bus.
- Clock information may be encoded in transitions of signaling state of the combination of connectors.
- Each of the sequences of symbols may include 12 symbols, for example.
- Each of the sequences of symbols may encode a 33-bit binary word.
- the first device may transmit the sequences of symbols over the combination of connectors.
- the two-wire serial bus and the at least one additional wire may be combined to obtain a combination bus. Data may be transmitted over two or more wires of the combination bus in accordance with a clock signal transmitted on a third wire of the combination bus.
- the two-wire serial bus and the at least one additional wire may be combined to obtain a combination bus.
- Data may be transmitted over one or more wires of the combination bus in accordance with a clock signal transmitted on another wire of the combination bus.
- Control or error detection information may be transmitted on at least one wire of the combination bus.
- the first device may communicate on the two-wire serial bus using the predefined base protocol associated with the two-wire serial bus after the sequences of symbols have been transmitted over the combination of connectors. Communications on the two-wire serial bus using the predefined base protocol may employ only the two- wire-serial bus.
- FIG. 23 is a diagram illustrating an example of a hardware implementation for an apparatus that communicates using a two-wire bus in a first mode and dynamically adjusting the two-wire bus to add one or more additional lines in a second mode in which symbols are encoded among the two-wire bus and the one or more additional lines.
- the apparatus 2300 may include a processing circuit 2302 having a processor 2316 that may include one or more of a microprocessor, microcontroller, digital signal processor, a sequencer, a state machine, or the like.
- the processing circuit 2302 may be implemented with a bus architecture, represented generally by the bus 2320.
- the bus 2320 may include any number of interconnecting buses and bridges depending on the specific application of the processing circuit 2302 and the overall design constraints.
- the bus 2320 links together various circuits including one or more processors and/or hardware modules, represented by the processor 2316, the modules or circuits 2304, 2306, 2308 and 2310, line interface circuits 2312 configurable to communicate over a multi-wire bus 2314 that includes a plurality of connectors or wires, and the computer- readable storage medium 2318.
- the bus 2320 may also link various other circuits such as timing sources, peripherals, voltage regulators, and power management circuits, which are well known in the art, and therefore, will not be described any further.
- the processor 2316 is responsible for general processing, including the execution of software stored on the computer-readable storage medium 2318.
- the software when executed by the processor 2316, causes the processing circuit 2302 to perform the various functions described supra for any particular apparatus.
- the computer-readable storage medium 2318 may also be used for storing data that is manipulated by the processor 2316 when executing software, including data decoded from symbols transmitted over the multi-wire bus 2314.
- the processing circuit 2302 further includes at least one of the modules and/or circuits 2304, 2306 and 2308.
- the modules and/or circuits 2304, 2306, 2308 and 2310 may be software modules loaded, configured and running in the processor 2316, resident/stored in the computer-readable storage medium 2318, one or more hardware modules coupled to the processor 2316, or some combination thereof.
- the modules and/or circuits 2304, 2306 and 2308 may include microcontroller instructions, state machine configuration parameters, or some combination thereof.
- the apparatus 2300 may include a connector/line configuration module and/or circuit 2304 that is adapted to determine available additional connectors/lines and to configure such connectors/lines for communicating with another device.
- a transcoder and/or converter module and/or circuit 2306 may be configured to encode data in sequences of symbols where the symbols are configured for the number of available wires for transmission.
- a communication module and/or circuit 2308 may be configured to transmit the sequences of symbols in the signaling state of a two-wire serial bus and one or more additional connectors/lines.
- the apparatus 2300 may include additional module and/or circuits including, for example, a mode module and/or circuit 2310 that controls the mode of operation of the multi-wire bus 2314 and/or the apparatus 2300.
- the mode module and/or circuit 2310 may switch between a base predefined protocol (e.g., I2C -compatible protocol over the two-wire serial bus) and a high data rate protocol (e.g., using the two-wire serial bus and dynamically repurposed one or more additional connectors/lines).
- a base predefined protocol e.g., I2C -compatible protocol over the two-wire serial bus
- a high data rate protocol e.g., using the two-wire serial bus and dynamically repurposed one or more additional connectors/lines.
- the mode control module and/or circuit 2310 may include or cooperate with a command generation module that transmits control sequences on the multi-wire bus 2314.
- the mode control module and/or circuit 2310 may cause a reconfiguration of the line interface circuits 2312 to enable open-drain line drivers or equivalents thereof in an I2C mode of operation and push-pull drivers in an HDR mode of operation.
- the aforementioned means may be implemented, for example, using some combination of a processor or control logic 212, physical layer drivers 210 and 214 and storage media, devices, registers or other 206.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Abstract
L'invention concerne un dispositif comprenant un bus qui comporte une première ligne et une seconde ligne. Un premier ensemble de dispositifs est couplé au bus et, dans un premier mode de fonctionnement, configuré pour utiliser la première ligne pour des transmissions de données et utiliser la seconde ligne pour un premier signal d'horloge. Une ou plusieurs lignes supplémentaires sont connectées entre au moins deux dispositifs du premier ensemble de dispositifs pour transmettre la signalisation entre les au moins deux dispositifs. Un second ensemble de dispositifs est configuré pour utiliser le bus et au moins une des lignes supplémentaires pour les transmissions de données dans un second mode de fonctionnement, dans le second mode de fonctionnement les symboles étant codés dans la première ligne, la seconde ligne et la ou les lignes supplémentaires.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/660,752 US10241955B2 (en) | 2014-06-18 | 2017-10-03 | Dynamically adjustable multi-line bus shared by multi-protocol devices |
| US15/660,752 | 2017-10-03 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2019070361A1 true WO2019070361A1 (fr) | 2019-04-11 |
Family
ID=65994754
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US2018/049593 Ceased WO2019070361A1 (fr) | 2017-10-03 | 2018-09-05 | Bus multilignes à réglage dynamique partagés par des dispositifs multiprotocoles |
Country Status (1)
| Country | Link |
|---|---|
| WO (1) | WO2019070361A1 (fr) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11494329B2 (en) | 2020-02-27 | 2022-11-08 | Advantest Corporation | NVMe-MI over SMBus multi-master controller with other SMBus and I2C masters in a single FPGA chip |
| US20230074672A1 (en) * | 2019-03-20 | 2023-03-09 | Samsung Electronics Co., Ltd. | High-speed data transfers through storage device connectors |
| EP4471609A1 (fr) * | 2023-05-31 | 2024-12-04 | Infineon Technologies Canada Inc. | Boîtier et circuit intégré avec détection d'interface |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO1997034238A1 (fr) * | 1996-03-13 | 1997-09-18 | Siemens Aktiengesellschaft | Procede et dispositif pour transmettre des donnees specifiques du systeme dans un systeme synchrone a microprocesseur |
| US5852406A (en) * | 1994-07-15 | 1998-12-22 | Thomson Consumer Electronics, Inc. | Multi-protocol data bus system |
| EP1142210A1 (fr) * | 1999-01-15 | 2001-10-10 | Telefonaktiebolaget L M Ericsson (Publ) | Interfaces entrelacees |
| US6728908B1 (en) * | 1999-11-18 | 2004-04-27 | California Institute Of Technology | I2C bus protocol controller with fault tolerance |
| US20130191569A1 (en) * | 2012-01-25 | 2013-07-25 | Qualcomm Incorporated | Multi-lane high-speed interfaces for high speed synchronous serial interface (hsi), and related systems and methods |
-
2018
- 2018-09-05 WO PCT/US2018/049593 patent/WO2019070361A1/fr not_active Ceased
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5852406A (en) * | 1994-07-15 | 1998-12-22 | Thomson Consumer Electronics, Inc. | Multi-protocol data bus system |
| WO1997034238A1 (fr) * | 1996-03-13 | 1997-09-18 | Siemens Aktiengesellschaft | Procede et dispositif pour transmettre des donnees specifiques du systeme dans un systeme synchrone a microprocesseur |
| EP1142210A1 (fr) * | 1999-01-15 | 2001-10-10 | Telefonaktiebolaget L M Ericsson (Publ) | Interfaces entrelacees |
| US6728908B1 (en) * | 1999-11-18 | 2004-04-27 | California Institute Of Technology | I2C bus protocol controller with fault tolerance |
| US20130191569A1 (en) * | 2012-01-25 | 2013-07-25 | Qualcomm Incorporated | Multi-lane high-speed interfaces for high speed synchronous serial interface (hsi), and related systems and methods |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20230074672A1 (en) * | 2019-03-20 | 2023-03-09 | Samsung Electronics Co., Ltd. | High-speed data transfers through storage device connectors |
| US12399657B2 (en) * | 2019-03-20 | 2025-08-26 | Samsung Electronics Co., Ltd. | High-speed data transfers through storage device connectors |
| US11494329B2 (en) | 2020-02-27 | 2022-11-08 | Advantest Corporation | NVMe-MI over SMBus multi-master controller with other SMBus and I2C masters in a single FPGA chip |
| EP4471609A1 (fr) * | 2023-05-31 | 2024-12-04 | Infineon Technologies Canada Inc. | Boîtier et circuit intégré avec détection d'interface |
| US12339800B2 (en) | 2023-05-31 | 2025-06-24 | Infineon Technologies Canada Inc. | Package and integrated circuit with interface detection |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10241955B2 (en) | Dynamically adjustable multi-line bus shared by multi-protocol devices | |
| US10007628B2 (en) | Dynamically adjustable multi-line bus shared by multi-protocol devices | |
| US10482057B2 (en) | Multi-protocol dynamic address allocation | |
| CN112639756B (zh) | 混合模式射频前端接口 | |
| EP3008609B1 (fr) | Bus d'extension d'interface de commande de caméra | |
| US10417172B2 (en) | Sensors global bus | |
| US20190356412A1 (en) | Fast termination of multilane double data rate transactions | |
| US10579581B2 (en) | Multilane heterogeneous serial bus | |
| US20190171609A1 (en) | Non-destructive outside device alerts for multi-lane i3c | |
| US10684981B2 (en) | Fast termination of multilane single data rate transactions | |
| US10402365B2 (en) | Data lane validation procedure for multilane protocols | |
| WO2019070361A1 (fr) | Bus multilignes à réglage dynamique partagés par des dispositifs multiprotocoles | |
| US20190095273A1 (en) | Parity bits location on i3c multilane bus | |
| WO2019040360A1 (fr) | Bus de capteurs global |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 18773919 Country of ref document: EP Kind code of ref document: A1 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 18773919 Country of ref document: EP Kind code of ref document: A1 |