At least one aspect generally relates to data communications interfaces, and more particularly, to data communications interfaces configurable for communicating between integrated circuit devices.
Manufacturers of mobile devices, such as cellular phones, may obtain components of the mobile devices from various sources, including different manufacturers. For example, the application processor in a cellular phone may be obtained from a first manufacturer, while the display for the cellular phone may be obtained from a second manufacturer. Moreover, multiple standards are defined for interconnecting certain components of the mobile devices. For example, there are multiple types of interface defined for communications between an application processor and display and camera components of a mobile device. Some components employ an interface that conforms to one or more standards specified by the Mobile Industry Processor Interface (MIPI) Alliance. For example, the MIPI Alliance defines protocols for a camera serial interface (CSI) and a display serial interface (DSI).
MIPI CSI-2 and MIPI DSI or DSI-2 standards define a wired interface between a camera and application processor, or an application processor and display. The low-level physical-layer (PHY) interface in each of these applications can be MIPI C-PHY or MIPI D-PHY. High-speed modes and low-power modes of communication are defined for MIPI C-PHY or MIPI D-PHY. The MIPI C-PHY high-speed mode uses a low-voltage multiphase signal transmitted in different phases on a 3-wire link. The MIPI D-PHY high-speed mode uses a plurality of 2-wire to carry low-voltage differential signals. The low-power mode of MIPI C-PHY and MIPI D-PHY provides lower rates than the high-speed mode and transmits signals at higher voltages where the high-speed signals are undetectable by receivers configured for low-power operation.
As device technology improves, higher data rates and lower-power consumption may be obtained when devices are operated at lower voltage levels. Increased data rates and decreased voltages may result in increased susceptibility to electromagnetic interference and other sources of interference. There is an ongoing need to improve MIPI C-PHY and MIPI D-PHY interfaces to take advantage of technology improvements to maintain link reliability while increasing data rates.
Certain aspects of the disclosure relate to provide systems, methods and apparatus that enable packets to be scrambled using at least two seed codes, where a different seed code is used for a duplicate pair of packet headers of a single packet. According to certain aspects described herein, two or more Integrated Circuit (IC) devices may be collocated in an electronic apparatus and communicatively coupled through one or more data links that can be configured with one of a plurality of interface standards.
In an aspect of the disclosure, a method for scrambling packets to be transmitted on a multi-wire transition-encoded interface may be performed by one of the IC devices. The method may include initializing a scrambler with a first pseudo-random binary sequence (PRBS) seed word after receiving a first sync word, the first sync word preceding a first packet, using the scrambler and the first PRBS seed word to scramble a first copy of a packet header that succeeds the first sync word in the first packet, initializing the scrambler with a second PRBS seed word after scrambling the first copy of the packet header, the second sync word succeeding the first copy of the packet header in the first packet, using the scrambler and the second PRBS seed word to scramble a second copy of the packet header that succeeds the second sync word in the first packet.
In an aspect of the disclosure, an apparatus has a physical interface configured for communicating over a multi-wire transition-encoded interface, a scrambler, and a processor. The processor may be configured to initialize a scrambler with a first PRBS seed word after receiving a first sync word, the first sync word preceding a first packet, cause the scrambler to scramble a first copy of a packet header that succeeds the first sync word in the first packet using the first PRBS seed word, initialize the scrambler with a second PRBS seed word after scrambling the first copy of the packet header, the second sync word succeeding the first copy of the packet header in the first packet, cause the scrambler to scramble a second copy of the packet header that succeeds the second sync word in the first packet using the second PRBS seed word.
In an aspect of the disclosure, a processor readable storage medium includes code for initializing a scrambler with a first PRBS seed word after receiving a first sync word, the first sync word preceding a first packet, using the scrambler and the first PRBS seed word to scramble a first copy of a packet header that succeeds the first sync word in the first packet, initializing the scrambler with a second PRBS seed word after scrambling the first copy of the packet header, the second sync word succeeding the first copy of the packet header in the first packet, using the scrambler and the second PRBS seed word to scramble a second copy of the packet header that succeeds the second sync word in the first packet.
In an aspect of the disclosure, and apparatus includes means for initializing a scrambler with a first PRBS seed word after receiving a first sync word, the first sync word preceding a first packet, means for using the scrambler and the first PRBS seed word to scramble a first copy of a packet header that succeeds the first sync word in the first packet, means for initializing the scrambler with a second PRBS seed word after scrambling the first copy of the packet header, the second sync word succeeding the first copy of the packet header in the first packet, and means for using the scrambler and the second PRBS seed word to scramble a second copy of the packet header that succeeds the second sync word in the first packet.
In an aspect of the disclosure, a method for descrambling packets received a multi-wire transition-encoded interface includes initializing a first descrambler with a first PRBS seed word after receiving a first sync word, the first sync word preceding a first packet, using the first descrambler and the first PRBS seed word to descramble a first copy of a packet header that succeeds the first sync word in the first packet, initializing the first descrambler with a second PRBS seed word after receiving a second sync word, the second sync word succeeding the first copy of the packet header in the first packet, and using the first descrambler and the second PRBS seed word to descramble a second copy of the packet header that succeeds the second sync word in the first packet.
In an aspect of the disclosure, an apparatus includes means for configuring one or more descramblers, and configured to initialize a first descrambler with a first PRBS seed word after receiving a first sync word, the first sync word preceding a first packet, and initializing the first descrambler with a second PRBS seed word after receiving a second sync word. The apparatus may also include means for descrambling a first copy of a packet header that succeeds the first sync word in the first packet, using the first descrambler and the first PRBS seed word, and means for descrambling a second copy of the packet header that succeeds the second sync word in the first packet, using the first descrambler and the first PRBS seed word, where the second sync word follows the first copy of the packet header in the first packet.
In various aspects of the disclosure, a method for scrambling packets to be transmitted on a multi-wire transition-encoded interface may be performed by one of the IC devices. The method may include providing a first sync word, the first sync word being associated with a first packet, initializing a scrambler with a first PRBS seed word after providing the first sync word, using the scrambler and the first PRBS seed word to scramble a first copy of a packet header to obtain a first scrambled packet header, providing a second sync word, the second sync word being associated with the first packet, initializing the scrambler with a second PRBS seed word after providing the second sync word, and using the scrambler and the second PRBS seed word to scramble a second copy of the packet header to obtain a second scrambled packet header. In some instances, the method includes transmitting the first sync word followed by the first scrambled packet header on the multi-wire transition-encoded interface, after transmitting the first scrambled packet header, transmitting the second sync word followed by the second scrambled packet header on the multi-wire transition-encoded interface, and after transmitting the second scrambled packet header, transmitting the packet on the multi-wire transition-encoded interface.
In one aspect, the method includes providing a third sync word, and initializing the scrambler with a third PRBS seed word after providing the third sync word. The third sync word may be associated with a second packet. In one example, the first sync word and the third sync word have the same value. In another example, the first sync word, the second sync word, and the third sync word have different values. In some implementations, the first sync word is transmitted on the multi-wire transition-encoded interface only when the scrambler is initiated with the first PRBS seed word, the second sync word is transmitted on the multi-wire transition-encoded interface only when the scrambler is initiated with the second PRBS seed word, and the third sync word is transmitted on the multi-wire transition-encoded interface only when the scrambler is initiated with the third PRBS seed word.
In one example, the first sync word, the second sync word, and the third sync word may be selected according to a pseudorandom sequence. The type or value of the sync word to be transmitted may be used to determine which seed word is provided for initializing the scrambler. In one example, the first PRBS seed word is used for scrambling after the first sync word is transmitted, the first PRBS seed word is used for scrambling after the second sync word is transmitted, and the first PRBS seed word is used for scrambling after the third sync word is transmitted.
In one aspect, the method includes scrambling a payload of the first packet using the second PRBS seed word, and encoding the first packet in sequences of symbols after scrambling the first copy of the packet header, the second copy of the packet header and the payload of the first packet. The method may include transmitting the first packet over the multi-wire transition-encoded interface in sequences of symbols after scrambling the first copy of the packet header, the second copy of the packet header and the payload of the first packet.
In various aspects of the disclosure, an apparatus has a physical interface configured for communicating over a multi-wire transition-encoded interface, a scrambler, and a processor. The processor may be configured to provide a first sync word, the first sync word being associated with a first packet, initialize the scrambler with a first PRBS seed word after providing the first sync word, cause the scrambler to scramble a first copy of a packet header using the first PRBS seed word to obtain a first scrambled packet header, provide a second sync word, the second sync word being associated with the first packet, initialize the scrambler with a second PRBS seed word after providing the second sync word, and cause the scrambler to scramble a second copy of the packet header using the second PRBS seed word to obtain a second scrambled packet header.
In one aspect, the multi-wire transition-encoded interface is a C-PHY interface defined by MIPI Alliance specifications.
In one aspect, the processor is configured to transmit the first sync word followed by the first scrambled packet header on the multi-wire transition-encoded interface, transmit the second sync word followed by the second scrambled packet header on the multi-wire transition-encoded interface after transmitting the first scrambled packet header, and transmit the packet on the multi-wire transition-encoded interface after transmitting the second scrambled packet header.
In one aspect, the processor is configured to provide a third sync word, the third sync word being associated with a second packet, and initialize the scrambler with a third PRBS seed word after providing the third sync word. The first sync word and the third sync word may have a same value. The first sync word, the second sync word, and the third sync word may have different values. The first sync word may be transmitted on the multi-wire transition-encoded interface only when the scrambler is initiated with the first PRBS seed word. The second sync word may be transmitted on the multi-wire transition-encoded interface only when the scrambler is initiated with the second PRBS seed word. The third sync word may be transmitted on the multi-wire transition-encoded interface only when the scrambler is initiated with the third PRBS seed word. The first sync word, the second sync word, and the third sync word may be selected according to a pseudorandom sequence. The type or value of the sync word to be transmitted may be used to determine which seed word is provided for initializing the scrambler.
In one aspect, the processor may be configured to cause the scrambler to scramble a payload of the first packet using the second PRBS seed word, and encode the first packet in sequences of symbols after the first copy of the packet header, the second copy of the packet header and the payload of the first packet have been scrambled, wherein clock information is embedded in transitions between each pair of consecutive symbols in the sequences of symbols.
In an aspect of the disclosure, a processor readable storage medium is disclosed. The storage medium may be a non-transitory storage medium and may store code that, when executed by one or more processors, causes the one or more processors to provide a first sync word, the first sync word being associated with a first packet, initialize a scrambler with a first PRBS seed word after providing the first sync word, use the scrambler and the first PRBS seed word to scramble a first copy of a packet header to obtain a first scrambled packet header, provide a second sync word, the second sync word being associated with the first packet, initialize the scrambler with a second PRBS seed word after providing the second sync word, and use the scrambler and the second PRBS seed word to scramble a second copy of the packet header to obtain a second scrambled packet header. In some instances, the storage medium includes code that causes the one or more processors to transmit the first sync word followed by the first scrambled packet header on the multi-wire transition-encoded interface, after transmitting the first scrambled packet header, transmit the second sync word followed by the second scrambled packet header on the multi-wire transition-encoded interface, and after transmitting the second scrambled packet header, transmit the packet on the multi-wire transition-encoded interface.
In various aspects of the disclosure, an apparatus includes means for providing sync words, means for scrambling data for transmission based on the sync words. The means for providing sync words may be configured to provide a first sync word and a second sync word. The means for scrambling data may include a scrambler that is initialized by a first PRBS seed word, which is used to scramble a first copy of a packet header to obtain a first scrambled packet header that is transmitted after the first sync word. The scrambler may be initialized with a second PRBS seed word, which is used to scramble a second copy of the packet header to obtain a second scrambled packet header that is transmitted after the second sync word. In one example, the first sync word, the second sync word, and the third sync word may be different. The first sync word, the second sync word, and the third sync word may be selected according to a pseudorandom sequence. The type or value of the sync word to be transmitted may be used to determine which seed word is provided for initializing the scrambler. In one example, the first PRBS seed word is used for scrambling after the first sync word is transmitted, the first PRBS seed word is used for scrambling after the second sync word is transmitted, and the first PRBS seed word is used for scrambling after the third sync word is transmitted.
Various features, nature, and advantages may become apparent from the detailed description set forth below when taken in conjunction with the drawings in which like reference characters identify correspondingly throughout.
In the following description, specific details are given to provide a thorough understanding of the embodiments. However, it will be understood by one of ordinary skill in the art that the embodiments may be practiced without these specific detail. For example, circuits may be shown in block diagrams in order not to obscure the embodiments in unnecessary detail. In other instances, well-known circuits, structures, and techniques may not be shown in detail in order not to obscure the embodiments.
Several aspects of data communication systems will now be presented with reference to various apparatus and methods. These apparatus and methods will be described in the following detailed description and illustrated in the accompanying drawings by various blocks, modules, components, circuits, steps, processes, algorithms, etc. (collectively referred to as “elements”). These elements may be implemented using electronic hardware, computer software, or any combination thereof. Whether such elements are implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system.
By way of example, an element, or any portion of an element, or any combination of elements may be implemented with a “processing system” that includes one or more processors. Examples of processors include microprocessors, microcontrollers, digital signal processors (DSPs), field programmable gate arrays (FPGAs), programmable logic devices (PLDs), state machines, gated logic, discrete hardware circuits, and other suitable hardware configured to perform the various functionality described throughout this disclosure. One or more processors in the processing system 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, etc., whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise.
Accordingly, in one or more exemplary embodiments, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or encoded as one or more instructions or code on a computer-readable medium. Computer-readable media includes computer storage media. Storage media may be any available media that can be accessed by a computer. By way of example, and not limitation, such computer-readable media can include read-only memory (ROM) or random-access memory (RAM), electrically erasable programmable ROM (EEPROM), including ROM implemented using a compact disc (CD) or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer. Disk and disc, as used herein, includes CD, laser disc, optical disc, digital versatile disc (DVD), and floppy disk where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
Overview
According to certain aspects disclosed herein, the occurrence of identical scrambled symbol sequences can be avoided in C-PHY interfaces through the use of multiple PRBS seed values. For example, a scrambler that scrambles packet headers is initialized with a different seed value for each of two duplicate copes of packet headers transmitted consecutively over a C-PHY interface. The scramblers may be initialized after transmission of the sync symbol sequence transmitted before each copy of the packet header. According to certain aspects disclosed herein, different Sync Word values can be used in the sync symbol sequence. The Sync Word values can be used by a transmitter to signal information related to information transmitted after a sync symbol sequence. In one example, different Sync Word values can be used to identify different seed values to be used to initialize a scrambler. In other examples, the different Sync Word values can be used to identify types or portions of data transmitted as payloads.
Example of a Device Employing Transition Encoding
The communication link 220 may provide multiple channels 222, 224 and 226. One or more channels 226 may be bidirectional, and may operate in half-duplex and/or full-duplex modes. One or more channels 222 and 224 may be unidirectional. The communication link 220 may be asymmetrical, providing higher bandwidth in one direction. In one example described herein, a first communications channel 222 may be referred to as a forward channel 222 while a second communications channel 224 may be referred to as a reverse channel 224. The first IC device 202 may be designated as a host system or transmitter, while the second IC device 230 may be designated as a client system or receiver, even if both IC devices 202 and 230 are configured to transmit and receive on the communications channel 222. In one example, the forward channel 222 may operate at a higher data rate when communicating data from a first IC device 202 to a second IC device 230, while the reverse channel 224 may operate at a lower data rate when communicating data from the second IC device 230 to the first IC device 202.
The IC devices 202 and 230 may each have a processor or other processing and/or computing circuit or device 206, 236. In one example, the first IC device 202 may perform core functions of the apparatus 200, including maintaining communications through a radio frequency transceiver 204 and an antenna 214, while the second IC device 230 may support a user interface that manages or operates a display controller 232. In the example, the second IC device 230 may be adapted to control operations of a camera or video input device using a camera controller 234. Other features supported by one or more of the IC devices 202 and 230 may include a keyboard, a voice-recognition component, and other input or output devices. The display controller 232 may include circuits and software drivers that support displays such as a liquid crystal display (LCD) panel, touch-screen display, indicators and so on. The storage media 208 and 238 may include transitory and/or non-transitory storage devices adapted to maintain instructions and data used by respective processors 206 and 236, and/or other components of the IC devices 202 and 230. Communication between each processor 206, 236 and its corresponding storage media 208 and 238 and other modules and circuits may be facilitated by one or more bus 212 and 242, respectively.
The reverse channel 224 may be operated in the same manner as the forward channel 222, and the forward channel 222 and reverse channel 224 may be capable of transmitting at comparable speeds or at different speeds, where speed may be expressed as data transfer rate and/or clocking rates. The forward and reverse data rates may be substantially the same or differ by orders of magnitude, depending on the application. In some applications, a single bidirectional channel 226 may support communications between the first IC device 202 and the second IC device 230. The forward channel 222 and/or reverse channel 224 may be configurable to operate in a bidirectional mode when, for example, the forward and reverse channels 222 and 224 share the same physical connections and operate in a half-duplex manner. In one example, the communication link 220 may be operated to communicate control, command and other information between the first IC device 202 and the second IC device 230 in accordance with an industry or other standard.
In some instances, the forward and reverse channels 222 and 224 may be configured or adapted to support a wide video graphics array (WVGA) 80 frames per second LCD driver IC without a frame buffer, delivering pixel data at 810 Mbps for display refresh. In another example, the forward and reverse channels 222 and 224 may be configured or adapted to enable communications between with dynamic random access memory (DRAM), such as double data rate synchronous dynamic random access memory (SDRAM). The drivers 210, 240 may include encoding devices that can be configured to encode multiple bits per clock transition, and multiple sets of wires can be used to transmit and receive data from the SDRAM, control signals, address signals, and other signals.
The forward and reverse channels 222 and 224 may comply with, or be compatible with application-specific industry standards. In one example, the MIPI standard defines physical layer interfaces between an application processor IC device 202 and an IC device 230 that supports the camera or display in a mobile device. The MIPI standard includes specifications that govern the operational characteristics of products that comply with MIPI specifications for mobile devices. In some instances, the MIPI standard may define interfaces that employ complimentary metal-oxide-semiconductor (CMOS) parallel busses.
The MIPI Alliance defines standards and specifications that may address communications affecting all aspects of operations in a mobile device, including the antenna, peripherals, the modem and application processors. For example, the MIPI Alliance defines protocols for a camera serial interface (CSI) and a display serial interface (DSI). The MIPI CSI-2 defines a wired interface between a camera and Application Processor and the MIPI DSI or DSI-2 defines a wired interface between an Application Processor and a display. The low-level physical layer (PHY) interface in each of these applications can be MIPI C-PHY or MIPI D-PHY.
MIPI C-PHY Interface
According to certain aspects disclosed herein, systems and apparatus may employ multi-phase data encoding and decoding interface methods for communicating between IC devices 202 and 230. A multi-phase encoder may drive a plurality of conductors (i.e., M conductors). The M conductors typically include three or more conductors, and each conductor may be referred to as a wire, although the M conductors may include conductive traces on a circuit board or within a conductive layer of a semiconductor IC device. In one example, the MIPI Alliance-defined “C-PHY” physical layer interface technology may be used to connect camera and display devices 230 to an application processor device 202. The C-PHY interface employs three-phase symbol encoding to transmit data symbols on 3-wire lanes, or “trios” where each trio includes an embedded clock.
The M conductors may be divided into a plurality of transmission groups, each group encoding a portion of a block of data to be transmitted. An N-phase encoding scheme is defined in which bits of data are encoded in phase transitions and polarity changes on the M conductors. Decoding does not rely on independent conductors or pairs of conductors and timing information can be derived directly from phase and/or polarity transitions in the M conductors. N-Phase polarity data transfer can be applied to any physical signaling interface, including electrical, optical and radio frequency (RF) interfaces.
In the C-PHY example, a three-phase encoding scheme for a three-wire system may define three phase states and two polarities, providing 6 states and 5 possible transitions from each state. Deterministic voltage and/or current changes may be detected and decoded to extract data from the three wires.
In the depicted C-PHY example 300, an M-wire, N-phase polarity encoding transmitter is configured for M=3 and N=3. The example of three-wire, three-phase encoding is selected solely for the purpose of simplifying descriptions of certain aspects of this disclosure. The principles and techniques disclosed for three-wire, three-phase encoders can be applied in other configurations of M-wire, N-phase polarity encoders, and may comply or be compatible with other interface standards.
When three-phase polarity encoding is used, connectors such as signal wires 310a, 310b and 310c on a 3-wire bus may be undriven, driven positive, or driven negative. An undriven signal wire 310a, 310b or 310c may be in a high-impedance state. An undriven signal wire 310a, 310b or 310c may be driven or pulled to a voltage level that lies substantially halfway between the positive and negative voltage levels provided on driven signal wires. An undriven signal wire 310a, 310b or 310c may have no current flowing through it. In the example 300, each signal wire 310a, 310b and 310c may be in one of three states (denoted as +1, −1, or 0) using drivers 308. In one example, drivers 308 may include unit-level current-mode drivers. In another example, drivers 308 may drive opposite polarity voltages on two signals transmitted on the signal wires 310a and 310b while the third signal wire 310c is at high impedance and/or pulled to ground. For each transmitted symbol interval, at least one signal is in the undriven (0) state, while the number of signals driven positive (+1 state) is equal to the number of signals driven negative (−1 state), such that the sum of current flowing to the receiver is always zero. For each symbol, the state of at least one signal wire 310a, 310b or 310c is changed from the symbol transmitted in the preceding transmission interval.
In the example, 300, a mapper 302 may receive 16-bit data 318, and the mapper 302 may map the input data 318 to 7 symbols 312 for transmitting sequentially over the signal wires 310a, 310b and 310c. An M-wire, N-phase encoder 306 configured for three-wire, three-phase encoding receives the 7 symbols 312 produced by the mapper 302 one symbol 314 at a time and computes the state of each signal wire 310a, 310b and 310c for each symbol interval, based on the immediately preceding state of the signal wires 310a, 310b and 310c. The 7 symbols 312 may be serialized using parallel-to-serial converters 304, for example. The encoder 306 selects the states of the signal wires 310a, 310b and 310c based on the next symbol 314 provided by the mapper 302 and the previous states of signal wires 310a, 310b and 310c.
The use of M-wire, N-phase encoding permits a number of bits to be encoded in a plurality of symbols where the bits per symbol is not an integer. In the simple example of a three-wire, three-phase system, there are 3 available combinations of 2 wires, which may be driven simultaneously, and 2 possible combinations of polarity on any pair of wires that is driven simultaneously, yielding 6 possible states. Since each transition occurs from a current state, 5 of the 6 states are available at every transition. The state of at least one wire is typically required to change at each transition. With 5 states, log2(5)≅2.32 bits may be encoded per symbol. Accordingly, a mapper may accept a 16-bit word and convert it to 7 symbols because 7 symbols carrying 2.32 bits per symbol can encode 16.24 bits. In other words, a combination of seven symbols that encodes five states has 57 (78,125) permutations. Accordingly, the 7 symbols may be used to encode the 216 (65,536) permutations of 16 bits.
At any phase state in the illustrated three-wire example, exactly two of the signal wires 310a, 310b, 310c carry a signal which is effectively a differential signal for that phase state, while the third signal wire 310a, 310b or 310c is undriven. The phase state for each signal wire 310a, 310b, 310c may be determined by voltage difference between the signal wire 310a, 310b or 310c and at least one other signal wire 310a, 310b and/or 310c, or by the direction of current flow, or lack of current flow, in the signal wire 310a, 310b or 310c. As shown in the state transition diagram 450, three phase states (S1, S2 and S3) are defined. A signal may flow clockwise from phase state S1 to phase state S2, phase state S2 to phase state S3, and/or phase state S3 to phase state S1 and the signal may flow counter-clockwise from phase state S1 to phase state S3, phase state S3 to phase state S2, and/or phase state S2 to phase state S1. For other values of N, transitions between the N states may optionally be defined according to a corresponding state diagram to obtain circular rotation between state transitions.
In the example of a three-wire, three-phase communications link, clockwise rotations (S1 to S2), (S2 to S3), and/or (S3 to S1) at a state transition 410 may be used to encode a logic 1, while counter-clockwise rotations (S1 to S3), (S3 to S2), and/or (S2 to S1) at the state transition 410 may be used to encode a logic 0. Accordingly, a bit may be encoded at each transition by controlling whether the signal is “rotating” clockwise or counter-clockwise. For example, a logic 1 may be encoded when the three signal wires 310a, 310b, 310c transition from phase state S1 to phase state S2 and a logic 0 may be encoded when the three signal wires 310a, 310b, 310c transition from phase state S1 to phase state S3. In the simple three-wire example depicted, direction of rotation may be easily determined based on which of the three signal wires 310a, 310b, 310c is undriven before and after the transition.
Information may also be encoded in the polarity and/or changes of polarity of state 408 of the driven signal wires 310a, 310b, 310c, or in the direction of current flow or changes in the direction of current flow between two signal wires 310a, 310b, 310c. Signals 402, 404, and 406 illustrate voltage levels applied to signal wires 310a, 310b, 310c, respectively at each phase state in a three-wire, three-phase link At any time, a first signal wire 310a, 310b, 310c is coupled to a more positive voltage (+V, for example), a second signal wire 310a, 310b, 310c is coupled to a more negative voltage (−V, for example), while the third signal wire 310a, 310b, 310c may be open-circuited. As such, one polarity encoding state may be determined by the current flow between the first and second signal wires 310a, 310b, 310c or the voltage polarities of the first and second signal wires 310a, 310b, 310c. In some embodiments, two bits of data 412 may be encoded in each state transition 410. A decoder may determine the direction of signal phase rotation to obtain the first bit. The second bit may be determined based on the polarity difference between two of the signals 402, 404 and 406. In some instances, the second bit may be determined based on a change or lack of change in polarity of the differential signal transmitted on a pair of the signal wires 310a, 310b, 310c. The decoder having determined direction of rotation can determine the phase state and the polarity of the voltage applied between the two active signal wires 310a, 310b and/or 310c, or the direction of current flow through the two active signal wires 310a, 310b and/or 310c.
In the example of the three-wire, three-phase link described herein, one bit of data may be encoded in the rotation, or phase change in the three-wire, three-phase link, and an additional bit may be encoded in the polarity or changes in polarity of two driven wires. Certain embodiments, encode more than two bits in each transition of a three-wire, three-phase encoding system by allowing transition to any of the possible states from a current state. Given three rotational phases and two polarities for each phase, 6 states are defined, such that 5 states are available from any current state. Accordingly, there may be log2(5)≅2.32 bits per symbol (transition) and the mapper may accept a 16-bit word and convert it to 7 symbols.
In one example, an encoder may transmit symbols using 6 wires with two pairs of wires driven for each state. The 6 wires may be labeled A through F, such that in one state, wires A and F are driven positive, wires B and E negative, and C and D are undriven (or carry no current). For six wires, there may be:
possible combinations of actively driven wires, with:
different combinations of polarity for each phase state.
The 15 different combinations of actively driven wires may include:
Of the 4 wires driven, the possible combinations of two wires driven positive (and the other two must be negative). The combinations of polarity may include:
Accordingly, the total number of different states may be calculated as 15×6=90. To guarantee a transition between symbols, 89 states are available from any current state, and the number of bits that may be encoded in each symbol may be calculated as: log2(89)≅6.47 bits per symbol. In this example, a 32-bit word can be encoded by the mapper into 5 symbols, given that 5×6.47=32.35 bits.
The general equation for the number of combinations of wires that can be driven for a bus of any size, as a function of the number of wires in the bus and number of wires simultaneously driven:
The equation for the number of combinations of polarity for the wires being driven is:
The number of bits per symbol is:
According to certain aspects disclosed herein, a plurality of three-state amplifiers can be controlled to produce a set of output states defined by a differential encoder, an N-phase polarity encoder, or another encoder that encodes information in wires or connectors that can assume one of the three states described.
With reference again to
MIPI D-PHY Interface
According to certain aspects disclosed herein, systems and apparatus may employ some combination of differential and single-ended encoding for communicating between IC devices 202 and 230. In one example, the MIPI Alliance-defined “D-PHY” physical layer interface technology may be used to connect camera and display devices 230 to an application processor device 202. The D-PHY interface can switch between a differential (High-speed) mode and a single-ended (Low Power) mode in real time as needed to facilitate the transfer of large amounts of data or to conserve power and prolong battery life. The D-PHY interface is capable of operating in simplex or duplex configuration with single data lane or multiple data lanes with a unidirectional (Master to Slave) clock lane.
On the reverse channel 224, one or more pairs of wires 710c may be driven by a client-side differential driver 726. The differential driver 726 receives an input data stream 728 and generates positive and negative versions of the input data stream 728, which are provided to the pair of wires 710c. The differential receiver 724 on the host generates an output data stream 722 by performing a comparison of the signals carried on the pair of wires 710c.
In a bidirectional channel 226, the host and client may be configured for half-duplex mode and may transmit and receive data on the same pair of wires 710b. A bidirectional bus may alternatively or additionally be operated in full-duplex mode using combinations of the forward and reverse link differential drivers 704, 726 to drive multiple pairs of wires 710a, 710c. In the half-duplex bidirectional implementation depicted for the bidirectional channel 226, the differential drivers 714 and 714′ may be prevented from driving the pair of wires 710b simultaneously using, for example, an output enable (OE) control 720a, 720c (respectively) to force the differential drivers 714 and 714′ into a high impedance state. The differential receiver 716′ may be prevented from driving the input/output 712 while the differential driver 714 is active, typically using an OE control 720b to force the differential receiver 716′ into a high impedance state. The differential receiver 716 may be prevented from driving the input/output 718 while the differential driver 714′ is active, typically using an OE control 720d to force the differential receiver 716 into a high impedance state. In some instances, the outputs of the differential drivers 714 and 714′ and the differential receivers 716 and 716′ may be in a high-impedance state when the interface is not active. Accordingly, the OE controls 720a, 720c, 720b and 720c of the differential drivers 714, 714′, and the differential receivers 716 and 716′ may be operated independently of one another.
Each of the differential drivers 704, 714, 714′ and 726 may include a pair of amplifiers, one receiving at one input the inverse of the input of the other amplifier. The differential drivers 704, 714, 714′ and 726 may each receive a single input and may have an internal inverter that generates an inverse input for use with a pair of amplifiers. The differential drivers 704, 714, 714′ and 726 may also be constructed using two separately controlled amplifiers, such that their respective outputs can be placed in high impedance mode independently of one another.
When a D-PHY implementation of the communication link 220 (see
The display subsystem 850 may include a unidirectional data link 858, which may be configured and operated according to D-PHY or C-PHY protocols. In the application processor 852, a clock source such as the PLL 854 may be used to generate a clock signal for controlling transmissions on the data link 858. At the display driver 860, a D-PHY or C-PHY receiver 862 may extract embedded clock information from sequences of symbols transmitted on the data link, or from a clock lane provided in the data link 858.
Devices adapted according to certain aspects disclosed herein may resolve issues arising from the complexities and hindrances associated with the use of optical media to extend the length of communication links that compliant or compatible with MIPI standards. Certain aspects disclosed herein relate to systems, apparatus and methods that support a broad range of interface protocols, and that can operate using different physical media. As shown in
Signaling Levels in C-PHY and D-PHY Interfaces
In the high-speed communication mode 902, signals are centered on a high-speed common (HSCommon) voltage level 908, which is offset from a reference ground voltage level 906. Signals in the high-speed communication mode 902 have a voltage range 918 that ensures that high-speed signals 916 do not exceed a logic low threshold voltage level (LPLow_thresh) 910, which defines the upper limit for logic low in the low-power communication mode 904. In one D-PHY example, the HSCommon voltage level 908 may be nominally defined to be 200 millivolts (mV), and the voltage range 918 for high-speed signals may be nominally defined to be 200 mV. In one C-PHY example, the HSCommon voltage level 908 may be nominally defined to be 250 millivolts (mV), and the voltage range 918 for high-speed signals may be nominally defined to be 250 mV.
In the low-power communication mode 904, signals switch between a maximum low-power (LPmax) voltage level 914 and the reference ground voltage level 906. The logic low voltage levels LPLow_thresh 910 and the logic high threshold voltage level (LPHigh_thresh) 912 define the switching voltage levels for high-to-low transitions and low-to high transitions, respectively. In one example, the maximum low-power (LPmax) voltage level 914 may be nominally defined at 1.2 Volts (V).
Packet Structure in CSI-2 C-PHY and D-PHY Interfaces
The C-PHY interface effectively transmits duplicate information in the packet header 1206 to assist in detection of symbol transmission errors. One symbol error in a C-PHY may result in a multi-bit burst error after decoding, due to the nature of transition encoding. At each symbol transmission boundary, a transmission symbol is selected based on the output of the mapper and the value of the preceding symbol. A symbol error may result in a decoding error at each boundary between the preceding and succeeding errors. An ECC that can correct only one bit error does not protect a mission critical packet header. Therefore, the illustrated MIPI CSI-2 long packet for C-PHY transmits a duplicate packet header and CRC codes are used for error detection in each copy of the packet header.
Another sync symbol sequence (SSS 1326) is transmitted after the second copy of the packet header 1306b. The SSS 1326 may be repeated a number of times, where the number of repetitions corresponds to the number of lanes. The payload data 1308 is then transmitted, followed by a packet footer 1310 that includes a checksum code. An end of transmission (EoT) code 1312 may be transmitted to return the C-PHY interface to a low-power state 1314.
The C-PHY interface effectively transmits duplicate information in the packet header 1306 to assist in detection of symbol transmission errors. One symbol error in a C-PHY may result in a multi-bit burst error after decoding, due to the nature of transition encoding. At each symbol transmission boundary, a transmission symbol is selected based on the output of the mapper and the value of the preceding symbol. A symbol error may result in a decoding error at each boundary between the preceding and succeeding errors. An ECC that can correct only one-bit error does not protect a mission critical packet header. Therefore, the illustrated MIPI DSI-2 long packet for C-PHY transmits a duplicate packet header and CRC codes are used for error detection in each copy of the packet header.
Multiple Sync Word Types for C-PHY Interfaces
According to certain aspects disclosed herein, different Sync Word values can be used in a C-PHY interface. The Sync Word values can be used by a transmitter to signal information related to information transmitted after a sync symbol sequence. In one example, different Sync Word values can be used to identify different sections of the display packet in a C-PHY interface operated in accordance with a MIPI Alliance DSI protocol. In another example, different Sync Word values can be used to identify different sections of image data when a C-PHY interface is operated in accordance with a MIPI Alliance CSI protocol. The use of different Sync Word values can facilitate error recovery. For example, different Sync Word values enables a receiving device to recreate a packet in a reliable manner after some packet fields were not properly received. Conventional systems using a single type of Sync Word generally cannot reliably determine which sections are lost or corrupted, and packet reconstruction may be more difficult.
Certain conventional C-PHY interfaces are configured to recognize a single sync symbol sequence. These C-PHY interfaces identify a 7-symbol Sync Word based on the first 6 symbols in the transmitted sync symbol sequence. The last symbol may be ignored. The 7-symbol sync symbol sequence has the value 344444x, where “x” represents a “don't care” symbol value. The purpose of recognizing only 6 of the 7 symbols is to provide error resilience in cases where there are symbol errors or where an error results in a duplicated wire-state which can cause a symbol clock-slip event.
In a C-PHY interface operated in accordance with certain aspects disclosed herein, all symbols in a 7-symbol sync symbol sequence can have significance. The last symbol value of the 7-symbol sync symbol sequence may serve as a Sync Word Type identifier. A receiver may detect the Sync Word based on the first 6 symbols in the sync symbol sequence, and may identify a Sync Type based on the value of the last symbol in the sync symbol sequence. Table 1 illustrates one allocation of Sync Word Types.
Word Types. A transmitter 1502 includes a transmitter protocol unit (TxPU 1504) that communicates with the transmitter C-PHY interface 1506 through a transmitter PHY-Protocol Interface (TxPPI 1508). A receiver 1522 includes a receiver protocol unit (RxPU 1524) that communicates with the receiver C-PHY interface 1526 through a receiver PHY-Protocol Interface (RxPPI 1528). The transmitter 1502 and receiver 1522 are coupled to the three wires 1542, 1544, 1546 of the C-PHY link 1540.
In some implementations, the TxPU 1504 may send a Sync Word Type signal 1514 to be transmitted with transmit data (TxData 1512). The TxData 1512 may be a packet header, payload or some other unit of data. The transmitter C-PHY interface 1506 may use the Sync Word Type signal 1514 to select a corresponding SSS Value in a sync symbol sequence that precedes the TxData 1512 in transmission. The sync symbol sequence may be transmitted under control of the TxPU 1504 through a Send_Sync control signal 1516, for example. The TxPU 1504 may additionally select a Tx Word Clock 1518 to be used to clock transmissions on the C-PHY link 1540.
At the receiver 1522, a Sync Word Type may be determined from a received sync symbol sequence. The Sync Word Type may be reported in a signal 1534 through the RxPPI 1528 to the RxPU 1524. The RxPU can use this Sync Word Type to definitively identify different portions of a packet received as RxData 1532 through the RxPPI 1528. When an error event occurs that corrupts parts of a packet, the RxPPI 1528 may assemble other parts of the packet based on reported Sync Word Types.
Scrambling in CSI-2 C-PHY Interfaces
Progress in device technology has resulted in ever-increasing clock frequencies, and reduced feature sizes in IC devices. Increased frequency and decreased separation of signals can result in increased electromagnetic interference (EMI) that may affect the operation of a C-PHY Interface. Packet data scrambling using a pseudo-random binary sequence (PRBS) seed word may be implemented to combat and/or minimize EMI in some C-PHY and D-PHY Interfaces.
With reference to
A Sync Word 1632, 1636 is transmitted before each packet header of the two duplicated packet headers in order to prevent propagation of errors caused by loss of synchronization in the first packet header 1622 or 1626 of the two duplicated packet headers. Loss of synchronization may occur due to a symbol error with symbol slip (extra symbol or symbol miss). The insertion of the second Sync Word 1632, 1636 can prevent the error effect from propagating through the rest of the transmission, including through the second packet header 1624 or 1628. In a C-PHY Interface, the Sync Word 1632, 1636 enables re-synchronization of a receiver to a C-PHY word boundary after occurrence of a symbol slip.
PRBS scrambling applied to a CSI-2 C-PHY packet results in two identical scrambled symbol sequences (which is what PRBS scrambling is designed to avoid) that can result in in larger EMI, because the PRBS scrambler is reset at the beginning of each duplicated packet header 1622, 1624 and 1626, 1628. The PRBS scrambler is reset at the occurrence of a Sync Word 1630, 1632, 1634, 1636 as part of the synchronization process. The reset of the PRBS scrambler allows a descrambler of the receiver to be reset at the same time and provide synchronization between the scrambling and descrambling functions.
Avoiding Identical Scrambled Symbol Sequences in C-PHY Interfaces
According to certain aspects disclosed herein, the occurrence of identical scrambled symbol sequences can be avoided in C-PHY interfaces through the use of multiple PRBS seed values, and/or by modifying the order or content of duplicated packet headers.
In some examples, more than two seed values can be used as needed or desired. In some instances, different seed values may be used for different lanes. The scrambler may select seeds by alternating or toggling between two PRBS seeds as illustrated in
In some instances, a Sync Word error may occur, and the error may result in the receiver and transmitter using different seed words for scrambling and descrambling, respectively. For example, a Sync Word error may cause the receiver to fail to synchronize to the first packet header, and the receiver may then view the second packet header which is scrambled using Seed1 as the first packet header scrambled with Seed0. The use of an incorrect seed word may be averted by using two different 7-symbol sequences to provide two Sync Word versions. When Sync Word versions are available, the transmitter may send one Sync Word in advance of the first packet header and a different Sync Word ahead of the second packet header. The receiver can then determine which packet header is being received by identifying the Sync Word proceeding the packet header. In some embodiments, two or more versions of the Sync Word may be defined, and each version may be associated with a different seed value. In these embodiments, the receiver may initialize the descrambler using the seed word assigned to the received preceding Sync Word.
In some examples, the effect of a Sync Word error may be limited by providing a receiver with two or more PRBS descramblers. Each PRBS descrambler may be configured with a different seed word and may decode the same packet header in parallel to one another. For example, a first descrambler may be configured to use Seed0, while a second descrambler may be configured to use Seed1 such that one of the descramblers produces a correctly descrambled second packet header regardless of any Sync Word error that may affect the first-transmitted packet header. The correctly descrambled packet header yields a correct CRC. If neither descrambled packet header produces a correct CRC, then there is a packet header error present in the received transmission.
In some examples, one of the duplicate packet headers may be altered in a predefined manner prior to scrambling in order to produce a different result when the same seed is used for scrambling both versions of the packet header. In one example, the order of fields in a duplicate packet header may be reversed. In another example, the endianess of one or more bytes may be changed in a duplicate packet header where endianess may refer to the order of bits in a byte or word. In another example, a counter value or other enumeration may be expressed differently in duplicate packets. In another example, one or more bytes may be subjected to binary inversion.
Scrambling Code Diversity and Identifying Scrambling Codes
According to certain aspects, more than two seed values may be defined for scrambling packet headers in a C-PHY interface. In some aspects, two or more types of Sync Word may be transmitted. Various combinations of seed values and Sync Word types may be used. For example, multiple seed values may be used with a single type of Sync Word, multiple seed values may be used with a multiple types of Sync Word, or a single seed value may be used with multiple types of Sync Word.
In some examples, multiple seed values may be used with multiple types of Sync Word. In one example, a device may be configured to use at least 4 PRBS seed values 1824, 1826, 1828, 1830, such that different PRBS seed values 1824, 1828 are used for payloads 1820, 1822 transmitted after a first Sync 1812, 1816 and for the payloads 1820, 1822 transmitted after the second Sync 1814, 1818. The PRBS seed values 1824, 1826, 1828, 1830 may be selected according to protocol and/or sequentially from a list of values provided to a transmitter and a receiver coupled to the C-PHY interface. The transmitter and receiver may employ state information associated with a state machine or other controller to select a seed value based on current state of transmission. State information may indicate the next expected transmission (next first header, second header, payload, etc.), state of the interface (synchronized, error, reset, etc.), for example.
When multiple seed values are used with multiple types of Sync Word, a transmitting device coupled to a receiving device through a C-PHY interface may indicate which PRBS seed value 1824, 1826, 1828, 1830 is being used to scramble a packet header. In some instances, the transmitting device may indicate a group (e.g. a pair) from which the PRBS seed values 1824, 1826, 1828, 1830 are selected to be used for scrambling packet headers for a current payload 1820, 1822. In some instances, the transmitting device may indicate an initial PRBS seed value 1824, 1826, 1828 or 1830 used for scrambling packet headers for a current payload 1820, 1822. In some implementations, the transmitting device may provide information related to usage of PRBS seed values 1824, 1826, 1828, 1830 in a transmission of configuration information. In some implementations, the transmitting device may provide information related to usage of PRBS seed values 1824, 1826, 1828, 1830 in “out-of-band” signaling.
In one example, out-of-band signaling may be implemented by providing multiple types of Sync Word 1812, 1814, 1816, 1818 that the transmitting device may use to identify PRBS seed values 1824, 1826, 1828, 1830. In this example, the transmitting device may transmit Sync Words 1812, 1814, 1816, 1818 that have a direct association with PRBS seed values 1824, 1826, 1828, 1830, or to groups of PRBS seed values 1824, 1826, 1828, 1830. In one example, a Sync Word 1812, 1814, 1816, 1818 may be defined for each available PRBS seed value 1824, 1826, 1828, 1830, and the transmitting device may select a PRBS seed value 1824, 1826, 1828, 1830 and its corresponding Sync Word 1812, 1814, 1816, 1818 using pseudo-random sequencing or any other algorithm or selection process. In another example, a Sync Word 1812, 1814, 1816, 1818 may be defined for a pair of the PRBS seed values 1824, 1826, 1828, 1830, and the transmitting device may select a pair of the PRBS seed values 1824, 1826, 1828, 1830 and a corresponding Sync Word 1812, 1814, 1816, 1818 for transmitting in advance of a payload 1820, 1822. In another example, a pseudo-random sequence used to select from the available PRBS seed values 1824, 1826, 1828, 1830 may itself be seeded based on the Sync Word 1812, 1814, 1816, 1818 used by the transmitter to initiate transmission of a payload 1820, 1822 or a transaction involving multiple payloads 1820, 1822.
In another example, a single seed value may be used with multiple types of Sync Word. Here, each copy of the packet header is scrambled using a common PRBS seed value (e.g., Seed0=Seed1=Seed2=Seed3) and the signaling state of the C-PHY interface may be manipulated by transmitting different types of Sync Word 1812, 1814, 1816, 1818. For example, the different types of Sync Word 1812, 1814, 1816, 1818 may be configured to leave the C-PHY interface in different signaling states after transmission of the Sync Word 1812, 1814, 1816, 1818 such that identical scrambled packet headers produce a different signaling pattern. In a C-PHY interface, a next-transmitted symbol is selected based on the preceding symbol. Accordingly, the first signaling state of the C-PHY interface attributable to the scrambled packet header is based in part on the signaling state of the C-PHY interface after a Sync Word 1812, 1814, 1816, 1818 has been transmitted. The same scrambled packet header produces a different sequence of signaling states for different starting signaling states of the C-PHY interface.
Different 7-symbol sequences may be provided for use as Sync Words 1812, 1814, 1816, 1818. When multiple Sync Word types are available, a transmitter may use one or more Sync Words 1812, 1814, 1816, 1818 to signal a receiver. For example, the transmitter may select different Sync Words 1812, 1814, 1816 or 1818 to precede different copies of the packet header. The Sync Word type may indicate that the first copy of the packet header is to follow, the second copy of the packet header is to follow, or the payload is to follow. In another example, the transmitter may use one or more Sync Words 1812, 1814, 1816, 1818 to indicate to a receiver which PRBS seed value 1824, 1826, 1828, 1830 was used to scramble the following packet header or payload.
Different Sync Word types may be implemented by modifying one or more symbols in a 7-symbol sequence. Referring also to
When different Sync Words 1812, 1814, 1816 or 1818 are used to indicate seed-related information for a payload 1820, 1822, a receiver can select the appropriate PRBS seed values 1824, 1826, 1828, 1830 to configure its descrambler based on the received Sync Word 1812, 1814, 1816 or 1818. In some instances, a transmitter may employ an algorithm to select a PRBS seed value 1824, 1826, 1828, 1830 for scrambling the next packet header, and the transmitter may then select a corresponding Sync Word 1812, 1814, 1816 or 1818 to precede the scrambled packet header. The transmitter may select the seed value 1824, 1826, 1828, 1830 using an algorithm, pattern, a pseudo-random sequence, or other ordering or selection process.
In some implementations, different Sync Words 1812, 1814, 1816, 1818 may be associated with corresponding seed values by protocol. As illustrated in
Examples of Processing Circuits and Methods
In the illustrated example, the processing circuit 1902 may be implemented with a bus architecture, represented generally by the bus 1910. The bus 1910 may include any number of interconnecting buses and bridges depending on the specific application of the processing circuit 1902 and the overall design constraints. The bus 1910 links together various circuits including the one or more processors 1904, and storage 1906. Storage 1906 may include memory devices and mass storage devices, and may be referred to herein as computer-readable media and/or processor-readable media. The bus 1910 may also link various other circuits such as timing sources, timers, peripherals, voltage regulators, and power management circuits. A bus interface 1908 may provide an interface between the bus 1910 and one or more line interface circuits 1912. A line interface circuit 1912 may be provided for each networking technology supported by the processing circuit. In some instances, multiple networking technologies may share some or all of the circuitry or processing modules found in a line interface circuit 1912. Each line interface circuit 1912 provides a means for communicating with various other apparatus over a transmission medium. Depending upon the nature of the apparatus, a user interface 1918 (e.g., keypad, display, speaker, microphone, joystick) may also be provided, and may be communicatively coupled to the bus 1910 directly or through the bus interface 1908.
A processor 1904 may be responsible for managing the bus 1910 and for general processing that may include the execution of software stored in a computer-readable medium that may include the storage 1906. In this respect, the processing circuit 1902, including the processor 1904, may be used to implement any of the methods, functions and techniques disclosed herein. The storage 1906 may be used for storing data that is manipulated by the processor 1904 when executing software, and the software may be configured to implement any one of the methods disclosed herein.
One or more processors 1904 in the processing circuit 1902 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 1906 or in an external computer readable medium. The external computer-readable medium and/or storage 1906 may include 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. The computer-readable medium and/or storage 1906 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 1906 may reside in the processing circuit 1902, in the processor 1904, external to the processing circuit 1902, or be distributed across multiple entities including the processing circuit 1902. The computer-readable medium and/or storage 1906 may be embodied in a computer program product. By way of example, a computer program product may include a computer-readable medium in packaging materials. Those skilled in the art will recognize how best to implement the described functionality presented throughout this disclosure depending on the particular application and the overall design constraints imposed on the overall system.
The storage 1906 may maintain software maintained and/or organized in loadable code segments, modules, applications, programs, etc., which may be referred to herein as software modules 1916. Each of the software modules 1916 may include instructions and data that, when installed or loaded on the processing circuit 1902 and executed by the one or more processors 1904, contribute to a run-time image 1914 that controls the operation of the one or more processors 1904. When executed, certain instructions may cause the processing circuit 1902 to perform functions in accordance with certain methods, algorithms and processes described herein.
Some of the software modules 1916 may be loaded during initialization of the processing circuit 1902, and these software modules 1916 may configure the processing circuit 1902 to enable performance of the various functions disclosed herein. For example, some software modules 1916 may configure internal devices and/or logic circuits 1922 of the processor 1904, and may manage access to external devices such as the line interface circuit 1912, the bus interface 1908, the user interface 1918, timers, mathematical coprocessors, and so on. The software modules 1916 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 1902. The resources may include memory, processing time, access to the line interface circuit 1912, the user interface 1918, and so on.
One or more processors 1904 of the processing circuit 1902 may be multifunctional, whereby some of the software modules 1916 are loaded and configured to perform different functions or different instances of the same function. The one or more processors 1904 may additionally be adapted to manage background tasks initiated in response to inputs from the user interface 1918, the line interface circuit 1912, and device drivers, for example. To support the performance of multiple functions, the one or more processors 1904 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 1904 as needed or desired. In one example, the multitasking environment may be implemented using a timesharing program 1920 that passes control of a processor 1904 between different tasks, whereby each task returns control of the one or more processors 1904 to the timesharing program 1920 upon completion of any outstanding operations and/or in response to an input such as an interrupt. When a task has control of the one or more processors 1904, the processing circuit is effectively specialized for the purposes addressed by the function associated with the controlling task. The timesharing program 1920 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 1904 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 1904 to a handling function.
At block 2002, the device may initialize a scrambler with a first PRBS seed word after receiving a first Sync Word. The first Sync Word may precede a first packet.
At block 2004, the device may use the scrambler and the first PRBS seed word to scramble a first copy of a packet header that succeeds the first Sync Word in the first packet.
At block 2006, the device may initialize the scrambler with a second PRBS seed word after scrambling the first copy of the packet header. The second Sync Word may succeed the first copy of the packet header in the first packet.
At block 2008, the device may use the scrambler and the second PRBS seed word to scramble a second copy of the packet header that succeeds the second Sync Word in the first packet.
In one example, the device may initialize the scrambler with the first PRBS seed word after receiving a third Sync Word. The third Sync Word may precede a second packet.
In another example, the device may initialize the scrambler with a third PRBS seed word after receiving a third Sync Word. The third Sync Word may precede a second packet.
In some instances, the device may scramble a payload of the first packet using the second PRBS seed word. The device may encode the first packet in sequences of symbols after scrambling the first copy of the packet header, the second copy of the packet header and the payload of the first packet.
At block 2102, the device may provide a first Sync Word. The first Sync Word may be associated with a first packet. For example, the first Sync Word may precede the first packet in transmission.
At block 2104, the device may initialize a scrambler with a first PRBS seed word after providing the first Sync Word.
At block 2106, the device may use the scrambler and the first PRBS seed word to scramble a first copy of a packet header to obtain a first scrambled packet header.
At block 2108, the device may provide a second Sync Word. The second Sync Word may be associated with the first packet. For example, the second Sync Word may precede the first packet in transmission and be transmitted after the first Sync Word.
At block 2110, the device may initialize the scrambler with a second PRBS seed word after providing the second Sync Word.
At block 2112, the device may use the scrambler and the second PRBS seed word to scramble a second copy of the packet header to obtain a second scrambled packet header.
In some examples, the device may transmit the first Sync Word followed by the first scrambled packet header on the multi-wire transition-encoded interface. After transmitting the first scrambled packet header, the device may transmit the second Sync Word followed by the second scrambled packet header on the multi-wire transition-encoded interface. After transmitting the second scrambled packet header, the device may transmit the packet on the multi-wire transition-encoded interface.
In some instances, the device may provide a third Sync Word. The third Sync Word may be associated with a second packet. For example, the third Sync Word may precede the second packet in transmission. The device may initialize the scrambler with a third PRBS seed word after providing the third Sync Word. In one example, the first Sync Word and the third Sync Word have a same value.
In another example, the first Sync Word, the second Sync Word, and the third Sync Word have different values. The first Sync Word may be transmitted on the multi-wire transition-encoded interface only when the scrambler is initiated with the first PRBS seed word. The second Sync Word may be transmitted on the multi-wire transition-encoded interface only when the scrambler is initiated with the second PRBS seed word. The third Sync Word may be transmitted on the multi-wire transition-encoded interface only when the scrambler is initiated with the third PRBS seed word.
In another example, the first Sync Word, the second Sync Word, and the third Sync Word are selected according to a pseudorandom sequence.
In some instances, the device may scramble a payload of the first packet using the second PRBS seed word. The device may encode the first packet in sequences of symbols after scrambling the first copy of the packet header, the second copy of the packet header and the payload of the first packet. The device may transmit the first packet over the multi-wire transition-encoded interface in sequences of symbols after scrambling the first copy of the packet header, the second copy of the packet header and the payload of the first packet.
The processor 2216 is responsible for general processing, including the execution of software stored on the computer-readable storage medium 2218. The software, when executed by the processor 2216, causes the processing circuit 2202 to perform the various functions described supra for any particular apparatus. The computer-readable storage medium 2218 may also be used for storing data that is manipulated by the processor 2216 when executing software, including data decoded from symbols transmitted over the communication link 2214, which may be configured as data lanes and clock lanes. The processing circuit 2202 further includes at least one of the modules 2204, 2206, and 2208. The modules 2204, 2206, and 2208 may be software modules running in the processor 2216, resident/stored in the computer-readable storage medium 2218, one or more hardware modules coupled to the processor 2216, or some combination thereof. The 2204, 2206, and/or 2208 may include microcontroller instructions, state machine configuration parameters, or some combination thereof.
In one configuration, the apparatus 2200 for data communication includes modules and/or circuits 2208 configured to receive and process packets for transmission over the communication link 2214, modules and/or circuits 2206 configured to scramble each packet using a plurality of seeds, and modules and/or circuits 2204, 2212 configured to encode scrambled data in sequences of symbols to be transmitted over the communication link 2214.
At block 2302, the device may initialize a first descrambler with a first PRBS seed word after receiving a first Sync Word, the first Sync Word preceding a first packet.
At block 2304, the device may use the first descrambler and the first PRBS seed word to descramble a first copy of a packet header that succeeds the first Sync Word in the first packet.
At block 2306, the device may initialize the first descrambler with a second PRBS seed word after receiving a second Sync Word, the second Sync Word succeeding the first copy of the packet header in the first packet.
At block 2308, the device may use the first descrambler and the second PRBS seed word to descramble a second copy of the packet header that succeeds the second Sync Word in the first packet.
In one example, the multi-wire transition-encoded interface is a C-PHY interface defined by Mobile Industry Processor Interface (MIPI) Alliance specifications.
In some instances, the device may initialize the first descrambler with the first PRBS seed word after receiving a third Sync Word, where the third Sync Word precedes a second packet.
In some instances, the device may initialize the first descrambler with a third PRBS seed word after receiving a third Sync Word, where the third Sync Word precedes a second packet. The device may descramble a payload of the first packet using the second PRBS seed word.
In some instances, the device may initialize the first descrambler with the first PRBS seed word after receiving a third Sync Word, the third Sync Word preceding a second packet, initialize a second descrambler with the second PRBS seed word after receiving the third Sync Word, use the first descrambler and the first PRBS seed word to descramble a header in the second packet, use the second descrambler and the second PRBS seed word to descramble the header in the second packet, and determine which of the first PRBS seed word and the second PRBS seed word was used to scramble the header based on CRC information in outputs of the first descrambler and the second descrambler. The CRC information may also identify when a packet header has been affected by transmission errors.
In one example, the first sync word, the second sync word, and the third sync word may be selected according to a pseudorandom sequence. In another example, the type or value of the sync word to be transmitted may be used to determine which seed word is provided for initializing the scrambler. In another example, the first PRBS seed word is used for scrambling after the first sync word is transmitted, the second PRBS seed word is used for scrambling after the second sync word is transmitted, and the third PRBS seed word is used for scrambling after the third sync word is transmitted.
The processor 2416 is responsible for general processing, including the execution of software stored on the computer-readable storage medium 2418. The software, when executed by the processor 2416, causes the processing circuit 2402 to perform the various functions described supra for any particular apparatus. The computer-readable storage medium 2418 may also be used for storing data that is manipulated by the processor 2416 when executing software, including data decoded from symbols transmitted over the communication link 2414, which may be configured as data lanes and clock lanes. The processing circuit 2402 further includes at least one of the modules 2404, 2406, and 2408. The modules 2404, 2406, and 2408 may be software modules running in the processor 2416, resident/stored in the computer-readable storage medium 2418, one or more hardware modules coupled to the processor 2416, or some combination thereof. The 2404, 2406, and/or 2408 may include microcontroller instructions, state machine configuration parameters, or some combination thereof.
In one configuration, the apparatus 2400 for data communication includes modules and/or circuits 2408 configured to receive and process packets from the communication link 2414, modules and/or circuits 2406 configured to descramble each packet using a plurality of seeds, and modules and/or circuits 2404, 2412 configured to decode scrambled data in sequences of symbols received from the communication link 2414.
It is understood that the specific order or hierarchy of steps in the processes disclosed is an illustration of exemplary approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the processes may be rearranged. The accompanying method claims present elements of the various steps in a sample order, and are not meant to be limited to the specific order or hierarchy presented.
The previous description is provided to enable any person skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein, but is to be accorded the full scope consistent with the language claims, wherein reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more.” Unless specifically stated otherwise, the term “some” refers to one or more. All structural and functional equivalents to the elements of the various aspects described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims. No claim element is to be construed as a means plus function unless the element is expressly recited using the phrase “means for.”
This application claims the benefit of U.S. Provisional Application Ser. No. 62/245,148 filed in the U.S. Patent Office on Oct. 22, 2015, U.S. Provisional Application Ser. No. 62/377,876 filed in the U.S. Patent Office on Aug. 22, 2016, and U.S. Provisional Application Ser. No. 62/380,841 filed in the U.S. Patent Office on Aug. 29, 2016, the entire content of these applications being incorporated herein by reference and for all applicable purposes.
Number | Date | Country | |
---|---|---|---|
62245148 | Oct 2015 | US | |
62377876 | Aug 2016 | US | |
62380841 | Aug 2016 | US |