US20170163375A1 - Joint crosstalk-avoidance and error-correction coding for parallel data busses - Google Patents
Joint crosstalk-avoidance and error-correction coding for parallel data busses Download PDFInfo
- Publication number
- US20170163375A1 US20170163375A1 US14/958,883 US201514958883A US2017163375A1 US 20170163375 A1 US20170163375 A1 US 20170163375A1 US 201514958883 A US201514958883 A US 201514958883A US 2017163375 A1 US2017163375 A1 US 2017163375A1
- Authority
- US
- United States
- Prior art keywords
- crosstalk
- error detection
- avoidance
- wires
- state
- 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.)
- Granted
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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4208—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B3/00—Line transmission systems
- H04B3/02—Details
- H04B3/32—Reducing cross-talk, e.g. by compensating
-
- 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/08—Arrangements for detecting or preventing errors in the information received by repeating transmission, e.g. Verdan system
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Definitions
- the present disclosure relates generally to high-speed data communications, and more particularly, to encoding and decoding data over a multi-line parallel bus.
- High-speed interfaces are frequently used between circuits and components of mobile wireless devices and other complex apparatus.
- certain devices may include processing, communications, storage and/or display devices that interact with one another through communications links.
- Some of these devices including synchronous dynamic random access memory (SDRAM), may be capable of providing or consuming data and control information at processor clock rates.
- Other devices, such as display controllers, may require variable amounts of data at relatively low video refresh rates.
- SDRAM synchronous dynamic random access memory
- SoC system-on-chip
- various components are integrated on a single die.
- a typical SoC in present mobile phones contains hundreds of components such as central and graphical processing units, memories, power management circuits, cellular and other wireless radios, etc.
- This integration of a large number of components onto a single silicon substrate results in smaller and lower-power processing units compared to traditional systems. All of these components communicate with each other via metal wires known as interconnects or busses.
- Components may intercommunicate using interconnects or busses in systems other than SoC systems.
- a central processing unit (CPU) or other processor may communicate with a memory device via an interconnect located on a printed circuit board (PCB).
- PCB printed circuit board
- Embodiments disclosed herein provide systems, methods and apparatus for transmitting/receiving data bits over a multi-line parallel bus with improved signal integrity. Encoders and decoders are disclosed that provide joint crosstalk avoidance and error correction and/or detection.
- a method of transmitting data bits over a parallel bus includes determining from a prior bus state, a plurality of free wires in the bus for a current bus state, where each free wire satisfies a crosstalk-avoidance constraint in the current bus state for all values of a bit transmitted on the free wire.
- the method may also include encoding a plurality of data bits using a crosstalk avoidance encoder to obtain a crosstalk-avoidance coding (CAC) encoded word, computing an error detection or correction code for the CAC-encoded word, assigning bits of the error detection or correction code to the plurality of free wires for transmission during the current bus state, and assigning the CAC-encoded word to two wires of the bus that are not used for carrying bits of the error detection or correction code.
- CAC crosstalk-avoidance coding
- an apparatus in an aspect of the disclosure, includes a storage device configured to maintain an indication of a past state of a multi-wire parallel bus, and a crosstalk avoidance encoder adapted to determine a plurality of free wires in the bus for a current state of the multi-wire parallel bus based on the past state of the multi-wire parallel bus, where each free wire satisfies a crosstalk-avoidance constraint in the current state of the multi-wire parallel bus for all values of a bit transmitted on the free wire.
- the apparatus may provide a crosstalk avoidance encoded word by encoding a plurality of data bits.
- the apparatus may include an error-correction coding encoder configured to compute an error detection or correction code for the crosstalk avoidance encoded word, and a selector circuit configured to assign bits of the error detection or correction code to the plurality of free wires for transmission as part of the current state of the multi-wire parallel bus, and assign the crosstalk avoidance encoded word to wires of the bus that are not used for carrying bits of the error detection or correction code.
- an error-correction coding encoder configured to compute an error detection or correction code for the crosstalk avoidance encoded word
- a selector circuit configured to assign bits of the error detection or correction code to the plurality of free wires for transmission as part of the current state of the multi-wire parallel bus, and assign the crosstalk avoidance encoded word to wires of the bus that are not used for carrying bits of the error detection or correction code.
- an apparatus includes means for determining from a prior bus state, a plurality of free wires in the bus for a current bus state, where each free wire satisfies a crosstalk-avoidance constraint in the current bus state for all values of a bit transmitted on the free wire.
- the apparatus may also include means for encoding a plurality of data bits using a crosstalk avoidance encoder to obtain a CAC encoded word, means for computing an error detection or correction code for the CAC-encoded word, means for assigning bits of the error detection or correction code to the plurality of free wires for transmission during the current bus state, and means for assigning the CAC-encoded word to two wires of the bus that are not used for carrying bits of the error detection or correction code.
- a processor readable storage medium may have code stored thereon.
- the code may include instructions for determining from a prior bus state, a plurality of free wires in the bus for a current bus state, where each free wire satisfies a crosstalk-avoidance constraint in the current bus state for all values of a bit transmitted on the free wire.
- the code may include instructions for encoding a plurality of data bits using a crosstalk avoidance encoder to obtain a CAC encoded word, computing an error detection or correction code for the CAC-encoded word, assigning bits of the error detection or correction code to the plurality of free wires for transmission during the current bus state, and assigning the CAC-encoded word to two wires of the bus that are not used for carrying bits of the error detection or correction code.
- a method of receiving data bits from a parallel bus includes determining from a prior bus state, a plurality of free wires in the bus for a current bus state, where each free wire satisfies a crosstalk-avoidance constraint in the current bus state for all values of a bit transmitted on the free wire.
- the method may also include receiving an error detection or correction code from the plurality of free wires, jointly operating a crosstalk avoidance decoder and an error detection or correction decoder to decode the current bus state, and providing a plurality of data bits decoded from the current bus state.
- an apparatus in an aspect of the disclosure, includes a processing circuit, a storage device configured to maintain a past bus state of a multi-wire parallel bus, and a crosstalk avoidance decoder that jointly operated with an error detection or correction decoder.
- the processing circuit and/or crosstalk avoidance decoder may be configured to determine from the prior bus state, a plurality of free wires in the bus for a current bus state, where each free wire satisfies a crosstalk-avoidance constraint in the current bus state for all values of a bit transmitted on the free wire.
- An error detection or correction code provided by the error detection or correction decoder may be used to correctly decode the current bus state.
- an apparatus includes means for determining from a prior bus state, a plurality of free wires in the bus for a current bus state, where each free wire satisfies a crosstalk-avoidance constraint in the current bus state for all values of a bit transmitted on the free wire.
- the apparatus may also include means for receiving an error detection or correction code from the plurality of free wires, means for jointly operating a crosstalk avoidance decoder and an error detection or correction decoder to decode the current bus state, and means for providing a plurality of data bits decoded from the current bus state.
- a processor readable storage medium may have code stored thereon.
- the code may include instructions for determining from a prior bus state, a plurality of free wires in the bus for a current bus state, where each free wire satisfies a crosstalk-avoidance constraint in the current bus state for all values of a bit transmitted on the free wire.
- the method may also include receiving an error detection or correction code from the plurality of free wires, jointly operating a crosstalk avoidance decoder and an error detection or correction decoder to decode the current bus state, and providing a plurality of data bits decoded from the current bus state.
- FIG. 1 depicts an apparatus that employs an encoded data link between devices within the apparatus.
- FIG. 2 illustrates certain aspects of an apparatus that may be adapted in accordance with certain aspects disclosed herein.
- FIG. 3 is illustrates a memory interface that may be adapted in accordance with certain aspects disclosed herein.
- FIG. 4 illustrates a physical layout of a portion of a bus hat may be operated in accordance with certain aspects disclosed herein.
- FIG. 5 illustrates the occurrence of free wires that may be used by encoders adapted according to certain aspects disclosed herein.
- FIG. 6 illustrates examples of encoders adapted according to certain aspects disclosed herein.
- FIG. 7 illustrates the occurrence of free wires at a transition between bus states for the bus illustrated in FIG. 4 .
- FIG. 8 illustrates a first example of an architecture for a joint CAC and Error-correction coding (ECC) encoder provided in accordance with certain aspects disclosed herein.
- ECC Error-correction coding
- FIG. 9 illustrates a second example of an architecture for a joint CAC and ECC encoder provided in accordance with certain aspects disclosed herein.
- FIG. 10 is a factor graph illustrating operation of joint ECC and CAC decoding in accordance with certain aspects disclosed herein.
- FIG. 11 illustrates an example of an architecture for a joint CAC/ECC decoder provided in accordance with certain aspects disclosed herein.
- FIG. 12 illustrates an example of an apparatus employing a processing system that may be adapted according to certain aspects disclosed herein.
- FIG. 13 is a flow chart of a method for transmitting data bits over a multi-wire parallel bus in accordance with certain aspects disclosed herein.
- FIG. 14 illustrates a second example of a hardware implementation for an apparatus used in a device that transmits data bits over a multi-wire parallel bus according to certain aspects disclosed herein.
- FIG. 15 is a flow chart of a method for decoding data bits from a multi-wire parallel bus in accordance with certain aspects disclosed herein.
- FIG. 16 illustrates a second example of a hardware implementation for an apparatus used in a device that decodes data bits from a multi-wire parallel bus according to certain aspects disclosed herein.
- the conductors may include three or more conductors, and each conductor may be referred to as a wire, a connector, and/or interconnect.
- the conductors may include conductive traces disposed on a circuit board or within a conductive layer of a semiconductor integrated circuit (IC) device.
- the connectors may be configured or arranged to provide one or more busses.
- the conductors may be divided into a plurality of transmission groups, each group encoding a portion of a block of data to be transmitted.
- an apparatus 100 employing one or more busses for intercommunication between constituent devices may include a processing circuit 102 that is configured to control operation of the apparatus 100 .
- the processing circuit 102 may access and execute software applications and control logic circuits and other devices within the apparatus 100 .
- the apparatus 100 may include a wireless communication device that communicates through a radio frequency (RF) communications transceiver 106 with a radio access network (RAN), a core access network, the Internet and/or another network.
- RF radio frequency
- the communications transceiver 106 may be operably coupled to a processing circuit 102 .
- the processing circuit 102 may include one or more IC devices, which may include an application specific integrated circuit (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 112 that may maintain instructions and data that may be executed by the 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 the storage 112 of the wireless device.
- API application programming interface
- the storage 112 may include read only memory (ROM) or random access memory (RAM), electrically erasable programmable read only memory (EEPROM), a flash memory device, or any memory device that can be used in processing systems and computing platforms.
- the processing circuit 102 may include and/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 or server, 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 a button 128 and a keypad 126 , among other components.
- FIG. 2 is a block schematic illustrating certain aspects of an apparatus 200 such as a wireless mobile device, a mobile telephone, a mobile computing system, a wireless telephone, a notebook computer, a tablet computing device, a media player, a gaming device, or the like.
- the apparatus 200 may be provided as an SoC, and/or may include a plurality of devices 202 and 230 , including IC devices that exchange data and control information through a communications link 220 .
- the communications link 220 may be used to connect the devices 202 and 230 , which may be located in close proximity to one another or physically located in different parts of the apparatus 200 .
- the communications link 220 may be provided on a chip carrier, substrate or circuit board that carries the devices 202 and 230 .
- a first device 202 may be located in a keypad section of a flip-phone while a second device 230 may be located in a display section of the flip-phone.
- a portion of the communications link 220 may include a cable or an optical connection.
- the communications link 220 may include multiple channels 222 , 224 and 226 .
- One or more communications channel 226 may be bidirectional, and may operate in half-duplex mode and/or full-duplex mode.
- One or more channels 222 , 224 may be unidirectional.
- the communications link 220 may be asymmetrical, providing higher bandwidth in one direction.
- a forward communications channel 222 may be referred to as a forward link while a reverse communications channel 224 may be referred to as a reverse link.
- the first device 202 may be designated as a host, master and/or transmitter, while the second device 230 may be designated as a client, slave and/or receiver, even if both devices 202 and 230 are configured to transmit and receive on the communications link 220 .
- the forward channel 222 may operate at a higher data rate when communicating data from a first device 202 to a second device 230
- the reverse channel 224 may operate at a lower data rate when communicating data from the second device 230 to the first device 202 .
- the devices 202 and 230 may each include a processing circuit 206 , 236 or other computing circuit, processor and/or device.
- the first device 202 may perform core functions of the apparatus 200 , including maintaining wireless communications through a wireless transceiver 204 and an antenna 214
- the second device 230 may support a user interface that manages or operates a display controller 232 , and may control operations of a camera or video input device using a camera controller 234 .
- Other features supported by one or more of the 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 a display such as a liquid crystal display (LCD) panel, a touch-screen display, an indicator, 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 the respective processing circuits 206 and 236 , and/or other components of the devices 202 and 230 . Communication between each processing circuit 206 , 236 and its corresponding storage media 208 and 238 and other modules and circuits may be facilitated by one or more busses 212 and 242 , respectively.
- the reverse channel 224 may be operated in the same manner as the forward channel 222 .
- the forward channel 222 and the reverse channel 224 may be capable of transmitting at comparable speeds or at different speeds, where speed may be expressed as a data transfer rate and/or a clocking rate.
- the forward and reverse data rates may be substantially the same or may differ by orders of magnitude, depending on the application.
- a bidirectional communications channel 226 may support communications between the first device 202 and the second device 230 .
- the forward channel 222 and/or the reverse channel 224 may be configurable to operate in a bidirectional mode when, for example, the forward and reverse channel 222 and 224 share the same physical connections and operate in a half-duplex manner.
- the reverse channel 224 derives a clocking signal from the forward channel 222 for synchronization purposes, for control purposes, to facilitate power management and/or for simplicity of design.
- the clocking signal may have a frequency that is obtained by dividing the frequency of a symbol clock used to transmit signals on the forward channel 222 .
- the symbol clock may be superimposed or otherwise encoded in symbols transmitted on the forward channel 222 .
- the use of a clocking signal that is a derivative of the symbol clock allows fast synchronization of transmitters and receivers (transceivers 210 , 240 ) and enables fast start and stop of data signals without the need for framing to enable training and synchronization.
- a bidirectional channel 226 may support communications between the first device 202 and the second device 230 .
- the first device 202 and the second device 230 provide encoding and decoding of data, address and control signals transmitted between a processing device and memory devices such as dynamic random access memory (DRAM) devices.
- DRAM dynamic random access memory
- FIG. 3 is a block diagram illustrating an example of an apparatus 300 in which a processing circuit 302 may be configured to read and write data to a memory device 304 using high-speed interface circuits 306 , 310 .
- One interface circuit 306 may be implemented as a controller that is embedded in or cooperates with the processing circuit 302 .
- Another interface circuit 310 may be implemented as a controller that is embedded in or cooperates with the memory device 304 .
- the processing circuit 302 and the memory device 304 may be components of the apparatus 100 depicted in FIG. 1 .
- the processing circuit 302 and the memory device 304 may be coupled using a bus 308 that includes a number of connectors, wires, electrically conductive traces on a circuit board or chip carrier, package substrate, silicon (or alternative material) interposer, electrically conductive traces in a metallization layer of an IC, and/or other electrical connectors and devices.
- the bus 308 may include some combination of unidirectional and bidirectional connectors.
- the bus 308 may be configured to carry one or more differential signals in corresponding pairs of connectors. For example, data may be transmitted over single-ended channels, while certain control signals may be transmitted using differential channels. Some memory devices may employ a write clock (WCK), while other memory devices may use a data strobe signal (DQS signal) to determine when data is valid and/or can be reliably captured from data signals (DQ signals) on the bus 308 .
- WCK write clock
- DQS signal data strobe signal
- bus transmission energy and delay may be affected by capacitive coupling (illustrated as capacitances 406 1 - 406 9 ) between neighboring wires (which may be referred to as lanes 402 0 - 402 9 of a bus 400 ). Transmission energy and delay are adversely affected by increases in bus interline capacitive coupling driven by technology scaling.
- FIG. 4 illustrates an example of physical layout of a portion of a bus 400 that includes 10 lanes 402 0 - 402 9 that are deployed in substantial parallel alignment on a substrate 404 .
- the lanes 402 0 - 402 9 may correspond to one of multiple groups of lanes in the bus 400 .
- Each of the lanes 402 0 - 402 9 may be implemented using a wire, a trace on a circuit board or chip-carrier, an interconnect within an IC device, and/or another of electrical connector.
- the lanes 402 0 - 402 9 may be physically arranged in parallel for some or all segments of the bus 400 , and the distances separating adjacent lanes 402 0 - 402 9 may be variable.
- Crosstalk may result due to capacitive coupling between two or more of the lanes 402 0 - 402 9 .
- each pair of the lanes 402 0 - 402 9 may be coupled by an interline capacitance 406 1 - 406 9 .
- the magnitude of the crosstalk between a pair of adjacent lanes 402 0 - 402 9 may be calculable based on the value of the interline capacitance 406 1 - 406 9 between the pair of adjacent lanes 402 0 - 402 9 , and the nature of transitions in signaling state on each lane of the pair of adjacent lanes 402 0 - 402 9 .
- Transitions at a boundary 412 between signaling states corresponding to consecutively transmitted words are illustrated in the timing diagram 410 of FIG. 4 .
- Words may be transmitted in transmission intervals 420 , 422 defined by a transmit clock or receive clock.
- the bus state during a transmission interval 420 , 422 may be the combination of the signaling states of each lane 402 0 - 402 9 . Transitions in signaling state may occur on one or more of the lanes 402 0 - 402 9 at the boundary 412 between transmission intervals 420 , 422 .
- positive transitions 414 , 416 occur on a first lane 402 0 and a second lane 402 1
- a negative transition 418 occurs on a third lane 402 2
- no transition occurs on a fourth lane 402 3 .
- signals transition between two signaling states, although the principles disclosed herein may be applied to signals that transition between three or more signaling states.
- Crosstalk-avoidance coding (CAC) schemes, attempt to prevent or minimize transmission errors on a parallel bus 400 subject to capacitive coupling of adjacent connectors.
- Crosstalk levels affecting one of the lanes 402 0 - 402 9 may depend on the types of transition that occur on adjacent or neighboring lanes 402 0 - 402 9 at or near the boundary 412 between transmission intervals 420 , 422 , and may correspond to the types of transitions that occur on the various lanes 402 0 - 402 9 .
- maximum crosstalk may be observed when opposite bit (i.e., opposite direction) transitions 416 , 418 occur on a first pair of adjacent lanes 402 1 , 402 2 .
- Decreased crosstalk may be observed when the same type of transition 414 , 416 occurs on a second pair of adjacent lanes 402 0 , 402 1 .
- intermediate levels of crosstalk may occur when the signaling state of one lane 402 3 does not change.
- CAC may be used to encode data to be transmitted on a parallel bus 400 subject to capacitive coupling between adjacent lanes such that opposing bit transitions 416 , 418 on adjacent lanes 402 1 , 402 2 may be avoided.
- CAC involves encoding data in words for transmission on the parallel bus 400 where certain transition patterns are avoided.
- CAC can reduce energy consumption and propagation delay by avoiding the occurrence of opposing bit transitions on adjacent wires of the bus 400 .
- CAC may reduce worst-case transmission energy and delay by encoding data in a manner that prevents certain transitions on adjacent wires.
- CAC may use interface circuits 306 , 310 to encode data for transmission by encoding data such that occurrences of opposing bit transitions on adjacent lanes 402 1 , 402 2 (for example) are avoided.
- data transmitted on the bus 400 may be encoded based on data previously transmitted over the bus 400 (hereinafter referred to as past bus state) to obtain a current bus state while avoiding certain transitions.
- the past bus state may correspond to the combination of the signaling states of each lane 402 0 - 402 9 during a first transmission interval 420
- the current bus state may correspond to the combination of the signaling states of each lane 402 0 - 402 9 during a second, subsequent transmission interval 422 .
- ECC Error-correction coding
- DDR4 double-data rate fourth generation
- ECC 8-bit cyclic-redundancy code
- ECC is a technique for encoding data that provides redundancy through the addition of parity bits. This redundancy can be used to detect and correct errors occurring during transmission.
- CAC and ECC may be desirable to use some combination of CAC and ECC in certain applications. Issues may arise when CAC and ECC are combined. In one example, when a combination of an ECC inner code followed by a CAC outer code is used, the CAC outer code cannot be reliably decoded in the presence of errors. In another example, when a combination of a CAC inner code followed by an ECC outer code is used, the ECC outer code can counteract the crosstalk-avoidance provided by the CAC.
- information may be reliably and efficiently transmitted over a parallel bus using the joint CAC and ECC encoding techniques disclosed herein.
- interface circuits 306 , 310 may be adapted to perform joint CAC and ECC encoding for a 72-bit DDR4 DRAM bus using 10 bit lanes to transmit ECC bits in a manner that satisfies crosstalk-avoidance constraints.
- Joint encoding for CAC and ECC uses fewer bus lanes than state-of-the-art solutions and can provide better protection against transmission errors.
- Crosstalk-avoidance constraints may be defined and used to prevent patterns of transitions in bus state that produce high levels of crosstalk.
- a CAC encoder may be constrained from producing a bus state in which opposite-direction transitions 416 , 418 occur on two adjacent lanes 402 1 , 402 2 (see FIG. 4 ).
- the crosstalk-avoidance constraint may be applied in three dimensions, where the adjacent lanes are defined in both horizontal and vertical planes.
- a crosstalk-avoidance constraint in the horizontal dimension may specify a first number of lanes required to separate opposite-direction transitions 416 , 418 in the horizontal plane and a second number of lanes required to separate opposite-direction transitions 416 , 418 in the vertical plane.
- the first and second numbers of separating lanes may be different or the same crosstalk-avoidance constraint can be tailored for busses that use signaling schemes in which three or more voltage or current states are defined.
- ECC bits calculated for CAC-encoded information may be transmitted on free wires.
- a free wire may be defined as one of the lanes 402 0 - 402 9 that can satisfy crosstalk-avoidance constraints regardless of any possible transition that may occur at the next change in bus state.
- FIG. 5 is a factor graph 500 illustrating the occurrence of free wires that may be used by encoders adapted according to certain aspects disclosed herein.
- a past bus state 502 may be described by the sequence of bits a 1 , a 2 , . . . , a N for an N-wire bus.
- Data to be transmitted over the bus may be encoded sequentially into a new bus state denoted as b 1 , b 2 , . . . , b N , which may be referred to as the next bus state 504 .
- Data may be encoded sequentially commencing with a first lane 402 0 of the bus, continuing with the second lane 402 2 , and so on, until the Nth lane.
- Each lane 402 0 - 402 N may include a wire, trace, connector, or the like. Encoding the new bus state is based on the past bus state.
- the free bus wires 514 , 516 , 518 for the past bus state 502 are identified.
- Each wire in the past bus state 502 that is the middle wire of three wires that have the same signaling state for the past bus state 502 can be set to ‘0’ or ‘1’ without violating crosstalk constraints.
- the encoder can set the next value (b n ) to any desired signaling state without violating the crosstalk constraints and without affecting the values of b n ⁇ 1 , b n+1 that can be sent over adjacent wires.
- triangles 506 , 508 , 510 , and 512 located between the past bus state 502 ( a ), and the next bus state 504 ( b ) represent the crosstalk constraints imposed by the past bus state 502 .
- Free wires are identified when their values for the next bus state 504 are not connected to any constraint.
- the wires b 3 , b 6 , b 10 do not have any associated constraints and are indicated by the white circles 514 , 516 , 518 .
- the wires b 3 , b 6 , b 10 are free wires that can be set to any value in the next bus state 504 without affecting wires adjacent to them and without violating any crosstalk constraints. These free wires may be used to carry ECC bits that are calculated concurrently with, or after CAC encoding in a joint CAC/ECC encoder.
- FIG. 6 illustrates two encoders 600 , 650 that can be configured to use free wires to carry ECC bits.
- an encoder 600 may adapt a convolution error-correction code to provide joint CAC and ECC encoding.
- a sequential CAC encoder 604 may consider past bus state 612 when encoding information bits 602 to produce an encoded word 614 .
- the encoder 600 may include storage 622 that maintains the past bus state 612 .
- the storage 622 may be provided using registers or other types of memory device, and the storage 622 may maintain a history of prior bus states.
- a convolutional ECC encoder 606 generates parity bits 616 for the encoded word 614 received from the CAC encoder 604 .
- the convolutional ECC encoder 606 may periodically generate new parity bits 616 that are buffered in a bounded queue 608 .
- a selector circuit 610 receives queued parity bits 618 and determines which bit should be sent over the bus 620 .
- the selector circuit 610 may assign parity bits 618 obtained from the queue 608 to wires of the bus 620 .
- the selector circuit 610 fills the bus 620 sequentially, starting from a first wire (e.g. a wire corresponding to the first lane 402 0 ). While sequentially filling the bus 620 , the selector circuit 610 may encounter a first free wire based on the past bus state 612 .
- a first parity bit in the queue which may be an oldest parity bit waiting in the queue 608 , may be assigned to the first free wire.
- the selector circuit 610 may request a new bit from the CAC encoder 604 for assignment to the current wire.
- the lanes 402 0 - 402 N of the bus 400 may be sequentially assigned CAC-encoded bits or ECC bits from the leftmost lane 402 0 to the rightmost lane 402 9 , or from the rightmost lane 402 9 to the leftmost lane 402 0 .
- a sequence of lanes may include lanes that are ordered such that each lane in the sequence is physically adjacent to predecessor and successor lanes in the sequence.
- the queue 608 may be empty or full.
- the selector circuit 610 may continue to poll the queue 608 while assigning bits received from the CAC encoder 604 until the queue is no longer empty, even when the selector circuit 610 encounters a free wire.
- the selector circuit 610 may force one or more non-free wires to carry parity bits.
- the selector circuit 610 may respect crosstalk-avoidance constraints by using the next two consecutive wires to carry one parity bit. For example, the selector circuit 610 may resend the same bit transmitted in the past bus state on the first of two consecutive lanes and send a parity bit on the second of two consecutive lanes. Crosstalk constraints are met because the first of the two consecutive lanes has no transition between the past bus state and the current bus state.
- an encoder 650 may use block error-correction coding to provide joint CAC and ECC encoding.
- the CAC encoder 654 may consider past bus state 660 when encoding information bits 652 to produce an encoded word 664 , which may be assigned by the selector circuit 658 to non-free wires of the bus 662 .
- the encoder 650 may include storage 670 that maintains the past bus state 660 .
- the storage 670 may be provided using registers or other types of memory device, and the storage 670 may maintain a history of prior bus states.
- the ECC encoder 656 may then compute parity bits 668 for the data (encoded word 664 ) assigned to the non-free wires.
- the parity bits 668 may then be assigned by the selector circuit 658 to the free wires of the bus 662 .
- the number of free wires may exceed the number of parity bits 668 , and the selector circuit 658 may use some free wires to carry the encoded word 664 provided by the CAC encoder 654 . In some instances, the number of free wires may be less than the number of parity bits, and the selector circuit 658 may force one or more non-free wires to carry certain of the parity bits 668 .
- the selector circuit 610 may respect crosstalk-avoidance constraints by using two adjacent wires to carry one parity bit. For example, the selector circuit 658 may resend the same bit transmitted in the past bus state on the first of two adjacent wires and send a parity bit on the second of two adjacent wires. Crosstalk constraints are met because the first of the two adjacent wires has no transition between the past bus state and the current bus state.
- an encoder 600 , 650 may use the storage 622 , 672 to maintain an indication of a past bus state 612 , 660 .
- the storage 622 , 672 may include one or more registers that are clocked using a transmit clock associated with the bus 620 , 662 such that the transmitted state is captured for use in encoding data in a succeeding bus state.
- the CAC encoder 604 , 654 may be adapted to receive the past bus state 612 , 660 and determine a plurality of free wires for a current or next bus state. Each free wire may satisfy a crosstalk-avoidance constraint in the current state of the bus 620 , 662 for all potential values of a bit transmitted on the free wire.
- the CAC encoder 604 , 654 may provide a crosstalk avoidance encoded word 614 , 664 by encoding data received by the CAC encoder 604 , 654 as a plurality of information bits 602 , 652 .
- the ECC encoder 606 , 656 may be configured to compute an error detection or correction code 616 , 668 for the crosstalk avoidance encoded word 614 , 664 .
- the selector circuit 610 , 658 may be configured to assign bits of the error detection or correction code 616 , 668 to the plurality of free wires for transmission as part of the current bus state, and assign the crosstalk avoidance encoded word 614 , 664 to wires of the bus 620 , 662 that are not used for carrying bits of the error detection or correction code 616 , 668 .
- a free wire satisfies a crosstalk-avoidance constraint in the current bus state when the free wire and each directly adjacent wire are in a same signaling state in the past state of the multi-wire parallel bus.
- parallel wires may be aligned in any plane in three-dimensional space. For example, a first wire may be adjacent to, and aligned with a second wire in a horizontal plane and the first wire may be adjacent to, and aligned with a third wire in a vertical plane.
- the crosstalk avoidance encoder is configured to avoid producing opposite direction transitions on pairs of neighboring wires.
- the ECC encoder 656 operates as a block error-correction encoder.
- the ECC encoder 606 operates as a convolutional encoder.
- the ECC encoder 606 produces a cyclic-redundancy code.
- the ECC encoder 606 may receive bits of the ECC code 616 sequentially from the queue 608 .
- the queue may be implemented as a ring buffer, a first-in first-out (FIFO) register or using some other suitable queuing device or structure.
- the selector circuit 610 may be configured to assign each bit 618 obtained from the queue 608 to a free wire encountered in a sequence of wires when a bit of the error detection or correction code is available in the queue 608 , while assigning a bit of the crosstalk avoidance encoded word 614 to the free wire when no bits of the error detection or correction code 616 are available in the queue 608 .
- the selector circuit 610 may assign a bit obtained from the queue 608 to a pair of adjacent wires in the sequence of wires when the queue 608 is full.
- FIG. 7 is a diagram 700 identifying occurrences of free wires 708 , 710 , and 712 at a transition 704 between bus states 702 , 706 in an example corresponding to the bus 400 of FIG. 4 .
- Free wires 708 , 710 , and 712 may be identified through an examination of past bus state 702 while encoding information for a next bus state (here, the current bus state 706 ).
- the example illustrated in FIG. 7 is based on a bus 400 where transitions occur between two signaling states and where a crosstalk-avoidance constraint is defined that prohibits transitions in opposite directions on any adjacent pair of the lanes 402 0 - 402 9 .
- the past bus state 702 in the example shows the signaling state for each of the lanes 402 0 - 402 9 as having a ‘0’ or ‘1’ value, which may represent different voltage levels, or direction and/or magnitude of a current flow.
- two sets of lanes 722 and 724 have adjacent lanes in the same signaling state.
- three adjacent lanes 402 1 , 402 2 and 402 3 are in the ‘1’ signaling state.
- three adjacent lanes 402 4 , 402 5 and 402 6 are in the ‘0’ signaling state.
- the center lane 402 2 and 402 5 can be set to either signaling state in the current bus state 706 without causing opposite-direction transitions within the corresponding set of lanes 722 and 724 .
- the transitions are in the same direction, and if only one of the lanes 402 1 , 402 2 and 402 3 transition when entering the current bus state 706 , the third lane 402 2 cannot be one of a pair of adjacent lanes 402 1 / 402 2 , or 402 2 / 402 3 that causes an opposite-direction transition.
- the third lane 402 2 may be identified as a free wire 708 in the current bus state 706 .
- One set of lanes 726 includes two adjacent lanes 402 8 , 402 9 that are adjacent lanes in the same signaling state (the ‘0’ signaling state) during the past bus state 702 .
- the tenth lane 402 9 may be identified as a free wire in the current bus state 706 if the two adjacent lanes 402 8 , 402 9 are physically located at the end of the bus 400 and/or next to a wire or conductor that is not expected to transition when the current bus state 706 is entered.
- the two adjacent lanes 402 8 , 402 9 may be disposed next to a ground or power rail.
- the two adjacent lanes 402 8 , 402 9 may be disposed next to a shielding trace, wire or connector.
- the two adjacent lanes 402 8 , 402 9 may be disposed next to a trace, wire or connector that carries a signal that does not transition at the same time as the signals carried by the two adjacent lanes 402 8 , 402 9 .
- different rules may be employed for identifying free wires in different parts of the bus 400 .
- four such locations 714 , 716 , 718 , 720 are identified.
- Each location 714 , 716 , 718 and 720 involves a pair of lanes 402 0 / 402 1 , 402 3 / 402 4 , 402 6 / 402 7 and 402 7 / 402 8 that are in opposite signaling states in the past bus state 702 and can cause a violation of a crosstalk-avoidance constraint when entering the current bus state 706 .
- the first lane 402 0 may transition from signaling state ‘0’ to signaling state ‘1’ as the second lane 402 1 transitions from signaling state ‘1’ to signaling state ‘0.’
- the CAC encoder may take into account the location of the free wires 708 , 710 , 712 .
- FIG. 8 illustrates another example of an architecture for a joint CAC/ECC encoder 800 provided in accordance with certain aspects disclosed herein.
- the encoder 800 may determine the positions of the free wires 708 , 710 , 712 using the past bus state (a) 702 .
- Information bits 802 are passed by a first selector 804 to a CAC encoder 806 .
- the CAC encoder 806 encodes the data for transmission on the non-free wires of the bus 822 .
- the CAC encoder 806 may provide an output 812 in which CAC encoded bits are assigned to the non-free wires of the bus 822 .
- the output of the CAC encoder 806 is provided to a second selector 808 , which provides the encoded bits (i.e., the bits carried on the non-free wires) as an input 818 to the ECC encoder 810 .
- the ECC encoder 810 computes ECC bits 820 from its input 818 .
- the ECC bits 820 may be parity bits.
- the first selector 804 may then assign the ECC bits 820 to the free wires 708 , 710 , 712 of the bus 822 .
- k information bits 802 are encoded for transmission over an n-lane bus 822 .
- the bus 822 may have a sufficient number of lanes to transport p ECC bits 820 without violating crosstalk-avoidance constraints.
- the number of free wires 708 , 710 , 712 may exceed the number of ECC bits 820 .
- the first selector 804 and the CAC encoder 806 may use some of the free wires 708 , 710 , 712 to carry CAC-encoded information bits.
- FIG. 9 illustrates a configuration of a joint CAC/ECC encoder 900 that may transmit shielded ECC bits.
- the CAC/ECC encoder 800 of FIG. 8 may be reconfigured to shield ECC bits when the number of free wires 708 , 710 , 712 for a current bus state 706 is less than the number of ECC bits 914 produced by the ECC encoder 906 from an encoded word 912 provided by the CAC encoder 904 .
- the CAC encoder 904 encodes k information bits 902 to satisfy crosstalk-avoidance constraints.
- the CAC encoder 904 may output an n bit encoded word 912 , where n corresponds to the width of the bus 920 .
- a shielding circuit 908 may duplicate or otherwise spread the p ECC bits 914 over an m-bit word 916 that can be inserted into the n-bit encoded word 912 produced by the CAC encoder 904 , where the n-bit encoded word 912 may be merged into and transmitted over m designated or assigned wires of the bus 920 .
- a receiver may be adapted to decode bus state that was encoded using joint CAC and ECC encoding in accordance with certain aspects disclosed herein.
- FIG. 10 is a factor graph 1000 applicable to joint ECC and CAC decoding. The operation of the receiver is described with the assumption that the past state 1002 ( a ) is known correctly. From the past state 1002 , the receiver may determine the position and number of free wires 1008 , 1010 , 1012 .
- the number of free wires 1008 , 1010 , 1012 is exactly equal to the number of parity bits 1006 , although the principles and techniques also apply to examples in which the number of free wires 1008 , 1010 , 1012 is different from the number of parity bits 1006 .
- a receiver may include a decoder that detects the occurrence of one or more errors, and requests retransmissions when an error is detected.
- a receiver may include a decoder that detects the occurrence of errors, and can correct one or more errors without retransmission.
- the type and/or complexity of the decoder used in a receiver may be selected based on application needs, requirements and/or other specifications.
- a receiver used in a latency-limited application may verify whether the data bits corresponding to the current bus state 1004 satisfy both CAC constraints and ECC checks simultaneously.
- the receiver computes a syndrome to check if an error has occurred.
- the syndrome may be computed as the output of all the parity constraints for the current bus state 1004 .
- the receiver checks whether each local crosstalk constraint is satisfied for the received CAC encoded portion of the current bus state 104 . An error may be detected when a local crosstalk constraint is violated. If an error is detected, the receiver may request a retransmission.
- the receiver may attempt to correct transmission errors without having the data retransmitted.
- the receiver may employ a decoder that performs joint CAC decoding and ECC decoding to reliably recover the information bits.
- a modified belief-propagation decoder may be used.
- a modified belief-propagation decoder may pass messages along the factor graph, including along the relationship lines 1014 between the portion of the current bus state 1004 that includes CAC encoded data and the parity bits 1006 .
- the belief-propagation decoder can be modified to take the nonlinear CAC constraints into account.
- a modified Viterbi decoder can be used to enable error detection. Joint decoding of the CAC and ECC may advantageously provide increased error protection over conventional approaches that rely of ECC encoding for error correction.
- FIG. 11 illustrates an example of an architecture for a joint CAC/ECC decoder 1100 provided in accordance with certain aspects disclosed herein.
- One or more components or modules of the decoder 1100 may be configured to determine free wires from previously received wire state.
- One or more components or modules of the decoder 1100 may be configured to decode the information bits 1116 based on the knowledge of free wires.
- the decoder 1100 may include a CAC decoder 1104 , an ECC decoder 1106 and a bus state memory 1108 .
- the bus state memory 1108 may include one or more registers.
- the bus state memory 1108 may be implemented in a memory device and/or any suitable storage medium.
- the bus state memory 1108 may maintain a history 1112 of prior bus states and may provide access or copies of the last decoded bus state as a bus state history 1112 that may be provided to a processing circuit 1114 .
- the bus state memory 1108 provides a control signal 1110 to indicate the last-decoded bus state to the CAC decoder 1104 and ECC decoder 1106 .
- the control signal 1110 may include a copy of the last-decoded bus state, and may include other information related to the operation of the CAC decoder 1104 and the ECC decoder 1106 .
- the control signal 1110 may indicate one or more free wires.
- the CAC decoder 1104 and the ECC decoder 1106 may determine the positions of the free wires 708 , 710 , 712 using the last-decoded bus state indicated in the control signal 1110 .
- the CAC decoder 1104 and the ECC decoder 1106 may receive the current bus state 1102 from line receivers or other interface circuits.
- the CAC decoder 1104 and the ECC decoder 1106 may be configured to jointly decode the current bus state and to detect errors.
- the CAC decoder 1104 and the ECC decoder 1106 may be configured to correct certain types of error when errors are detected.
- a processing circuit 1114 or other controller may determine a mode of operation for the decoder 1100 and may select error detection and/or correction configurations.
- the processing circuit 1114 may perform or control certain functions associated with a modified Viterbi decoder or a belief propagation decoder adapted in accordance with certain aspects disclosed herein.
- the CAC decoder 1104 may receive information from the ECC decoder 1106 that enables the CAC decoder 1104 to decode an error-corrected version of the current bus state 1102 .
- FIG. 12 is a conceptual diagram illustrating a simplified example of a hardware implementation for an apparatus 1200 employing a processing circuit 1202 that may be configured to perform one or more functions disclosed herein.
- the apparatus 1200 may be configured to support operations related to joint CAC and ECC encoding according to one or more aspects of the disclosure, including aspects related to the method illustrated in FIG. 13 .
- an element, or any portion of an element, or any combination of elements as disclosed herein may be implemented using the processing circuit 1202 .
- the processing circuit 1202 may include one or more processors 1204 that are controlled by some combination of hardware and software modules.
- processors 1204 include microprocessors, microcontrollers, digital signal processors (DSPs), ASICs, field programmable gate arrays (FPGAs), programmable logic devices (PLDs), state machines, sequencers, gated logic, discrete hardware circuits, and other suitable hardware configured to perform the various functionality described throughout this disclosure.
- the one or more processors 1204 may include specialized processors that perform specific functions, and that may be configured, augmented or controlled by one of the software modules 1216 .
- the one or more processors 1204 may be configured through a combination of software modules 1216 loaded during initialization, and further configured by loading or unloading one or more software modules 1216 during operation.
- the processing circuit 1202 may be implemented with a bus architecture, represented generally by the bus 1210 .
- the bus 1210 may include any number of interconnecting buses and bridges depending on the specific application of the processing circuit 1202 and the overall design constraints.
- the bus 1210 links together various circuits including the one or more processors 1204 , and storage 1206 .
- Storage 1206 may include memory devices and mass storage devices, and may be referred to herein as computer-readable media and/or processor-readable media.
- the bus 1210 may also link various other circuits such as timing sources, timers, peripherals, voltage regulators, and power management circuits.
- a bus interface 1208 may provide an interface between the bus 1210 and one or more line interface circuits 1212 .
- a line interface circuit 1212 may be provided for each networking technology supported by the processing circuit. In some instances, multiple networking technologies may share some or all of the circuitry or processing modules found in a line interface circuit 1212 . Each line interface circuit 1212 provides a means for communicating with various other apparatus over a transmission medium. Depending upon the nature of the apparatus, a user interface 1218 (e.g., keypad, display, speaker, microphone, joystick) may also be provided, and may be communicatively coupled to the bus 1210 directly or through the bus interface 1208 .
- a user interface 1218 e.g., keypad, display, speaker, microphone, joystick
- a processor 1204 may be responsible for managing the bus 1210 and for general processing that may include the execution of software stored in a computer-readable medium that may include the storage 1206 .
- the processing circuit 1202 including the processor 1204 , may be used to implement any of the methods, functions and techniques disclosed herein.
- the storage 1206 may be used for storing data that is manipulated by the processor 1204 when executing software, and the software may be configured to implement any one of the methods disclosed herein.
- One or more processors 1204 in the processing circuit 1202 may execute software.
- Software shall be construed broadly to mean instructions, instruction sets, code, code segments, program code, programs, subprograms, software modules, applications, software applications, software packages, routines, subroutines, objects, executables, threads of execution, procedures, functions, algorithms, etc., whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise.
- the software may reside in computer-readable form in the storage 1206 or in an external computer readable medium.
- the external computer-readable medium and/or storage 1206 may include a non-transitory computer-readable medium.
- a non-transitory computer-readable medium includes, by way of example, a magnetic storage device (e.g., hard disk, floppy disk, magnetic strip), an optical disk (e.g., a compact disc (CD) or a digital versatile disc (DVD)), a smart card, a flash memory device (e.g., a “flash drive,” a card, a stick, or a key drive), a random access memory (RAM), a read only memory (ROM), a programmable ROM (PROM), an erasable PROM (EPROM), an electrically erasable PROM (EEPROM), a register, a removable disk, and any other suitable medium for storing software and/or instructions that may be accessed and read by a computer.
- a magnetic storage device e.g., hard disk, floppy disk, magnetic strip
- an optical disk e.g., a compact disc (CD) or a digital versatile disc (DVD)
- a smart card e.g., a “
- the computer-readable medium and/or storage 1206 may also include, by way of example, a carrier wave, a transmission line, and any other suitable medium for transmitting software and/or instructions that may be accessed and read by a computer.
- Computer-readable medium and/or the storage 1206 may reside in the processing circuit 1202 , in the processor 1204 , external to the processing circuit 1202 , or be distributed across multiple entities including the processing circuit 1202 .
- the computer-readable medium and/or storage 1206 may be embodied in a computer program product.
- a computer program product may include a computer-readable medium in packaging materials.
- the storage 1206 may maintain software maintained and/or organized in loadable code segments, modules, applications, programs, etc., which may be referred to herein as software modules 1216 .
- Each of the software modules 1216 may include instructions and data that, when installed or loaded on the processing circuit 1202 and executed by the one or more processors 1204 , contribute to a run-time image 1214 that controls the operation of the one or more processors 1204 . When executed, certain instructions may cause the processing circuit 1202 to perform functions in accordance with certain methods, algorithms and processes described herein.
- Some of the software modules 1216 may be loaded during initialization of the processing circuit 1202 , and these software modules 1216 may configure the processing circuit 1202 to enable performance of the various functions disclosed herein.
- some software modules 1216 may configure internal devices and/or logic circuits 1222 of the processor 1204 , and may manage access to external devices such as the line interface circuit 1212 , the bus interface 1208 , the user interface 1218 , timers, mathematical coprocessors, and so on.
- the software modules 1216 may include a control program and/or an operating system that interacts with interrupt handlers and device drivers, and that controls access to various resources provided by the processing circuit 1202 .
- the resources may include memory, processing time, access to the line interface circuit 1212 , the user interface 1218 , and so on.
- One or more processors 1204 of the processing circuit 1202 may be multifunctional, whereby some of the software modules 1216 are loaded and configured to perform different functions or different instances of the same function.
- the one or more processors 1204 may additionally be adapted to manage background tasks initiated in response to inputs from the user interface 1218 , the line interface circuit 1212 , and device drivers, for example.
- the one or more processors 1204 may be configured to provide a multitasking environment, whereby each of a plurality of functions is implemented as a set of tasks serviced by the one or more processors 1204 as needed or desired.
- the multitasking environment may be implemented using a timesharing program 1220 that passes control of a processor 1204 between different tasks, whereby each task returns control of the one or more processors 1204 to the timesharing program 1220 upon completion of any outstanding operations and/or in response to an input such as an interrupt.
- a task has control of the one or more processors 1204 , the processing circuit is effectively specialized for the purposes addressed by the function associated with the controlling task.
- the timesharing program 1220 may include an operating system, a main loop that transfers control on a round-robin basis, a function that allocates control of the one or more processors 1204 in accordance with a prioritization of the functions, and/or an interrupt driven main loop that responds to external events by providing control of the one or more processors 1204 to a handling function.
- FIG. 13 is a flow chart 1300 of a method operational a device coupled to a multi-wire parallel bus.
- the device may determine from a prior bus state, a plurality of free wires in the bus for a current bus state.
- Each free wire may satisfy a crosstalk-avoidance constraint in the current bus state for all values of a bit transmitted on the free wire.
- a free wire may satisfy a crosstalk-avoidance constraint in the current bus state when it is in the same signaling state as each directly adjacent wire in the prior bus state.
- the device may encode a plurality of data bits using a crosstalk avoidance encoder to obtain a CAC-encoded word.
- the crosstalk avoidance encoder may be configured to avoid producing opposite direction transitions on pairs of neighboring wires.
- the device may compute an error detection or correction code for the CAC-encoded word.
- the device may assign bits of the error detection or correction code to the plurality of free wires for transmission during the current bus state.
- the device may assign the CAC-encoded word to wires that are not used for carrying bits of the error detection or correction code. At least a portion of the CAC-encoded word may be assigned to wires that are not free wires. In some instances, one or more bits of the CAC-encoded word may be assigned to wires that are free wires during the current bus state.
- computing an error detection or correction code includes generating a block error-correction code from the CAC-encoded word.
- computing an error detection or correction code may include generating a cyclic-redundancy code from the CAC-encoded word.
- the cyclic-redundancy code may have 8 bits.
- computing an error detection or correction code includes generating the error detection or correction code using a convolutional encoder. In some instances, the plurality of data bits is sequentially encoded.
- Assigning bits of the error detection or correction code may include queuing bits of the error detection or correction code received from the convolutional encoder in a queue, assigning a bit obtained from the queue to a free wire encountered in a sequence of wires when a bit of the error detection or correction code is available in the queue, and assigning a bit of the CAC-encoded word to the free wire when no bits of the error detection or correction code are available in the queue.
- the sequence of wires may include wires of the bus ordered such that each wire in the sequence is physically adjacent to predecessor and successor wires in the sequence of wires.
- assigning bits of the error detection or correction code may include queuing bits of the error detection or correction code received from the convolutional encoder in a queue, and using a pair of adjacent wires in the sequence of wires to carry one parity bit when the queue is full.
- FIG. 14 is a diagram illustrating a simplified example of a hardware implementation for an apparatus 1400 employing a processing circuit 1402 .
- the processing circuit typically has a processor 1416 that may include one or more of a microprocessor, microcontroller, digital signal processor, a sequencer and a state machine.
- the processing circuit 1402 may be implemented with a bus architecture, represented generally by the bus 1420 .
- the bus 1420 may include any number of interconnecting buses and bridges depending on the specific application of the processing circuit 1402 and the overall design constraints.
- the bus 1420 links together various circuits including one or more processors and/or hardware modules, represented by the processor 1416 , the modules or circuits 1404 , 1406 , 1408 , and 1408 , a bus interface 1412 configurable to communicate over connectors or wires of a multi-wire communication link 1414 and the computer-readable storage medium 1418 .
- the bus 1420 may also link various other circuits such as timing sources, peripherals, voltage regulators, and power management circuits.
- the processor 1416 is responsible for general processing, including the execution of software stored on the computer-readable storage medium 1418 .
- the software when executed by the processor 1416 , causes the processing circuit 1402 to perform the various functions described supra for any particular apparatus.
- the computer-readable storage medium 1418 may also be used for storing data that is manipulated by the processor 1416 when executing software, including data decoded from symbols transmitted over the multi-wire communication link 1414 , which may be configured as data lanes and clock lanes.
- the processing circuit 1402 further includes at least one of the modules 1404 , 1406 , 1408 , and 1408 .
- the modules 1404 , 1406 , 1408 , and 1408 may be software modules running in the processor 1416 , resident/stored in the computer-readable storage medium 1418 , one or more hardware modules coupled to the processor 1416 , or some combination thereof.
- the 1404 , 1406 , 1408 , and/or 1408 may include microcontroller instructions, state machine configuration parameters, or some combination thereof.
- the apparatus 1400 for data communication includes modules and/or circuits 1404 , 1412 configured to determine free wires of the multi-wire communication link 1414 for a past bus state.
- the apparatus 1400 may include modules and/or circuits 1406 configured to encode information bits in a CAC-encoded word and modules and/or circuits 1408 configured to calculate an ECC for the CAC-encoded word.
- the apparatus 1400 may include modules and/or circuits 1410 configured to assign ECC bits to free wires and bits of the CAC-encoded word to non-free wires.
- FIG. 15 is a flow chart 1500 of a method operational a receiving device coupled to a multi-wire parallel bus.
- the device may determine from a prior bus state, a plurality of free wires in the bus for a current bus state. Each free wire may satisfy a crosstalk-avoidance constraint in the current bus state for all values of a bit transmitted on the free wire.
- the device may receive an error detection or correction code from the plurality of free wires.
- the device may jointly operate a crosstalk avoidance decoder and an error detection or correction decoder to decode the current bus state.
- the device may provide a plurality of data bits decoded from the current bus state.
- the error detection or correction decoder is configured to detect the occurrence of one or more errors.
- the device may request retransmission of data encoded in the current bus state when an error is detected. In other instances, the device may correct one or more errors in the current bus state when an error is detected.
- the device may operate the crosstalk avoidance decoder and the error detection or correction decoder jointly by concurrently verifying whether data bits corresponding to the current bus state satisfy crosstalk-avoidance constraints, and checking the error detection or correction code to determine whether a transmission error affecting the current bus state has occurred.
- the device may operate the crosstalk avoidance decoder and the error detection or correction decoder jointly by verifying whether data bits corresponding to the current bus state satisfy crosstalk-avoidance constraints, and correcting a transmission error using the error detection or correction code.
- the device may use a modified belief-propagation decoder to ensure reliability of the plurality of data bits decoded from the current bus state. In other examples, the device may use a Viterbi decoder to ensure reliability of the plurality of data bits decoded from the current bus state.
- FIG. 16 is a diagram illustrating a simplified example of a hardware implementation for an apparatus 1600 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 1608 , a bus interface 1612 configurable to communicate over connectors or wires of a multi-wire communication link 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.
- the processor 1616 is responsible for general processing, including the execution of software stored on the computer-readable storage medium 1618 .
- 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 multi-wire communication link 1614 , which may be configured as data lanes and clock lanes.
- the processing circuit 1602 further includes at least one of the modules 1604 , 1606 , 1608 , and 1608 .
- the modules 1604 , 1606 , 1608 , and 1608 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 1604 , 1606 , 1608 , and/or 1608 may include microcontroller instructions, state machine configuration parameters, or some combination thereof.
- the apparatus 1600 for data communication includes modules and/or circuits 1604 , 1612 configured to determine from a prior bus state, a plurality of free wires in the bus 1620 for a current bus state, modules and/or circuits 1608 , 1612 configured to receive an error detection or correction code from the plurality of free wires, and modules and/or circuits 1606 , 1612 configured to decode the current bus state.
- the apparatus 1600 may jointly operate a crosstalk avoidance decoder and an error detection or correction decoder to provide a plurality of data bits decoded from the current bus state.
- 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 computing device and/or distributed between two or more computing devices.
- 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.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Dc Digital Transmission (AREA)
Abstract
Description
- Field
- The present disclosure relates generally to high-speed data communications, and more particularly, to encoding and decoding data over a multi-line parallel bus.
- Background
- High-speed interfaces are frequently used between circuits and components of mobile wireless devices and other complex apparatus. For example, certain devices may include processing, communications, storage and/or display devices that interact with one another through communications links. Some of these devices, including synchronous dynamic random access memory (SDRAM), may be capable of providing or consuming data and control information at processor clock rates. Other devices, such as display controllers, may require variable amounts of data at relatively low video refresh rates.
- In a system-on-chip (SoC), various components are integrated on a single die. For example, a typical SoC in present mobile phones contains hundreds of components such as central and graphical processing units, memories, power management circuits, cellular and other wireless radios, etc. This integration of a large number of components onto a single silicon substrate results in smaller and lower-power processing units compared to traditional systems. All of these components communicate with each other via metal wires known as interconnects or busses.
- Components may intercommunicate using interconnects or busses in systems other than SoC systems. For example, a central processing unit (CPU) or other processor may communicate with a memory device via an interconnect located on a printed circuit board (PCB).
- Problems associated with these interconnects are transmission energy and delay. For a given technology, the width of the wire and the distance to the substrate remains fixed, and hence the capacitive coupling depends strongly on the distance between the wires. As the inter-wire spacing decreases, the coupling capacitance between adjacent wires increases, leading to increased crosstalk. This crosstalk between adjacent wires degrades the signal integrity and increases transmission energy and delay. Hence, the interconnects pose a challenge to keep up with the demand for increasing data transfer rates. What is needed is an improved crosstalk avoidance scheme that improves signal integrity while decreasing transmission energy and delay.
- Embodiments disclosed herein provide systems, methods and apparatus for transmitting/receiving data bits over a multi-line parallel bus with improved signal integrity. Encoders and decoders are disclosed that provide joint crosstalk avoidance and error correction and/or detection.
- In an aspect of the disclosure, a method of transmitting data bits over a parallel bus includes determining from a prior bus state, a plurality of free wires in the bus for a current bus state, where each free wire satisfies a crosstalk-avoidance constraint in the current bus state for all values of a bit transmitted on the free wire. The method may also include encoding a plurality of data bits using a crosstalk avoidance encoder to obtain a crosstalk-avoidance coding (CAC) encoded word, computing an error detection or correction code for the CAC-encoded word, assigning bits of the error detection or correction code to the plurality of free wires for transmission during the current bus state, and assigning the CAC-encoded word to two wires of the bus that are not used for carrying bits of the error detection or correction code.
- In an aspect of the disclosure, an apparatus includes a storage device configured to maintain an indication of a past state of a multi-wire parallel bus, and a crosstalk avoidance encoder adapted to determine a plurality of free wires in the bus for a current state of the multi-wire parallel bus based on the past state of the multi-wire parallel bus, where each free wire satisfies a crosstalk-avoidance constraint in the current state of the multi-wire parallel bus for all values of a bit transmitted on the free wire. The apparatus may provide a crosstalk avoidance encoded word by encoding a plurality of data bits. The apparatus may include an error-correction coding encoder configured to compute an error detection or correction code for the crosstalk avoidance encoded word, and a selector circuit configured to assign bits of the error detection or correction code to the plurality of free wires for transmission as part of the current state of the multi-wire parallel bus, and assign the crosstalk avoidance encoded word to wires of the bus that are not used for carrying bits of the error detection or correction code.
- In an aspect of the disclosure, an apparatus includes means for determining from a prior bus state, a plurality of free wires in the bus for a current bus state, where each free wire satisfies a crosstalk-avoidance constraint in the current bus state for all values of a bit transmitted on the free wire. The apparatus may also include means for encoding a plurality of data bits using a crosstalk avoidance encoder to obtain a CAC encoded word, means for computing an error detection or correction code for the CAC-encoded word, means for assigning bits of the error detection or correction code to the plurality of free wires for transmission during the current bus state, and means for assigning the CAC-encoded word to two wires of the bus that are not used for carrying bits of the error detection or correction code.
- In an aspect of the disclosure, a processor readable storage medium may have code stored thereon. The code may include instructions for determining from a prior bus state, a plurality of free wires in the bus for a current bus state, where each free wire satisfies a crosstalk-avoidance constraint in the current bus state for all values of a bit transmitted on the free wire. The code may include instructions for encoding a plurality of data bits using a crosstalk avoidance encoder to obtain a CAC encoded word, computing an error detection or correction code for the CAC-encoded word, assigning bits of the error detection or correction code to the plurality of free wires for transmission during the current bus state, and assigning the CAC-encoded word to two wires of the bus that are not used for carrying bits of the error detection or correction code.
- In an aspect of the disclosure, a method of receiving data bits from a parallel bus includes determining from a prior bus state, a plurality of free wires in the bus for a current bus state, where each free wire satisfies a crosstalk-avoidance constraint in the current bus state for all values of a bit transmitted on the free wire. The method may also include receiving an error detection or correction code from the plurality of free wires, jointly operating a crosstalk avoidance decoder and an error detection or correction decoder to decode the current bus state, and providing a plurality of data bits decoded from the current bus state.
- In an aspect of the disclosure, an apparatus includes a processing circuit, a storage device configured to maintain a past bus state of a multi-wire parallel bus, and a crosstalk avoidance decoder that jointly operated with an error detection or correction decoder. The processing circuit and/or crosstalk avoidance decoder may be configured to determine from the prior bus state, a plurality of free wires in the bus for a current bus state, where each free wire satisfies a crosstalk-avoidance constraint in the current bus state for all values of a bit transmitted on the free wire. An error detection or correction code provided by the error detection or correction decoder may be used to correctly decode the current bus state.
- In an aspect of the disclosure, an apparatus includes means for determining from a prior bus state, a plurality of free wires in the bus for a current bus state, where each free wire satisfies a crosstalk-avoidance constraint in the current bus state for all values of a bit transmitted on the free wire. The apparatus may also include means for receiving an error detection or correction code from the plurality of free wires, means for jointly operating a crosstalk avoidance decoder and an error detection or correction decoder to decode the current bus state, and means for providing a plurality of data bits decoded from the current bus state.
- In an aspect of the disclosure, a processor readable storage medium may have code stored thereon. The code may include instructions for determining from a prior bus state, a plurality of free wires in the bus for a current bus state, where each free wire satisfies a crosstalk-avoidance constraint in the current bus state for all values of a bit transmitted on the free wire. The method may also include receiving an error detection or correction code from the plurality of free wires, jointly operating a crosstalk avoidance decoder and an error detection or correction decoder to decode the current bus state, and providing a plurality of data bits decoded from the current bus state.
-
FIG. 1 depicts an apparatus that employs an encoded data link between devices within the apparatus. -
FIG. 2 illustrates certain aspects of an apparatus that may be adapted in accordance with certain aspects disclosed herein. -
FIG. 3 is illustrates a memory interface that may be adapted in accordance with certain aspects disclosed herein. -
FIG. 4 illustrates a physical layout of a portion of a bus hat may be operated in accordance with certain aspects disclosed herein. -
FIG. 5 illustrates the occurrence of free wires that may be used by encoders adapted according to certain aspects disclosed herein. -
FIG. 6 illustrates examples of encoders adapted according to certain aspects disclosed herein. -
FIG. 7 illustrates the occurrence of free wires at a transition between bus states for the bus illustrated inFIG. 4 . -
FIG. 8 illustrates a first example of an architecture for a joint CAC and Error-correction coding (ECC) encoder provided in accordance with certain aspects disclosed herein. -
FIG. 9 illustrates a second example of an architecture for a joint CAC and ECC encoder provided in accordance with certain aspects disclosed herein. -
FIG. 10 is a factor graph illustrating operation of joint ECC and CAC decoding in accordance with certain aspects disclosed herein. -
FIG. 11 illustrates an example of an architecture for a joint CAC/ECC decoder provided in accordance with certain aspects disclosed herein. -
FIG. 12 illustrates an example of an apparatus employing a processing system that may be adapted according to certain aspects disclosed herein. -
FIG. 13 is a flow chart of a method for transmitting data bits over a multi-wire parallel bus in accordance with certain aspects disclosed herein. -
FIG. 14 illustrates a second example of a hardware implementation for an apparatus used in a device that transmits data bits over a multi-wire parallel bus according to certain aspects disclosed herein. -
FIG. 15 is a flow chart of a method for decoding data bits from a multi-wire parallel bus in accordance with certain aspects disclosed herein. -
FIG. 16 illustrates a second example of a hardware implementation for an apparatus used in a device that decodes data bits from a multi-wire parallel bus according to certain aspects disclosed herein. - 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.
- Certain disclosed examples relate to systems and apparatus for transmitting/receiving data bits over a number of conductors in a parallel bus. The conductors may include three or more conductors, and each conductor may be referred to as a wire, a connector, and/or interconnect. The conductors may include conductive traces disposed on a circuit board or within a conductive layer of a semiconductor integrated circuit (IC) device. The connectors may be configured or arranged to provide one or more busses. In one example, the conductors may be divided into a plurality of transmission groups, each group encoding a portion of a block of data to be transmitted.
- Certain aspects of the disclosure may be applicable to communications links deployed between electronic components, which may include subcomponents of devices such as telephones, mobile computing devices, appliances, automobile electronics, avionics systems, etc. Referring to
FIG. 1 , for example, anapparatus 100 employing one or more busses for intercommunication between constituent devices may include aprocessing circuit 102 that is configured to control operation of theapparatus 100. Theprocessing circuit 102 may access and execute software applications and control logic circuits and other devices within theapparatus 100. In one example, theapparatus 100 may include a wireless communication device that communicates through a radio frequency (RF)communications transceiver 106 with a radio access network (RAN), a core access network, the Internet and/or another network. Thecommunications transceiver 106 may be operably coupled to aprocessing circuit 102. Theprocessing circuit 102 may include one or more IC devices, which may include an application specific integrated circuit (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 processorreadable storage 112 that may maintain instructions and data that may be executed by theprocessing circuit 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 thestorage 112 of the wireless device. Thestorage 112 may include read only memory (ROM) or random access memory (RAM), electrically erasable programmable read only memory (EEPROM), a flash memory device, or any memory device that can be used in processing systems and computing platforms. Theprocessing circuit 102 may include and/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 or server, 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 as abutton 128 and akeypad 126, among other components. -
FIG. 2 is a block schematic illustrating certain aspects of anapparatus 200 such as a wireless mobile device, a mobile telephone, a mobile computing system, a wireless telephone, a notebook computer, a tablet computing device, a media player, a gaming device, or the like. Theapparatus 200 may be provided as an SoC, and/or may include a plurality of 202 and 230, including IC devices that exchange data and control information through adevices communications link 220. The communications link 220 may be used to connect the 202 and 230, which may be located in close proximity to one another or physically located in different parts of thedevices apparatus 200. In one example, the communications link 220 may be provided on a chip carrier, substrate or circuit board that carries the 202 and 230. In another example, adevices first device 202 may be located in a keypad section of a flip-phone while asecond device 230 may be located in a display section of the flip-phone. A portion of the communications link 220 may include a cable or an optical connection. - The communications link 220 may include
222, 224 and 226. One ormultiple channels more communications channel 226 may be bidirectional, and may operate in half-duplex mode and/or full-duplex mode. One or 222, 224 may be unidirectional. The communications link 220 may be asymmetrical, providing higher bandwidth in one direction. In one example described herein, amore channels forward communications channel 222 may be referred to as a forward link while areverse communications channel 224 may be referred to as a reverse link. Thefirst device 202 may be designated as a host, master and/or transmitter, while thesecond device 230 may be designated as a client, slave and/or receiver, even if both 202 and 230 are configured to transmit and receive on the communications link 220. In one example, thedevices forward channel 222 may operate at a higher data rate when communicating data from afirst device 202 to asecond device 230, while thereverse channel 224 may operate at a lower data rate when communicating data from thesecond device 230 to thefirst device 202. - The
202 and 230 may each include adevices 206, 236 or other computing circuit, processor and/or device. In one example, theprocessing circuit first device 202 may perform core functions of theapparatus 200, including maintaining wireless communications through awireless transceiver 204 and anantenna 214, while thesecond device 230 may support a user interface that manages or operates adisplay controller 232, and may control operations of a camera or video input device using acamera controller 234. Other features supported by one or more of the 202 and 230 may include a keyboard, a voice-recognition component, and other input or output devices. Thedevices display controller 232 may include circuits and software drivers that support a display such as a liquid crystal display (LCD) panel, a touch-screen display, an indicator, and so on. The 208 and 238 may include transitory and/or non-transitory storage devices adapted to maintain instructions and data used by thestorage media 206 and 236, and/or other components of therespective processing circuits 202 and 230. Communication between eachdevices 206, 236 and itsprocessing circuit 208 and 238 and other modules and circuits may be facilitated by one orcorresponding storage media 212 and 242, respectively.more busses - The
reverse channel 224 may be operated in the same manner as theforward channel 222. Theforward channel 222 and thereverse channel 224 may be capable of transmitting at comparable speeds or at different speeds, where speed may be expressed as a data transfer rate and/or a clocking rate. The forward and reverse data rates may be substantially the same or may differ by orders of magnitude, depending on the application. In some applications abidirectional communications channel 226 may support communications between thefirst device 202 and thesecond device 230. Theforward channel 222 and/or thereverse channel 224 may be configurable to operate in a bidirectional mode when, for example, the forward and 222 and 224 share the same physical connections and operate in a half-duplex manner.reverse channel - In certain examples, the
reverse channel 224 derives a clocking signal from theforward channel 222 for synchronization purposes, for control purposes, to facilitate power management and/or for simplicity of design. The clocking signal may have a frequency that is obtained by dividing the frequency of a symbol clock used to transmit signals on theforward channel 222. The symbol clock may be superimposed or otherwise encoded in symbols transmitted on theforward channel 222. The use of a clocking signal that is a derivative of the symbol clock allows fast synchronization of transmitters and receivers (transceivers 210, 240) and enables fast start and stop of data signals without the need for framing to enable training and synchronization. - In certain examples, a
bidirectional channel 226 may support communications between thefirst device 202 and thesecond device 230. In some instances, thefirst device 202 and thesecond device 230 provide encoding and decoding of data, address and control signals transmitted between a processing device and memory devices such as dynamic random access memory (DRAM) devices. -
FIG. 3 is a block diagram illustrating an example of anapparatus 300 in which aprocessing circuit 302 may be configured to read and write data to amemory device 304 using high- 306, 310. Onespeed interface circuits interface circuit 306 may be implemented as a controller that is embedded in or cooperates with theprocessing circuit 302. Anotherinterface circuit 310 may be implemented as a controller that is embedded in or cooperates with thememory device 304. - In one example, the
processing circuit 302 and thememory device 304 may be components of theapparatus 100 depicted inFIG. 1 . Theprocessing circuit 302 and thememory device 304 may be coupled using abus 308 that includes a number of connectors, wires, electrically conductive traces on a circuit board or chip carrier, package substrate, silicon (or alternative material) interposer, electrically conductive traces in a metallization layer of an IC, and/or other electrical connectors and devices. Thebus 308 may include some combination of unidirectional and bidirectional connectors. - The
bus 308 may be configured to carry one or more differential signals in corresponding pairs of connectors. For example, data may be transmitted over single-ended channels, while certain control signals may be transmitted using differential channels. Some memory devices may employ a write clock (WCK), while other memory devices may use a data strobe signal (DQS signal) to determine when data is valid and/or can be reliably captured from data signals (DQ signals) on thebus 308. - Due to decreasing transistor sizes, interconnect wires, which may be organized as a bus for example, are emerging as a performance bottleneck in SoCs and for chip-to-chip communications. With reference to
FIG. 4 , bus transmission energy and delay may be affected by capacitive coupling (illustrated as capacitances 406 1-406 9) between neighboring wires (which may be referred to as lanes 402 0-402 9 of a bus 400). Transmission energy and delay are adversely affected by increases in bus interline capacitive coupling driven by technology scaling. If the ratio of the bus interline capacitance to the bulk capacitance (sum of parasitic, driver, and load capacitances to ground) is Δ, then worst-case transmission energy and delay for an N-wire bus is proportional to 1+4λ. Decreased inter-wire spacing and increased clock frequencies used in SoCs, ASICs and other IC devices can produce increased crosstalk between adjacent wires can degrade signal integrity and increase transmission energy and delay, resulting in increased transmission errors. -
FIG. 4 illustrates an example of physical layout of a portion of abus 400 that includes 10 lanes 402 0-402 9 that are deployed in substantial parallel alignment on asubstrate 404. The lanes 402 0-402 9 may correspond to one of multiple groups of lanes in thebus 400. Each of the lanes 402 0-402 9 may be implemented using a wire, a trace on a circuit board or chip-carrier, an interconnect within an IC device, and/or another of electrical connector. The lanes 402 0-402 9 may be physically arranged in parallel for some or all segments of thebus 400, and the distances separating adjacent lanes 402 0-402 9 may be variable. Crosstalk may result due to capacitive coupling between two or more of the lanes 402 0-402 9. As illustrated, each pair of the lanes 402 0-402 9 may be coupled by an interline capacitance 406 1-406 9. The magnitude of the crosstalk between a pair of adjacent lanes 402 0-402 9 may be calculable based on the value of the interline capacitance 406 1-406 9 between the pair of adjacent lanes 402 0-402 9, and the nature of transitions in signaling state on each lane of the pair of adjacent lanes 402 0-402 9. - Transitions at a
boundary 412 between signaling states corresponding to consecutively transmitted words are illustrated in the timing diagram 410 ofFIG. 4 . Words may be transmitted in 420, 422 defined by a transmit clock or receive clock. The bus state during atransmission intervals 420, 422 may be the combination of the signaling states of each lane 402 0-402 9. Transitions in signaling state may occur on one or more of the lanes 402 0-402 9 at thetransmission interval boundary 412 between 420, 422. In the illustrated example,transmission intervals 414, 416 occur on a first lane 402 0 and a second lane 402 1, apositive transitions negative transition 418 occurs on a third lane 402 2, while no transition occurs on a fourth lane 402 3. In this example, signals transition between two signaling states, although the principles disclosed herein may be applied to signals that transition between three or more signaling states. - Various solutions for improving communication reliability have been implemented. Some of these solutions, such as crosstalk-avoidance coding (CAC) schemes, attempt to prevent or minimize transmission errors on a
parallel bus 400 subject to capacitive coupling of adjacent connectors. Crosstalk levels affecting one of the lanes 402 0-402 9 may depend on the types of transition that occur on adjacent or neighboring lanes 402 0-402 9 at or near theboundary 412 between 420, 422, and may correspond to the types of transitions that occur on the various lanes 402 0-402 9. For example, maximum crosstalk may be observed when opposite bit (i.e., opposite direction) transitions 416, 418 occur on a first pair of adjacent lanes 402 1, 402 2. Decreased crosstalk may be observed when the same type oftransmission intervals 414, 416 occurs on a second pair of adjacent lanes 402 0, 402 1. In the case of a third pair of adjacent lanes 402 2, 402 3, intermediate levels of crosstalk may occur when the signaling state of one lane 402 3 does not change.transition - CAC may be used to encode data to be transmitted on a
parallel bus 400 subject to capacitive coupling between adjacent lanes such that opposing bit transitions 416, 418 on adjacent lanes 402 1, 402 2 may be avoided. CAC involves encoding data in words for transmission on theparallel bus 400 where certain transition patterns are avoided. CAC can reduce energy consumption and propagation delay by avoiding the occurrence of opposing bit transitions on adjacent wires of thebus 400. CAC may reduce worst-case transmission energy and delay by encoding data in a manner that prevents certain transitions on adjacent wires. CAC may use 306, 310 to encode data for transmission by encoding data such that occurrences of opposing bit transitions on adjacent lanes 402 1, 402 2 (for example) are avoided. According to certain aspects disclosed herein, data transmitted on theinterface circuits bus 400 may be encoded based on data previously transmitted over the bus 400 (hereinafter referred to as past bus state) to obtain a current bus state while avoiding certain transitions. InFIG. 4 , the past bus state may correspond to the combination of the signaling states of each lane 402 0-402 9 during afirst transmission interval 420, and the current bus state may correspond to the combination of the signaling states of each lane 402 0-402 9 during a second,subsequent transmission interval 422. - Other solutions for improving communication reliability provide techniques for detecting transmission errors on a
bus 400 and, in some instances, enable a receiver to reverse the effects of one or more transmission errors. Error-correction coding (ECC) schemes, provide encoding redundancy through the addition of parity bits in order to detect and correct errors that may occur during transmission. ECC schemes increase the number of wires needed in thebus 400. In the example of the double-data rate fourth generation (DDR4) SDRAM standard, an 8-bit cyclic-redundancy code (CRC) is used to provide error correction for 72 bits of data in a total of 80 lanes. ECC is a technique for encoding data that provides redundancy through the addition of parity bits. This redundancy can be used to detect and correct errors occurring during transmission. - It may be desirable to use some combination of CAC and ECC in certain applications. Issues may arise when CAC and ECC are combined. In one example, when a combination of an ECC inner code followed by a CAC outer code is used, the CAC outer code cannot be reliably decoded in the presence of errors. In another example, when a combination of a CAC inner code followed by an ECC outer code is used, the ECC outer code can counteract the crosstalk-avoidance provided by the CAC.
- Previous approaches to combining CAC and ECC have involved tradeoffs between reliability and efficiency of the bus. These previous approaches encode information using a CAC and use ECC to generate parity bits from the output of the CAC encoder. Each parity bit is then transmitted using two wires to avoid crosstalk. The approach is inefficient because of this use of two wires per parity bit. In the example of DDR4 DRAM, if the 72 bits are already CAC encoded, then the ECC would generate an additional 16 bits, resulting in a total of 88 lanes.
- According to certain aspects of the invention, information may be reliably and efficiently transmitted over a parallel bus using the joint CAC and ECC encoding techniques disclosed herein. In one example,
interface circuits 306, 310 (seeFIG. 3 ) may be adapted to perform joint CAC and ECC encoding for a 72-bit DDR4 DRAM bus using 10 bit lanes to transmit ECC bits in a manner that satisfies crosstalk-avoidance constraints. Joint encoding for CAC and ECC according to certain aspects uses fewer bus lanes than state-of-the-art solutions and can provide better protection against transmission errors. - Crosstalk-avoidance constraints may be defined and used to prevent patterns of transitions in bus state that produce high levels of crosstalk. In one example, a CAC encoder may be constrained from producing a bus state in which opposite-direction transitions 416, 418 occur on two adjacent lanes 402 1, 402 2 (see
FIG. 4 ). The crosstalk-avoidance constraint may be applied in three dimensions, where the adjacent lanes are defined in both horizontal and vertical planes. In some instances, a crosstalk-avoidance constraint in the horizontal dimension may specify a first number of lanes required to separate opposite-direction transitions 416, 418 in the horizontal plane and a second number of lanes required to separate opposite-direction transitions 416, 418 in the vertical plane. The first and second numbers of separating lanes may be different or the same crosstalk-avoidance constraint can be tailored for busses that use signaling schemes in which three or more voltage or current states are defined. - According to certain aspects, ECC bits calculated for CAC-encoded information may be transmitted on free wires. A free wire may be defined as one of the lanes 402 0-402 9 that can satisfy crosstalk-avoidance constraints regardless of any possible transition that may occur at the next change in bus state.
-
FIG. 5 is afactor graph 500 illustrating the occurrence of free wires that may be used by encoders adapted according to certain aspects disclosed herein. In these encoders, a past bus state 502 may be described by the sequence of bits a1, a2, . . . , aN for an N-wire bus. Data to be transmitted over the bus may be encoded sequentially into a new bus state denoted as b1, b2, . . . , bN, which may be referred to as the next bus state 504. Data may be encoded sequentially commencing with a first lane 402 0 of the bus, continuing with the second lane 402 2, and so on, until the Nth lane. Each lane 402 0-402 N may include a wire, trace, connector, or the like. Encoding the new bus state is based on the past bus state. - In the general case, where the bus has N lanes and the past bus state 502 is denoted as a=(a1, a2, . . . , aN). An encoder maybe adapted or configured to determine a next bus state 504, denoted as b=(b1, b2, . . . , bN). According to certain aspects, the
514, 516, 518 for the past bus state 502 are identified. Each wire in the past bus state 502 that is the middle wire of three wires that have the same signaling state for the past bus state 502 can be set to ‘0’ or ‘1’ without violating crosstalk constraints. That is, for an nth wire, where an−1, an, an+1 in the past bus state 502 have the same value, the encoder can set the next value (bn) to any desired signaling state without violating the crosstalk constraints and without affecting the values of bn−1, bn+1 that can be sent over adjacent wires.free bus wires - In the
factor graph 500, 506, 508, 510, and 512 located between the past bus state 502 (a), and the next bus state 504 (b) represent the crosstalk constraints imposed by the past bus state 502. In one example, atriangles first triangle 506 is provided because a1=0, a2=1 requires that (b1,b2)≠(1,0), since otherwise an opposing transition would occur on the on these two adjacent wires. In another example, asecond triangle 508 is provided because a4=1, a5=0 requires that (b4,b5)≠(0,1), since otherwise an opposing transition would occur on the on these two adjacent wires. - Free wires are identified when their values for the next bus state 504 are not connected to any constraint. For example, the wires b3, b6, b10 do not have any associated constraints and are indicated by the
514, 516, 518. The wires b3, b6, b10 are free wires that can be set to any value in the next bus state 504 without affecting wires adjacent to them and without violating any crosstalk constraints. These free wires may be used to carry ECC bits that are calculated concurrently with, or after CAC encoding in a joint CAC/ECC encoder.white circles - A variety of encoding techniques may be adapted to support joint CAC and ECC encoding. For example,
FIG. 6 illustrates two 600, 650 that can be configured to use free wires to carry ECC bits.encoders - In one example, an
encoder 600 may adapt a convolution error-correction code to provide joint CAC and ECC encoding. Asequential CAC encoder 604 may considerpast bus state 612 when encodinginformation bits 602 to produce an encodedword 614. Theencoder 600 may includestorage 622 that maintains thepast bus state 612. Thestorage 622 may be provided using registers or other types of memory device, and thestorage 622 may maintain a history of prior bus states. Aconvolutional ECC encoder 606 generatesparity bits 616 for the encodedword 614 received from theCAC encoder 604. Theconvolutional ECC encoder 606 may periodically generatenew parity bits 616 that are buffered in abounded queue 608. Aselector circuit 610 receives queuedparity bits 618 and determines which bit should be sent over the bus 620. Theselector circuit 610 may assignparity bits 618 obtained from thequeue 608 to wires of the bus 620. In one example, theselector circuit 610 fills the bus 620 sequentially, starting from a first wire (e.g. a wire corresponding to the first lane 402 0). While sequentially filling the bus 620, theselector circuit 610 may encounter a first free wire based on thepast bus state 612. A first parity bit in the queue, which may be an oldest parity bit waiting in thequeue 608, may be assigned to the first free wire. If no parity bit is available in the queue, theselector circuit 610 may request a new bit from theCAC encoder 604 for assignment to the current wire. In the example illustrated inFIG. 4 , the lanes 402 0-402 N of thebus 400 may be sequentially assigned CAC-encoded bits or ECC bits from the leftmost lane 402 0 to the rightmost lane 402 9, or from the rightmost lane 402 9 to the leftmost lane 402 0. In other configurations, a sequence of lanes may include lanes that are ordered such that each lane in the sequence is physically adjacent to predecessor and successor lanes in the sequence. - In some instances, the
queue 608 may be empty or full. When the queue is empty, theselector circuit 610 may continue to poll thequeue 608 while assigning bits received from theCAC encoder 604 until the queue is no longer empty, even when theselector circuit 610 encounters a free wire. When thequeue 608 is full, theselector circuit 610 may force one or more non-free wires to carry parity bits. In one example, theselector circuit 610 may respect crosstalk-avoidance constraints by using the next two consecutive wires to carry one parity bit. For example, theselector circuit 610 may resend the same bit transmitted in the past bus state on the first of two consecutive lanes and send a parity bit on the second of two consecutive lanes. Crosstalk constraints are met because the first of the two consecutive lanes has no transition between the past bus state and the current bus state. - In another example, an
encoder 650 may use block error-correction coding to provide joint CAC and ECC encoding. In this example, theCAC encoder 654 may considerpast bus state 660 when encodinginformation bits 652 to produce an encodedword 664, which may be assigned by theselector circuit 658 to non-free wires of the bus 662. Theencoder 650 may includestorage 670 that maintains thepast bus state 660. Thestorage 670 may be provided using registers or other types of memory device, and thestorage 670 may maintain a history of prior bus states. TheECC encoder 656 may then computeparity bits 668 for the data (encoded word 664) assigned to the non-free wires. Theparity bits 668 may then be assigned by theselector circuit 658 to the free wires of the bus 662. - In some instances, the number of free wires may exceed the number of
parity bits 668, and theselector circuit 658 may use some free wires to carry the encodedword 664 provided by theCAC encoder 654. In some instances, the number of free wires may be less than the number of parity bits, and theselector circuit 658 may force one or more non-free wires to carry certain of theparity bits 668. In one example, theselector circuit 610 may respect crosstalk-avoidance constraints by using two adjacent wires to carry one parity bit. For example, theselector circuit 658 may resend the same bit transmitted in the past bus state on the first of two adjacent wires and send a parity bit on the second of two adjacent wires. Crosstalk constraints are met because the first of the two adjacent wires has no transition between the past bus state and the current bus state. - In operation, an
600, 650 may use theencoder storage 622, 672 to maintain an indication of a 612, 660. Thepast bus state storage 622, 672 may include one or more registers that are clocked using a transmit clock associated with the bus 620, 662 such that the transmitted state is captured for use in encoding data in a succeeding bus state. The CAC encoder 604, 654 may be adapted to receive the 612, 660 and determine a plurality of free wires for a current or next bus state. Each free wire may satisfy a crosstalk-avoidance constraint in the current state of the bus 620, 662 for all potential values of a bit transmitted on the free wire. The CAC encoder 604, 654 may provide a crosstalk avoidance encodedpast bus state 614, 664 by encoding data received by theword 604, 654 as a plurality ofCAC encoder 602, 652. Theinformation bits 606, 656 may be configured to compute an error detection orECC encoder 616, 668 for the crosstalk avoidance encodedcorrection code 614, 664. Theword 610, 658 may be configured to assign bits of the error detection orselector circuit 616, 668 to the plurality of free wires for transmission as part of the current bus state, and assign the crosstalk avoidance encodedcorrection code 614, 664 to wires of the bus 620, 662 that are not used for carrying bits of the error detection orword 616, 668.correction code - In some examples, a free wire satisfies a crosstalk-avoidance constraint in the current bus state when the free wire and each directly adjacent wire are in a same signaling state in the past state of the multi-wire parallel bus. In some instances, parallel wires may be aligned in any plane in three-dimensional space. For example, a first wire may be adjacent to, and aligned with a second wire in a horizontal plane and the first wire may be adjacent to, and aligned with a third wire in a vertical plane. The crosstalk avoidance encoder is configured to avoid producing opposite direction transitions on pairs of neighboring wires.
- In some instances, the
ECC encoder 656 operates as a block error-correction encoder. In other instances, theECC encoder 606 operates as a convolutional encoder. In one example, theECC encoder 606 produces a cyclic-redundancy code. When operating as a convolutional encoder, theECC encoder 606 may receive bits of theECC code 616 sequentially from thequeue 608. The queue may be implemented as a ring buffer, a first-in first-out (FIFO) register or using some other suitable queuing device or structure. When theECC encoder 606 operates as a convolutional encoder, theselector circuit 610 may be configured to assign eachbit 618 obtained from thequeue 608 to a free wire encountered in a sequence of wires when a bit of the error detection or correction code is available in thequeue 608, while assigning a bit of the crosstalk avoidance encodedword 614 to the free wire when no bits of the error detection orcorrection code 616 are available in thequeue 608. Theselector circuit 610 may assign a bit obtained from thequeue 608 to a pair of adjacent wires in the sequence of wires when thequeue 608 is full. -
FIG. 7 is a diagram 700 identifying occurrences of 708, 710, and 712 at afree wires transition 704 between bus states 702, 706 in an example corresponding to thebus 400 ofFIG. 4 . 708, 710, and 712 may be identified through an examination ofFree wires past bus state 702 while encoding information for a next bus state (here, the current bus state 706). The example illustrated inFIG. 7 is based on abus 400 where transitions occur between two signaling states and where a crosstalk-avoidance constraint is defined that prohibits transitions in opposite directions on any adjacent pair of the lanes 402 0-402 9. - The
past bus state 702 in the example shows the signaling state for each of the lanes 402 0-402 9 as having a ‘0’ or ‘1’ value, which may represent different voltage levels, or direction and/or magnitude of a current flow. In thepast bus state 702, two sets of 722 and 724 have adjacent lanes in the same signaling state. In the first set oflanes lanes 722, three adjacent lanes 402 1, 402 2 and 402 3 are in the ‘1’ signaling state. In the second set oflanes 724, three adjacent lanes 402 4, 402 5 and 402 6 are in the ‘0’ signaling state. In each of these sets of 722 and 724, the center lane 402 2 and 402 5 can be set to either signaling state in thelanes current bus state 706 without causing opposite-direction transitions within the corresponding set of 722 and 724. For example, if the second lane 402 2 and the third lane 402 2 of thelanes bus 400 transition when entering thecurrent bus state 706, the transitions are in the same direction, and if only one of the lanes 402 1, 402 2 and 402 3 transition when entering thecurrent bus state 706, the third lane 402 2 cannot be one of a pair of adjacent lanes 402 1/402 2, or 402 2/402 3 that causes an opposite-direction transition. In this example, the third lane 402 2 may be identified as afree wire 708 in thecurrent bus state 706. - One set of
lanes 726 includes two adjacent lanes 402 8, 402 9 that are adjacent lanes in the same signaling state (the ‘0’ signaling state) during thepast bus state 702. In some instances, the tenth lane 402 9 may be identified as a free wire in thecurrent bus state 706 if the two adjacent lanes 402 8, 402 9 are physically located at the end of thebus 400 and/or next to a wire or conductor that is not expected to transition when thecurrent bus state 706 is entered. In one example, the two adjacent lanes 402 8, 402 9 may be disposed next to a ground or power rail. In another example, the two adjacent lanes 402 8, 402 9 may be disposed next to a shielding trace, wire or connector. In another example, the two adjacent lanes 402 8, 402 9 may be disposed next to a trace, wire or connector that carries a signal that does not transition at the same time as the signals carried by the two adjacent lanes 402 8, 402 9. In this example, different rules may be employed for identifying free wires in different parts of thebus 400. - While determining the
708, 710, 712 in thefree wires current bus state 706, certain pairs of the lanes 402 0, 402 9 may be identified as potential sources of violations of a crosstalk-avoidance constraint. In the diagram 700, four 714, 716, 718, 720 are identified. Eachsuch locations 714, 716, 718 and 720 involves a pair of lanes 402 0/402 1, 402 3/402 4, 402 6/402 7 and 402 7/402 8 that are in opposite signaling states in thelocation past bus state 702 and can cause a violation of a crosstalk-avoidance constraint when entering thecurrent bus state 706. For example, it is possible that the first lane 402 0 may transition from signaling state ‘0’ to signaling state ‘1’ as the second lane 402 1 transitions from signaling state ‘1’ to signaling state ‘0.’ These potential violations of crosstalk-avoidance constraints are dealt with by the CAC encoder, which may take into account the location of the 708, 710, 712.free wires -
FIG. 8 illustrates another example of an architecture for a joint CAC/ECC encoder 800 provided in accordance with certain aspects disclosed herein. Theencoder 800 may determine the positions of the 708, 710, 712 using the past bus state (a) 702.free wires Information bits 802 are passed by afirst selector 804 to aCAC encoder 806. TheCAC encoder 806 encodes the data for transmission on the non-free wires of the bus 822. The CAC encoder 806 may provide anoutput 812 in which CAC encoded bits are assigned to the non-free wires of the bus 822. The output of theCAC encoder 806 is provided to asecond selector 808, which provides the encoded bits (i.e., the bits carried on the non-free wires) as an input 818 to theECC encoder 810. TheECC encoder 810 computesECC bits 820 from its input 818. TheECC bits 820 may be parity bits. Thefirst selector 804 may then assign theECC bits 820 to the 708, 710, 712 of the bus 822.free wires - In the joint CAC/
ECC encoder 800, kinformation bits 802 are encoded for transmission over an n-lane bus 822. The bus 822 may have a sufficient number of lanes to transportp ECC bits 820 without violating crosstalk-avoidance constraints. In some instances, the number of 708, 710, 712 may exceed the number offree wires ECC bits 820. Thefirst selector 804 and theCAC encoder 806 may use some of the 708, 710, 712 to carry CAC-encoded information bits.free wires - Should the number of
708, 710, 712 be less than the number of parity bits, then parity bits may be transmitted on non-free wires and may be shielded by, for example, using two wires to carry one parity bit.free wires FIG. 9 illustrates a configuration of a joint CAC/ECC encoder 900 that may transmit shielded ECC bits. In one example, the CAC/ECC encoder 800 ofFIG. 8 may be reconfigured to shield ECC bits when the number of 708, 710, 712 for afree wires current bus state 706 is less than the number ofECC bits 914 produced by theECC encoder 906 from an encodedword 912 provided by theCAC encoder 904. TheCAC encoder 904 encodes kinformation bits 902 to satisfy crosstalk-avoidance constraints. The CAC encoder 904 may output an n bit encodedword 912, where n corresponds to the width of the bus 920. A shieldingcircuit 908 may duplicate or otherwise spread thep ECC bits 914 over an m-bit word 916 that can be inserted into the n-bit encodedword 912 produced by theCAC encoder 904, where the n-bit encodedword 912 may be merged into and transmitted over m designated or assigned wires of the bus 920. - A receiver may be adapted to decode bus state that was encoded using joint CAC and ECC encoding in accordance with certain aspects disclosed herein.
FIG. 10 is afactor graph 1000 applicable to joint ECC and CAC decoding. The operation of the receiver is described with the assumption that the past state 1002 (a) is known correctly. From thepast state 1002, the receiver may determine the position and number of 1008, 1010, 1012. For ease of description, an example is used in which the number offree wires 1008, 1010, 1012 is exactly equal to the number of parity bits 1006, although the principles and techniques also apply to examples in which the number offree wires 1008, 1010, 1012 is different from the number of parity bits 1006.free wires - In one example, a receiver may include a decoder that detects the occurrence of one or more errors, and requests retransmissions when an error is detected. In another example, a receiver may include a decoder that detects the occurrence of errors, and can correct one or more errors without retransmission. The type and/or complexity of the decoder used in a receiver may be selected based on application needs, requirements and/or other specifications.
- In one example, a receiver used in a latency-limited application may verify whether the data bits corresponding to the current bus state 1004 satisfy both CAC constraints and ECC checks simultaneously. In this example, the receiver computes a syndrome to check if an error has occurred. The syndrome may be computed as the output of all the parity constraints for the current bus state 1004. Concurrently, the receiver checks whether each local crosstalk constraint is satisfied for the received CAC encoded portion of the current bus state 104. An error may be detected when a local crosstalk constraint is violated. If an error is detected, the receiver may request a retransmission.
- In another example, the receiver may attempt to correct transmission errors without having the data retransmitted. In this example, the receiver may employ a decoder that performs joint CAC decoding and ECC decoding to reliably recover the information bits. In some instances, a modified belief-propagation decoder may be used. A modified belief-propagation decoder may pass messages along the factor graph, including along the
relationship lines 1014 between the portion of the current bus state 1004 that includes CAC encoded data and the parity bits 1006. The belief-propagation decoder can be modified to take the nonlinear CAC constraints into account. In other instances, a modified Viterbi decoder can be used to enable error detection. Joint decoding of the CAC and ECC may advantageously provide increased error protection over conventional approaches that rely of ECC encoding for error correction. -
FIG. 11 illustrates an example of an architecture for a joint CAC/ECC decoder 1100 provided in accordance with certain aspects disclosed herein. One or more components or modules of thedecoder 1100 may be configured to determine free wires from previously received wire state. One or more components or modules of thedecoder 1100 may be configured to decode theinformation bits 1116 based on the knowledge of free wires. - The
decoder 1100 may include aCAC decoder 1104, anECC decoder 1106 and abus state memory 1108. Thebus state memory 1108 may include one or more registers. Thebus state memory 1108 may be implemented in a memory device and/or any suitable storage medium. Thebus state memory 1108 may maintain a history 1112 of prior bus states and may provide access or copies of the last decoded bus state as a bus state history 1112 that may be provided to aprocessing circuit 1114. In one example, thebus state memory 1108 provides acontrol signal 1110 to indicate the last-decoded bus state to theCAC decoder 1104 andECC decoder 1106. Thecontrol signal 1110 may include a copy of the last-decoded bus state, and may include other information related to the operation of theCAC decoder 1104 and theECC decoder 1106. For example, thecontrol signal 1110 may indicate one or more free wires. TheCAC decoder 1104 and theECC decoder 1106 may determine the positions of the 708, 710, 712 using the last-decoded bus state indicated in thefree wires control signal 1110. - The
CAC decoder 1104 and theECC decoder 1106 may receive the current bus state 1102 from line receivers or other interface circuits. TheCAC decoder 1104 and theECC decoder 1106 may be configured to jointly decode the current bus state and to detect errors. In some examples, theCAC decoder 1104 and theECC decoder 1106 may be configured to correct certain types of error when errors are detected. Aprocessing circuit 1114 or other controller may determine a mode of operation for thedecoder 1100 and may select error detection and/or correction configurations. In one example, theprocessing circuit 1114 may perform or control certain functions associated with a modified Viterbi decoder or a belief propagation decoder adapted in accordance with certain aspects disclosed herein. In another example, theCAC decoder 1104 may receive information from theECC decoder 1106 that enables theCAC decoder 1104 to decode an error-corrected version of the current bus state 1102. -
FIG. 12 is a conceptual diagram illustrating a simplified example of a hardware implementation for anapparatus 1200 employing aprocessing circuit 1202 that may be configured to perform one or more functions disclosed herein. For example, theapparatus 1200 may be configured to support operations related to joint CAC and ECC encoding according to one or more aspects of the disclosure, including aspects related to the method illustrated inFIG. 13 . In accordance with various aspects of the disclosure, an element, or any portion of an element, or any combination of elements as disclosed herein may be implemented using theprocessing circuit 1202. Theprocessing circuit 1202 may include one ormore processors 1204 that are controlled by some combination of hardware and software modules. Examples ofprocessors 1204 include microprocessors, microcontrollers, digital signal processors (DSPs), ASICs, field programmable gate arrays (FPGAs), programmable logic devices (PLDs), state machines, sequencers, gated logic, discrete hardware circuits, and other suitable hardware configured to perform the various functionality described throughout this disclosure. The one ormore processors 1204 may include specialized processors that perform specific functions, and that may be configured, augmented or controlled by one of thesoftware modules 1216. The one ormore processors 1204 may be configured through a combination ofsoftware modules 1216 loaded during initialization, and further configured by loading or unloading one ormore software modules 1216 during operation. - In the illustrated example, the
processing circuit 1202 may be implemented with a bus architecture, represented generally by thebus 1210. Thebus 1210 may include any number of interconnecting buses and bridges depending on the specific application of theprocessing circuit 1202 and the overall design constraints. Thebus 1210 links together various circuits including the one ormore processors 1204, andstorage 1206.Storage 1206 may include memory devices and mass storage devices, and may be referred to herein as computer-readable media and/or processor-readable media. Thebus 1210 may also link various other circuits such as timing sources, timers, peripherals, voltage regulators, and power management circuits. Abus interface 1208 may provide an interface between thebus 1210 and one or moreline interface circuits 1212. Aline interface circuit 1212 may be provided for each networking technology supported by the processing circuit. In some instances, multiple networking technologies may share some or all of the circuitry or processing modules found in aline interface circuit 1212. Eachline interface circuit 1212 provides a means for communicating with various other apparatus over a transmission medium. Depending upon the nature of the apparatus, a user interface 1218 (e.g., keypad, display, speaker, microphone, joystick) may also be provided, and may be communicatively coupled to thebus 1210 directly or through thebus interface 1208. - A
processor 1204 may be responsible for managing thebus 1210 and for general processing that may include the execution of software stored in a computer-readable medium that may include thestorage 1206. In this respect, theprocessing circuit 1202, including theprocessor 1204, may be used to implement any of the methods, functions and techniques disclosed herein. Thestorage 1206 may be used for storing data that is manipulated by theprocessor 1204 when executing software, and the software may be configured to implement any one of the methods disclosed herein. - One or
more processors 1204 in theprocessing circuit 1202 may execute software. Software shall be construed broadly to mean instructions, instruction sets, code, code segments, program code, programs, subprograms, software modules, applications, software applications, software packages, routines, subroutines, objects, executables, threads of execution, procedures, functions, algorithms, etc., whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise. The software may reside in computer-readable form in thestorage 1206 or in an external computer readable medium. The external computer-readable medium and/orstorage 1206 may include a non-transitory computer-readable medium. A non-transitory computer-readable medium includes, by way of example, a magnetic storage device (e.g., hard disk, floppy disk, magnetic strip), an optical disk (e.g., a compact disc (CD) or a digital versatile disc (DVD)), a smart card, a flash memory device (e.g., a “flash drive,” a card, a stick, or a key drive), a random access memory (RAM), a read only memory (ROM), a programmable ROM (PROM), an erasable PROM (EPROM), an electrically erasable PROM (EEPROM), a register, a removable disk, and any other suitable medium for storing software and/or instructions that may be accessed and read by a computer. The computer-readable medium and/orstorage 1206 may also include, by way of example, a carrier wave, a transmission line, and any other suitable medium for transmitting software and/or instructions that may be accessed and read by a computer. Computer-readable medium and/or thestorage 1206 may reside in theprocessing circuit 1202, in theprocessor 1204, external to theprocessing circuit 1202, or be distributed across multiple entities including theprocessing circuit 1202. The computer-readable medium and/orstorage 1206 may be embodied in a computer program product. By way of example, a computer program product may include a computer-readable medium in packaging materials. Those skilled in the art will recognize how best to implement the described functionality presented throughout this disclosure depending on the particular application and the overall design constraints imposed on the overall system. - The
storage 1206 may maintain software maintained and/or organized in loadable code segments, modules, applications, programs, etc., which may be referred to herein assoftware modules 1216. Each of thesoftware modules 1216 may include instructions and data that, when installed or loaded on theprocessing circuit 1202 and executed by the one ormore processors 1204, contribute to a run-time image 1214 that controls the operation of the one ormore processors 1204. When executed, certain instructions may cause theprocessing circuit 1202 to perform functions in accordance with certain methods, algorithms and processes described herein. - Some of the
software modules 1216 may be loaded during initialization of theprocessing circuit 1202, and thesesoftware modules 1216 may configure theprocessing circuit 1202 to enable performance of the various functions disclosed herein. For example, somesoftware modules 1216 may configure internal devices and/orlogic circuits 1222 of theprocessor 1204, and may manage access to external devices such as theline interface circuit 1212, thebus interface 1208, theuser interface 1218, timers, mathematical coprocessors, and so on. Thesoftware modules 1216 may include a control program and/or an operating system that interacts with interrupt handlers and device drivers, and that controls access to various resources provided by theprocessing circuit 1202. The resources may include memory, processing time, access to theline interface circuit 1212, theuser interface 1218, and so on. - One or
more processors 1204 of theprocessing circuit 1202 may be multifunctional, whereby some of thesoftware modules 1216 are loaded and configured to perform different functions or different instances of the same function. The one ormore processors 1204 may additionally be adapted to manage background tasks initiated in response to inputs from theuser interface 1218, theline interface circuit 1212, and device drivers, for example. To support the performance of multiple functions, the one ormore processors 1204 may be configured to provide a multitasking environment, whereby each of a plurality of functions is implemented as a set of tasks serviced by the one ormore processors 1204 as needed or desired. In one example, the multitasking environment may be implemented using atimesharing program 1220 that passes control of aprocessor 1204 between different tasks, whereby each task returns control of the one ormore processors 1204 to thetimesharing program 1220 upon completion of any outstanding operations and/or in response to an input such as an interrupt. When a task has control of the one ormore processors 1204, the processing circuit is effectively specialized for the purposes addressed by the function associated with the controlling task. Thetimesharing program 1220 may include an operating system, a main loop that transfers control on a round-robin basis, a function that allocates control of the one ormore processors 1204 in accordance with a prioritization of the functions, and/or an interrupt driven main loop that responds to external events by providing control of the one ormore processors 1204 to a handling function. -
FIG. 13 is aflow chart 1300 of a method operational a device coupled to a multi-wire parallel bus. - At
block 1302, the device may determine from a prior bus state, a plurality of free wires in the bus for a current bus state. Each free wire may satisfy a crosstalk-avoidance constraint in the current bus state for all values of a bit transmitted on the free wire. A free wire may satisfy a crosstalk-avoidance constraint in the current bus state when it is in the same signaling state as each directly adjacent wire in the prior bus state. - At
block 1304, the device may encode a plurality of data bits using a crosstalk avoidance encoder to obtain a CAC-encoded word. The crosstalk avoidance encoder may be configured to avoid producing opposite direction transitions on pairs of neighboring wires. - At
block 1306, the device may compute an error detection or correction code for the CAC-encoded word. - At
block 1308, the device may assign bits of the error detection or correction code to the plurality of free wires for transmission during the current bus state. - At
block 1302, the device may assign the CAC-encoded word to wires that are not used for carrying bits of the error detection or correction code. At least a portion of the CAC-encoded word may be assigned to wires that are not free wires. In some instances, one or more bits of the CAC-encoded word may be assigned to wires that are free wires during the current bus state. - In one example, computing an error detection or correction code includes generating a block error-correction code from the CAC-encoded word. In another example, computing an error detection or correction code may include generating a cyclic-redundancy code from the CAC-encoded word. In some instances, the cyclic-redundancy code may have 8 bits. In another example, computing an error detection or correction code includes generating the error detection or correction code using a convolutional encoder. In some instances, the plurality of data bits is sequentially encoded. Assigning bits of the error detection or correction code may include queuing bits of the error detection or correction code received from the convolutional encoder in a queue, assigning a bit obtained from the queue to a free wire encountered in a sequence of wires when a bit of the error detection or correction code is available in the queue, and assigning a bit of the CAC-encoded word to the free wire when no bits of the error detection or correction code are available in the queue. In one example, the sequence of wires may include wires of the bus ordered such that each wire in the sequence is physically adjacent to predecessor and successor wires in the sequence of wires.
- In some instances, assigning bits of the error detection or correction code may include queuing bits of the error detection or correction code received from the convolutional encoder in a queue, and using a pair of adjacent wires in the sequence of wires to carry one parity bit when the queue is full.
-
FIG. 14 is a diagram illustrating a simplified example of a hardware implementation for anapparatus 1400 employing aprocessing circuit 1402. The processing circuit typically has aprocessor 1416 that may include one or more of a microprocessor, microcontroller, digital signal processor, a sequencer and a state machine. Theprocessing circuit 1402 may be implemented with a bus architecture, represented generally by thebus 1420. Thebus 1420 may include any number of interconnecting buses and bridges depending on the specific application of theprocessing circuit 1402 and the overall design constraints. Thebus 1420 links together various circuits including one or more processors and/or hardware modules, represented by theprocessor 1416, the modules or 1404, 1406, 1408, and 1408, acircuits bus interface 1412 configurable to communicate over connectors or wires of amulti-wire communication link 1414 and the computer-readable storage medium 1418. Thebus 1420 may also link various other circuits such as timing sources, peripherals, voltage regulators, and power management circuits. - The
processor 1416 is responsible for general processing, including the execution of software stored on the computer-readable storage medium 1418. The software, when executed by theprocessor 1416, causes theprocessing circuit 1402 to perform the various functions described supra for any particular apparatus. The computer-readable storage medium 1418 may also be used for storing data that is manipulated by theprocessor 1416 when executing software, including data decoded from symbols transmitted over themulti-wire communication link 1414, which may be configured as data lanes and clock lanes. Theprocessing circuit 1402 further includes at least one of the 1404, 1406, 1408, and 1408. Themodules 1404, 1406, 1408, and 1408 may be software modules running in themodules processor 1416, resident/stored in the computer-readable storage medium 1418, one or more hardware modules coupled to theprocessor 1416, or some combination thereof. The 1404, 1406, 1408, and/or 1408 may include microcontroller instructions, state machine configuration parameters, or some combination thereof. - In one configuration, the
apparatus 1400 for data communication includes modules and/or 1404, 1412 configured to determine free wires of thecircuits multi-wire communication link 1414 for a past bus state. Theapparatus 1400 may include modules and/orcircuits 1406 configured to encode information bits in a CAC-encoded word and modules and/orcircuits 1408 configured to calculate an ECC for the CAC-encoded word. Theapparatus 1400 may include modules and/orcircuits 1410 configured to assign ECC bits to free wires and bits of the CAC-encoded word to non-free wires. -
FIG. 15 is aflow chart 1500 of a method operational a receiving device coupled to a multi-wire parallel bus. - At
block 1502, the device may determine from a prior bus state, a plurality of free wires in the bus for a current bus state. Each free wire may satisfy a crosstalk-avoidance constraint in the current bus state for all values of a bit transmitted on the free wire. - At
block 1504, the device may receive an error detection or correction code from the plurality of free wires. - At
block 1506, the device may jointly operate a crosstalk avoidance decoder and an error detection or correction decoder to decode the current bus state. - At
block 1508, the device may provide a plurality of data bits decoded from the current bus state. - In some examples, the error detection or correction decoder is configured to detect the occurrence of one or more errors. In some instances, the device may request retransmission of data encoded in the current bus state when an error is detected. In other instances, the device may correct one or more errors in the current bus state when an error is detected.
- In some examples, the device may operate the crosstalk avoidance decoder and the error detection or correction decoder jointly by concurrently verifying whether data bits corresponding to the current bus state satisfy crosstalk-avoidance constraints, and checking the error detection or correction code to determine whether a transmission error affecting the current bus state has occurred. In other examples, the device may operate the crosstalk avoidance decoder and the error detection or correction decoder jointly by verifying whether data bits corresponding to the current bus state satisfy crosstalk-avoidance constraints, and correcting a transmission error using the error detection or correction code.
- In some examples, the device may use a modified belief-propagation decoder to ensure reliability of the plurality of data bits decoded from the current bus state. In other examples, the device may use a Viterbi decoder to ensure reliability of the plurality of data bits decoded from the current bus state.
-
FIG. 16 is a diagram illustrating a simplified example of a hardware implementation for anapparatus 1600 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 or 1604, 1606, 1608, and 1608, acircuits bus interface 1612 configurable to communicate over connectors or wires of amulti-wire communication link 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. - The
processor 1616 is responsible for general processing, including the execution of software stored on the computer-readable storage medium 1618. 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 themulti-wire communication link 1614, which may be configured as data lanes and clock lanes. Theprocessing circuit 1602 further includes at least one of the 1604, 1606, 1608, and 1608. Themodules 1604, 1606, 1608, and 1608 may be software modules running in themodules processor 1616, resident/stored in the computer-readable storage medium 1618, one or more hardware modules coupled to theprocessor 1616, or some combination thereof. The 1604, 1606, 1608, and/or 1608 may include microcontroller instructions, state machine configuration parameters, or some combination thereof. - In one configuration, the
apparatus 1600 for data communication includes modules and/or 1604, 1612 configured to determine from a prior bus state, a plurality of free wires in thecircuits bus 1620 for a current bus state, modules and/or 1608, 1612 configured to receive an error detection or correction code from the plurality of free wires, and modules and/orcircuits 1606, 1612 configured to decode the current bus state. Thecircuits apparatus 1600 may jointly operate a crosstalk avoidance decoder and an error detection or correction decoder to provide a plurality of data bits decoded from the current bus state. - It is understood that the specific order or hierarchy of steps in the processes disclosed is an illustration of exemplary approaches. The specific order or hierarchy of steps in the processes may be rearranged based upon design preferences. 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.
- 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 computing device and/or distributed between two or more computing devices. 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.
- The previous description is provided to enable any person skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein, but is to be accorded the full scope consistent with the language claims, wherein reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more.” Unless specifically stated otherwise, the term “some” refers to one or more. All structural and functional equivalents to the elements of the various aspects described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims. No claim element is to be construed as a means plus function unless the element is expressly recited using the phrase “means for.”
Claims (30)
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US14/958,883 US9654251B1 (en) | 2015-12-03 | 2015-12-03 | Joint crosstalk-avoidance and error-correction coding for parallel data busses |
| PCT/US2016/060687 WO2017095595A1 (en) | 2015-12-03 | 2016-11-04 | Joint crosstalk-avoidance and error-correction coding for parallel data busses |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US14/958,883 US9654251B1 (en) | 2015-12-03 | 2015-12-03 | Joint crosstalk-avoidance and error-correction coding for parallel data busses |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US9654251B1 US9654251B1 (en) | 2017-05-16 |
| US20170163375A1 true US20170163375A1 (en) | 2017-06-08 |
Family
ID=57485875
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US14/958,883 Expired - Fee Related US9654251B1 (en) | 2015-12-03 | 2015-12-03 | Joint crosstalk-avoidance and error-correction coding for parallel data busses |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US9654251B1 (en) |
| WO (1) | WO2017095595A1 (en) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112054882A (en) * | 2019-06-05 | 2020-12-08 | 爱思开海力士有限公司 | Data transmission system and method for suppressing data error caused by crosstalk |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN113609004B (en) * | 2021-07-17 | 2023-11-03 | 深圳开源互联网安全技术有限公司 | Static code detection method and system |
| US11940872B2 (en) | 2022-04-21 | 2024-03-26 | Analog Devices International Unlimited Company | Error correction code validation |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7583209B1 (en) * | 2008-03-19 | 2009-09-01 | Mitsubishi Electric Research Laboratories, Inc. | System and method for signaling on a bus using forbidden pattern free codes |
| US8964879B2 (en) * | 2012-07-18 | 2015-02-24 | Rambus Inc. | Crosstalk reduction coding schemes |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7712010B2 (en) | 2006-06-15 | 2010-05-04 | International Business Machines Corporation | Systems, methods and computer program products for utilizing a spare lane for additional checkbits |
| US9087025B2 (en) | 2009-02-05 | 2015-07-21 | Micron Technology, Inc. | Data encoding using spare channels in a memory system |
| US9319178B2 (en) * | 2014-03-14 | 2016-04-19 | Qualcomm Incorporated | Method for using error correction codes with N factorial or CCI extension |
-
2015
- 2015-12-03 US US14/958,883 patent/US9654251B1/en not_active Expired - Fee Related
-
2016
- 2016-11-04 WO PCT/US2016/060687 patent/WO2017095595A1/en active Application Filing
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7583209B1 (en) * | 2008-03-19 | 2009-09-01 | Mitsubishi Electric Research Laboratories, Inc. | System and method for signaling on a bus using forbidden pattern free codes |
| US8964879B2 (en) * | 2012-07-18 | 2015-02-24 | Rambus Inc. | Crosstalk reduction coding schemes |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112054882A (en) * | 2019-06-05 | 2020-12-08 | 爱思开海力士有限公司 | Data transmission system and method for suppressing data error caused by crosstalk |
| US11005599B2 (en) * | 2019-06-05 | 2021-05-11 | SK Hynix Inc. | Data transmission systems and data transmission methods of suppressing data error occurrences due to crosstalk |
Also Published As
| Publication number | Publication date |
|---|---|
| US9654251B1 (en) | 2017-05-16 |
| WO2017095595A1 (en) | 2017-06-08 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12298848B2 (en) | Memory error detection | |
| EP3412016B1 (en) | Scalable, high-efficiency, high-speed serialized interconnect | |
| US9229897B2 (en) | Embedded control channel for high speed serial interconnect | |
| US10089173B2 (en) | Error detection constants of symbol transition clocking transcoding | |
| US20070286078A1 (en) | Method and system for providing frame start indication in a memory system having indeterminate read data latency | |
| US9740556B2 (en) | Semiconductor memory apparatus and operating method thereof | |
| KR20180048950A (en) | Multiphase Clock Data Recovery Circuit Calibration | |
| KR102357899B1 (en) | Method and apparatus for valid encoding | |
| US20060129722A1 (en) | Low protocol, high speed serial transfer for intra-board or inter-board data communication | |
| US9654251B1 (en) | Joint crosstalk-avoidance and error-correction coding for parallel data busses | |
| US20180054216A1 (en) | Flipped bits for error detection and correction for symbol transition clocking transcoding | |
| US20150147978A1 (en) | Millimeter wave wireless communication between computing system and docking station | |
| KR20240112831A (en) | Hybrid memory system with increased bandwidth | |
| US8539131B2 (en) | Root hub virtual transaction translator | |
| EP4604430A1 (en) | Data transmission method and apparatus, system, and computer-readable storage medium | |
| US11782636B2 (en) | Method for data processing of an interconnection protocol to support multiple lanes, controller, and storage device | |
| US7702054B2 (en) | Detecting errors in transmitted data | |
| CN104360977A (en) | Method and system for managing high-speed serial transmission interface | |
| WO2022257026A1 (en) | Communication method and communication apparatus | |
| US10157161B2 (en) | Conditional embedding of dynamically shielded information on a bus | |
| US20250254236A1 (en) | Electronic device capable of facilitating control frame transmission and method therefor | |
| CN117312189A (en) | Method and device for realizing fast block interleaving or de-interleaving by utilizing single chip memory | |
| CN117667502A (en) | Error processing method, computing device, electronic device, and storage medium |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: QUALCOMM INCORPORATED, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:NIESEN, URS;KUDEKAR, SHRINIVAS;REEL/FRAME:037672/0108 Effective date: 20160121 |
|
| FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
| FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
| FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20210516 |