Devices and methods for facilitating data inversion to limit both instantaneous current and signal transitions
Electronic devices are adapted to facilitate data encoding for simultaneously limiting both instantaneous current and signal transitions. According to one example, an electronic device may perform a first encoding scheme on a group of data bits to be transmitted on a data bus. The first encoding scheme may be performed based on a number of transitions within the group of data bits for each data channel. A second encoding scheme may also be performed on the group of data bits. The second encoding scheme may be performed based on a number of data bits within the group of data bits for each data channel exhibiting a predetermined state (e.g., a one or a zero). After both encoding scheme are performed on the group of data bits, the encoded data bits may be transmitted over respective data channels of the data bus. Other aspects, embodiments, and features are also included.
Latest QUALCOMM Incorporated Patents:
- Techniques for listen-before-talk failure reporting for multiple transmission time intervals
- Techniques for channel repetition counting
- Random access PUSCH enhancements
- Random access response enhancement for user equipments with reduced capabilities
- Framework for indication of an overlap resolution process
The technology discussed below relates generally to electronic devices including a data bus, and more specifically to methods and devices for encoding data bits for transmission over a data bus and decoding data bits transmitted over a data bus.
BACKGROUNDData transmission across interconnects may take a number of forms. One example of a configuration for facilitating data transmission between components is use of a data bus, where a transmitting component sends data signals, also called data bits, to a receiving component over a group of parallel transmission channels. The data bits are typically subject to inter-symbol interference (ISI), crosstalk, and simultaneous switching noise (SSN) that can alter the amplitude and timing of the data bits. Often, the data bits may be encoded to reduce the effects of ISI, crosstalk, and/or SSN using various techniques of data encoding. One specific form of data encoding is Data Bus Inversion (DBI).
BRIEF SUMMARY OF SOME EXAMPLESThe following summarizes some aspects of the present disclosure to provide a basic understanding of the discussed technology. This summary is not an extensive overview of all contemplated features of the disclosure, and is intended neither to identify key or critical elements of all aspects of the disclosure nor to delineate the scope of any or all aspects of the disclosure. Its sole purpose is to present some concepts of one or more aspects of the disclosure in summary form as a prelude to the more detailed description that is presented later.
Various examples and implementations of the present disclosure facilitate data encoding utilizing a plurality of encoding techniques on each data channel of a data bus. According to at least one aspect of the disclosure, electronic devices may include an encoder with a data bus interface and a processing circuit communicatively and/or operationally coupled together. The data bus interface can be coupled with a data bus to facilitate a transmission of data bits. The processing circuit may be adapted to perform a first encoding scheme on a group of data bits to be transmitted on a data bus via the data bus interface, where the first encoding scheme is performed based on a number of transitions within the group of data bits. The processing circuit may further be adapted to perform a second encoding scheme on the group of data bits based on a number of data bits within the group of data bits exhibiting a predetermined state. The processing circuit can also be adapted to set a plurality of first encoding flags to indicate which data bits are encoded by the first encoding scheme, and set a plurality of second encoding flags to indicate which data bits are encoded by the second encoding scheme.
Further aspects provide methods operational on electronic devices and/or electronic devices including means to perform such methods. One or more examples of such methods may include performing a first encoding scheme on a group of data bits to be transmitted over a data bus. The first encoding scheme may be performed based on a number of transitions within the group of data bits. A second encoding scheme may also be performed on the group of data bits. The second encoding scheme may be performed based on a number of data bits within the group of data bits exhibiting a predetermined state. Additionally, first encoding flags may be set to indicate which data bits are encoded by the first encoding scheme, and second encoding flags may be set to indicate which data bits are encoded by the second encoding scheme.
Still further aspects include processor-readable storage mediums comprising programming operational on a processing device, such as an electronic device. According to one or more examples, such programming may be adapted for causing a processing circuit to employ a first encoding scheme on a group of data bits to be transmitted over a data bus. The first encoding scheme may be performed based on a number of transitions within the group of data bits. The programming may further be adapted for causing a processing circuit to employ a second encoding scheme on the group of data bits. The second encoding scheme may be performed based on a number of data bits within the group of data bits exhibiting a predetermined state.
Additional aspects of the present disclosure provide electronic devices including at least one encoder. Such an encoder may include a transition detector, a state detector, and an invertor. The transition detector may be adapted to determine a number of transitions on a plurality of data channels of a data bus for a predetermined number of cycles. The state detector may be adapted to determine a number of cycles set to a predetermined state on each data channel of the plurality of data channels for the predetermined number of cycles. The invertor may be adapted to invert every other cycle of the predetermined number of cycles on a data channel when the number of transitions on the data channel is determined to be above a transition threshold. The invertor may further be adapted to invert the cycles of the predetermined number of cycles on a data channel when the number of cycles set to the predetermined state on the data channel is determined to be above a state threshold.
Further aspects provide methods operational on electronic devices and/or electronic devices including means to perform such methods. One or more examples of such methods may include determining a number of transitions on a plurality of data channels of a data bus for a predetermined number of cycles. When the number of transitions on a data channel is determined to be above a transition threshold, every other cycle of the data channel may be inverted. A respective transition inversion encoding flag associated with each data channel may be set to indicate whether every other cycle of the associated data channel has been inverted. A determination may also be made of the number of cycles set to a predetermined state on each data channel of the plurality of data channels for the predetermined number of cycles. When the number of cycles set to the predetermined state on a data channel is above a state threshold, the cycles of the data channel may be inverted. A respective state inversion encoding flag associated with each data channel may be set to indicate whether the cycles of the associated data channel are inverted.
Still further aspects include processor-readable storage mediums comprising programming operational on a processing device, such as an electronic device. According to one or more examples, such programming may be adapted for causing a processing circuit to determine a number of transitions on a plurality of data channels of a data bus for a predetermined number of cycles, invert every other cycle of a data channel when the number of transitions on the data channel is determined to be above a transition threshold, and set a respective transition inversion encoding flag associated with each data channel to indicate whether every other cycle of the associated data channel has been inverted. The programming may further be adapted for causing a processing circuit to determine a number of cycles set to a predetermined state on each data channel of the plurality of data channels for the predetermined number of cycles, invert the cycles of a data channel when the number of cycles set to the predetermined state on the data channel is above a state threshold, and set a respective state inversion encoding flag associated with each data channel to indicate whether the cycles of the associated data channel are inverted.
Various examples and implementations of the present disclosure further facilitate decoding data that has been encoded utilizing a plurality of encoding techniques on each data channel of a data bus. According to at least one aspect of the disclosure, electronic devices may include a decoder with a data bus interface and an invertor communicatively and/or operationally coupled together. The data bus interface can be coupled with a data bus to facilitate reception of data bits. The invertor may be adapted to receive a group of data bits on a plurality of data channels via the data bus interface. The invertor may decode the group of data bits for a first encoding scheme, and then decode the group of data bits for a second encoding scheme.
Additional aspects provide methods operational on electronic devices and/or electronic devices including means to perform such methods. One or more examples of such methods may include receiving a group of data bits on a plurality of data channels of a data bus. The group of data bits may be decoded for a first encoding scheme, and then decoded for a second encoding scheme.
Still further aspects include processor-readable storage mediums comprising programming operational on a processing device, such as an electronic device. According to one or more examples, such programming may be adapted for causing a processing circuit to decode a group of received data bits for a first encoding scheme, and then decode the group of data bits for a second encoding scheme.
Other aspects, features, and embodiments associated with the present disclosure will become apparent to those of ordinary skill in the art upon reviewing the following description in conjunction with the accompanying figures.
The description set forth below in connection with the appended drawings is intended as a description of various configurations and is not intended to represent the only configurations in which the concepts and features described herein may be practiced. The following description includes specific details for the purpose of providing a thorough understanding of various concepts. However, it will be apparent to those skilled in the art that these concepts may be practiced without these specific details. In some instances, well known circuits, structures, techniques and components are shown in block diagram form to avoid obscuring the described concepts and features.
Referring now to
The first and second electronic devices 102, 104 may be any devices that can communicate using single-ended signaling. In various examples, the first and second electronic devices 102, 104 may be components in a computer system. For example, in some embodiments, the electronic device 102 may be a processing unit, the second electronic device 104 may be a memory module, and the data bus 104 may be a system bus. In at least one example, a memory controller interface (e.g., a physical memory interface circuit PHY) of the processor and a memory module may include respective transmission and receiver units to perform write and read operations. The processor may be any suitable type of processing unit, such as a central processing unit (CPU), a co-processor, an arithmetic processing unit, a graphics processing unit (GPU), a digital signal processor (DSP), etc. The memory module may also be any suitable type of memory. In some embodiments, the second electronic device 104 may be another type of device, such as a bridge controller, a storage device (e.g., hard drive, optical drive, flash drive, storage array, etc.), a network interface device (e.g., to a local or wide-area network), a user interface device (e.g., display device, sound device, printer), etc. In some examples, the first and second electronic devices 102, 104 may be separate cores within a processing unit or separate processing units in a system. Accordingly, in at least one example, the system 100 may be a communication network, where the first and second electronic devices 102, 104 may be routers, switches, end devices, etc. Thus, in general, the first and second electronic devices 102, 104 may be any suitable devices adapted to send and/or receive data bits over a data bus 106.
The data bus 106 may include approximately parallel conductive traces or lines that may be referred to as channels 108, and these channels 108 can be coupled at each end to respective pins in the electronic devices 102 and 104. The number of channels 108 of the data bus 106 may vary according to different embodiments. By way of example only, the data bus 106 may include 4, 8, 16, 32, 64, 72, etc. data channels 108, as well as additional channels 108 to transmit control signals in parallel with the data bits. For example, a data bus 106 may have 72 data channels and 8 control channels for a total of 80 channels 108. The data bus may additionally support an accompanying clocking topology.
The data bits transmitted over the channels 108 are binary data bits including ones (1s) and zeros (0s), or high and low voltages.
As the data bits are transmitted over the data bus 106, the data bits are typically subject to inter-symbol interference (ISI), crosstalk, and simultaneous switching noise (SSN) that can alter the amplitude and timing of the data bits. Often, the data bits may be encoded to reduce the effects of ISI, crosstalk, and/or SSN using various techniques of data encoding. One specific form of data encoding is often referred to as Data Bus Inversion (DBI).
Data bus inversion is a feature that employs circuitry to look at the relationship between bits to be transmitted, and then decide if it would be advantageous to invert some or all of the bits prior to transmission. If the bits are inverted, an additional signal is also set to indicate that the bits are inverted. This additional signal is often referred to as a data bus inversion (DBI) flag or an encoding flag. An extra channel can be used so the DBI flag can be sent in parallel with the other bits to identify to the receiving circuitry which sets of data have been inverted. The receiver uses the DBI flag to return the incoming data to its original state.
There are generally two types of data bus inversion techniques used for DBI encoding. The first technique, which may be referred to by those of skill in the art as DBI AC or minimum transitions, is used to reduce the number of transitions on a data channel (e.g., changes from a zero to a one, or from one to zero) to improve AC power and reduce issues from crosstalk, etc.
The second technique for data bus inversion, which may be referred to as DBI DC, minimum ones, or minimum zeros, is used to reduce the number of data bits of a particular state (e.g., reduce the number of ones or the number of zeros).
These described DBI techniques are generally able to optimize one aspect, but at the expense of the other aspect. For example, reduction in transitions typically results in increased ones (e.g., logical HIGH signals). Similarly, reduction in ones (e.g., logical HIGH signals) typically results in an increase to the number of transitions. DBI techniques have been unable to optimize both the number of transitions and the number of cycles having a particular state (e.g., the number of 1s or 0s).
According to at least one aspect of the present disclosure, electronic systems include one or more electronic devices adapted to employ data encoding techniques capable of facilitating a reduction to the number of transitions and the number of bits having a particular state (e.g., either one or zero). Turning to
The encoder 504 generally includes circuitry and/or programming adapted to perform a first encoding scheme to a plurality of data bits based on a number of transitions in the data bits, and perform a second encoding scheme to the same plurality of data bits based on a number of data bits having a predetermined state (e.g., a one or a zero). According to at least one example, the encoder 504 may be coupled to a plurality of data channels of the data bus 506 by a data bus interface 508, and may include a processing circuit 510 coupled to or placed in electrical communication with the data bus interface 508 and a storage medium 512.
The processing circuit 510 is arranged to obtain, process and/or send data, control data access and storage, issue commands, and control other desired operations. The processing circuit 510 may include circuitry adapted to implement desired programming provided by appropriate media in at least one example. In some instances, the processing circuit 510 may include circuitry adapted to perform a desired function, with or without implementing programming. By way of example, the processing circuit 510 may be implemented as one or more processors, one or more controllers, and/or other structure configured to execute executable programming and/or perform a desired function. Examples of the processing circuit 510 may include a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic component, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general purpose processor may include a microprocessor, as well as any conventional processor, controller, microcontroller, or state machine. The processing circuit 510 may also be implemented as a combination of computing components, such as a combination of a DSP and a microprocessor, a number of microprocessors, one or more microprocessors in conjunction with a DSP core, an ASIC and a microprocessor, or any other number of varying configurations. These examples of the processing circuit 510 are for illustration and other suitable configurations within the scope of the present disclosure are also contemplated.
The processing circuit 510 is adapted for processing, including the execution of programming, which may be stored on the storage medium 512. As used herein, the term “programming” shall be construed broadly to include without limitation instructions, instruction sets, code, code segments, program code, programs, subprograms, software modules, applications, software applications, software packages, routines, subroutines, objects, executables, threads of execution, procedures, functions, etc., whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise.
In some instances, the processing circuit 510 may include a transition detector 514, a state detector 516, and an invertor 518. The transition detector 514 may include circuitry and/or programming (e.g., the transition detection operations 520 stored on the storage medium 512) adapted to evaluate a group of data bits (e.g., predetermined number of consecutive data bits prepared for transmission on a common data channel) to determine how many transitions will occur. The state detector 516 may include circuitry and/or programming (e.g., the state detection operations 522 stored on the storage medium 512) adapted to evaluate the same group of data bits to determine how many data bits exhibit a predetermined state (e.g., a one or a zero). Further, the invertor 518 may include circuitry and/or programming (e.g., the invert operations 524 stored on the storage medium 512) adapted to invert at least some of the data bits within the group of data bits when the number of transitions is determined by the transition detector 514 to be above a transition threshold, and to invert the group of data bits when the number of data bits exhibiting the predetermined state is determined by the state detector 516 to be above a state threshold. The invertor 518 can further provide a transition flag (e.g., a transition DBI flag, or transition encoding flag) to indicate whether the group of data bits has been inverted for transitions and a state flag (e.g., a state DBI flag, or state encoding flag) to indicate whether the group of data bits has been inverted for ones or zeros.
The storage medium 512 may represent one or more processor-readable devices for storing programming, electronic data, databases, or other digital information. The storage medium 512 may also be used for storing data that is manipulated by the processing circuit 510 when executing programming. The storage medium 512 may be any available media that can be accessed by the processing circuit 510, including portable or fixed storage devices, optical storage devices, and various other mediums capable of storing, containing and/or carrying programming By way of example and not limitation, the storage medium 512 may include a processor-readable storage medium such as a magnetic storage device (e.g., hard disk, floppy disk, magnetic strip), an optical storage medium (e.g., compact disk (CD), digital versatile disk (DVD)), a smart card, a flash memory device (e.g., card, stick, key drive), random access memory (RAM), read only memory (ROM), programmable ROM (PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM), a register, a removable disk, and/or other mediums for storing programming, as well as any combination thereof.
The storage medium 512 may be coupled to the processing circuit 510 such that the processing circuit 510 can read information from, and write information to, the storage medium 512. That is, the storage medium 512 can be coupled to the processing circuit 510 so that the storage medium 512 is at least accessible by the processing circuit 510, including examples where the storage medium 512 is integral to the processing circuit 510 and/or examples where the storage medium 512 is separate from the processing circuit 510.
Programming stored by the storage medium 512, when executed by the processing circuit 510, causes the processing circuit 510 to perform one or more of the various functions and/or process steps described herein. For example, the storage medium 512 may include transition detection operations 520, state detection operations 522, and invert operations 524. Thus, according to one or more aspects of the present disclosure, the processing circuit 510 is adapted to perform (in conjunction with the storage medium 512) any or all of the processes, functions, steps and/or routines for any or all of the electronic devices described herein (e.g., first electronic device 102, second electronic device 104, electronic device 500). As used herein, the term “adapted” in relation to the processing circuit 510 may refer to the processing circuit 510 being one or more of configured, employed, implemented, and/or programmed (in conjunction with the storage medium 512) to perform a particular process, function, step and/or routine according to various features described herein.
In operation, the encoder 504 is adapted to employ data encoding techniques capable of facilitating a reduction to the number of transitions by employing transition inversion encoding, and the number of bits having a particular state (e.g., either one or zero) by employing state inversion encoding. In one example, the encoder 504 can perform transition inversion encoding on each channel, followed by state inversion encoding on each channel.
As noted, the encoder 504 (e.g., the transition detector 514) can initially determine how many data cycles represent transitions on each data channel for a group of data bits including a predetermined number of cycles. In this example, the predetermined number of cycles is shown as eight cycles or data bits, although the specific number may vary as desired. If the number of transitions over the predetermined number of cycles is determined to be more than half (½) the number of total cycles (e.g., more than 4 transitions over 8 cycles), then the encoder 504 (e.g., the invertor 518) can invert every other bit in the group of data bits for that data channel.
More specifically, the data bits on each data channel is evaluated to determine the number of transitions over the eight cycles. In the depicted example, the first data channel (channel 1) shows five (5) transitions over the eight cycles. Because this is larger than 4 (i.e., half the number of cycles), the encoder 504 can invert every other cycle on the data channel (channel 1). In this example, bits 2, 4, 6, and 8 are inverted, although other examples may invert bits 1, 3, 5, and 7. By inverting every other bit as shown, the data channel (channel 1) has only two transitions, as shown in the middle column for channel 1. To indicate that an inversion has occurred on the first data channel, the encoder 504 (e.g., the invertor 518) is adapted to set an encoding flag (or TI encoding flag) to be transmitted. In this example, the TI encoding flag is set on the first bit of the flag channel (e.g., the first bit on channel 9 is set to a one or logic HIGH signal). In this example, the bit number of the flag channel (channel 9) corresponds to a specific data channel.
The encoder 504 further evaluates each of the remaining data channels (e.g., channels 2 through 8) for transitions over the eight-bit group. In this example, channels 3, 4, and 8 are also partially inverted (e.g., every other bit is inverted) in a manner similar to channel 1. Further, the corresponding bits 3, 4, and 8 of the flag channel (channel 9) are also set to transmit a TI encoding flag. As shown in the middle column in
With the transition inversion encoding completed, the encoder 504 (e.g., the state detector 516) can evaluate the data bits on each data channel resulting from the transition inversion encoding to determine how many data bits exhibit a predefined state (e.g. a one or a zero). In this example, the encoder 504 can evaluate each data channel to determine how many ones (e.g., logic HIGH signals) occur for the encoded group of data bits. If the number of ones in the encoded data bits for each data channel is more than half (½) the number of total cycles (e.g., more than 4 data bits with a one or logic HIGH signal over 8 cycles), then the encoder 504 (e.g., invertor 518) can invert all the bits on that data channel.
More specifically, the encoder 504 can evaluate each of the transition inversion encoded data channels. In the example in
In the example in
In some embodiments, it may occur that the number of data bits or cycles in the group of data bits is twice the size of the number of channels. For instance,
In another embodiment, depicted in
More specifically, the transition inversion encoding is applied to channel 1 and channel 3 in the depicted example. Accordingly, a one is placed in cycles 1 and 5 on channel 5 to indicate that transition inversion encoding has been applied to channels 1 and 3. Additionally, a zero is placed in cycles 3 and 7 to indicate that no inversion has been performed on channels 2 and 4 during transition inversion encoding. An ‘x’ is shown in cycles 2, 4, 6, and 8 on channel 5 to indicate that these cycles are irrelevant to the TI encoding flags. In the state inversion encoding step, channel 4 is inverted, while channels 1 through 3 are unchanged. Accordingly, a one is applied to cycle 8 on channel 5 to indicate that channel 4 has been inverted during state inversion encoding, and a zero is applied to cycles 2, 4, and 6 on channel 5 to indicate that channel 1, channel 2, and channel 3 have not been inverted during state inversion encoding. In this example, the encoding flags for both transition inversion encoding and state inversion encoding can be transmitted on a single added channel.
It is noteworthy that, although each of these examples depicts transition inversion encoding being performed first, followed by state inversion encoding performed on the transition inversion encoded data bits, these encoding steps can be switched so that the state inversion encoding is performed first and transition inversion encoding is performed on the data bits resulting from the state inversion encoding.
At decision diamond 1206, the transition detector 514 executing the transition detection operations 520 can determine whether the number of transitions detected for the data channel is above a transition threshold. In at least one example, the transition threshold may be half the number of cycles evaluated at operation 1204. For instance, if the number of cycles evaluated on the data channel at operation 1204 is eight cycles, then the transition threshold may be four. Accordingly, if five or more transitions are detected at operation 1204, then the transition detector 514 executing the transition detection operations 520 can determine that the number of transitions is above the transition threshold at decision diamond 1206.
When the number of detected transitions over the predefined number of cycles is above the transition threshold, the invertor 518 executing the invert operations 524 can invert every other cycle of the data channel at operation 1208. That is, the invertor 518 executing the invert operations 524 can invert every other data bit over the predefined number of cycles in a manner similar to that described above with reference to
At operation 1210, the invertor 518 executing the invert operations 524 further sets a respective transition inversion (TI) encoding flag for the data channel to indicate whether or not every other cycle of the data channel has been inverted. For example, a one (or logic HIGH signal) may be set to indicate that every other cycle of the data channel has been inverted, and a zero (or logic LOW signal) may be set to indicate that every other cycle of the data channel has not been inverted, such as when the answer at decision diamond 1206 is no.
As described herein above with reference to
Referring still to
Referring back to
At decision diamond 1306, the state detector 516 executing the state detection operations 522 can determine whether the number of cycles set to the predetermined state on the data channel is above a state threshold. In at least one example, the state threshold may be half the number of cycles evaluated at operation 1304. For instance, if the number of cycles evaluated on the data channel at operation 1304 is eight cycles, then the state threshold may be four. Accordingly, if five or more cycles are detected at operation 1304 to be set to the predetermined state, then the state detector 516 executing the state detection operations 522 can determine that the number of cycles set to the predetermined state is above the state threshold at decision diamond 1306.
When the number of data bits set to the predetermined state over the predefined number of cycles is above the state threshold, the invertor 518 executing the invert operations 524 can invert the cycles of the data channel at operation 1308. That is, the invertor 518 executing the invert operations 524 can invert the data bits over the predefined number of cycles in a manner similar to that described above with reference to
At operation 1310, the invertor 518 executing the invert operations 524 further sets a respective state inversion (SI) encoding flag for the data channel to indicate whether or not the cycles of the data channel have been inverted. For example, a one (or logic HIGH signal) may be set to indicate that the cycles of the data channel have been inverted. Conversely, a zero (or logic LOW signal) may be set to indicate that the cycles of the data channel have not been inverted, such as when the answer at decision diamond 1306 is no.
As described herein above with reference to
Referring still to
Referring again to
Turning to
The decoder 1404 generally includes circuitry and/or programming adapted to decode a first encoding scheme for a plurality of data bits and a second encoding scheme for the same plurality of data bits. That is, the decoder is adapted to undo the encoding performed by an encoder, such as the encoder 504 and any of the encoding schemes described above. According to at least one example, the decoder 1404 may be coupled to a plurality of data channels of the data bus 1406 by a data bus interface 1408, and may include a processing circuit 1410 coupled to or placed in electrical communication with the data bus interface 1408 and a storage medium 1412.
The processing circuit 1410 is arranged to obtain, process and/or send data, control data access and storage, issue commands, and control other desired operations. The processing circuit 1410 may include circuitry configured to perform a desired function and/or implement desired programming provided by appropriate media. The processing circuit 1410 may be implemented and/or configured according to any of the examples of the processing circuit 510 described above.
The processing circuit 1410 may include an invertor 1414. The invertor 1414 may include circuitry and/or programming (e.g., the invert operations 1416 stored on the storage medium 1412) adapted to invert received data bits back to their original state according to state encoding flags and transition encoding flags included with the received data bits.
The storage medium 1412 may represent one or more processor-readable devices for storing programming, such as processor executable code or instructions (e.g., software, firmware), electronic data, databases, or other digital information. The storage medium 1412 may be configured and/or implemented in a manner similar to the storage medium 512 described above.
The storage medium 1412 may be coupled to the processing circuit 1410 such that the processing circuit 1410 can read information from, and write information to, the storage medium 1412. That is, the storage medium 1412 can be coupled to the processing circuit 1410 so that the storage medium 1412 is at least accessible by the processing circuit 1410, including examples where the storage medium 1412 is integral to the processing circuit 1410 and/or examples where the storage medium 1412 is separate from the processing circuit 1410.
Like the storage medium 512, the storage medium 1412 includes programming stored thereon. The programming stored by the storage medium 1412, when executed by the processing circuit 1414, causes the processing circuit 1414 to perform one or more of the various decoding functions and/or process steps described herein. For example, the storage medium 1412 may include invert operations 1416 adapted to cause the processing circuit 1412 to invert received data bits back to their original state according to the various encoding flags included with the received data. Thus, according to one or more aspects of the present disclosure, the processing circuit 1410 is adapted to perform (in conjunction with the storage medium 1412) any or all of the decoding processes, functions, steps and/or routines for any or all of the electronic devices described herein (e.g., electronic devices 102, 104, and 1400). As used herein, the term “adapted” in relation to the processing circuit 1410 may refer to the processing circuit 1410 being one or more of configured, employed, implemented, and/or programmed (in conjunction with the storage medium 1412) to perform a particular process, function, step and/or routine according to various features described herein.
At 1504, the electronic device 1400 can decode the group of data bits for a first encoding scheme. For example, the processing circuit 1410 (e.g., the invertor 1414) executing the invert operations 1416 can identify the encoding flags associated with the last employed encoding scheme. Referring to the examples described hereinabove with reference to
At 1506, the electronic device 1400 can decode the group of data bits for a second encoding scheme. For example, the processing circuit 1410 (e.g., the invertor 1414) executing the invert operations 1416 can identify the encoding flags associated with the first employed encoding scheme. Referring to the examples described above with reference to
Those of skill in the art will recognize that the order of decoding will directly depend on the order in which the original group of data bits was encoded. Thus, if the original group of data bits was encoded by state inversion encoding followed by transition inversion encoding, then the decoder 1404 can decode the received data bits by performing a decode for transition inversion encoding followed by a decode for state inversion encoding.
While the above discussed aspects, arrangements, and embodiments are discussed with specific details and particularity, one or more of the components, steps, features and/or functions illustrated in
While features of the present disclosure may have been discussed relative to certain embodiments and figures, all embodiments of the present disclosure can include one or more of the advantageous features discussed herein. In other words, while one or more embodiments may have been discussed as having certain advantageous features, one or more of such features may also be used in accordance with any of the various embodiments discussed herein. In similar fashion, while exemplary embodiments may have been discussed herein as device, system, or method embodiments, it should be understood that such exemplary embodiments can be implemented in various devices, systems, and methods.
Also, it is noted that at least some implementations have been described as a process that is depicted as a flowchart, a flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process is terminated when its operations are completed. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination corresponds to a return of the function to the calling function or the main function. The various methods described herein may be partially or fully implemented by programming (e.g., instructions and/or data) that may be stored in a machine-readable, computer-readable, and/or processor-readable storage medium, and executed by one or more processors, machines and/or devices.
Those of skill in the art would further appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the embodiments disclosed herein may be implemented as hardware, software, firmware, middleware, microcode, or any combination thereof. To clearly illustrate this interchangeability, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system.
The various features associate with the examples described herein and shown in the accompanying drawings can be implemented in different examples and implementations without departing from the scope of the present disclosure. Therefore, although certain specific constructions and arrangements have been described and shown in the accompanying drawings, such embodiments are merely illustrative and not restrictive of the scope of the disclosure, since various other additions and modifications to, and deletions from, the described embodiments will be apparent to one of ordinary skill in the art. Thus, the scope of the disclosure is only determined by the literal language, and legal equivalents, of the claims which follow.
Claims
1. An electronic device comprising at least one encoder, the encoder comprising:
- a data bus interface adapted to be coupled with a data bus to facilitate a transmission of data bits; and
- a processing circuit coupled with the data bus interface, the processing circuit adapted to: perform a first encoding scheme on a group of data bits to be transmitted on a data bus via the data bus interface to generate a first group of encoded data bits, wherein the first encoding scheme is performed based on a number of transitions within the group of data bits; and perform a second encoding scheme on the first group of encoded data bits based on a number of data bits within the first group of encoded data bits exhibiting a predetermined state to generate a second group of encoded data bits.
2. The electronic device of claim 1, wherein the processing circuit adapted to perform the first encoding scheme on the group of data bits comprises the processing circuit adapted to:
- determine a number of transitions on each data channel of a plurality of data channels on the data bus over a duration of a predetermined number of data bits; and
- invert every other data bit of the predetermined number of data bits on a data channel when the number of transitions on the data channel is determined to be above a transition threshold.
3. The electronic device of claim 1, wherein the processing circuit adapted to perform the second encoding scheme on the first group of encoded data bits comprises the processing circuit adapted to:
- determine a number of data bits set to a predetermined state on each data channel of a plurality of data channels on the data bus over a duration of a predetermined number of data bits; and
- invert the data bits of the predetermined number of data bits on a data channel when the number of data bits set to the predetermined state on the data channel is above a state threshold.
4. The electronic device of claim 1, wherein the processing circuit is further adapted to:
- set a plurality of first encoding flags to indicate which data bits are encoded by the first encoding scheme; and
- set a plurality of second encoding flags to indicate which data bits are encoded by the second encoding scheme.
5. The electronic device of claim 4, wherein the first encoding flags are either set as
- data bits in an additional data channel, wherein each data bit of the additional data channel is associated with a respective data channel of the group of data bits, or
- data bits added to each respective data channel.
6. The electronic device of claim 4, wherein the second encoding flags are either set as
- data bits in an additional data channel, wherein each data bit of the additional data channel is associated with a respective data channel of the group of data bits, or
- data bits added to each respective data channel.
7. The electronic device of claim 1, wherein the processing circuit is adapted to:
- perform the second encoding scheme on the group of data bits prior to performing the first encoding scheme on the group of data bits.
8. A method operational on an electronic device, comprising:
- performing a first encoding scheme on a group of data bits to be transmitted over a data bus to generate a first group of encoded data bits, wherein the first encoding scheme is performed based on a number of transitions within the group of data bits; and
- performing a second encoding scheme on the first group of encoded data bits based on a number of data bits within the first group of encoded data bits exhibiting a predetermined state to generate a second group of encoded data bits.
9. The method of claim 8, wherein performing the first encoding scheme on the group of data bits comprises:
- determining a number of transitions on each data channel of a plurality of data channels on the data bus over a duration of a predetermined number of data bits; and
- inverting every other data bit of the predetermined number of data bits on a data channel when the number of transitions on the data channel is determined to be above a transition threshold.
10. The method of claim 8, wherein performing the second encoding scheme on the first group of encoded data bits comprises:
- determining a number of data bits set to a predetermined state on each data channel of a plurality of data channels on the data bus over a duration of a predetermined number of data bits; and
- inverting the data bits of the predetermined number of data bits on a data channel when the number of data bits set to the predetermined state on the data channel is above a state threshold.
11. The method of claim 8, further comprising:
- setting first encoding flags to indicate which data bits are encoded by the first encoding scheme; and
- setting second encoding flags to indicate which data bits are encoded by the second encoding scheme.
12. The method of claim 11, wherein setting the first encoding flags comprises:
- setting data bits in an additional data channel, wherein each data bit of the additional data channel is associated with a respective data channel of the group of data bits, or
- setting data bits added to each respective data channel.
13. The method of claim 11, wherein setting the second encoding flags comprises:
- setting data bits in an additional data channel, wherein each data bit of the additional data channel is associated with a respective data channel of the group of data bits, or
- setting data bits added to each respective data channel.
14. The method of claim 8, wherein performing the first encoding scheme on the group of data bits comprises:
- performing the first encoding scheme on the group of data bits after performing the second encoding scheme on the group of data bits.
15. An electronic device, comprising:
- means for performing a first encoding scheme on a group of data bits to be transmitted over a data bus to generate a first group of encoded data bits, wherein the first encoding scheme is performed based on a number of transitions within the group of data bits; and
- means for performing a second encoding scheme on the first group of encoded data bits based on a number of data bits within the first group of encoded data bits exhibiting a predetermined state to generate a second group of encoded data bits.
16. The electronic device of claim 15, wherein performing the first encoding scheme on the group of data bits comprises:
- determining a number of transitions on each data channel of a plurality of data channels on the data bus over a duration of a predetermined number of data bits; and
- inverting every other data bit of the predetermined number of data bits on a data channel when the number of transitions on the data channel is determined to be above a transition threshold.
17. The electronic device of claim 15, wherein performing the second encoding scheme on the first group of encoded data bits comprises:
- determining a number of data bits set to a predetermined state on each data channel of a plurality of data channels on the data bus over a duration of a predetermined number of data bits; and
- inverting the data bits of the predetermined number of data bits on a data channel when the number of data bits set to the predetermined state on the data channel is above a state threshold.
18. The electronic device of claim 15, further comprising:
- means for setting a plurality of first encoding flags to indicate which data bits are encoded by the first encoding scheme; and
- means for setting a plurality of second encoding flags to indicate which data bits are encoded by the second encoding scheme.
19. A processor-readable storage medium, comprising programming for causing a processing circuit to:
- employ a first encoding scheme on a group of data bits to be transmitted over a data bus to generate a first group of encoded data bits, wherein the first encoding scheme is performed based on a number of transitions within the group of data bits; and
- employ a second encoding scheme on the first group of encoded data bits based on a number of data bits within the first group of encoded data bits exhibiting a predetermined state to generate a second group of encoded data bits.
20. The processor-readable storage medium of claim 19, wherein the first encoding scheme comprises:
- determining a number of transitions on each data channel of a plurality of data channels on the data bus over a duration of a predetermined number of data bits; and
- inverting every other data bit of the predetermined number of data bits on a data channel when the number of transitions on the data channel is determined to be above a transition threshold.
21. The processor-readable storage medium of claim 19, wherein the second encoding scheme comprises:
- determining a number of data bits set to a predetermined state on each data channel of a plurality of data channels on the data bus over a duration of a predetermined number of data bits; and
- inverting the data bits of the predetermined number of data bits on a data channel when the number of data bits set to the predetermined state on the data channel is above a state threshold.
22. The processor-readable storage medium of claim 19, further comprising programming for causing a processing circuit to:
- set a plurality of first encoding flags to indicate which data bits are encoded by the first encoding scheme; and
- set a plurality of second encoding flags to indicate which data bits are encoded by the second encoding scheme.
23. An electronic device comprising at least one encoder, the encoder comprising:
- a transition detector adapted to determine a number of transitions on a plurality of data channels of a data bus for a predetermined number of cycles;
- a state detector adapted to determine a number of cycles set to a predetermined state on each data channel of the plurality of data channels for the predetermined number of cycles; and
- an invertor adapted to: invert data bits corresponding to every other cycle of the predetermined number of cycles on a data channel when the number of transitions on the data channel is determined to be above a transition threshold; and invert data bits corresponding to the cycles of the predetermined number of cycles on a data channel when the number of cycles in which data bits are set to the predetermined state on the data channel is determined to be above a state threshold.
24. The electronic device of claim 23, wherein the invertor is further adapted to:
- set a plurality of transition inversion encoding flags to indicate on each data channel whether every other cycle is inverted in response to the determination that the number of transitions is above the transition threshold; and
- set a plurality of state inversion encoding flag to indicate on each data channel whether the cycles are inverted in response to the determination that the number of cycles set to the predetermined state is above the state threshold.
25. The electronic device of claim 24, wherein the invertor is adapted to:
- set the plurality of transition inversion encoding flags on a first flag channel, wherein each cycle on the first flag channel is associated with a respective data channel; and
- set the plurality of state inversion encoding flags on a second flag channel, wherein each cycle on the second flag channel is associated with a respective data channel.
26. The electronic device of claim 24, wherein the invertor is adapted to:
- set the plurality of transition inversion encoding flags on a first flag channel, wherein two or more consecutive cycles on the first flag channel are associated with a respective data channel; and
- set the plurality of state inversion encoding flags on a second flag channel, wherein two or more consecutive cycles on the second flag channel are associated with a respective data channel.
27. The electronic device of claim 24, wherein the invertor is adapted to:
- set the plurality of transition inversion encoding flags and the plurality of state inversion encoding flags on the same flag channel.
28. The electronic device of claim 24, wherein the invertor is adapted to:
- set a respective transition inversion encoding flag on each data channel as an additional cycle; and
- set a respective state encoding inversion flag on each data channel as another additional cycle.
29. The electronic device of claim 24, wherein the invertor is adapted to:
- set the plurality of transition inversion encoding flags on a flag channel, wherein each cycle on the flag channel is associated with a respective data channel; and
- set a state inversion encoding flag as an additional cycle on each data channel and the flag channel.
30. A method operational on an electronic device, comprising:
- determining a number of transitions on a plurality of data channels of a data bus for a predetermined number of cycles;
- inverting data bits corresponding to every other cycle of a data channel when the number of transitions on the data channel is determined to be above a transition threshold;
- setting a respective transition inversion encoding flag associated with each data channel to indicate whether the data bits corresponding to every other cycle of the associated data channel have been inverted;
- determining a number of cycles in which data bits are set to a predetermined state on each data channel of the plurality of data channels for the predetermined number of cycles;
- inverting the data bits in the cycles of a data channel when the number of cycles in which data bits are set to the predetermined state on the data channel is above a state threshold; and
- setting a respective state inversion encoding flag associated with each data channel to indicate whether the data bits in the cycles of the associated data channel are inverted.
31. The method of claim 30, wherein setting the respective transition inversion encoding flag associated with each data channel to indicate whether the data bits corresponding to every other cycle of the associated data channel have been inverted comprises:
- setting each of the transition inversion encoding flags on a flag channel, wherein each cycle on the flag channel is associated with a respective data channel.
32. The method of claim 30, wherein setting the respective transition inversion encoding flag associated with each data channel to indicate whether the data bits corresponding to every other cycle of the associated data channel have been inverted comprises:
- setting the respective transition inversion encoding flag on the associated data channel as an additional cycle.
33. The method of claim 30, wherein setting the respective state inversion encoding flag associated with each data channel to indicate whether the data bits of the associated data channel are inverted comprises:
- setting each of the state inversion encoding flags on a flag channel, wherein each cycle on the flag channel is associated with a respective data channel.
34. The method of claim 30, wherein setting the respective state inversion encoding flag associated with each data channel to indicate whether the data bits of the associated data channel are inverted comprises:
- setting the respective state inversion encoding flag on the associated data channel as an additional cycle.
35. An electronic device, comprising:
- means for determining a number of transitions on a plurality of data channels of a data bus for a predetermined number of cycles;
- means for inverting data bits corresponding to every other cycle of a data channel when the number of transitions on the data channel is determined to be above a transition threshold;
- means for setting a respective transition inversion encoding flag associated with each data channel to indicate whether the data bits corresponding to every other cycle of the associated data channel have been inverted;
- means for determining a number of cycles in which data bits are set to a predetermined state on each data channel of the plurality of data channels for the predetermined number of cycles;
- means for inverting the data bits in the cycles of a data channel when the number of cycles in which data bits are set to the predetermined state on the data channel is above a state threshold; and
- means for setting a respective state inversion encoding flag associated with each data channel to indicate whether the data bits in the cycles of the associated data channel are inverted.
36. A processor-readable storage medium, comprising programming for causing a processing circuit to:
- determine a number of transitions on a plurality of data channels of a data bus for a predetermined number of cycles;
- invert data bits corresponding to every other cycle of a data channel when the number of transitions on the data channel is determined to be above a transition threshold;
- set a respective transition inversion encoding flag associated with each data channel to indicate whether the data bits corresponding to every other cycle of the associated data channel have been inverted;
- determine a number of cycles in which data bits are set to a predetermined state on each data channel of the plurality of data channels for the predetermined number of cycles;
- invert the data bits in the cycles of a data channel when the number of cycles in which data bits are set to the predetermined state on the data channel is above a state threshold; and
- set a respective state inversion encoding flag associated with each data channel to indicate whether the data bits in the cycles of the associated data channel are inverted.
37. An electronic device comprising at least one decoder, the decoder comprising:
- a data bus interface adapted to be coupled with a data bus to facilitate a reception of data bits; and
- an invertor coupled with the data bus interface, the invertor adapted to: receive, via the data bus interface, a group of data bits on a plurality of data channels; decode the group of data bits for a first encoding scheme to generate a first group of decoded data bits; and decode the first group of decoded data bits for a second encoding scheme to generate a second group of decoded data bits;
- wherein the invertor adapted to decode the group of data bits for the first encoding scheme comprises the invertor adapted to:
- identify encoding flags associated with the first encoding scheme; and
- invert data bits indicated by the encoding flags associated with the first encoding scheme to have been inverted.
38. The electronic device of claim 37, wherein the invertor adapted to decode the first group of decoded data bits for the second encoding scheme comprises the invertor adapted to:
- identify encoding flags associated with the second encoding scheme; and
- invert data bits indicated by the encoding flags associated with the second encoding scheme to have been inverted.
39. The electronic device of claim 37, wherein the first encoding scheme comprises an encoding scheme based on a number of data bits on a data channel for the group of data bits exhibiting a predetermined state.
40. The electronic device of claim 37, wherein the first encoding scheme comprises an encoding scheme based on a number of transitions on a data channel for the group of data bits.
41. A method operational on an electronic device, comprising:
- receiving a group of data bits on a plurality of data channels of a data bus;
- decoding the group of data bits for a first encoding scheme to generate a first group of decoded data bits; and
- decoding the first group of decoded data bits for a second encoding scheme to generate a second group of decoded data bits;
- wherein decoding the group of data bits for a first encoding scheme comprises: identifying encoding flags associated with the first encoding scheme;
- and inverting data bits indicated by the encoding flags associated with the first encoding scheme to have been inverted.
42. The method of claim 41, wherein decoding the first group of decoded data bits for a second encoding scheme comprises:
- identifying encoding flags associated with the second encoding scheme; and
- inverting data bits indicated by the encoding flags associated with the second encoding scheme to have been inverted.
43. The method of claim 41, wherein decoding the group of data bits for a first encoding scheme comprises:
- decoding the group of data bits for an encoding scheme based on a number of data bits on a data channel exhibiting a predetermined state.
44. The method of claim 41, wherein decoding the group of data bits for a first encoding scheme comprises:
- decoding the group of data bits for an encoding scheme based on a number of transitions on a data channel.
45. An electronic device, comprising:
- means for receiving a group of data bits on a plurality of data channels of a data bus;
- means for decoding the group of data bits for a first encoding scheme to generate a first group of decoded data bits;
- and means for decoding the first group of decoded data bits for a second encoding scheme to generate a second group of decoded data bits;
- wherein the means for decoding the group of data bits for a first encoding scheme comprises: means for identifying encoding flags associated with the first encoding scheme; and means for inverting data bits indicated by the encoding flags associated with the first encoding scheme to have been inverted.
46. The electronic device of claim 45, wherein the means for decoding the first group of decoded data bits for a second encoding scheme comprises:
- means for identifying encoding flags associated with the second encoding scheme; and
- means for inverting data bits indicated by the encoding flags associated with the second encoding scheme to have been inverted.
47. The electronic device of claim 45, wherein the first encoding scheme comprises an encoding scheme based on a number of data bits on a data channel exhibiting a predetermined state.
48. The electronic device of claim 45, wherein the first encoding scheme comprises an encoding scheme based on a number of transitions on a data channel.
49. A processor-readable storage medium, comprising programming for causing a processing circuit to:
- decode a group of received data bits for a first encoding scheme to generate a first group of decoded data bits; and
- decode the first group of decoded data bits for a second encoding scheme to generate a second group of decoded data bits;
- wherein the programming for causing a processing circuit to decode the group of received data bits for the first encoding scheme comprises programming for causing a processing circuit to:
- identify encoding flags associated with the first encoding scheme; and
- invert data bits indicated by the encoding flags associated with the first encoding scheme to have been inverted.
50. The processor-readable storage medium of claim 49, wherein the programming for causing a processing circuit to decode the first group of decoded data bits for the second encoding scheme comprises programming for causing a processing circuit to:
- identify encoding flags associated with the second encoding scheme; and
- invert data bits indicated by the encoding flags associated with the second encoding scheme to have been inverted.
51. The processor-readable storage medium of claim 49, wherein the first encoding scheme comprises an encoding scheme based on a number of data bits on a data channel of the received data bits exhibiting a predetermined state, and the second encoding scheme comprises an encoding scheme based on a number of transitions on the data channel.
52. The processor-readable storage medium of claim 49, wherein the first encoding scheme comprises an encoding scheme based on a number of transitions on a data channel for the received data bits, and the second encoding scheme comprises an encoding scheme based on a number of data bits on the data channel exhibiting a predetermined state.
5931927 | August 3, 1999 | Takashima |
7522073 | April 21, 2009 | Kao |
8451913 | May 28, 2013 | Oh et al. |
20040225945 | November 11, 2004 | Poechmueller |
20070250310 | October 25, 2007 | Sato et al. |
20090094505 | April 9, 2009 | Nguyen |
20090172495 | July 2, 2009 | Wang et al. |
20090182918 | July 16, 2009 | Hollis |
20100045491 | February 25, 2010 | Bae et al. |
20110138258 | June 9, 2011 | Okamura |
20110222623 | September 15, 2011 | Hollis |
20120056762 | March 8, 2012 | Hollis |
20120317459 | December 13, 2012 | Yeo |
20130159818 | June 20, 2013 | O'connor |
20130287311 | October 31, 2013 | Furihata et al. |
20140023161 | January 23, 2014 | Navid et al. |
20140173308 | June 19, 2014 | Muff et al. |
20140245098 | August 28, 2014 | Sharon et al. |
- Hollis T.M., et al., “Data Bus Inversion in High-Speed Memory Applications,” IEEE Transactions on Circuits and Systems—II: Express Briefs, Apr. 2009, vol. 56 (4), pp. 300-304.
- Partial International Search Report—PCT/US2014/064760—ISA/EPO—Feb. 5, 2015.
- Ramprasad S., et al., A Coding Framework for Low-Power Address and Data Busses, IEEE Transactions on Very Large Scale Integration (VLSI) Systems, IEEE Service Center, Piscataway, NJ, USA, vol. 7 (2), Jun. 1, 1999, pp. 212-221.
- International Search Report and Written Opinion—PCT/US2014/064760—ISA/EPO—Mar. 26, 2015.
Type: Grant
Filed: Nov 21, 2013
Date of Patent: Feb 23, 2016
Patent Publication Number: 20150139355
Assignee: QUALCOMM Incorporated (San Diego, CA)
Inventor: Timothy Mowry Hollis (Poway, CA)
Primary Examiner: Don N Vo
Application Number: 14/086,858
International Classification: H04L 27/00 (20060101); H04L 1/00 (20060101); G06F 13/38 (20060101); H03K 19/00 (20060101); H03K 19/0175 (20060101);