EP3117527B1 - Method for using error correction codes with n factorial or cci extension - Google Patents
Method for using error correction codes with n factorial or cci extension Download PDFInfo
- Publication number
- EP3117527B1 EP3117527B1 EP15715002.0A EP15715002A EP3117527B1 EP 3117527 B1 EP3117527 B1 EP 3117527B1 EP 15715002 A EP15715002 A EP 15715002A EP 3117527 B1 EP3117527 B1 EP 3117527B1
- Authority
- EP
- European Patent Office
- Prior art keywords
- symbols
- sequence
- error correction
- correction code
- transition
- 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.)
- Not-in-force
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0041—Arrangements at the transmitter end
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/31—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining coding for error detection or correction and efficient use of the spectrum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/40—Bus structure
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M5/00—Conversion of the form of the representation of individual digits
- H03M5/02—Conversion to or from representation by pulses
- H03M5/04—Conversion to or from representation by pulses the pulses having two levels
- H03M5/06—Code representation, e.g. transition, for a given bit cell depending only on the information in that bit cell
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M5/00—Conversion of the form of the representation of individual digits
- H03M5/02—Conversion to or from representation by pulses
- H03M5/04—Conversion to or from representation by pulses the pulses having two levels
- H03M5/14—Code representation, e.g. transition, for a given bit cell depending on the information in one or more adjacent bit cells, e.g. delay modulation code, double density code
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0041—Arrangements at the transmitter end
- H04L1/0042—Encoding specially adapted to other signal generation operation, e.g. in order to reduce transmit distortions, jitter, or to improve signal shape
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0057—Block codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L25/00—Baseband systems
- H04L25/02—Details ; arrangements for supplying electrical power along data transmission lines
- H04L25/0264—Arrangements for coupling to transmission lines
- H04L25/0272—Arrangements for coupling to multiple lines, e.g. for differential transmission
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L25/00—Baseband systems
- H04L25/02—Details ; arrangements for supplying electrical power along data transmission lines
- H04L25/14—Channel dividing arrangements, i.e. in which a single bit stream is divided between several baseband channels and reassembled at the receiver
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L2001/0092—Error control systems characterised by the topology of the transmission link
- H04L2001/0094—Bus
Definitions
- the present disclosure relates generally to an interface between a host processor and a peripheral device such as a camera and, more particularly, to improving error correction processes on an N -factorial or camera control communication interface bus.
- Manufacturers of mobile devices may obtain components of the mobile devices from various sources, including different manufacturers.
- an 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.
- the application processor and a display or other device may be interconnected using a standards-based or proprietary physical interface.
- a display may provide an interface that conforms to the Display System Interface (DSI) standard specified by the Mobile Industry Processor Interface Alliance (MIPI).
- DSI Display System Interface
- MIPI Mobile Industry Processor Interface Alliance
- a multi-signal data transfer system may employ multi-wire differential signaling such as 3-phase or N -factorial ( N ! low-voltage differential signaling (LVDS), transcoding (e.g., the digital-to-digital data conversion of one encoding type to another) may be performed to embed symbol clock information by causing a symbol transition at every symbol cycle, instead of sending clock information in separate data lanes (differential transmission paths).
- Embedding clock information by transcoding is an effective way to minimize skew between clock and data signals, as well as to eliminate the necessity of a phase-locked loop (PLL) to recover the clock information from the data signals.
- PLL phase-locked loop
- a camera control interface defined by MIPI standards uses a two-wire, bi-directional, half duplex, serial interface configured as a bus connecting a master and one or more slaves.
- Conventional CCI is compatible with a protocol used in a variant of the Inter-Integrated Circuit (I2C) bus and is capable of handling multiple slaves on the bus, with a single master.
- the CCI bus may include Serial Clock (SCL) and Serial Data (SDA) lines.
- SCL Serial Clock
- SDA Serial Data
- a CCI extension (CCIe) bus may be used to provide higher data rates for devices that are compatible with CCIe bus operations. Such devices may be referred to as CCIe devices, and the CCIe devices can attain higher data rates when communicating with each other by encoding data as symbols transmitted on both the SCL line and the SDA line of a conventional CCI bus.
- an code word of type t can be concatenated with an code word of the next sub-code if said subsequent code word of said next sub-code belongs to one of coding states of the coding class with index Tmax+1 t.
- the overall code has the property that the respective channel bit sequences that are encoded from the same message-bit sequence, starting from any possible state of the finite-state-machine, for each of the two values of a DC-control bit, that is part of a given user word have opposite parities for the sequences generated from the starting state up to the state where both encoder paths merge. For the case that the encoder paths do not merge, there is no such constraint.
- PCWA parity-complementary word assignment4
- the Bliss-scheme is used, by which RLL coding is performed separately on user data and on parity data generated by error correction coding (LDPC) of the RLL-coded user data.
- a method of data communications includes converting a data payload to a set of transition numbers, converting the set of transition numbers to a sequence of symbols, calculating an error correction code (ECC) from symbols in the sequence of symbols that correspond to the data payload, appending the ECC to the data payload such that the set of transition numbers includes transition numbers corresponding to the ECC, and transmitting the sequence of symbols on a plurality of signal wires.
- ECC error correction code
- converting the set of transition numbers to the sequence of symbols includes using a transition number to select a next symbol relative to a current symbol.
- a value of the transition number represents a separation between the current symbol and the next symbol in a table of available symbols.
- clock information is encoded in the sequence of symbols.
- the clock information may be encoded by ensuring that each pair of consecutive symbols in the sequence of symbols includes two symbols that produce different signaling states on the plurality of signal wires.
- an error correction code may be calculated for each of a plurality of signals transmitted on the plurality of signal wires.
- the plurality of signals may correspond to the sequence of symbols.
- the error correction codes calculated for the plurality of signals may be appended to the data payload.
- Each of the plurality of signals may correspond to a bit in each symbol in the sequence of symbols.
- the plurality of signal wires is provided in a CCIe bus.
- the data payload may include two CCIe words.
- transmitting the sequence of symbols includes transmitting each symbol in the sequence of symbols on differential signals carried on different combinations of two signal wires selected from the plurality of signal wires.
- Each of the differential signals may correspond to a bit of each symbol.
- the ECC may be calculated by calculating an error correction code for each differential signal.
- error correction logic can correct one error in each differential signal for each sequence of symbols.
- an apparatus for data communications includes means for converting a data payload to a set of transition numbers, means for converting the set of transition numbers to a sequence of symbols, means for calculating an ECC from symbols in the sequence of symbols that correspond to the data payload, means for appending the ECC to the data payload such that the set of transition numbers includes transition numbers corresponding to the ECC, and means for transmitting the sequence of symbols on a plurality of signal wires.
- the means for converting the set of transition numbers is configured to encode clock information in the sequence of symbols by ensuring that each pair of consecutive symbols in the sequence of symbols includes two symbols that produce different signaling states on the plurality of signal wires.
- a transmitter includes a plurality of line drivers configured to transmit a plurality of signals on an N wire interface and a processing circuit configured to convert a data payload to a set of transition numbers, convert the set of transition numbers to a sequence of symbols, calculate an ECC from symbols in the sequence of symbols that correspond to the data payload, append the ECC to the data payload such that the set of transition numbers includes transition numbers corresponding to the error correction code, and transmit the sequence of symbols on the plurality of signal wires.
- a processor-readable storage medium has one or more instructions stored thereon.
- the instructions when executed by a processing circuit, cause the processing circuit to convert a data payload to a set of transition numbers, convert the set of transition numbers to a sequence of symbols, calculate an ECC from symbols in the sequence of symbols that correspond to the data payload, append the ECC to the data payload such that the set of transition numbers includes transition numbers corresponding to the ECC, and transmit the sequence of symbols on a plurality of signal wires.
- a method of data communications includes receiving a sequence of symbols from a plurality of signal wires, calculating a first ECC from a plurality of symbols in the sequence of symbols, the plurality of symbols corresponding to a data payload carried in the sequence of symbols, converting the sequence of symbols to a set of transition numbers, converting the set of transition numbers to obtain a data packet that includes the data payload and a second ECC, the second ECC having been calculated by a transmitter of the sequence of symbols, determining whether one or more errors are present in the sequence of symbols based on a comparison of the first ECC with the second ECC, and providing the data payload as receiver output data.
- At least one error in the sequence of symbols is corrected using the first ECC and the second ECC.
- First ECCs and second ECCs calculated for different bits in a symbol and/or first ECCs and second ECCs calculated for different signals may be encoded and transmitted in the sequence of symbols. Accordingly, multiple errors may be corrected in the sequence of symbols. For example, a plurality of first and second ECCs can be used to correct multiple errors occurring in a sequence of symbols when two or more signals corresponding to different bits of the symbols each have a single error.
- the sequence of symbols is converted to the set of transition numbers by deriving a transition number as a value that represents a separation between occurrences of a current symbol and an immediately preceding symbol in a table of available symbols.
- a receive clock is extracted from the sequence of symbols.
- Clock information may be embedded in changes in signaling state associated with symbols in the sequence of symbols.
- Each pair of consecutive symbols in the sequence of symbols may include two symbols that are associated with different signaling states on the plurality of signal wires.
- a plurality of first error correction codes may be calculated from the sequence of symbols.
- Each error correction code may correspond to a bit in each symbol of the sequence of symbols. It may be determined whether one or more errors are present in the sequence of symbols by comparing each of the plurality of first error correction codes with corresponding second error correction codes appended to the data packet. Errors in individual signals of a plurality of signals may be detected or corrected based on the comparison of the first error correction codes with corresponding second error correction codes. In one example, one error per signal per symbol per word can be corrected.
- the plurality of signal wires is provided in a CCIe bus.
- the data payload may include two CCIe words.
- each symbol in the sequence of symbols is received as a set of differential signals carried on different combinations of two signal wires selected from the plurality of signal wires.
- Each differential signal in the set of differential signals corresponds to a bit of the each symbol.
- the first ECC may be calculated by calculating an ECC for each differential signal.
- an apparatus includes means for receiving a sequence of symbols from a plurality of signal wires, means for calculating a first ECC from a plurality of symbols in the sequence of symbols, the plurality of symbols corresponding to a data payload carried in the sequence of symbols, means for converting the sequence of symbols to a set of transition numbers, means for converting the set of transition numbers to obtain a data packet that includes the data payload and a second ECC, the second ECC having been calculated by a transmitter of the sequence of symbols, means for determining whether one or more errors are present in the sequence of symbols based on a comparison of the first ECC with the second ECC, and means for providing the data payload as receiver output data.
- one error per signal per symbol per word can be corrected.
- the apparatus includes means for extracting a receive clock from the sequence of symbols.
- Clock information may be embedded in changes in signaling state associated with symbols in the sequence of symbols.
- Each pair of consecutive symbols in the sequence of symbols may include two symbols that are associated with different signaling states on the plurality of signal wires.
- a receiver includes a processing circuit configured to receive a sequence of symbols from a plurality of signal wires, calculate a first ECC from a plurality of symbols in the sequence of symbols, the plurality of symbols corresponding to a data payload carried in the sequence of symbols, convert the sequence of symbols to a set of transition numbers, convert the set of transition numbers to obtain a data packet that includes the data payload and a second ECC, the second ECC having been calculated by a transmitter of the sequence of symbols, determine whether one or more errors are present in the sequence of symbols based on a comparison of the first ECC with the second ECC, and provide the data payload as receiver output data.
- a processor-readable storage medium has one or more instructions stored or maintained thereon.
- the instructions when executed by at least one processing circuit, may cause the at least one processing circuit to receive a sequence of symbols from a plurality of signal wires, calculate a first ECC from a plurality of symbols in the sequence of symbols, the plurality of symbols corresponding to a data payload carried in the sequence of symbols, convert the sequence of symbols to a set of transition numbers, convert the set of transition numbers to obtain a data packet that includes the data payload and a second ECC, the second ECC having been calculated by a transmitter of the sequence of symbols, determine whether one or more errors are present in the sequence of symbols based on a comparison of the first ECC with the second ECC, and provide the data payload as receiver output data.
- 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.
- the term "or” is intended to mean an inclusive “or” rather than an exclusive “or.” That is, unless specified otherwise, or clear from the context, the phrase “X employs A or B” is intended to mean any of the natural inclusive permutations. That is, the phrase “X employs A or B” is satisfied by any of the following instances: X employs A; X employs B; or X employs both A and B.
- the articles “a” and “an” as used in this application and the appended claims should generally be construed to mean “one or more” unless specified otherwise or clear from the context to be directed to a singular form.
- Certain aspects of the invention may be applicable to communications links deployed between electronic devices that are subcomponents of a mobile apparatus such as a telephone, a mobile computing device, an appliance, automobile electronics, avionics systems, etc.
- a mobile apparatus include a cellular phone, a smart phone, a session initiation protocol (SIP) phone, a laptop, a notebook, a netbook, a smartbook, a personal digital assistant (PDA), a satellite radio, a global positioning system (GPS) device, a multimedia device, a video device, a digital audio player (e.g., MP3 player), a camera, a game console, a wearable computing device (e.g., a smartwatch, a health or fitness tracker, etc.), an appliance, a sensor, a vending machine, or any other similar functioning device.
- SIP session initiation protocol
- PDA personal digital assistant
- GPS global positioning system
- multimedia device e.g., a digital audio player, MP3 player
- a camera e
- FIG. 1 depicts one example of an apparatus 100 that employs a communication link between IC devices.
- the apparatus 100 may include a wireless communication device that communicates through an 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.
- 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 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 112 of the wireless device.
- the memory device 112 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.
- the processing circuit 102 may include or access a local database 114 that can maintain operational parameters and other information used to configure and operate the apparatus 100.
- the local database 114 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 an antenna 122, a display 124, operator controls, such as button 128 and keypad 126 among other components.
- FIG. 2 is a block schematic drawing 200 illustrating certain aspects of an apparatus 200 connected to a communication link 220, where the apparatus 200 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, s gaming device, or the like.
- the apparatus 200 may include a plurality of IC devices 202 and 230 that exchange data and control information through a communication link 220.
- the communication link 220 may be used to connect IC devices 202 and 222 that are located in close proximity to one another, or physically located in different parts of the apparatus 200.
- the communication link 220 may be provided on a chip carrier, substrate or circuit board that carries the IC devices 202 and 230.
- a first IC device 202 may be located in a keypad section of a flip-phone while a second IC device 230 may be located in a display section of the flip-phone.
- a portion of the communication link 220 may include a cable or optical connection.
- the communication link 220 may include 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.
- a first communications channel 222 may be referred to as a forward link 222 while a second communications channel 224 may be referred to as a reverse link 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 link 222.
- the forward link 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 link 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.
- the first IC device 202 may perform core functions of the apparatus 200, including maintaining wireless communications through a wireless 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.
- the first IC device 202 or second IC device 230 may 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 link 224 may be operated in the same manner as the forward link 222, and the forward link 222 and reverse link 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.
- a single bidirectional link 226 may support communications between the first IC device 202 and the second IC device 230.
- the forward link 222 and/or reverse link 224 may be configurable to operate in a bidirectional mode when, for example, the forward and reverse links 222 and 224 share the same physical connections and operate in a half-duplex manner.
- 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.
- forward and reverse links 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.
- WVGA wide video graphics array
- forward and reverse links 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).
- DRAM dynamic random access memory
- SDRAM double data rate synchronous dynamic random access memory
- Encoding devices 210 and/or 230 can 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 so on.
- the forward and reverse links 222 and 224 may comply or be compatible with application-specific industry standards.
- 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.
- the MIPI standard may define interfaces that employ complimentary metal-oxide-semiconductor (CMOS) parallel busses.
- CMOS complimentary metal-oxide-semiconductor
- the communication link 220 of FIG. 2 may be implemented as a wired bus that includes a plurality of signal wires (denoted as N wires).
- the N wires may be configured to carry data encoded in symbols, where clock information is embedded in a sequence of the symbols transmitted over the plurality of wires.
- FIG. 3 is a diagram illustrating one example of an N -wire interface 300 provided between two devices 302 and 332.
- a transcoder 306 may be used to encode data 304 and clock information in symbols to be transmitted over a set of N wires 314 using N -factorial ( N! ) encoding.
- the clock information is derived from a transmit clock 312 and may be encoded in a sequence of symbols transmitted in N C 2 differential signals over the N wires 314 by ensuring that a signaling state transition occurs on at least one of the N C 2 signals between consecutive symbols.
- each bit of a symbol is transmitted as a differential signal by one of a set of differential line drivers 310, where the differential drivers in the set of line drivers 310 are coupled to different pairs of the N wires.
- the number of available combinations of wire pairs determines the number of signals that can be transmitted over the N wires 314.
- the number of data bits 304 that can be encoded in a symbol may be calculated based on the number of available signaling states available for each symbol transmission interval.
- a termination impedance couples each of the N wires 314 to a common center point 318 in a termination network 316. It will be appreciated that the signaling states of the N wires 314 reflects a combination of the currents in the termination network 316 attributed to the differential drivers 310 coupled to each wire. It will be further appreciated that the center point 318 is a null point, whereby the currents in the termination network 316 cancel each other at the center point.
- the N! encoding scheme need not use a separate clock channel and/or non-return-to-zero decoding because at least one of the N C 2 signals in the link transitions between consecutive symbols.
- the transcoder 306 ensures that a transition occurs between each pair of symbols transmitted on the N wires 314 by producing a sequence of symbols in which each symbol is different from its immediate predecessor symbol.
- the transcoder 306 may employ a mapping scheme to generate raw symbols for transmission on the N wires 314.
- the transcoder 306 may map data bits 304 to a set of transition numbers.
- the transition numbers may then be used to select a raw symbol for transmission based on the value of the preceding symbol such that the selected raw symbol is different from the preceding raw symbol.
- a transition number may be used to lookup a data value corresponding to the second of the consecutive raw symbols with reference to the first of the consecutive raw symbols.
- a transcoder 330 may employ a mapping to determine a transition number that characterizes a difference between a pair of consecutive raw symbols in a lookup table, for example.
- the transcoders 306, 330 operate on the basis that every consecutive pair of raw symbols includes two different symbols.
- the transcoder 306 at the transmitter 302 may select between the N ! -1 symbols that are available at every symbol transition.
- the bit rate may be calculated as log 2 ( available_states ) per transmit clock cycle.
- DDR double data rate
- the receive clock signal 334 may be a DDR clock signal that can be used by external circuitry to receive data provided by the transcoder 328.
- the transcoder 328 decodes a block of received symbols from the deserializer 326 by comparing each next symbol to its immediate predecessor.
- the transcoder 328 produces output data 330 corresponding to the data 304, provided to the transmitter 302.
- FIG. 4 illustrates an example of a CDR circuit 400 that may be employed to recover embedded clock information in an N -wire system using N ! encoding.
- the depicted CDR circuit 400 may be adapted for use with other encoding techniques and certain of the principles described herein relate also to CCIe interfaces, for example.
- FIG. 5 is a timing diagram illustrating certain signals generated through the operation of the CDR circuit 400.
- SI signal first state transition signal
- Level latches 410, a comparator 404, set-reset latch 406, a one-shot circuit 426, an analog delay element 412 and (bused) level latches 410 may be configured to generate a level-latched signal (S signal) 422 representative of a delayed instance of the SI signal 420, where the delay before the SI signal 420 is captured by the level latches to provide an updated S signal 422 may be selected by configuring a delay element (Delay S) 412.
- S signal level-latched signal
- Delay S delay element
- the comparator 404 compares the SI signal 420 with the S signal 422 and outputs a binary comparison signal (NE signal) 414.
- the set-reset latch 406 may receive the NE signal 414 from the comparator 404 and output a signal (NEFLT signal) 416, which is a filtered version of the NE signal 414.
- the operation of the set-reset latch 406 can be configured to remove any transient instability in the NE signal 414, where the transient instability is exhibited as spikes 510 in the NE signal 414.
- the NEFLT signal 416 can be used to control the output latches 424 that capture the S signal 422 as output data signal 428.
- the one-shot circuit 426 receives the NEFLT signal 416 and produces a fixed width pulse 512, which may then be delayed by the delay element 412 to produce a clock signal (SDRCLK) 418.
- SDRCLK clock signal
- the SDRCLK signal 418 may be used by external circuitry to sample the data output 428 of the CDR 400.
- the SDRCLK signal 418 may be provided to decoder or deserializer circuits.
- the level latches 410 receive the SI signal 420 and output the S signal 422, where the level latches 410 are triggered or otherwise controlled by the SDRCLK signal 418.
- the comparator 404 compares the SI signal 420 with the S signal 422, which is output from the level latches 410.
- the comparator 404 drives the NE signal 414 to a first state (e.g. logic low) when the SI signal 420 and the S signal 422 are equal, and to a second state (e.g. logic high) when the SI signal 420 and the S signal 422 are not equal.
- the NE signal 414 is in the second state when the SI signal 420 and the S signal 422 are representative of different symbols.
- the second state indicates that a transition is occurring.
- the S signal 422 is essentially a delayed and filtered version of SI signal 420, in which transients or glitches 508 have been removed because of the delay 514 between the SI signal 420 and the S signal 422.
- Multiple transitions 508 in the SI signal 420 may be reflected as spikes 510 in the NE signal 414, but these spikes 510 are masked from the NEFLT signal 416 through the operation of the set-reset circuit.
- the SDRCLK 418 is resistant to line skew and glitches in the symbol transitions based on the use of the delays 426a, 412 provided in the feedback path to the level-latch 410 and set-reset circuit 406, whereby the SDRCLK signal 418 controls the reset function of the set-reset circuit 406.
- the SI signal 420 begins to change state.
- the state of the SI signal 420 may be different from S 1 504 due to the possibility that intermediate or indeterminate states 508 during the transition between S 0 502 and S 1 504.
- These intermediate or indeterminate states 508 may be caused, for example, by inter-wire skew, over/under shoot, cross-talk, etc.
- the NE signal 414 becomes high as soon as the comparator 404 detects a difference in values between the SI signal 420 and the S signal 422, and the transition high of the NE signal 414 asynchronously sets the set-reset latch 406 output, driving the NEFLT signal 416 high.
- the NEFLT signal 416 is maintained in its high state until the set-reset latch 406 is reset by a high state of the SDRCLK signal 418.
- the SDRCLK signal 418 is a delayed version of the NE1SHOT signal 424, which is a limited pulse-width version of the NEFLT signal 416.
- the SDRCLK signal 418 may be delayed with respect to the NE1SHOT signal 424 through the use of the analog delay circuit 412, for example.
- the intermediate or indeterminate states 508 on SI 420 may represent invalid data. These intermediate or indeterminate states 508 may contain a short period of the previous symbol value S 0 502, and may cause the NE signal 414 to return low for short periods of time. Transitions of the SI signal 420 may generate spikes 510 on the NE signal 414. The spikes 510 are effectively filtered out and do not appear in the NEFLT signal 416.
- the high state of the NEFLT signal 416 causes the SDRCLK signal 418 to transition high after a delay period 440 caused by the delay circuit 412.
- the high state of SDRCLK signal 418 resets the set-reset latch 406 output, causing the NEFLT signal 416 to transition to a low state.
- the high state of the SDRCLK signal 418 also enables the level latches 410, and the SI signal 420 value may be output on the S signal 410.
- the comparator 404 detects that the S signal 422 (for symbol S 1 502) matches the symbol S 1 502 value present on the SI signal 420 and switches its output (the NE signal 414) low.
- the low state of the NEFLT signal 416 causes the SDRCLK signal 418 to go low after a delay period 442 caused by the analog delay 412. This cycle repeats for each transition in the SI signal 420.
- a new symbol S 2 506 may be received and may cause the SI signal 420 to switch its value in accordance with the next symbol S 2 506.
- FIG. 6 is a block schematic diagram illustrating certain aspects of an apparatus 600 that employs a communications bus 630 configured for CCIe operation.
- the apparatus 600 may include multiple devices 602, 620 and 622a-622n, which communicate using the CCIe bus 630.
- an imaging device 602 is configured to operate as a slave device on the CCIe bus 630.
- the imaging device 602 may be adapted to provide a control function 604 that manages an image sensor, for example.
- the imaging device 602 may include configuration registers or other storage 606, control logic 612, a transceiver 610 and line drivers/receivers 614a and 614b.
- the control logic 612 may include a processing circuit such as a state machine, sequencer, signal processor or general-purpose processor.
- the transceiver 610 may include a receiver 610a, a transmitter 610c and common circuits 610b, including timing, logic and storage circuits and/or devices.
- the transmitter 610c encodes and transmits data based on timing provided by a clock generation circuit 608.
- a conventional imaging device 604 may not have access to a clock that has a high enough frequency to permit the device 602 to achieve the indicated bit rate of the CCIe bus 630, because sensor devices 602 typically do not need or use a 125 MHz or higher clock.
- a receiver 610a may be configured or adapted to extract a receive clock from the CCIe bus by generating a clock signal directly from the received transmission using analog delay circuits that can eliminate the need for a high frequency clock and thereby conserve power during idle periods.
- FIG. 7 is a simplified block diagram illustrating a transmitter 700 and a receiver 720 configured according to certain aspects disclosed herein.
- the transmitter 700 and receiver 720 may be adapted for use with a variety of encoding techniques, including N ! and CCIe.
- the transmitter 700 includes a first convertor 704 configured to convert data 702 into transition numbers 714.
- the transition numbers 714 may be used to select a next symbol for transmission based on the value of a current symbol, where the next symbol is different from a current symbol.
- a second converter 706 receives the transition numbers and produces a sequence of symbols for transmission on the interface using suitably configured line drivers 708. Since no pair of consecutive symbols includes two identical symbols, a transition of signaling state occurs in at least one of the signal wires 718 of the interface at every symbol transition.
- a set of line receivers 726 provides raw symbols (SI) 736 to a CDR 728 that extracts a receive clock 738 and provides captured symbols (S) 734 to a circuit that converts the captured symbols 734 to transition numbers 732.
- the transition numbers may be decoded by a circuit 722 to provide output data 730.
- the transmitter 700 may be configured or adapted to transcode data 710 into ternary (base-3) transition numbers 714.
- the transition numbers 714 may be encoded in a sequence of symbols 716 to be transmitted on the signal wires 718, which may correspond to the SCL 616 and SDA 618 wires illustrated in FIG. 6 .
- Each data element of the input data 702 may include 20-bit words.
- a transcoder 704 may receive the input data 702 and produce a sequence of ternary numbers 714 for each data element.
- the ternary numbers 714 may be encoded in two bits and there may be 12 ternary numbers 714 in each ternary sequence 712.
- An encoder 706 produces a stream of 2-bit symbols 716 that are transmitted through line drivers 708.
- the line drivers 708 may include open-drain output transistors. In another example, the line drivers 708 may include push-pull drivers.
- the output stream of 2-bit symbols 716 generated by the encoder has a transition in the state of at least one of the signal wires 718 between each pair of consecutive symbols 716 by ensuring that no pair of consecutive symbols include two identical symbols. The availability of a transition of state in at least one of the signal wires permits a receiving circuit 720 to extract a receive clock 738 from the stream of data symbols 716.
- the receiver 720 includes line interface circuits 726 that provide a stream of raw 2-bit symbols 736 to a CDR 728.
- the CDR 728 extracts a receive clock 738 from the raw symbols 736 and provides a stream of 2-bit symbols 734 and the receive clock 738 to other circuits 722 and 724 of the receiver 720.
- the CDR 728 may produce multiple clocks in its output 738.
- a decoder 724 may use the receive clock 738 to decode the stream of symbols 734 into sequences of 12 ternary numbers 732.
- the ternary numbers 732 may be encoded using two bits.
- a transcoder 722 may then convert each sequence of 12 ternary numbers 732 into 20-bit output data elements 730.
- FIG. 8 is a drawing illustrating an encoding scheme 800 used by a transcoder 704 configured to produce a sequence of symbols 716 for transmission on a CCIe interface.
- the encoding scheme 800 is provided by way of example and is also used by a transcoder 724 to extract data from symbols received from the CCIe bus 718.
- the two wires of the CCIe bus 718 permit definition of 4 basic symbols S: ⁇ 0, 1, 2, 3 ⁇ . Any two consecutive symbols in the sequence of symbols 716, 734 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) 822 terminates and a second symbol (current symbol Cs) 824 begins.
- the three available transitions are assigned a transition number (T) 826 for each Ps symbol 822.
- the value of T 826 can be represented by a ternary number.
- the value of transition number 826 is determined by assigning a symbol-ordering circle 802 for the encoding scheme.
- the symbol-ordering circle 802 allocates locations 804a-804d on the circle 802 for the four possible symbols, and a direction of rotation 806 between the locations 804a-804d In the depicted example, the direction of rotation 806 is clockwise.
- the transition number 826 may represent the separation between the valid current symbols 824 and the immediately preceding symbol 822.
- Separation may be defined as the number of steps along the direction of rotation 806 on the symbol-ordering circle 802 required to reach the current symbol Cs 824 from the previous symbol 822.
- 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 base-3 .
- the table 820 in FIG. 8 summarizes an encoding scheme employing this approach.
- the table 820 may be used to lookup a current symbol 824 to be transmitted, given knowledge of the previously generated symbol 822 and an input ternary number, which is used as a transition number 826.
- the table 820 may be used as a lookup to determine a transition number 826 that represents the transition between the previously received symbol 822 and the currently received symbol 824.
- the transition number 826 may be output as a ternary number.
- a transcoder that embeds clock information in a sequence of symbols can disassociate data 702 received by a transmitter 700 from the sequence of symbols 716 transmitted on signal wires 718. Consequently, a received raw symbol 736 cannot be decoded to obtain a corresponding transmission data bits 702 without consideration of at least one previously transmitted symbol.
- This disassociation can render conventional error correction techniques ineffective.
- a conventional system may append an error correction code (ECC) to data 702, where the ECC is calculated from a predefined block size of input data 702 or a packet length.
- ECC error correction code
- the ECC may be used to identify and/or correct occurrences of errors during transmission, where the errors may include one or more bit errors.
- FIG. 9 provides a generalized illustration of the operation of a multi-wire interface in which clock information is embedded in a sequence of symbols transmitted over N wires 920.
- an ECC generator 916 generates an EEC 918 from data bits 902 to be transmitted (also referred to as the data payload or transmission data 902) on a multi-wire interface.
- the transmission data 902 may be organized as a packet, one or more words and/or some other configuration of bits.
- the transmission data 902 may include a fixed number of bits provided according to a MIPI standard.
- the ECC 918 may be generated using any suitable algorithm or technique that may be used for forward error correction (FEC). FEC permits a receiver 930 to correct certain transmission errors that may affect one or more bits of a symbol transmitted on the N wires 920. Transmission errors may occur due to noise or crosstalk, other electromagnetic interference, and so on.
- the transmitter 900 may include a module or circuit 904 that appends an ECC 918 to the transmission data 902 to obtain a data packet 912.
- the data packet 912 may be transcoded to obtain a sequence of symbols that encodes the transmission data 902, the ECC 918 and clock information related to a transmit clock 914.
- the transmitter 900 may include a first converter 906 that converts the data packet to transition numbers 916, and a second converter 908 that converts the transition numbers 916 to a sequence of symbols 922 that may be transmitted over the N wires 920 using the line drivers 910.
- a CDR 934 is provided to extract symbols 944 and a receive clock 930 from sequences of raw symbols 942 in signals received from the N wires 920 using line receivers 932.
- a first converter 936 may convert the sequence of symbols 944 to transition numbers 946.
- the transition numbers 946 are converted by a second converter 938 to provide a received data packet 948.
- the received data packet 948 is provided to an ECC generation circuit or module 950 that generates a receiver ECC 952 from data bits in the received data packet 948.
- An error detection and/or correction circuit or module 950 may compare the receiver ECC 952 to the bits of the received packet ECC 948 that correspond to the ECC 918 generated by the ECC generator 916 in the transmitter 900.
- the error correction circuit 940 may attempt to use the ECCs 918 and 952 to correct errors in the received packet ECC 948 in order to generate a reliable copy of transmission data 902 to be output as received data 954.
- a Hamming code may be used to configure the ECC generators 916 and 950.
- the Hamming code is used to provide a block parity scheme that can correct at least a single bit error, and reliably detect two bit errors per transmitted data packet 912.
- a Hamming rule may be used to calculate the number of parity or error check bits in the ECC 918, 952 required to accurately detect two bit errors and to allow a single bit error to be corrected.
- the Hamming rule may be expressed as: d + p + 1 ⁇ 2 p , where
- transmission errors exhibited as one or more errors in the received symbols 942 may not have a direct correlation with a corresponding number of affected bits in the received data packet 948, when the transmitter 900 embeds clock information 914 with transmission data 902 in transmitted the sequences of symbols 922.
- a single symbol error occurring on an N ! or CCIe multiple-symbol word can cause multiple bit errors after reverse transcoding.
- the table 1000 in FIG. 10 illustrates the effect of single symbol errors in a CCIe system that uses an encoding scheme similar to that illustrated in FIG. 9 .
- the remaining rows illustrate the effects of an erroneous received symbol 1004 (circled) on the transition numbers 1006, and resultant errors in decoded hexadecimal values 1008 and corresponding decoded bits 1010. It can be seen from the table 1000 that a single transmission error can result in multiple bit errors that can defeat an error correction scheme that is based on an ECC 916 calculated directly from transmission data 902.
- Certain aspects disclosed herein provide an error detection and/or correction scheme that can be more reliably used with N ! interfaces, CCIe interfaces and other interfaces that embed clock information in sequences of symbols.
- an ECC may be calculated from symbol values to be transmitted a multi-wire communication link. Accordingly, one or more symbol errors may be corrected at the receiver using the ECC.
- FIG. 11 illustrates a generalized example of an FEC scheme used in a multi-wire interface that embeds clock information related to a transmit clock 1114 in transmitted symbols 1118.
- a transmitter 1100 includes combining logic 1104 that is configured to append ECC bits 1124 to transmission data 1102 to obtain a transmission data packet 1122.
- a first converter 1106 converts the transmission data packet 1122 to transition numbers 1116, which are converted to a sequence of symbols 1118 by a second converter 1108.
- the sequence of symbols 1118 is transmitted on the N wires 1120 using suitably configured line drivers 1110.
- An ECC generation circuit 1112 generates the ECC bits 1124 based on the values in the sequence of symbols 1118 that encode the transmission data 1102.
- the ECC bits 1124 appended to the transmission data packet 1122 are encoded in symbols, which are transmitted in the sequence of symbols 1118 on the N wires 1120.
- a CDR 1134 is provided to extract symbols 1154 and a receive clock 1156 from sequences of raw symbols 1152 received from the N wires 1120 using line receivers 1132.
- the extracted symbols 1154 are provided to ECC generation logic 1142 and error correction logic 1136.
- the ECC generation logic 1142 generates a receiver ECC 1146 from the received symbols 1154.
- the error correction logic 1136 may compare the receiver ECC 1146 with an ECC word 1144 decoded from the received symbols 1154. Accordingly, the error correction logic 1136 may detect and/or correct errors in the received symbols 1154.
- a first converter 1138 may generate transition numbers 1148 from corrected symbols received from the error correction logic 1136. These transition numbers 1148 may then be converted by a second converter 1140 to provide received data 1150.
- FIG. 12 illustrates an example of an FEC scheme that may be employed in an N ! interface.
- a 3! interface is provided whereby a transmitter 1200 is configured to use a set of three differential line drivers 1212 to drive different pairs 1220a, 1220b, 1220c of the wires in a 3-wire link 1220.
- the transmitter 1200 includes a packet generator 1204 that forms a transmitter data packet 1222 by appending ECC information 1218 to transmission data 1202.
- Transcoding circuits 1206, 1208 convert the transmitter data packet 1222 to a sequence of symbols 1214 for transmission on the 3! interface.
- each of three serializers 1210 is configured to serialize one bit of the three bit symbols 1214.
- the outputs of the serializers 1210 are provided to the differential line drivers 1212, each of which drives one pair 1220a, 1220b, 1220c of the three wires in the 3! interface 1220.
- the ECC generator 1216 calculates the ECC information 1218 from the sequence of symbols 1214.
- the number of bits used to encode the ECC information 1216 may be calculated according to the Hamming rule, d + p + 1 ⁇ 2 p .
- FIG. 13 illustrates one example in which ECC information 1310 is appended to a 24-bit camera serial interface (CSI2) packet header 1304.
- ECC information 1218 for each pair of wires 1220 may be transmitted in three 8-bit words, for a total of 24 bits.
- the ECC information 1310 includes an ECC 1310a, 1310b, 1310c calculated for each differential signal transmitted on the 3! interface.
- the 3 wires may be labeled A, B and C and three differential signals 1220a, 1220b and 1220c may be transmitted over the available pairs AB, BC and CA, respectively.
- each of the ECCs 1310a, 1310b, 1310c has a length of 8 bits.
- the 24-bit CSI2 packet header 1304 and the ECC information 1310 may be transmitted in three sequences of 7 symbols 1314, 1316 and 1318.
- the receiver 1240 may receive the three sequences of symbols 1314, 1316 and 1318 using differential receivers 1244.
- a set of three deserializers 1246 provides a set of 7 symbols 1262 corresponding to each of the three sequences of symbols 1314, 1316 and 1318.
- the receiver 1240 may process each of three sets of 7 symbols 1248 to extract transmitter ECC 1218 and may independently generate receiver ECC information 1264.
- an ECC generator 1254 may be configured to generate the receiver ECC information 1264 from the symbols that encode the CSI2 packet header 1304, which may be found in two of the three sets of 7 symbols 1248.
- the symbols that carry the ECC code information 1310 are decoded to obtain the a decoded ECC 1256 corresponding to the transmitter ECC information 1218.
- the symbols carrying the ECC code information 1310 may be found in two of the three sets of 7 symbols 1248.
- Error correction logic 1250 may be configured to compare the receiver ECC information 1264 to the decoded transmitter ECC information 1256, and to identify and/or correct bit errors in the two of the three sets of 7 symbols 1248 that encode the CSI2 packet header 1304.
- the output of the error correction logic 1250 is provided as receiver output data 1260.
- FIG. 14 is a drawing illustrating an example of an error correction scheme that may be employed in a CCIe interface.
- a transmitter 1400 is configured to transmit 2-bit symbols in signals transmitted by a pair of line drivers 1418 over a pair of wires 1420.
- the transmitter 1400 includes a packet generator 1404 that forms a transmitter data packet 1416 by appending ECC information 1422 to transmission data 1402.
- Transcoding circuits 1406, 1408 convert the transmitter data packet 1416 to a sequence of symbols 1414 for transmission on the two wires 1420.
- the ECC generator 1410 calculates the ECC information 1422 from the sequence of symbols 1414.
- the number of bits used to encode the ECC information 1422 may be calculated according to the Hamming rule, d + p + 1 ⁇ 2 p .
- the ECC information 1422 is calculated for a single 12-bit CCIe word and, consequently, p + 13 ⁇ 2 p to permit 1 bit error correction and two-bit error detection, and any value of p ⁇ 5 satisfies the Hamming rule.
- the ECC information 1422 is calculated for two 12-bit CCIe words, p + 25 ⁇ 2 p to permit 1 bit error correction and two-bit error detection and, again, any value of p ⁇ 5 satisfies the Hamming rule. Accordingly, it may be more efficient to add ECC information to two-word transmissions than to single-word transmissions.
- the receiver 1430 may receive symbols 1414 from the pair of wires 1420 using receivers 1432.
- a CDR 1434 may provide a receive clock 1448 and a sequence of symbols 1444 from the raw symbols 1442 received by the line receivers 1432.
- the sequence of symbols 1444 is provided to error correction logic 1436 and an ECC generator 1452.
- the error correction logic 1436 may compare an ECC provided by the ECC generator 1452 with a version 1456 of the transmitter ECC 1422 that is decoded from the sequence of symbols 1444. Based on this comparison, the error correction logic 1436 may identify and/or correct bit errors in the sequence of symbols 1444.
- the output of the error correction logic 1436 may be provided to the transcoder logic 1438, 1440 to produce receiver output data 1450.
- FIG. 15 is a flowchart 1500 illustrating a method for data communications on an N- wire communications link.
- the communications link may include a plurality of connectors that carry symbols encoded using a suitable encoding scheme, such as N ! encoding, CCIe encoding, multiphase encoding, multi-wire differential encoding, etc.
- the connectors may include electrically conductive wires, optical signal conductors, semi-conductive interconnects and so on.
- the method may be performed by one or more processors of a transmitting device.
- a data payload is converted to a set of transition numbers.
- the set of transition numbers is converted to a sequence of symbols.
- the set of transition numbers may be converted to the sequence of symbols by using a transition number to select a next symbol relative to a current symbol.
- a value of the transition number may represent a separation between the current symbol and the next symbol in a table of available symbols.
- an ECC is calculated from symbols in the sequence of symbols that correspond to the data payload.
- the ECC is appended to the data payload such that the set of transition numbers includes transition numbers corresponding to the ECC.
- an error correction code may be calculated for each of a plurality of signals transmitted on the plurality of signal wires.
- the plurality of signals may correspond to the sequence of symbols.
- the error correction codes calculated for the plurality of signals may be appended to the data payload.
- Each of the plurality of signals may correspond to a bit in each symbol in the sequence of symbols.
- ECCs calculated for different bits in a symbol and/or calculated for a plurality signals that are encoded with the sequence of symbols may be used to correct multiple errors in the sequence of symbols.
- a plurality of ECCs can be used to correct multiple errors occurring in a sequence of symbols when two or more signals corresponding to different bits of the symbols each have a single error.
- the sequence of symbols is transmitted on a plurality of signal wires.
- the plurality of signal wires may be provided in a CCIe bus and the data payload may include two CCIe words.
- the sequence of symbols may be transmitted by transmitting each symbol in the sequence of symbols on differential signals carried on different combinations of two signal wires selected from the plurality of signal wires.
- Each of the differential signals may correspond to a bit of the each symbol and an error correction code may be calculated for each differential signal.
- clock information may be encoded in the sequence of symbols.
- the clock information may be encoded by ensuring that each pair of consecutive symbols in the sequence of symbols includes two symbols that produce different signaling states on the plurality of signal wires.
- FIG. 16 is a diagram 1600 illustrating a simplified example of a hardware implementation for an apparatus employing a processing circuit 1602.
- the processing circuit typically has a processor 1616 that may include one or more of a microprocessor, microcontroller, digital signal processor, a sequencer and a state machine.
- the processing circuit 1602 may be implemented with a bus architecture, represented generally by the bus 1620.
- the bus 1620 may include any number of interconnecting buses and bridges depending on the specific application of the processing circuit 1602 and the overall design constraints.
- the bus 1620 links together various circuits including one or more processors and/or hardware modules, represented by the processor 1616, the modules or circuits 1604, 1606, 1608 and 1610, line interface circuits 1612 configurable to communicate over connectors or wires 1614 and the computer-readable storage medium 1618.
- the bus 1620 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 1616 is responsible for general processing, including the execution of software stored on the computer-readable storage medium 1616.
- the software when executed by the processor 1616, causes the processing circuit 1602 to perform the various functions described supra for any particular apparatus.
- the computer-readable storage medium 1618 may also be used for storing data that is manipulated by the processor 1616 when executing software, including data decoded from symbols transmitted over the connectors 1614.
- the processing circuit 1602 further includes at least one of the modules 1604, 1606, 1608 and 1610.
- the modules 1604, 1606, 1608 and 1610 may be software modules running in the processor 1616, resident/stored in the computer readable storage medium 1618, one or more hardware modules coupled to the processor 1616, or some combination thereof.
- the modules 1604, 1606, 1608 and/or 1610 may include microcontroller instructions, state machine configuration parameters, or some combination thereof.
- the apparatus 1600 for wireless communication includes modules and/or circuits 1604 configured to convert a data payload to a set of transition numbers, and further configured to convert the set of transition numbers to a sequence of symbols, modules and/or circuits 1606 configured to calculate an ECC from symbols in the sequence of symbols that correspond to the data payload, modules and/or circuits 1608 configured to append the ECC to the data payload such that the set of transition numbers includes transition numbers corresponding to the ECC, and modules and/or circuits 1610, 1612 configured to transmit the sequence of symbols on a plurality of signal wires 1614.
- the circuits illustrated in FIGs. 11 , 12 and 14 provide logic which implement the various functions performed by the apparatus 1302.
- FIG. 16 is a diagram 1600 illustrating a simplified example of a hardware implementation for an apparatus
- FIG. 17 is a flowchart 1700 illustrating a method for data communications on an N -wire communications link.
- the communications link may include a plurality of connectors that carry symbols encoded using a suitable encoding scheme, such as N ! encoding, multiphase encoding, multi-wire differential encoding, etc.
- the connectors may include electrically conductive wires, optical signal conductors, semi-conductive interconnects and so on.
- the method may be performed by one or more processors of a receiving device.
- a sequence of symbols is received from a plurality of signal wires.
- the plurality of signal wires may be provided in a CCIe bus in one example, and in an N ! interface in another example.
- a first ECC is calculated from a plurality of symbols in the sequence of symbols.
- Each symbol in the sequence of symbols may be received as a set of differential signals carried on different combinations of two signal wires selected from the plurality of signal wires.
- Each differential signal in the set of differential signals may correspond to a bit of the each symbol.
- the first ECC may be calculated by calculating an ECC for each differential signal.
- the plurality of symbols may correspond to a data payload carried in the sequence of symbols.
- the data payload may include two CCIe words.
- the sequence of symbols may be converted to a set of transition numbers.
- the sequence of symbols may be converted to the set of transition numbers by deriving a transition number as a value that represents a separation between occurrences of a current symbol and an immediately preceding symbol in a table of available symbols.
- the set of transition numbers may be converted to obtain a data packet that includes the data payload and a second ECC.
- the second ECC may have been calculated by a transmitter of the sequence of symbols.
- step 1710 it may be determined whether one or more errors are present in the sequence of symbols based on a comparison of the first ECC with the second ECC. Based on the determination, at least one error in the sequence of symbols may be corrected using the first ECC and the second ECC.
- the payload data as receiver output data As receiver output data.
- a receive clock is extracted from the sequence of symbols.
- Clock information may be embedded in changes in signaling state associated with symbols in the sequence of symbols.
- Each pair of consecutive symbols in the sequence of symbols may include two symbols that are associated with different signaling states on the plurality of signal wires.
- a plurality of first error correction codes may be calculated from the sequence of symbols.
- Each error correction code may correspond to a bit in each symbol of the sequence of symbols. It may be determined whether one or more errors are present in the sequence of symbols by comparing each of the plurality of first error correction codes with corresponding second error correction codes appended to the data packet. Errors in individual signals of a plurality of signals may be detected or corrected based on the comparison of the first error correction codes with corresponding second error correction codes.
- FIG. 18 is a diagram 1800 illustrating a simplified example of a hardware implementation for an apparatus employing a processing circuit 1802.
- the processing circuit typically has a processor 1816 that may include one or more of a microprocessor, microcontroller, digital signal processor, a sequencer and a state machine.
- the processing circuit 1802 may be implemented with a bus architecture, represented generally by the bus 1820.
- the bus 1820 may include any number of interconnecting buses and bridges depending on the specific application of the processing circuit 1802 and the overall design constraints.
- the bus 1820 links together various circuits including one or more processors and/or hardware modules, represented by the processor 1816, the modules or circuits 1804, 1806 and 1808, line interface circuits 1812 configurable to communicate over connectors or wires 1814 and the computer-readable storage medium 1818.
- the bus 1820 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 1816 is responsible for general processing, including the execution of software stored on the computer-readable storage medium 1816.
- the software when executed by the processor 1816, causes the processing circuit 1802 to perform the various functions described supra for any particular apparatus.
- the computer-readable storage medium 1818 may also be used for storing data that is manipulated by the processor 1816 when executing software, including data decoded from symbols transmitted over the connectors 1814.
- the processing circuit 1802 further includes at least one of the modules 1804, 1806, 1808 and 1810.
- the modules 1804, 1806, 1808 and 1810 may be software modules running in the processor 1816, resident/stored in the computer readable storage medium 1818, one or more hardware modules coupled to the processor 1816, or some combination thereof.
- the modules 1804, 1806, 1808 and 1810 may include microcontroller instructions, state machine configuration parameters, or some combination thereof.
- the apparatus 1800 for wireless communication includes modules and/or circuits 1806, 1812 configured to receive a sequence of symbols from a plurality of signal wires 1814, modules and/or circuits 1808 configured to calculate a first ECC from a plurality of symbols in the sequence of symbols, the plurality of symbols corresponding to a data payload carried in the sequence of symbols, modules and/or circuits 1804 configured to convert the sequence of symbols to a set of transition numbers and further configured to convert the set of transition numbers to obtain a data packet that includes the data payload and a second ECC, modules and/or circuits 1808 configured to determine whether one or more errors are present in the sequence of symbols based on a comparison of the first ECC with the second error correction code, and modules and/or circuits 1804, 1808 configured to provide the data payload as receiver output data.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Power Engineering (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Error Detection And Correction (AREA)
- Dc Digital Transmission (AREA)
Description
- The present disclosure relates generally to an interface between a host processor and a peripheral device such as a camera and, more particularly, to improving error correction processes on an N-factorial or camera control communication interface bus.
- Manufacturers of mobile devices, such as cellular phones, may obtain components of the mobile devices from various sources, including different manufacturers. For example, an 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. The application processor and a display or other device may be interconnected using a standards-based or proprietary physical interface. For example, a display may provide an interface that conforms to the Display System Interface (DSI) standard specified by the Mobile Industry Processor Interface Alliance (MIPI).
- In one example, a multi-signal data transfer system may employ multi-wire differential signaling such as 3-phase or N-factorial (N!) low-voltage differential signaling (LVDS), transcoding (e.g., the digital-to-digital data conversion of one encoding type to another) may be performed to embed symbol clock information by causing a symbol transition at every symbol cycle, instead of sending clock information in separate data lanes (differential transmission paths). Embedding clock information by transcoding is an effective way to minimize skew between clock and data signals, as well as to eliminate the necessity of a phase-locked loop (PLL) to recover the clock information from the data signals.
- In another example, a camera control interface (CCI) defined by MIPI standards uses a two-wire, bi-directional, half duplex, serial interface configured as a bus connecting a master and one or more slaves. Conventional CCI is compatible with a protocol used in a variant of the Inter-Integrated Circuit (I2C) bus and is capable of handling multiple slaves on the bus, with a single master. The CCI bus may include Serial Clock (SCL) and Serial Data (SDA) lines. 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. A CCI extension (CCIe) bus may be used to provide higher data rates for devices that are compatible with CCIe bus operations. Such devices may be referred to as CCIe devices, and the CCIe devices can attain higher data rates when communicating with each other by encoding data as symbols transmitted on both the SCL line and the SDA line of a conventional CCI bus.
- There exists an ongoing need for optimized communications in general and improved reliability of data transfer on multi-signal wire communication links. Attention is drawn to
US 2009/015446 A1 describing d=1 codes have long trains consisting of consecutive 2T runs and an overall high frequency of occurrence of the shortest 2T runs that reduce the performance of the bit detector. By using a code with an MTR constraint of 2 an improvement in the bit detection is achieved. A code constructed in a systematic way that provides an MTR constraint of 2 is presented. A variation of such a code is disclosed where one sub-code is used, where coding states are divided into coding classes and where code words are divided into code word types. Then, for a given sub-code, an code word of type t can be concatenated with an code word of the next sub-code if said subsequent code word of said next sub-code belongs to one of coding states of the coding class with index Tmax+1 t. In the code the overall code has the property that the respective channel bit sequences that are encoded from the same message-bit sequence, starting from any possible state of the finite-state-machine, for each of the two values of a DC-control bit, that is part of a given user word have opposite parities for the sequences generated from the starting state up to the state where both encoder paths merge. For the case that the encoder paths do not merge, there is no such constraint. Finally, a new d=1, k=10 sliding-block decodable RLL code is disclosed with the following properties: (i) it has an r=2 constraint which is the lowest MTR value that is compatible with a rate R=2/3; (ii) it enables practical SISO-RLL decoding because of its compact 2-to-3 mapping; and (iii) the new code uses a parity-complementary word assignment4 (PCWA) for DC-control. In order to avoid error propagation, the Bliss-scheme is used, by which RLL coding is performed separately on user data and on parity data generated by error correction coding (LDPC) of the RLL-coded user data. - In accordance with the present invention method, and apparatuses, as set forth in the independent claims, respectively, are provided. Preferred embodiments of the invention are described in the dependent claims.
- Embodiments disclosed herein provide systems, methods and apparatus related to multi-wire interfaces. In an aspect of the disclosure, a method of data communications includes converting a data payload to a set of transition numbers, converting the set of transition numbers to a sequence of symbols, calculating an error correction code (ECC) from symbols in the sequence of symbols that correspond to the data payload, appending the ECC to the data payload such that the set of transition numbers includes transition numbers corresponding to the ECC, and transmitting the sequence of symbols on a plurality of signal wires.
- In an aspect of the disclosure, converting the set of transition numbers to the sequence of symbols includes using a transition number to select a next symbol relative to a current symbol. A value of the transition number represents a separation between the current symbol and the next symbol in a table of available symbols.
- In an aspect of the disclosure, clock information is encoded in the sequence of symbols. The clock information may be encoded by ensuring that each pair of consecutive symbols in the sequence of symbols includes two symbols that produce different signaling states on the plurality of signal wires.
- In an aspect of the disclosure, an error correction code may be calculated for each of a plurality of signals transmitted on the plurality of signal wires. The plurality of signals may correspond to the sequence of symbols. The error correction codes calculated for the plurality of signals may be appended to the data payload. Each of the plurality of signals may correspond to a bit in each symbol in the sequence of symbols.
- In an aspect of the disclosure, the plurality of signal wires is provided in a CCIe bus. The data payload may include two CCIe words.
- In an aspect of the disclosure, transmitting the sequence of symbols includes transmitting each symbol in the sequence of symbols on differential signals carried on different combinations of two signal wires selected from the plurality of signal wires. Each of the differential signals may correspond to a bit of each symbol. The ECC may be calculated by calculating an error correction code for each differential signal. In one example, error correction logic can correct one error in each differential signal for each sequence of symbols.
- In an aspect of the disclosure, an apparatus for data communications includes means for converting a data payload to a set of transition numbers, means for converting the set of transition numbers to a sequence of symbols, means for calculating an ECC from symbols in the sequence of symbols that correspond to the data payload, means for appending the ECC to the data payload such that the set of transition numbers includes transition numbers corresponding to the ECC, and means for transmitting the sequence of symbols on a plurality of signal wires.
- In an aspect of the disclosure, the means for converting the set of transition numbers is configured to encode clock information in the sequence of symbols by ensuring that each pair of consecutive symbols in the sequence of symbols includes two symbols that produce different signaling states on the plurality of signal wires.
- In an aspect of the disclosure, a transmitter includes a plurality of line drivers configured to transmit a plurality of signals on an N wire interface and a processing circuit configured to convert a data payload to a set of transition numbers, convert the set of transition numbers to a sequence of symbols, calculate an ECC from symbols in the sequence of symbols that correspond to the data payload, append the ECC to the data payload such that the set of transition numbers includes transition numbers corresponding to the error correction code, and transmit the sequence of symbols on the plurality of signal wires.
- In an aspect of the disclosure, a processor-readable storage medium has one or more instructions stored thereon. The instructions, when executed by a processing circuit, cause the processing circuit to convert a data payload to a set of transition numbers, convert the set of transition numbers to a sequence of symbols, calculate an ECC from symbols in the sequence of symbols that correspond to the data payload, append the ECC to the data payload such that the set of transition numbers includes transition numbers corresponding to the ECC, and transmit the sequence of symbols on a plurality of signal wires.
- In an aspect of the disclosure, a method of data communications includes receiving a sequence of symbols from a plurality of signal wires, calculating a first ECC from a plurality of symbols in the sequence of symbols, the plurality of symbols corresponding to a data payload carried in the sequence of symbols, converting the sequence of symbols to a set of transition numbers, converting the set of transition numbers to obtain a data packet that includes the data payload and a second ECC, the second ECC having been calculated by a transmitter of the sequence of symbols, determining whether one or more errors are present in the sequence of symbols based on a comparison of the first ECC with the second ECC, and providing the data payload as receiver output data.
- In an aspect of the disclosure, at least one error in the sequence of symbols is corrected using the first ECC and the second ECC. First ECCs and second ECCs calculated for different bits in a symbol and/or first ECCs and second ECCs calculated for different signals may be encoded and transmitted in the sequence of symbols. Accordingly, multiple errors may be corrected in the sequence of symbols. For example, a plurality of first and second ECCs can be used to correct multiple errors occurring in a sequence of symbols when two or more signals corresponding to different bits of the symbols each have a single error.
- In an aspect of the disclosure, the sequence of symbols is converted to the set of transition numbers by deriving a transition number as a value that represents a separation between occurrences of a current symbol and an immediately preceding symbol in a table of available symbols.
- In an aspect of the disclosure, a receive clock is extracted from the sequence of symbols. Clock information may be embedded in changes in signaling state associated with symbols in the sequence of symbols. Each pair of consecutive symbols in the sequence of symbols may include two symbols that are associated with different signaling states on the plurality of signal wires.
- In an aspect of the disclosure, a plurality of first error correction codes may be calculated from the sequence of symbols. Each error correction code may correspond to a bit in each symbol of the sequence of symbols. It may be determined whether one or more errors are present in the sequence of symbols by comparing each of the plurality of first error correction codes with corresponding second error correction codes appended to the data packet. Errors in individual signals of a plurality of signals may be detected or corrected based on the comparison of the first error correction codes with corresponding second error correction codes. In one example, one error per signal per symbol per word can be corrected.
- In an aspect of the disclosure, the plurality of signal wires is provided in a CCIe bus. The data payload may include two CCIe words.
- In an aspect of the disclosure, each symbol in the sequence of symbols is received as a set of differential signals carried on different combinations of two signal wires selected from the plurality of signal wires. Each differential signal in the set of differential signals corresponds to a bit of the each symbol. The first ECC may be calculated by calculating an ECC for each differential signal.
- In an aspect of the disclosure, an apparatus includes means for receiving a sequence of symbols from a plurality of signal wires, means for calculating a first ECC from a plurality of symbols in the sequence of symbols, the plurality of symbols corresponding to a data payload carried in the sequence of symbols, means for converting the sequence of symbols to a set of transition numbers, means for converting the set of transition numbers to obtain a data packet that includes the data payload and a second ECC, the second ECC having been calculated by a transmitter of the sequence of symbols, means for determining whether one or more errors are present in the sequence of symbols based on a comparison of the first ECC with the second ECC, and means for providing the data payload as receiver output data. In one example, one error per signal per symbol per word can be corrected.
- In an aspect of the disclosure, the apparatus includes means for extracting a receive clock from the sequence of symbols. Clock information may be embedded in changes in signaling state associated with symbols in the sequence of symbols. Each pair of consecutive symbols in the sequence of symbols may include two symbols that are associated with different signaling states on the plurality of signal wires.
- In an aspect of the disclosure, a receiver includes a processing circuit configured to receive a sequence of symbols from a plurality of signal wires, calculate a first ECC from a plurality of symbols in the sequence of symbols, the plurality of symbols corresponding to a data payload carried in the sequence of symbols, convert the sequence of symbols to a set of transition numbers, convert the set of transition numbers to obtain a data packet that includes the data payload and a second ECC, the second ECC having been calculated by a transmitter of the sequence of symbols, determine whether one or more errors are present in the sequence of symbols based on a comparison of the first ECC with the second ECC, and provide the data payload as receiver output data.
- In an aspect of the disclosure, a processor-readable storage medium has one or more instructions stored or maintained thereon. The instructions, when executed by at least one processing circuit, may cause the at least one processing circuit to receive a sequence of symbols from a plurality of signal wires, calculate a first ECC from a plurality of symbols in the sequence of symbols, the plurality of symbols corresponding to a data payload carried in the sequence of symbols, convert the sequence of symbols to a set of transition numbers, convert the set of transition numbers to obtain a data packet that includes the data payload and a second ECC, the second ECC having been calculated by a transmitter of the sequence of symbols, determine whether one or more errors are present in the sequence of symbols based on a comparison of the first ECC with the second ECC, and provide the data payload as receiver output data.
-
-
FIG. 1 depicts an apparatus employing a data link between IC devices that selectively operates according to one of plurality of available standards. -
FIG. 2 illustrates a system architecture for an apparatus employing a data link between IC devices. -
FIG. 3 illustrates an example of a basic N! multi-lane interface. -
FIG. 4 illustrates a CDR circuit that may be used in an N! communication interface. -
FIG. 5 illustrates timing of certain signals generated by the CDR circuit ofFIG. 3 in accordance with one or more aspects disclosed herein. -
FIG. 6 illustrates an example of an apparatus employing a CCIe data link. -
FIG. 7 illustrates the operation of a multi-wire interface in which clock information is embedded in a sequence of symbols transmitted over N wires. -
FIG. 8 illustrates an encoding scheme for transcoding data according to certain aspects disclosed herein. -
FIG. 9 illustrates conventional error correction in a multi-wire interface in which clock information is embedded in a sequence of symbols transmitted over N wires. -
FIG. 10 is a table illustrating the effect of single symbol errors in a CCIe system that uses an encoding scheme similar to that illustrated inFIG. 9 . -
FIG. 11 illustrates a generalized forward error correction scheme according to one or more aspects disclosed herein, where the forward error correction scheme may be used in a multi-wire interface that embeds clock information in transmitted symbols. -
FIG. 12 illustrates an example of a forward error correction scheme used in an N! interface in accordance with one or more aspects disclosed herein. -
FIG. 13 illustrates an example of a camera serial interface packet header to which ECC information is appended. -
FIG. 14 illustrates an example of an error correction scheme that may be employed in a CCIe interface in accordance with one or more aspects disclosed herein. -
FIG. 15 is a flowchart illustrating a method for data communications implemented in a transmitter on an N-wire communications link. -
FIG. 16 is a diagram illustrating a simplified example of a hardware implementation for a transmitting apparatus. -
FIG. 17 is a flowchart illustrating a method for data communications implemented in a receiver on an N-wire communications link. -
FIG. 18 is a diagram illustrating a simplified example of a hardware implementation for a receiving apparatus on an N-wire communications link. - Various aspects are now described with reference to the drawings. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of one or more aspects. It may be evident, however, that such aspect(s) may be practiced without these specific details.
- As used in this application, the terms "component," "module," "system" and the like are intended to include a computer-related entity, such as, but not limited to hardware, firmware, a combination of hardware and software, software, or software in execution. For example, 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. By way of illustration, both 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. In addition, 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.
- Moreover, the term "or" is intended to mean an inclusive "or" rather than an exclusive "or." That is, unless specified otherwise, or clear from the context, the phrase "X employs A or B" is intended to mean any of the natural inclusive permutations. That is, the phrase "X employs A or B" is satisfied by any of the following instances: X employs A; X employs B; or X employs both A and B. In addition, the articles "a" and "an" as used in this application and the appended claims should generally be construed to mean "one or more" unless specified otherwise or clear from the context to be directed to a singular form.
- Certain aspects of the invention may be applicable to communications links deployed between electronic devices that are subcomponents of a mobile apparatus such as a telephone, a mobile computing device, an appliance, automobile electronics, avionics systems, etc. Examples of a mobile apparatus include a cellular phone, a smart phone, a session initiation protocol (SIP) phone, a laptop, a notebook, a netbook, a smartbook, a personal digital assistant (PDA), a satellite radio, a global positioning system (GPS) device, a multimedia device, a video device, a digital audio player (e.g., MP3 player), a camera, a game console, a wearable computing device (e.g., a smartwatch, a health or fitness tracker, etc.), an appliance, a sensor, a vending machine, or any other similar functioning device.
-
FIG. 1 depicts one example of anapparatus 100 that employs a communication link between IC devices. In one example, theapparatus 100 may include a wireless communication device that communicates through an RF transceiver with a radio access network (RAN), a core access network, the Internet and/or another network. Theapparatus 100 may include acommunications transceiver 106 operably coupled toprocessing circuit 102. Theprocessing circuit 102 may include one or more IC devices, such as an application-specific IC (ASIC) 108. TheASIC 108 may include one or more processing devices, logic circuits, and so on. Theprocessing circuit 102 may include and/or be coupled to processor readable storage such as amemory 112 that may maintain instructions and data that may be executed by processingcircuit 102. Theprocessing 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 thememory device 112 of the wireless device. Thememory device 112 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. Theprocessing circuit 102 may include or access alocal database 114 that can maintain operational parameters and other information used to configure and operate theapparatus 100. Thelocal database 114 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 anantenna 122, adisplay 124, operator controls, such asbutton 128 andkeypad 126 among other components. -
FIG. 2 is a blockschematic drawing 200 illustrating certain aspects of anapparatus 200 connected to acommunication link 220, where theapparatus 200 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, s gaming device, or the like. Theapparatus 200 may include a plurality ofIC devices communication link 220. Thecommunication link 220 may be used to connectIC devices apparatus 200. In one example, thecommunication link 220 may be provided on a chip carrier, substrate or circuit board that carries theIC devices first IC device 202 may be located in a keypad section of a flip-phone while asecond IC device 230 may be located in a display section of the flip-phone. In another example, a portion of thecommunication link 220 may include a cable or optical connection. - The
communication link 220 may includemultiple channels more channels 226 may be bidirectional, and may operate in half-duplex and/or full-duplex modes. One ormore channels communication link 220 may be asymmetrical, providing higher bandwidth in one direction. In one example described herein, afirst communications channel 222 may be referred to as aforward link 222 while asecond communications channel 224 may be referred to as areverse link 224. Thefirst IC device 202 may be designated as a host system or transmitter, while thesecond IC device 230 may be designated as a client system or receiver, even if bothIC devices forward link 222 may operate at a higher data rate when communicating data from afirst IC device 202 to asecond IC device 230, while thereverse link 224 may operate at a lower data rate when communicating data from thesecond IC device 230 to thefirst IC device 202. - The
IC devices device first IC device 202 may perform core functions of theapparatus 200, including maintaining wireless communications through awireless transceiver 204 and anantenna 214, while thesecond IC device 230 may support a user interface that manages or operates adisplay controller 232. Thefirst IC device 202 orsecond IC device 230 may control operations of a camera or video input device using acamera controller 234. Other features supported by one or more of theIC devices 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. Thestorage media respective processors IC devices processor corresponding storage media more bus - The
reverse link 224 may be operated in the same manner as theforward link 222, and theforward link 222 andreverse link 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 singlebidirectional link 226 may support communications between thefirst IC device 202 and thesecond IC device 230. Theforward link 222 and/orreverse link 224 may be configurable to operate in a bidirectional mode when, for example, the forward and reverselinks communication link 220 may be operated to communicate control, command and other information between thefirst IC device 202 and thesecond IC device 230 in accordance with an industry or other standard. - In one example, forward and reverse
links links devices 210 and/or 230 can 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 so on. - The forward and reverse
links processor IC device 202 and anIC 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. The MIPI standard may define interfaces that employ complimentary metal-oxide-semiconductor (CMOS) parallel busses. - In one example, the
communication link 220 ofFIG. 2 may be implemented as a wired bus that includes a plurality of signal wires (denoted as N wires). The N wires may be configured to carry data encoded in symbols, where clock information is embedded in a sequence of the symbols transmitted over the plurality of wires. -
FIG. 3 is a diagram illustrating one example of an N-wire interface 300 provided between twodevices 302 and 332. At atransmitter 302, atranscoder 306 may be used to encodedata 304 and clock information in symbols to be transmitted over a set ofN wires 314 using N-factorial (N!) encoding. The clock information is derived from a transmit clock 312 and may be encoded in a sequence of symbols transmitted in N C2 differential signals over theN wires 314 by ensuring that a signaling state transition occurs on at least one of the N C2 signals between consecutive symbols. When N! encoding is used to drive theN wires 314, each bit of a symbol is transmitted as a differential signal by one of a set ofdifferential line drivers 310, where the differential drivers in the set ofline drivers 310 are coupled to different pairs of the N wires. The number of available combinations of wire pairs ( N C2) determines the number of signals that can be transmitted over theN wires 314. The number ofdata bits 304 that can be encoded in a symbol may be calculated based on the number of available signaling states available for each symbol transmission interval. - A termination impedance (typically resistive) couples each of the
N wires 314 to acommon center point 318 in atermination network 316. It will be appreciated that the signaling states of theN wires 314 reflects a combination of the currents in thetermination network 316 attributed to thedifferential drivers 310 coupled to each wire. It will be further appreciated that thecenter point 318 is a null point, whereby the currents in thetermination network 316 cancel each other at the center point. - The N! encoding scheme need not use a separate clock channel and/or non-return-to-zero decoding because at least one of the N C2 signals in the link transitions between consecutive symbols. Effectively, the
transcoder 306 ensures that a transition occurs between each pair of symbols transmitted on theN wires 314 by producing a sequence of symbols in which each symbol is different from its immediate predecessor symbol. In the example depicted inFIG. 3 , N=4 wires are provided, and the 4 wires can carry 4C2 = 6 differential signals. Thetranscoder 306 may employ a mapping scheme to generate raw symbols for transmission on theN wires 314. Thetranscoder 306 may mapdata bits 304 to a set of transition numbers. The transition numbers may then be used to select a raw symbol for transmission based on the value of the preceding symbol such that the selected raw symbol is different from the preceding raw symbol. In one example, a transition number may be used to lookup a data value corresponding to the second of the consecutive raw symbols with reference to the first of the consecutive raw symbols. At thereceiver 320, atranscoder 330 may employ a mapping to determine a transition number that characterizes a difference between a pair of consecutive raw symbols in a lookup table, for example. Thetranscoders - The
transcoder 306 at thetransmitter 302 may select between the N! -1 symbols that are available at every symbol transition. In one example, a 4! system provides 4! - 1 = 23 signaling states for the next symbol to be transmitted at each symbol transition. The bit rate may be calculated as log 2 (available_states) per transmit clock cycle. In a system using double data rate (DDR) clocking, whereby symbol transitions occur at both the rising edge and falling edge of the transmit clock 312, two symbols are transmitted per transmit clock cycle. The total available states in the transmit clock cycle is ( N C2-1)2 = (23)2 = 529 and the number ofdata bits 304 that can transmitted per symbol may be calculated as log 2(529) = 9.047 bits. - A receiving
device 320 receives the sequence of symbols using a set ofline receivers 322 where each receiver in the set ofline receivers 322 determines differences in signaling states on one pair of theN wires 314. Accordingly, N C2 receivers are used, where N represents the number of wires. The N C2 receivers 322 produce a corresponding number of raw symbols as outputs. In the depicted N=4 wire example, the signals received on the fourwires 314 are processed by 6 receivers (4C2 = 6) to produce a state transition signal that is provided to acorresponding CDR 324 anddeserializer 326. TheCDR 324 may produce a receiveclock signal 334 that can be used by thedeserializer 326. The receiveclock signal 334 may be a DDR clock signal that can be used by external circuitry to receive data provided by thetranscoder 328. Thetranscoder 328 decodes a block of received symbols from thedeserializer 326 by comparing each next symbol to its immediate predecessor. Thetranscoder 328 producesoutput data 330 corresponding to thedata 304, provided to thetransmitter 302. -
FIG. 4 illustrates an example of aCDR circuit 400 that may be employed to recover embedded clock information in an N-wire system using N! encoding. The depictedCDR circuit 400 may be adapted for use with other encoding techniques and certain of the principles described herein relate also to CCIe interfaces, for example.FIG. 5 is a timing diagram illustrating certain signals generated through the operation of theCDR circuit 400. TheCDR circuit 400 - In an N! interface, signals received from N-
wires 408 are initially processed by a number ( N C2) ofreceivers 402, which produce a corresponding number of raw signals as outputs. In the illustrated example, N=4wires 408 are processed by 4C2 = 6receivers 402 that produce a first state transition signal (SI signal) 420 that includes 6 raw signals representative of the received symbol. For each raw signal output from each different receiver there may be asetup time 508 provided betweensymbols S 0 502,S 1 504 andS 2 506 during which the state of the corresponding signal is undefined, indeterminate, transient or otherwise unstable. Level latches 410, acomparator 404, set-reset latch 406, a one-shot circuit 426, ananalog delay element 412 and (bused) level latches 410 may be configured to generate a level-latched signal (S signal) 422 representative of a delayed instance of theSI signal 420, where the delay before theSI signal 420 is captured by the level latches to provide an updatedS signal 422 may be selected by configuring a delay element (Delay S) 412. - In operation, the
comparator 404 compares the SI signal 420 with the S signal 422 and outputs a binary comparison signal (NE signal) 414. The set-reset latch 406 may receive the NE signal 414 from thecomparator 404 and output a signal (NEFLT signal) 416, which is a filtered version of the NE signal 414. The operation of the set-reset latch 406 can be configured to remove any transient instability in the NE signal 414, where the transient instability is exhibited asspikes 510 in the NE signal 414. TheNEFLT signal 416 can be used to control the output latches 424 that capture the S signal 422 as output data signal 428. - The one-
shot circuit 426 receives theNEFLT signal 416 and produces a fixedwidth pulse 512, which may then be delayed by thedelay element 412 to produce a clock signal (SDRCLK) 418. In some instances, theSDRCLK signal 418 may be used by external circuitry to sample thedata output 428 of theCDR 400. In one example, theSDRCLK signal 418 may be provided to decoder or deserializer circuits. The level latches 410 receive theSI signal 420 and output the S signal 422, where the level latches 410 are triggered or otherwise controlled by theSDRCLK signal 418. - In operation, the
comparator 404 compares the SI signal 420 with the S signal 422, which is output from the level latches 410. Thecomparator 404 drives the NE signal 414 to a first state (e.g. logic low) when theSI signal 420 and the S signal 422 are equal, and to a second state (e.g. logic high) when theSI signal 420 and the S signal 422 are not equal. The NE signal 414 is in the second state when theSI signal 420 and the S signal 422 are representative of different symbols. Thus, the second state indicates that a transition is occurring. - As can be appreciated from the timing diagram 500, the S signal 422 is essentially a delayed and filtered version of
SI signal 420, in which transients orglitches 508 have been removed because of thedelay 514 between theSI signal 420 and theS signal 422.Multiple transitions 508 in theSI signal 420 may be reflected asspikes 510 in the NE signal 414, but thesespikes 510 are masked from theNEFLT signal 416 through the operation of the set-reset circuit. Moreover, theSDRCLK 418 is resistant to line skew and glitches in the symbol transitions based on the use of thedelays latch 410 and set-reset circuit 406, whereby theSDRCLK signal 418 controls the reset function of the set-reset circuit 406. - At the
commencement 516 of a transition between a firstsymbol value S 0 502 and a nextsymbol value S 1 504, theSI signal 420 begins to change state. The state of theSI signal 420 may be different fromS 1 504 due to the possibility that intermediate orindeterminate states 508 during the transition betweenS 0 502 andS 1 504. These intermediate orindeterminate states 508 may be caused, for example, by inter-wire skew, over/under shoot, cross-talk, etc. - The NE signal 414 becomes high as soon as the
comparator 404 detects a difference in values between theSI signal 420 and the S signal 422, and the transition high of the NE signal 414 asynchronously sets the set-reset latch 406 output, driving theNEFLT signal 416 high. TheNEFLT signal 416 is maintained in its high state until the set-reset latch 406 is reset by a high state of theSDRCLK signal 418. TheSDRCLK signal 418 is a delayed version of theNE1SHOT signal 424, which is a limited pulse-width version of theNEFLT signal 416. TheSDRCLK signal 418 may be delayed with respect to theNE1SHOT signal 424 through the use of theanalog delay circuit 412, for example. - The intermediate or
indeterminate states 508 onSI 420 may represent invalid data. These intermediate orindeterminate states 508 may contain a short period of the previoussymbol value S 0 502, and may cause the NE signal 414 to return low for short periods of time. Transitions of theSI signal 420 may generatespikes 510 on the NE signal 414. Thespikes 510 are effectively filtered out and do not appear in theNEFLT signal 416. - The high state of the
NEFLT signal 416 causes theSDRCLK signal 418 to transition high after a delay period 440 caused by thedelay circuit 412. The high state ofSDRCLK signal 418 resets the set-reset latch 406 output, causing theNEFLT signal 416 to transition to a low state. The high state of theSDRCLK signal 418 also enables the level latches 410, and the SI signal 420 value may be output on theS signal 410. - The
comparator 404 detects that the S signal 422 (for symbol S1 502) matches thesymbol S 1 502 value present on theSI signal 420 and switches its output (the NE signal 414) low. The low state of theNEFLT signal 416 causes theSDRCLK signal 418 to go low after a delay period 442 caused by theanalog delay 412. This cycle repeats for each transition in theSI signal 420. At a time after the falling edge of theSDRCLK signal 418, anew symbol S 2 506 may be received and may cause the SI signal 420 to switch its value in accordance with thenext symbol S 2 506. -
FIG. 6 is a block schematic diagram illustrating certain aspects of anapparatus 600 that employs acommunications bus 630 configured for CCIe operation. Theapparatus 600 may includemultiple devices CCIe bus 630. In one example, animaging device 602 is configured to operate as a slave device on theCCIe bus 630. Theimaging device 602 may be adapted to provide acontrol function 604 that manages an image sensor, for example. In addition, theimaging device 602 may include configuration registers orother storage 606,control logic 612, atransceiver 610 and line drivers/receivers control logic 612 may include a processing circuit such as a state machine, sequencer, signal processor or general-purpose processor. - The
transceiver 610 may include areceiver 610a, atransmitter 610c andcommon circuits 610b, including timing, logic and storage circuits and/or devices. In one example, thetransmitter 610c encodes and transmits data based on timing provided by aclock generation circuit 608. Aconventional imaging device 604 may not have access to a clock that has a high enough frequency to permit thedevice 602 to achieve the indicated bit rate of theCCIe bus 630, becausesensor devices 602 typically do not need or use a 125 MHz or higher clock. According to certain aspects disclosed herein, however, areceiver 610a may be configured or adapted to extract a receive clock from the CCIe bus by generating a clock signal directly from the received transmission using analog delay circuits that can eliminate the need for a high frequency clock and thereby conserve power during idle periods. -
FIG. 7 is a simplified block diagram illustrating atransmitter 700 and areceiver 720 configured according to certain aspects disclosed herein. Thetransmitter 700 andreceiver 720 may be adapted for use with a variety of encoding techniques, including N! and CCIe. Thetransmitter 700 includes afirst convertor 704 configured to convertdata 702 intotransition numbers 714. The transition numbers 714 may be used to select a next symbol for transmission based on the value of a current symbol, where the next symbol is different from a current symbol. Asecond converter 706 receives the transition numbers and produces a sequence of symbols for transmission on the interface using suitably configuredline drivers 708. Since no pair of consecutive symbols includes two identical symbols, a transition of signaling state occurs in at least one of thesignal wires 718 of the interface at every symbol transition. At thereceiver 720, a set ofline receivers 726 provides raw symbols (SI) 736 to aCDR 728 that extracts a receiveclock 738 and provides captured symbols (S) 734 to a circuit that converts the capturedsymbols 734 to transitionnumbers 732. The transition numbers may be decoded by acircuit 722 to provideoutput data 730. - In the example of a CCIe system, the
transmitter 700 may be configured or adapted to transcodedata 710 into ternary (base-3) transition numbers 714. The transition numbers 714 may be encoded in a sequence ofsymbols 716 to be transmitted on thesignal wires 718, which may correspond to theSCL 616 andSDA 618 wires illustrated inFIG. 6 . Each data element of theinput data 702 may include 20-bit words. Atranscoder 704 may receive theinput data 702 and produce a sequence ofternary numbers 714 for each data element. Theternary numbers 714 may be encoded in two bits and there may be 12ternary numbers 714 in each ternary sequence 712. Anencoder 706 produces a stream of 2-bit symbols 716 that are transmitted throughline drivers 708. In one example, theline drivers 708 may include open-drain output transistors. In another example, theline drivers 708 may include push-pull drivers. The output stream of 2-bit symbols 716 generated by the encoder has a transition in the state of at least one of thesignal wires 718 between each pair ofconsecutive symbols 716 by ensuring that no pair of consecutive symbols include two identical symbols. The availability of a transition of state in at least one of the signal wires permits a receivingcircuit 720 to extract a receiveclock 738 from the stream ofdata symbols 716. - In a CCIe system, the
receiver 720 includesline interface circuits 726 that provide a stream of raw 2-bit symbols 736 to aCDR 728. TheCDR 728 extracts a receiveclock 738 from theraw symbols 736 and provides a stream of 2-bit symbols 734 and the receiveclock 738 toother circuits receiver 720. In some instances, theCDR 728 may produce multiple clocks in itsoutput 738. Adecoder 724 may use the receiveclock 738 to decode the stream ofsymbols 734 into sequences of 12ternary numbers 732. Theternary numbers 732 may be encoded using two bits. Atranscoder 722 may then convert each sequence of 12ternary numbers 732 into 20-bitoutput data elements 730. -
FIG. 8 is a drawing illustrating anencoding scheme 800 used by atranscoder 704 configured to produce a sequence ofsymbols 716 for transmission on a CCIe interface. Theencoding scheme 800 is provided by way of example and is also used by atranscoder 724 to extract data from symbols received from theCCIe bus 718. In theCCIe encoding scheme 800, the two wires of theCCIe bus 718 permit definition of 4 basic symbols S: {0, 1, 2, 3}. Any two consecutive symbols in the sequence ofsymbols symbol sequences - According to certain aspects disclosed herein, the three available transitions are assigned a transition number (T) 826 for each
Ps symbol 822. The value ofT 826 can be represented by a ternary number. In one example, the value oftransition number 826 is determined by assigning a symbol-orderingcircle 802 for the encoding scheme. The symbol-orderingcircle 802 allocateslocations 804a-804d on thecircle 802 for the four possible symbols, and a direction ofrotation 806 between thelocations 804a-804d In the depicted example, the direction ofrotation 806 is clockwise. Thetransition number 826 may represent the separation between the validcurrent symbols 824 and the immediately precedingsymbol 822. Separation may be defined as the number of steps along the direction ofrotation 806 on the symbol-orderingcircle 802 required to reach thecurrent symbol Cs 824 from theprevious symbol 822. 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 0base-3. The table 820 inFIG. 8 summarizes an encoding scheme employing this approach. - At the
transmitter 700, the table 820 may be used to lookup acurrent symbol 824 to be transmitted, given knowledge of the previously generatedsymbol 822 and an input ternary number, which is used as atransition number 826. At thereceiver 720, the table 820 may be used as a lookup to determine atransition number 826 that represents the transition between the previously receivedsymbol 822 and the currently receivedsymbol 824. Thetransition number 826 may be output as a ternary number. - The use of a transcoder that embeds clock information in a sequence of symbols can disassociate
data 702 received by atransmitter 700 from the sequence ofsymbols 716 transmitted onsignal wires 718. Consequently, a receivedraw symbol 736 cannot be decoded to obtain a correspondingtransmission data bits 702 without consideration of at least one previously transmitted symbol. This disassociation can render conventional error correction techniques ineffective. For example, a conventional system may append an error correction code (ECC) todata 702, where the ECC is calculated from a predefined block size ofinput data 702 or a packet length. The ECC may be used to identify and/or correct occurrences of errors during transmission, where the errors may include one or more bit errors. -
FIG. 9 provides a generalized illustration of the operation of a multi-wire interface in which clock information is embedded in a sequence of symbols transmitted overN wires 920. In atransmitter 900, anECC generator 916 generates anEEC 918 fromdata bits 902 to be transmitted (also referred to as the data payload or transmission data 902) on a multi-wire interface. Thetransmission data 902 may be organized as a packet, one or more words and/or some other configuration of bits. In one example, thetransmission data 902 may include a fixed number of bits provided according to a MIPI standard. - The
ECC 918 may be generated using any suitable algorithm or technique that may be used for forward error correction (FEC). FEC permits areceiver 930 to correct certain transmission errors that may affect one or more bits of a symbol transmitted on theN wires 920. Transmission errors may occur due to noise or crosstalk, other electromagnetic interference, and so on. Thetransmitter 900 may include a module orcircuit 904 that appends anECC 918 to thetransmission data 902 to obtain adata packet 912. Thedata packet 912 may be transcoded to obtain a sequence of symbols that encodes thetransmission data 902, theECC 918 and clock information related to a transmitclock 914. In one example, thetransmitter 900 may include afirst converter 906 that converts the data packet to transitionnumbers 916, and asecond converter 908 that converts thetransition numbers 916 to a sequence ofsymbols 922 that may be transmitted over theN wires 920 using theline drivers 910. - At the
receiver 930, aCDR 934 is provided to extractsymbols 944 and a receiveclock 930 from sequences ofraw symbols 942 in signals received from theN wires 920 usingline receivers 932. Afirst converter 936 may convert the sequence ofsymbols 944 to transitionnumbers 946. The transition numbers 946 are converted by asecond converter 938 to provide a receiveddata packet 948. The receiveddata packet 948 is provided to an ECC generation circuit ormodule 950 that generates areceiver ECC 952 from data bits in the receiveddata packet 948. An error detection and/or correction circuit ormodule 950 may compare thereceiver ECC 952 to the bits of the receivedpacket ECC 948 that correspond to theECC 918 generated by theECC generator 916 in thetransmitter 900. Theerror correction circuit 940 may attempt to use theECCs packet ECC 948 in order to generate a reliable copy oftransmission data 902 to be output as receiveddata 954. - A Hamming code may be used to configure the
ECC generators data packet 912. A Hamming rule may be used to calculate the number of parity or error check bits in theECC - d is the number of bits in the
transmission data 902, and - p is the number of bits in the
ECC - In the example shown in
FIG. 9 , transmission errors exhibited as one or more errors in the receivedsymbols 942 may not have a direct correlation with a corresponding number of affected bits in the receiveddata packet 948, when thetransmitter 900 embedsclock information 914 withtransmission data 902 in transmitted the sequences ofsymbols 922. In some instances, a single symbol error occurring on an N! or CCIe multiple-symbol word can cause multiple bit errors after reverse transcoding. For example, the table 1000 inFIG. 10 illustrates the effect of single symbol errors in a CCIe system that uses an encoding scheme similar to that illustrated inFIG. 9 . Thefirst row 1002 of the table illustrates an error free transmission and decoding of a 12-symbol sequence S 11 ...S 0 = {0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1}, which encodes a 20-bit binary number having all bits set to logic '0' (value=0). The remaining rows illustrate the effects of an erroneous received symbol 1004 (circled) on thetransition numbers 1006, and resultant errors in decodedhexadecimal values 1008 and corresponding decodedbits 1010. It can be seen from the table 1000 that a single transmission error can result in multiple bit errors that can defeat an error correction scheme that is based on anECC 916 calculated directly fromtransmission data 902. - Certain aspects disclosed herein provide an error detection and/or correction scheme that can be more reliably used with N! interfaces, CCIe interfaces and other interfaces that embed clock information in sequences of symbols. For example, an ECC may be calculated from symbol values to be transmitted a multi-wire communication link. Accordingly, one or more symbol errors may be corrected at the receiver using the ECC.
-
FIG. 11 illustrates a generalized example of an FEC scheme used in a multi-wire interface that embeds clock information related to a transmitclock 1114 in transmittedsymbols 1118. - A
transmitter 1100 includes combininglogic 1104 that is configured to appendECC bits 1124 totransmission data 1102 to obtain atransmission data packet 1122. Afirst converter 1106 converts thetransmission data packet 1122 to transitionnumbers 1116, which are converted to a sequence ofsymbols 1118 by asecond converter 1108. The sequence ofsymbols 1118 is transmitted on theN wires 1120 using suitably configuredline drivers 1110. AnECC generation circuit 1112 generates theECC bits 1124 based on the values in the sequence ofsymbols 1118 that encode thetransmission data 1102. TheECC bits 1124 appended to thetransmission data packet 1122 are encoded in symbols, which are transmitted in the sequence ofsymbols 1118 on theN wires 1120. - At the
receiver 1130, aCDR 1134 is provided to extractsymbols 1154 and a receiveclock 1156 from sequences ofraw symbols 1152 received from theN wires 1120 usingline receivers 1132. The extractedsymbols 1154 are provided toECC generation logic 1142 anderror correction logic 1136. TheECC generation logic 1142 generates areceiver ECC 1146 from the receivedsymbols 1154. Theerror correction logic 1136 may compare thereceiver ECC 1146 with anECC word 1144 decoded from the receivedsymbols 1154. Accordingly, theerror correction logic 1136 may detect and/or correct errors in the receivedsymbols 1154. Afirst converter 1138 may generatetransition numbers 1148 from corrected symbols received from theerror correction logic 1136. Thesetransition numbers 1148 may then be converted by asecond converter 1140 to provide receiveddata 1150. -
FIG. 12 illustrates an example of an FEC scheme that may be employed in an N! interface. In this example, a 3! interface is provided whereby atransmitter 1200 is configured to use a set of threedifferential line drivers 1212 to drivedifferent pairs wire link 1220. Thetransmitter 1200 includes apacket generator 1204 that forms atransmitter data packet 1222 by appendingECC information 1218 totransmission data 1202.Transcoding circuits transmitter data packet 1222 to a sequence ofsymbols 1214 for transmission on the 3! interface. In the example, each of threeserializers 1210 is configured to serialize one bit of the threebit symbols 1214. The outputs of theserializers 1210 are provided to thedifferential line drivers 1212, each of which drives onepair interface 1220. - The
ECC generator 1216 calculates theECC information 1218 from the sequence ofsymbols 1214. The number of bits used to encode theECC information 1216 may be calculated according to the Hamming rule, d + p + 1 ≤ 2 p .FIG. 13 illustrates one example in whichECC information 1310 is appended to a 24-bit camera serial interface (CSI2)packet header 1304. Here theCSI2 packet header 1304 is d = 24 bits in length. Accordingly, p + 25 ≤ 2 p to permit 1 bit error correction and two-bit error detection, and any value of p ≥ 5 satisfies the Hamming rule.ECC information 1218 for each pair ofwires 1220 may be transmitted in three 8-bit words, for a total of 24 bits. - In this latter example, the
ECC information 1310 includes anECC differential signals ECCs CSI2 packet header 1304 and theECC information 1310 may be transmitted in three sequences of 7symbols - The
receiver 1240 may receive the three sequences ofsymbols differential receivers 1244. A set of three deserializers 1246 provides a set of 7symbols 1262 corresponding to each of the three sequences ofsymbols receiver 1240 may process each of three sets of 7symbols 1248 to extracttransmitter ECC 1218 and may independently generatereceiver ECC information 1264. Accordingly, anECC generator 1254 may be configured to generate thereceiver ECC information 1264 from the symbols that encode theCSI2 packet header 1304, which may be found in two of the three sets of 7symbols 1248. Concurrently, the symbols that carry theECC code information 1310 are decoded to obtain the a decodedECC 1256 corresponding to thetransmitter ECC information 1218. The symbols carrying theECC code information 1310 may be found in two of the three sets of 7symbols 1248.Error correction logic 1250 may be configured to compare thereceiver ECC information 1264 to the decodedtransmitter ECC information 1256, and to identify and/or correct bit errors in the two of the three sets of 7symbols 1248 that encode theCSI2 packet header 1304. The output of theerror correction logic 1250 is provided asreceiver output data 1260. -
FIG. 14 is a drawing illustrating an example of an error correction scheme that may be employed in a CCIe interface. In this example, atransmitter 1400 is configured to transmit 2-bit symbols in signals transmitted by a pair ofline drivers 1418 over a pair ofwires 1420. Thetransmitter 1400 includes apacket generator 1404 that forms atransmitter data packet 1416 by appendingECC information 1422 totransmission data 1402.Transcoding circuits transmitter data packet 1416 to a sequence ofsymbols 1414 for transmission on the twowires 1420. - The
ECC generator 1410 calculates theECC information 1422 from the sequence ofsymbols 1414. The number of bits used to encode theECC information 1422 may be calculated according to the Hamming rule, d + p + 1 ≤ 2 p . In one example, theECC information 1422 is calculated for a single 12-bit CCIe word and, consequently, p + 13 ≤ 2 p to permit 1 bit error correction and two-bit error detection, and any value of p ≥ 5 satisfies the Hamming rule. In another example, theECC information 1422 is calculated for two 12-bit CCIe words, p + 25 ≤ 2 p to permit 1 bit error correction and two-bit error detection and, again, any value of p ≥ 5 satisfies the Hamming rule. Accordingly, it may be more efficient to add ECC information to two-word transmissions than to single-word transmissions. - The
receiver 1430 may receivesymbols 1414 from the pair ofwires 1420 usingreceivers 1432. ACDR 1434 may provide a receiveclock 1448 and a sequence ofsymbols 1444 from theraw symbols 1442 received by theline receivers 1432. The sequence ofsymbols 1444 is provided toerror correction logic 1436 and anECC generator 1452. Theerror correction logic 1436 may compare an ECC provided by theECC generator 1452 with aversion 1456 of thetransmitter ECC 1422 that is decoded from the sequence ofsymbols 1444. Based on this comparison, theerror correction logic 1436 may identify and/or correct bit errors in the sequence ofsymbols 1444. The output of theerror correction logic 1436 may be provided to thetranscoder logic receiver output data 1450. -
FIG. 15 is aflowchart 1500 illustrating a method for data communications on an N-wire communications link. The communications link may include a plurality of connectors that carry symbols encoded using a suitable encoding scheme, such as N! encoding, CCIe encoding, multiphase encoding, multi-wire differential encoding, etc. The connectors may include electrically conductive wires, optical signal conductors, semi-conductive interconnects and so on. The method may be performed by one or more processors of a transmitting device. - At
step 1502, a data payload is converted to a set of transition numbers. - At
step 1504, the set of transition numbers is converted to a sequence of symbols. The set of transition numbers may be converted to the sequence of symbols by using a transition number to select a next symbol relative to a current symbol. A value of the transition number may represent a separation between the current symbol and the next symbol in a table of available symbols. - At
step 1506, an ECC is calculated from symbols in the sequence of symbols that correspond to the data payload. - At
step 1508, the ECC is appended to the data payload such that the set of transition numbers includes transition numbers corresponding to the ECC. - In accordance with certain aspects disclosed herein, an error correction code may be calculated for each of a plurality of signals transmitted on the plurality of signal wires. The plurality of signals may correspond to the sequence of symbols. The error correction codes calculated for the plurality of signals may be appended to the data payload. Each of the plurality of signals may correspond to a bit in each symbol in the sequence of symbols.
- In accordance with certain aspects disclosed herein, ECCs calculated for different bits in a symbol and/or calculated for a plurality signals that are encoded with the sequence of symbols may be used to correct multiple errors in the sequence of symbols. For example, a plurality of ECCs can be used to correct multiple errors occurring in a sequence of symbols when two or more signals corresponding to different bits of the symbols each have a single error.
- At
step 1510, the sequence of symbols is transmitted on a plurality of signal wires. In one example, the plurality of signal wires may be provided in a CCIe bus and the data payload may include two CCIe words. In another example, the sequence of symbols may be transmitted by transmitting each symbol in the sequence of symbols on differential signals carried on different combinations of two signal wires selected from the plurality of signal wires. Each of the differential signals may correspond to a bit of the each symbol and an error correction code may be calculated for each differential signal. - In accordance with certain aspects disclosed herein, clock information may be encoded in the sequence of symbols. The clock information may be encoded by ensuring that each pair of consecutive symbols in the sequence of symbols includes two symbols that produce different signaling states on the plurality of signal wires.
-
FIG. 16 is a diagram 1600 illustrating a simplified example of a hardware implementation for an apparatus employing aprocessing circuit 1602. The processing circuit typically has aprocessor 1616 that may include one or more of a microprocessor, microcontroller, digital signal processor, a sequencer and a state machine. Theprocessing circuit 1602 may be implemented with a bus architecture, represented generally by thebus 1620. Thebus 1620 may include any number of interconnecting buses and bridges depending on the specific application of theprocessing circuit 1602 and the overall design constraints. Thebus 1620 links together various circuits including one or more processors and/or hardware modules, represented by theprocessor 1616, the modules orcircuits line interface circuits 1612 configurable to communicate over connectors orwires 1614 and the computer-readable storage medium 1618. Thebus 1620 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 1616 is responsible for general processing, including the execution of software stored on the computer-readable storage medium 1616. The software, when executed by theprocessor 1616, causes theprocessing circuit 1602 to perform the various functions described supra for any particular apparatus. The computer-readable storage medium 1618 may also be used for storing data that is manipulated by theprocessor 1616 when executing software, including data decoded from symbols transmitted over theconnectors 1614. Theprocessing circuit 1602 further includes at least one of themodules modules processor 1616, resident/stored in the computerreadable storage medium 1618, one or more hardware modules coupled to theprocessor 1616, or some combination thereof. Themodules - In one configuration, the
apparatus 1600 for wireless communication includes modules and/orcircuits 1604 configured to convert a data payload to a set of transition numbers, and further configured to convert the set of transition numbers to a sequence of symbols, modules and/orcircuits 1606 configured to calculate an ECC from symbols in the sequence of symbols that correspond to the data payload, modules and/orcircuits 1608 configured to append the ECC to the data payload such that the set of transition numbers includes transition numbers corresponding to the ECC, and modules and/orcircuits signal wires 1614. In one example, the circuits illustrated inFIGs. 11 ,12 and14 provide logic which implement the various functions performed by theapparatus 1302. -
FIG. 16 is a diagram 1600 illustrating a simplified example of a hardware implementation for an apparatusFIG. 17 is aflowchart 1700 illustrating a method for data communications on an N-wire communications link. The communications link may include a plurality of connectors that carry symbols encoded using a suitable encoding scheme, such as N! encoding, multiphase encoding, multi-wire differential encoding, etc. The connectors may include electrically conductive wires, optical signal conductors, semi-conductive interconnects and so on. The method may be performed by one or more processors of a receiving device. - At
step 1702, a sequence of symbols is received from a plurality of signal wires. The plurality of signal wires may be provided in a CCIe bus in one example, and in an N! interface in another example. - At
step 1704, a first ECC is calculated from a plurality of symbols in the sequence of symbols. Each symbol in the sequence of symbols may be received as a set of differential signals carried on different combinations of two signal wires selected from the plurality of signal wires. Each differential signal in the set of differential signals may correspond to a bit of the each symbol. The first ECC may be calculated by calculating an ECC for each differential signal. The plurality of symbols may correspond to a data payload carried in the sequence of symbols. The data payload may include two CCIe words. - At
step 1706, the sequence of symbols may be converted to a set of transition numbers. The sequence of symbols may be converted to the set of transition numbers by deriving a transition number as a value that represents a separation between occurrences of a current symbol and an immediately preceding symbol in a table of available symbols. - At
step 1708, the set of transition numbers may be converted to obtain a data packet that includes the data payload and a second ECC. The second ECC may have been calculated by a transmitter of the sequence of symbols. - At
step 1710, it may be determined whether one or more errors are present in the sequence of symbols based on a comparison of the first ECC with the second ECC. Based on the determination, at least one error in the sequence of symbols may be corrected using the first ECC and the second ECC. - At
step 1712, the payload data as receiver output data. - In accordance with certain aspects disclosed herein, a receive clock is extracted from the sequence of symbols. Clock information may be embedded in changes in signaling state associated with symbols in the sequence of symbols. Each pair of consecutive symbols in the sequence of symbols may include two symbols that are associated with different signaling states on the plurality of signal wires.
- In accordance with certain aspects disclosed herein, a plurality of first error correction codes may be calculated from the sequence of symbols. Each error correction code may correspond to a bit in each symbol of the sequence of symbols. It may be determined whether one or more errors are present in the sequence of symbols by comparing each of the plurality of first error correction codes with corresponding second error correction codes appended to the data packet. Errors in individual signals of a plurality of signals may be detected or corrected based on the comparison of the first error correction codes with corresponding second error correction codes.
-
FIG. 18 is a diagram 1800 illustrating a simplified example of a hardware implementation for an apparatus employing aprocessing circuit 1802. The processing circuit typically has aprocessor 1816 that may include one or more of a microprocessor, microcontroller, digital signal processor, a sequencer and a state machine. Theprocessing circuit 1802 may be implemented with a bus architecture, represented generally by thebus 1820. Thebus 1820 may include any number of interconnecting buses and bridges depending on the specific application of theprocessing circuit 1802 and the overall design constraints. Thebus 1820 links together various circuits including one or more processors and/or hardware modules, represented by theprocessor 1816, the modules orcircuits line interface circuits 1812 configurable to communicate over connectors orwires 1814 and the computer-readable storage medium 1818. Thebus 1820 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 1816 is responsible for general processing, including the execution of software stored on the computer-readable storage medium 1816. The software, when executed by theprocessor 1816, causes theprocessing circuit 1802 to perform the various functions described supra for any particular apparatus. The computer-readable storage medium 1818 may also be used for storing data that is manipulated by theprocessor 1816 when executing software, including data decoded from symbols transmitted over theconnectors 1814. Theprocessing circuit 1802 further includes at least one of themodules modules processor 1816, resident/stored in the computerreadable storage medium 1818, one or more hardware modules coupled to theprocessor 1816, or some combination thereof. Themodules - In one configuration, the
apparatus 1800 for wireless communication includes modules and/orcircuits signal wires 1814, modules and/orcircuits 1808 configured to calculate a first ECC from a plurality of symbols in the sequence of symbols, the plurality of symbols corresponding to a data payload carried in the sequence of symbols, modules and/orcircuits 1804 configured to convert the sequence of symbols to a set of transition numbers and further configured to convert the set of transition numbers to obtain a data packet that includes the data payload and a second ECC, modules and/orcircuits 1808 configured to determine whether one or more errors are present in the sequence of symbols based on a comparison of the first ECC with the second error correction code, and modules and/orcircuits FIGs. 11 ,12 and provide logic which implement the various functions performed by theapparatus 1802. - 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.
Claims (15)
- A method of data communications, comprising:converting (1502) a data payload to a set of transition numbers;converting (1504) the set of transition numbers to a sequence of symbols;calculating (1506) an error correction code from symbols in the sequence of symbols that correspond to the data payload;appending (1508) the error correction code to the data payload, converting the appended error correction code to further transition numbers, converting the further transition numbers to further symbols, such that the set of transition numbers includes the further transition numbers corresponding to the error correction code; andtransmitting (1510) the further symbols in the sequence of symbols on a plurality of signal wires; andwherein converting the transition numbers to symbols comprises:using a transition number to select a next symbol relative to a current symbol, wherein a value of the transition number represents a separation between the current symbol and the next symbol in a table of available symbols such that no pair of consecutive symbols includes two identical symbols, a transition of signaling state occurs in at least one of the signal wires.
- The method of claim 1, further comprising:encoding clock information in the sequence of symbols, wherein the clock information is encoded by ensuring that each pair of consecutive symbols in the sequence of symbols includes two symbols that produce different signaling states on the plurality of signal wires.
- The method of claim 1, wherein calculating the error correction code comprises:calculating an error correction code for each of a plurality of signals transmitted on the plurality of signal wires, wherein the plurality of signals corresponds to the sequence of symbols; andappend the error correction code for the each of the plurality of signals to the data payload; and preferablywherein each of the plurality of signals corresponds to a bit in each symbol in the sequence of symbols.
- The method of claim 1, wherein transmitting the sequence of symbols comprises:transmitting each symbol in the sequence of symbols on differential signals carried on different combinations of two signal wires selected from the plurality of signal wires; and preferablywherein each of the differential signals corresponds to a bit of the each symbol, and wherein calculating the error correction code comprises:calculating an error correction code for each differential signal,wherein a plurality of error correction codes is appended to the data payload such that the set of transition numbers includes transition numbers corresponding to the plurality of error correction codes.
- An apparatus, comprising:means (1106) for converting a data payload to a set of transition numbers;means (1108) for converting the set of transition numbers to a sequence of symbols;means (1112) for calculating an error correction code from symbols in the sequence of symbols that correspond to the data payload;means (1104) for appending the error correction code to the data payload, the means for converting (1106, 1108) are further for converting the appended error correction code to further transition numbers, and converting the further transition numbers to further symbols, such that the set of transition numbers includes the further transition numbers corresponding to the error correction code; andmeans (1110) for transmitting the further symbols in the sequence of symbols on a plurality of signal wires; andwherein converting the transition numbers to symbols comprises:means for using a transition number to select a next symbol relative to a current symbol, wherein a value of the transition number represents a separation between the current symbol and the next symbol in a table of available symbols such that no pair of consecutive symbols includes two identical symbols, a transition of signaling state occurs in at least one of the signal wires.
- A transmitter, comprising:a plurality of line drivers configured to transmit a plurality of signals on an N wire interface; anda processing circuit (1602) configured to embody the means of claim 5.
- A method of data communications, comprising:receiving (1702) a sequence of symbols from a plurality of signal wires;calculating (1704) a first error correction code from a plurality of symbols in the sequence of symbols, the plurality of symbols corresponding to a data payload carried in the sequence of symbols;converting (1706) the sequence of symbols to a set of transition numbers;converting (1708) the set of transition numbers to obtain a data packet that includes the data payload and a second error correction code, the second error correction code having been calculated by a transmitter of the sequence of symbols and the second error correction code having been appended to the data payload by the transmitter of the sequence of symbols;determining (1710) whether one or more errors are present in the sequence of symbols based on a comparison of the first error correction code with the second error correction code; andproviding (1712) the data payload as receiver output data; andwherein in a conversion of transition numbers to symbols a transition number has been used to select a next symbol relative to a current symbol, wherein a value of the transition number represents a separation between the current symbol and the next symbol in a table of available symbols such that no pair of consecutive symbols includes two identical symbols, a transition of signaling state occurs in at least one of the signal wires.
- The method of claim 7, and further comprising:correcting at least one error in the sequence of symbols using the first error correction code and the second error correction code.
- The method of claim 7, wherein converting the sequence of symbols to the set of transition numbers comprises:deriving a transition number as a value that represents a separation between occurrences of a current symbol and an immediately preceding symbol in a table of available symbols.
- The method of claim 7, further comprising:extracting a receive clock from the sequence of symbols, wherein clock information is embedded in changes in signaling state associated with symbols in the sequence of symbols, wherein each pair of consecutive symbols in the sequence of symbols includes two symbols that are associated with different signaling states on the plurality of signal wires.
- The method of claim 7, wherein calculating the first error correction code comprises:calculating a plurality of first error correction codes from the sequence of symbols, wherein each error correction code corresponds to a bit in each symbol of the sequence of symbols; and preferablywherein determining whether one or more errors are present in the sequence of symbols comprises:comparing each of the plurality of first error correction codes with corresponding second error correction codes appended to the data packet.
- The method of claim 7, wherein each symbol in the sequence of symbols is received as a set of differential signals carried on different combinations of two signal wires selected from the plurality of signal wires; and preferably
wherein each differential signals in the set of differential signals corresponds to a bit of the each symbol, and wherein calculating the first error correction code comprises:calculating an error correction code for each differential signal. - An apparatus (1130), comprising:means (1132) for receiving a sequence of symbols from a plurality of signal wires;means (1142) for calculating a first error correction code from a plurality of symbols in the sequence of symbols, the plurality of symbols corresponding to a data payload carried in the sequence of symbols;means (1138) for converting the sequence of symbols to a set of transition numbers;means (1140) for converting the set of transition numbers to obtain a data packet that includes the data payload and a second error correction code, the second error correction code having been calculated by a transmitter of the sequence of symbols and the second error correction code having been appended to the data payload by the transmitter of the sequence of symbols;means (1136) for determining whether one or more errors are present in the sequence of symbols based on a comparison of the first error correction code with the second error correction code; andmeans for providing the data payload as receiver output data; andwherein in a conversion of transition numbers to symbols a transition number has been used to select a next symbol relative to a current symbol, wherein a value of the transition number represents a separation between the current symbol and the next symbol in a table of available symbols such that no pair of consecutive symbols includes two identical symbols, a transition of signaling state occurs in at least one of the signal wires.
- A receiver, comprising:a processing circuit (1802) configured to embody the apparatus of claim 13.
- A processor-readable storage medium having one or more instructions which, when executed by at least one processing circuit, cause the at least one processing circuit to carry out the method of any of claims 1-4, or 7-12.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/214,285 US9319178B2 (en) | 2014-03-14 | 2014-03-14 | Method for using error correction codes with N factorial or CCI extension |
PCT/US2015/020531 WO2015138956A1 (en) | 2014-03-14 | 2015-03-13 | Method for using error correction codes with n factorial or cci extension |
Publications (2)
Publication Number | Publication Date |
---|---|
EP3117527A1 EP3117527A1 (en) | 2017-01-18 |
EP3117527B1 true EP3117527B1 (en) | 2018-02-28 |
Family
ID=52815277
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP15715002.0A Not-in-force EP3117527B1 (en) | 2014-03-14 | 2015-03-13 | Method for using error correction codes with n factorial or cci extension |
Country Status (6)
Country | Link |
---|---|
US (1) | US9319178B2 (en) |
EP (1) | EP3117527B1 (en) |
JP (1) | JP2017513307A (en) |
KR (1) | KR20160133472A (en) |
CN (1) | CN106105043B (en) |
WO (1) | WO2015138956A1 (en) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9519603B2 (en) * | 2013-09-09 | 2016-12-13 | Qualcomm Incorporated | Method and apparatus to enable multiple masters to operate in a single master bus architecture |
US9710423B2 (en) * | 2014-04-02 | 2017-07-18 | Qualcomm Incorporated | Methods to send extra information in-band on inter-integrated circuit (I2C) bus |
TWI690177B (en) * | 2014-11-05 | 2020-04-01 | 日商新力股份有限公司 | Transmission device, transmission method and communication system |
US9880895B2 (en) | 2015-06-19 | 2018-01-30 | Qualcomm Incorporated | Serial interface with bit-level acknowledgement and error correction |
US9654251B1 (en) * | 2015-12-03 | 2017-05-16 | Qualcomm Incorporated | Joint crosstalk-avoidance and error-correction coding for parallel data busses |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5421247A (en) * | 1977-07-19 | 1979-02-17 | Nec Corp | Coder for differential code |
EP1326360B1 (en) * | 2002-01-08 | 2008-10-15 | Nec Corporation | Communication system and method using multilevel modulation |
JP3804773B2 (en) * | 2002-01-08 | 2006-08-02 | 日本電気株式会社 | Communication system and communication method |
US7505486B2 (en) * | 2002-11-19 | 2009-03-17 | Hewlett-Packard Development Company, L.P. | Degradable network data path transmission scheme |
CN100541599C (en) * | 2003-10-22 | 2009-09-16 | Nxp股份有限公司 | Method and apparatus by plurality of transmission lines transmission data |
CN101341658B (en) * | 2005-12-19 | 2013-03-27 | 索尼公司 | A coder and a method of coding for codes with a parity-complementary word assignment having a constraint of d='1', r='2' |
US7844879B2 (en) | 2006-01-20 | 2010-11-30 | Marvell World Trade Ltd. | Method and system for error correction in flash memory |
US7694204B2 (en) | 2006-03-09 | 2010-04-06 | Silicon Image, Inc. | Error detection in physical interfaces for point-to-point communications between integrated circuits |
US8392958B2 (en) * | 2007-03-13 | 2013-03-05 | Sony Corporation | Communication system, transmission apparatus, transmission method, reception apparatus and reception method |
US8649460B2 (en) * | 2007-06-05 | 2014-02-11 | Rambus Inc. | Techniques for multi-wire encoding with an embedded clock |
JP2009060489A (en) * | 2007-09-03 | 2009-03-19 | Panasonic Corp | Signal transmitter, signal receiver, and multiplex differential transmission system |
WO2009108562A2 (en) | 2008-02-25 | 2009-09-03 | Rambus Inc. | Code-assisted error-detection technique |
JP5419534B2 (en) * | 2009-05-11 | 2014-02-19 | 三菱電機株式会社 | FEC frame construction apparatus and method |
JP5382117B2 (en) | 2009-06-19 | 2014-01-08 | 富士通株式会社 | Data transfer method, code conversion circuit and apparatus |
JP5472715B2 (en) * | 2009-11-13 | 2014-04-16 | ソニー株式会社 | Encoding method and apparatus, and decoding method and apparatus |
US8510487B2 (en) * | 2010-02-11 | 2013-08-13 | Silicon Image, Inc. | Hybrid interface for serial and parallel communication |
EP2403167B1 (en) * | 2010-06-30 | 2012-10-10 | Alcatel Lucent | Method of transmitting data via an optical transmission channel |
-
2014
- 2014-03-14 US US14/214,285 patent/US9319178B2/en not_active Expired - Fee Related
-
2015
- 2015-03-13 EP EP15715002.0A patent/EP3117527B1/en not_active Not-in-force
- 2015-03-13 JP JP2016555970A patent/JP2017513307A/en active Pending
- 2015-03-13 KR KR1020167026731A patent/KR20160133472A/en unknown
- 2015-03-13 WO PCT/US2015/020531 patent/WO2015138956A1/en active Application Filing
- 2015-03-13 CN CN201580013406.6A patent/CN106105043B/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
WO2015138956A1 (en) | 2015-09-17 |
CN106105043A (en) | 2016-11-09 |
US20150263823A1 (en) | 2015-09-17 |
KR20160133472A (en) | 2016-11-22 |
EP3117527A1 (en) | 2017-01-18 |
US9319178B2 (en) | 2016-04-19 |
CN106105043B (en) | 2019-11-22 |
JP2017513307A (en) | 2017-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9673961B2 (en) | Multi-lane N-factorial (N!) and other multi-wire communication systems | |
US9998300B2 (en) | N-phase phase and polarity encoded serial interface | |
US9118457B2 (en) | Multi-wire single-ended push-pull link with data symbol transition based clocking | |
EP3053296B1 (en) | N factorial dual data rate clock and data recovery | |
US10089173B2 (en) | Error detection constants of symbol transition clocking transcoding | |
EP3117527B1 (en) | Method for using error correction codes with n factorial or cci extension | |
US9735948B2 (en) | Multi-lane N-factorial (N!) and other multi-wire communication systems | |
CN107623520A (en) | Improve the method and relevant apparatus of clock recovery | |
US20180054216A1 (en) | Flipped bits for error detection and correction for symbol transition clocking transcoding | |
EP3114792B1 (en) | Clock recovery circuit for multiple wire data signals | |
KR102520096B1 (en) | Encoded multi-lane N-factorial and other multi-wire communication systems | |
US20160149693A1 (en) | Symbol transition clocking clock and data recovery to suppress excess clock caused by symbol glitch during stable symbol period |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
17P | Request for examination filed |
Effective date: 20160804 |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
AX | Request for extension of the european patent |
Extension state: BA ME |
|
DAV | Request for validation of the european patent (deleted) | ||
DAX | Request for extension of the european patent (deleted) | ||
GRAP | Despatch of communication of intention to grant a patent |
Free format text: ORIGINAL CODE: EPIDOSNIGR1 |
|
RIC1 | Information provided on ipc code assigned before grant |
Ipc: H03M 5/14 20060101ALI20170626BHEP Ipc: H04L 1/00 20060101ALI20170626BHEP Ipc: H04L 25/49 20060101ALI20170626BHEP Ipc: G06F 13/40 20060101ALI20170626BHEP Ipc: H03M 13/05 20060101ALI20170626BHEP Ipc: H03M 13/31 20060101AFI20170626BHEP |
|
INTG | Intention to grant announced |
Effective date: 20170803 |
|
GRAJ | Information related to disapproval of communication of intention to grant by the applicant or resumption of examination proceedings by the epo deleted |
Free format text: ORIGINAL CODE: EPIDOSDIGR1 |
|
INTC | Intention to grant announced (deleted) | ||
GRAR | Information related to intention to grant a patent recorded |
Free format text: ORIGINAL CODE: EPIDOSNIGR71 |
|
GRAS | Grant fee paid |
Free format text: ORIGINAL CODE: EPIDOSNIGR3 |
|
GRAA | (expected) grant |
Free format text: ORIGINAL CODE: 0009210 |
|
INTG | Intention to grant announced |
Effective date: 20180112 |
|
AK | Designated contracting states |
Kind code of ref document: B1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
REG | Reference to a national code |
Ref country code: GB Ref legal event code: FG4D Ref country code: CH Ref legal event code: EP |
|
REG | Reference to a national code |
Ref country code: FR Ref legal event code: PLFP Year of fee payment: 4 |
|
REG | Reference to a national code |
Ref country code: AT Ref legal event code: REF Ref document number: 975182 Country of ref document: AT Kind code of ref document: T Effective date: 20180315 |
|
REG | Reference to a national code |
Ref country code: IE Ref legal event code: FG4D |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R096 Ref document number: 602015008396 Country of ref document: DE |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: FR Payment date: 20180302 Year of fee payment: 4 |
|
REG | Reference to a national code |
Ref country code: NL Ref legal event code: MP Effective date: 20180228 |
|
REG | Reference to a national code |
Ref country code: LT Ref legal event code: MG4D |
|
REG | Reference to a national code |
Ref country code: AT Ref legal event code: MK05 Ref document number: 975182 Country of ref document: AT Kind code of ref document: T Effective date: 20180228 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: ES Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 Ref country code: CY Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 Ref country code: LT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 Ref country code: NO Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180528 Ref country code: FI Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 Ref country code: NL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 Ref country code: HR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: BG Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180528 Ref country code: AT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 Ref country code: RS Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 Ref country code: SE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 Ref country code: LV Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 Ref country code: GR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180529 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: IT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 Ref country code: EE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 Ref country code: PL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 Ref country code: RO Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 Ref country code: AL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 |
|
REG | Reference to a national code |
Ref country code: CH Ref legal event code: PL |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R097 Ref document number: 602015008396 Country of ref document: DE |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: DK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 Ref country code: MC Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 Ref country code: SM Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 Ref country code: SK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 Ref country code: CZ Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 |
|
REG | Reference to a national code |
Ref country code: BE Ref legal event code: MM Effective date: 20180331 |
|
REG | Reference to a national code |
Ref country code: IE Ref legal event code: MM4A |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: LU Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20180313 |
|
PLBE | No opposition filed within time limit |
Free format text: ORIGINAL CODE: 0009261 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: IE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20180313 |
|
26N | No opposition filed |
Effective date: 20181129 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: BE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20180331 Ref country code: SI Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 Ref country code: LI Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20180331 Ref country code: CH Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20180331 |
|
GBPC | Gb: european patent ceased through non-payment of renewal fee |
Effective date: 20190313 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: GB Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20190313 Ref country code: MT Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20180313 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: FR Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20190331 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: TR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: DE Payment date: 20200214 Year of fee payment: 6 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: PT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180228 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MK Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20180228 Ref country code: HU Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT; INVALID AB INITIO Effective date: 20150313 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: IS Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180628 |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R119 Ref document number: 602015008396 Country of ref document: DE |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: DE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20211001 |