Method, Apparatus And System For Deskewing Parallel Interface Links
In one embodiment, an apparatus includes a clock channel to receive and distribute a clock signal to a plurality of data channels. At least some of the data channels may include: a first sampler to sample data; a second sampler to sample the data; and a deskew calibration circuit to receive first sampled data from the first sampler and second sampled data from the second sampler and generate a local calibration signal for use in the corresponding data channel. The apparatus may further include a global deskew calibration circuit to receive the clock signal from the clock channel, receive the first sampled data and the second sampled data from the plurality of data channels, and generate a global calibration signal for provision to the plurality of data channels. Other embodiments are described and claimed.
Embodiments relate to clock generation and control in a receiver.
BACKGROUNDSource synchronous multi-lane parallel interface communication links can suffer from timing margin issues due to skew between respective lanes of the link. One of the main sources of skew is due to distributing a received clock to corresponding parallel receiver data channels. Such skew increases as the number of data channels increases. Similarly, skew contribution will be more significant as communication speeds increase. High levels of skew in a receiver can cause the receiver to exceed a skew budget and further to decrease system AC margin timing, both of which can adversely affect performance.
In various embodiments, a receiver is provided with a deskew circuit to reduce or remove skew occurring across a plurality of data channels in a source synchronous communication system. In particular embodiments described herein, this deskew circuit can be implemented in a distributed manner, with some circuitry internal to given data channels (and therefore local to a given channel) and some circuitry external to the individual data channels (and therefore global). In addition, embodiments enable deskew circuitry to be calibrated dynamically during normal operation. Such calibration can be performed automatically and dynamically, in a manner transparent to a user. To this end, a deskew calibration circuit as described herein can use an internal controller, such as a microcontroller, finite state machine or other control circuit to initiate and control a calibration routine. Such calibration routine may include update to correction codes used both for local deskew circuits as well as correction codes generated by global circuitry for use in global deskew control. As such, embodiments may perform deskew calibration and correction operations using hardware, software, firmware and/or combinations thereof.
At a high level, a calibration process performed by the deskew circuitry may be based on receipt and processing of incoming information having predetermined characteristics. For example, in various embodiments a predetermined data sequence can be received and processed to identify an amount of skew occurring locally (between local clocks within a given local data channel) as well an amount of skew occurring between the different data channels.
To this end, in one embodiment a calibration process may be performed by first receiving and processing a predetermined data sequence of a training sequence via the various data channels to record the sample outcomes of the training sequence from all lanes. Thereafter, a lane-to-lane deskew process may be performed to compensate lane-to-lane deskew. In an embodiment, this lane-to-lane deskew process may be performed by: scanning an entire unit interval (UI) by delaying a global clock signal with one edge and finding a data edge transition; measuring skew of each lane from an averaged clock phase; and applying a correction code oppositely to compensate the skew of the lane using a global delay adjuster located in each lane. Also, an intra-pair skew compensation process may be performed. This intra-pair skew compensation may be performed locally in each data channel. In an embodiment, this intra-pair skew compensation process may be performed by: scanning the entire UI from a locked position using 0 and 180 degree clock phases; measuring UI edge transitions and skew; and applying a correction code to compensate intra-pair skew using a local delay adjuster of each lane. As will be described herein, note that the lane-to-lane skew process and the intra-pair skew process may be performed in an iterative fashion until at least a threshold amount of skew has been removed, both from the internal data channel point of view as well as the lane-to-lane point of view. As such, in some cases these separate but interdependent processes may be performed repeatedly until an indication that minimal or no skew is detected.
By providing an automatic detection and correction process within a receiver, validation costs during manufacture of the receiver can be reduced such as post-silicon high volume manufacturing (HVM) validation effort, without any software tuning. Still further, embodiments enable obtaining additional skew margin as the dynamic and automatic tuning described herein can enable operation with lower levels of skew. Timing margin realized via embodiments helps in improving link AC timing margin. Embodiments can be used for a wide variety of serial connection links such as Mobile Industry Processor Interface (MIPI)-Data Physical Unit (DPhy), MIPI-Camera Serial Interface (CSI2), double data rate (DDR) and on-chip package high speed parallel interface, where the number of lanes increases predominantly.
Referring now to
As further illustrated in
Due to the arrangement, there may be a skew in the received clock signal. This received clock signal is distributed to the individual lanes and locally converted into multiple phases to enable data sampling operations to occur. To this end, in various embodiments receiver 120 may include a deskew circuit 125 as described herein, to enable automatic, efficient and dynamic update to correction codes used in delay circuitry of individual lanes to reduce or remove skew. As will be described herein, deskew circuit 125 may perform global and local deskew calibration operations.
Referring now to
As illustrated in
In embodiments, each of multiple data channels can be formed of substantially the same circuitry. Accordingly, for ease of discussion, details regarding receiver data channel 220 are discussed. However, understand that such discussion is applicable to other receiver data channels including receiver data channel 240. As illustrated, incoming receiver data (RXDP1/RXDN1) is received in a receiver 221, which may be implemented as a differential amplifier to output a single-ended signal. As illustrated, this signal is provided through a selection circuit 223 to a pair of data samplers 2241-2242. In a particular embodiment data samplers 224 may be implemented as D-type flip flops. These samplers may be clocked on rising edges of a sampling clock signal received from a local delay adjuster 228. More specifically, as shown in
As illustrated, the clock signal output by receiver clock channel 210 is provided to a global delay adjuster 225, which may apply a global delay indicated by a global deskew control signal (Gbl_Deskew_control Chl <6:0>). In an embodiment, global delay adjuster 228 may be implemented as a delay circuit (e.g., including a plurality of individual delay elements, such as D-type flip flops or other delay circuitry). The corresponding (potentially) delayed clock signal output by global delay adjuster 225 is provided to a pair of buffers 2261 and 2262. Buffer 2262 may be implemented as an inverter to output a clock signal that is 180 degrees out of phase with the zero degree phase clock signal output by buffer 2261. These clock signals are provided to local delay adjuster 228, where a local deskew adjustment may be performed responsive to a local deskew control signal (Local_deskew_Cntrl <3:0>) received from a duty cycle detection (DCD) circuit 229, which in turn is coupled to an intra-pair deskew calibration circuit 227. As such, local delay adjuster 228 outputs first and second sampling clock signals to samplers 2241 and 2242, respectively, which are 180 degrees out of phase with each other. As seen, deskew calibration circuit 227 is configured to receive the received samples from samplers 2241/2242, along with the Global Logic Clock, which can be used to perform the deskew calibration described herein.
As further illustrated in
In various embodiments, global deskew calibration circuit 250 may include a controller to enable a global calibration and instruct local calibrations to be performed within the individual data channels 220. Understand while shown at this high level in the embodiment of
In one embodiment, a skew compensation process as described herein may begin when clock generation circuit 218 has completed strobe/clock centering. At this point, a given training pattern can be communicated by the transmitter. In other cases, global deskew calibration circuit 250 may cause generation of this training pattern internally to a receiver as provided through multiplexer 223 (and similarly for a calibration clock as provided by multiplexer 216. In one embodiment, the predetermined data sequence may be a repeating signature pattern of 101010 values, but other patterns are possible such as other stress patterns. Note that this communication of the predetermined data sequence may occur at a supported link frequency or slower on all the data channels at a time or alternate lanes, to mitigate any cross skew. Note that in embodiments, the received clock/strobe is distributed in a balanced way to all lanes. In turn, as shown above in
Locally, samplers within each lane sample the data using the multiple clock signals (CK and CKB (0, 180 degree phase)). The sampled data in turn is provided to global deskew calibration circuit 250. In an embodiment, such circuit may include a digital filter to filter this incoming data. In addition, circuit 250 may include various storages to store the received sample data for each of the data channels.
Different control paths of operation may occur depending upon the state of the received data. Two use cases are described (each having multiple control pathways), namely depending on whether the first sample data is a logic one or zero.
When the first sample data is a logic high value: (1) if RX Sample AB =10, this indicates that no intra-pair skew correction is needed; (2) if Rx Sample AB=11, this indicates presence of a positive skew (CK to CKB delay is greater than an UI). As such, at this point the corresponding intra-pair deskew calibration circuit 227 of the corresponding data channel may be triggered to perform intra pair deskew to correct this positive skew via a local delay adjuster; (3) if RX Sample AB=00, this indicates presence of a negative skew (CK to CKB delay is less than an UI). As such, at this point the corresponding intra-pair deskew calibration circuit 227 of the corresponding data channel may be triggered to perform intra pair deskew to correct this negative skew via a local delay adjuster; (4) note that both of the above (2 and 3) polarity correction procedures (positive or negative skew) depends on a determined duty cycle between the phases of the clock signals of the data channel.
Instead when the first sample data is a logic low value: (1) if RX Sample AB =01, this indicates that no intra-pair skew correction is needed; (2) if Rx Sample AB=11, this indicates presence of a negative skew (CK to CKB delay is less than an UI). As such, at this point the corresponding intra-pair deskew calibration circuit 227 of the corresponding data channel may be triggered to perform intra pair deskew to correct this negative skew via a local delay adjuster; (3) if RX Sample AB=00, this indicates presence of a positive skew (CK to CKB delay is greater than an UI). As such, at this point the corresponding intra-pair deskew calibration circuit 227 of the corresponding data channel may be triggered to perform intra pair deskew to correct this positive skew via a local delay adjuster; (4) note that both of the above (2 and 3) polarity correction procedures (positive or negative skew) depends on a determined duty cycle between the phases of the clock signals of the data channel.
From PI/DLL delay codes and samples from each lane, a difference between delays from a mean phase can be measured and recorded in, e.g., a decision matrix shift register. Thereafter, a best phase can be determined. In an embodiment, this phase determination can be performed using a given averaging algorithm. The resulting correction code for each data channel can be sent to the corresponding channel to compensate for the skew of each lane via the corresponding global delay adjuster of the channel.
Referring now to
Using a correction method as described herein, this eye opening can be increased, as shown in
Referring now to
Referring now to
Still referring to
Referring now to
As shown in
Still referring to
Referring now to
Understand that the various other flows (beginning at diamonds 545, 565, and 592) may proceed as set forth in
Referring now to
Understand that scenario 620 further shown in
Embodiments may be implemented in a wide variety of communication circuits. Although the scope of the present invention is not limited in this regard, example embodiments can be incorporated into high speed parallel source synchronous interfaces such as interface circuits that operate at, e.g., 6.4 Gigabits per second (GBPS) or MIPI-CSI2, MIPI DPHY, or external chip-chip parallel interfaces. Still further, techniques described herein can perform deskewing globally and locally, to realize hardware/software margining.
Referring to
System memory 710 includes any memory device, such as random access memory (RAM), non-volatile (NV) memory, or other memory accessible by devices in system 700. System memory 710 is coupled to controller hub 715 through memory interface 716. Examples of a memory interface include a double-data rate (DDR) memory interface, a dual-channel DDR memory interface, and a dynamic RAM (DRAM) memory interface (any of which may optionally perform clock deskewing described herein).
In one embodiment, controller hub 715 is a root hub, root complex, or root controller in a PCIe interconnection hierarchy. Examples of controller hub 715 include a chip set, a memory controller hub (MCH), a northbridge, an interconnect controller hub (ICH), a southbridge, and a root controller/hub. Often the term chip set refers to two physically separate controller hubs, i.e. a memory controller hub (MCH) coupled to an interconnect controller hub (ICH). Note that current systems often include the MCH integrated with processor 705, while controller 715 is to communicate with I/O devices, in a similar manner as described below. In some embodiments, peer-to-peer routing is optionally supported through root complex 715.
Here, controller hub 715 is coupled to switch/bridge 720 through serial link 719. Input/output modules 717 and 721, which may also be referred to as interfaces/ports 717 and 721, include/implement a layered protocol stack to provide communication between controller hub 715 and switch 720. In one embodiment, multiple devices are capable of being coupled to switch 720.
Switch/bridge 720 routes packets/messages from device 725 upstream, i.e., up a hierarchy towards a root complex, to controller hub 715 and downstream, i.e., down a hierarchy away from a root controller, from processor 705 or system memory 710 to device 725. Switch 720, in one embodiment, is referred to as a logical assembly of multiple virtual PCI-to-PCI bridge devices. Device 725 includes any internal or external device or component to be coupled to an electronic system, such as an I/O device, a Network Interface Controller (NIC), an add-in card, an audio processor, a network processor, a hard-drive, a storage device, a CD/DVD ROM, a monitor, a printer, a mouse, a keyboard, a router, a portable storage device, a Firewire device, a Universal Serial Bus (USB) device, a scanner, and other input/output devices. Often in the PCIe vernacular, such a device is referred to as an endpoint. Although not specifically shown, device 725 may include a PCIe to PCl/PCI-X bridge to support legacy or other version PCI devices. Endpoint devices in PCIe are often classified as legacy, PCIe, or root complex integrated endpoints.
Graphics accelerator 730 is also coupled to controller hub 715 through serial link 732. In one embodiment, graphics accelerator 730 is coupled to an MCH, which is coupled to an ICH. Switch 720, and accordingly I/O device 725, is then coupled to the ICH. I/O modules 731 and 718 are also to implement a layered protocol stack to communicate between graphics accelerator 730 and controller hub 715. A graphics controller or the graphics accelerator 730 itself may be integrated in processor 705.
Turning next to
Interconnect 812 provides communication channels to the other components, such as a Subscriber Identity Module (SIM) 830 to interface with a SIM card, a boot ROM 835 to hold boot code for execution by cores 806 and 807 to initialize and boot SoC 800, a SDRAM controller 840 to interface with external memory (e.g., DRAM 860), a flash controller 845 to interface with non-volatile memory (e.g., flash 865), a peripheral controller 850 (e.g., an eSPI interface) to interface with peripherals, video codecs 820 and video interface 825 to display and receive input (e.g., touch enabled input), GPU 815 to perform graphics related computations, etc. Any of these interfaces may incorporate aspects described herein, including clock deskewing where a source synchronous arrangement exists between transmitter and receiver. In addition, the system illustrates peripherals for communication, such as a Bluetooth module 870, 3G modem 875, GPS 880, and WiFi 885. Also included in the system is a power controller 855.
Referring now to
Still referring to
Furthermore, chipset 990 includes an interface 992 to couple chipset 990 with a high performance graphics engine 938, by a P-P interconnect 939. As shown in
The following Examples pertain to further embodiments.
In one example, an apparatus comprises: a clock channel to receive and distribute a clock signal to a plurality of data channels; and the plurality of data channels. In an example, one or more of the plurality of data channels includes: a first sampler to sample data; a second sampler to sample the data; and a deskew calibration circuit to receive first sampled data from the first sampler and second sampled data from the second sampler and generate a local calibration signal, for use in the corresponding data channel. The apparatus further includes a global deskew calibration circuit to receive the clock signal from the clock channel, receive the first sampled data and the second sampled data from the plurality of data channels, and generate a global calibration signal for provision to the plurality of data channels.
In an example, the plurality of data channels further comprises: a first delay adjuster to receive the global calibration signal and adjust a phase of the clock signal based thereon; and a second delay adjuster to receive the local calibration signal and adjust a phase of at least one of a first sampling clock signal and a second sampling clock signal based thereon.
In an example, the first sampler is to sample the data according to the first sampling clock signal and the second sampler is to sample the data according to the second sampling clock signal.
In an example, the deskew calibration circuit is to generate the local calibration signal based at least in part on a duty cycle between the first sampling clock signal and the second sampling clock signal.
In an example, the plurality of data channels further comprises: a first buffer to receive the phase adjusted clock signal from the first delay adjuster and provide the phase adjusted clock signal to the second delay adjuster; and a second buffer to receive the phase adjusted clock signal from the first delay adjuster and provide the phase adjusted clock signal to the second delay adjuster, out of phase from the phase adjusted clock signal provided by the first buffer.
In an example, the global deskew calibration circuit is to dynamically and automatically generate the global calibration signal during a periodic calibration routine.
In an example, the clock channel is to distribute the clock signal according to a calibration clock signal generated in the clock channel during the calibration routine.
In an example, the global deskew calibration circuit is to provide a predetermined data sequence to the plurality of channels during the calibration routine.
In an example, the global deskew calibration circuit is to generate and provide an independent global calibration signal to each of the plurality of data channels.
In an example, the deskew calibration circuit of each of the plurality of data channels is to execute independently, responsive to initiation by the global deskew calibration circuit.
In an example, the apparatus comprises a receiver to receive source synchronous multi-lane parallel data from a transmitter.
In another example, a method comprises: receiving a predetermined data sequence in a receiver; sampling, in a plurality of data channels of the receiver, the predetermined data sequence according to a first local clock and a second local clock; performing a first skew calibration process in a first data channel of the plurality of data channels if a first portion of the sampled predetermined data sequence in the first data channel is not a first value to generate a local correction code for the first data channel; and performing a second skew calibration process in the receiver to generate a correction code for the plurality of data channels.
In an example, generating the correction code for the plurality of data channels comprises generating a plurality of independent correction codes, each for one of the plurality of data channels.
In an example, the method further comprises sending one of the plurality of independent correction codes to each of the plurality of data channels.
In an example, the method further comprises causing the receiver to generate the predetermined data sequence, generate a calibration clock signal and provide the predetermined data sequence and the calibration clock signal to the plurality of data channels.
In an example, the method further comprises: determining whether at least the first portion of the sampled predetermined data sequence in the plurality of data channels is a common value; causing the receiver to regenerate the predetermined data sequence if the first portion of the sampled predetermined data sequence in the plurality of data channels is not the common value; and completing the second skew calibration process if the first portion of the sampled predetermined data sequence in the plurality of data channels is the common value.
In an example, the method further comprises storing the first portion of the sampled predetermined data sequence received from the plurality of data channels in a storage of the receiver.
In another example, a computer readable medium including instructions is to perform the method of any of the above examples.
In another example, a computer readable medium including data is to be used by at least one machine to fabricate at least one integrated circuit to perform the method of any one of the above examples.
In another example, an apparatus comprises means for performing the method of any one of the above examples.
In a still further example, a system comprises: a transmitter to send information including data and a clock signal via a plurality of parallel links; and a receiver coupled to the transmitter to receive the information. The receiver may comprise: a clock channel to receive and distribute the clock signal to a plurality of data channels; and the plurality of data channels. One or more of the plurality of data channels includes: a first sampler to sample at least some of the data; and a second sampler to sample the at least some of the data. The receiver may further include a first circuit to receive the clock signal from the clock channel, receive the first sampled test data and the second sampled test data from the plurality of data channels, and generate a global calibration signal for provision to the plurality of data channels.
In an example, the system comprises a multi-chip module including a first semiconductor die having the transmitter and a second semiconductor die having the receiver.
In an example, at least some of the plurality of data channels further comprises: a second circuit to receive first sampled test data from the first sampler and second sampled test data from the second sampler and generate a local calibration signal; a first delay adjuster to receive the global calibration signal and adjust a phase of the clock signal based thereon; a first buffer to receive the phase adjusted clock signal from the first delay adjuster; a second buffer to receive the phase adjusted clock signal from the first delay adjuster; and a second delay adjuster coupled to the first buffer and the second buffer, the second delay adjuster to receive an output of the first buffer and the second buffer, the local calibration signal and adjust a phase of at least one of a first sampling clock signal to clock the first sampler and a second sampling clock signal to clock the second sampler.
Understand that various combinations of the above examples are possible
Embodiments may be used in many different types of systems. For example, in one embodiment a communication device can be arranged to perform the various methods and techniques described herein. Of course, the scope of the present invention is not limited to a communication device, and instead other embodiments can be directed to other types of apparatus for processing instructions, or one or more machine readable media including instructions that in response to being executed on a computing device, cause the device to carry out one or more of the methods and techniques described herein.
Embodiments may be implemented in code and may be stored on a non-transitory storage medium having stored thereon instructions which can be used to program a system to perform the instructions. Embodiments also may be implemented in data and may be stored on a non-transitory storage medium, which if used by at least one machine, causes the at least one machine to fabricate at least one integrated circuit to perform one or more operations. Still further embodiments may be implemented in a computer readable storage medium including information that, when manufactured into a SoC or other processor, is to configure the SoC or other processor to perform one or more operations. The storage medium may include, but is not limited to, any type of disk including floppy disks, optical disks, solid state drives (SSDs), compact disk read-only memories (CD-ROMs), compact disk rewritables (CD-RWs), and magneto-optical disks, semiconductor devices such as read-only memories (ROMs), random access memories (RAMs) such as dynamic random access memories (DRAMs), static random access memories (SRAMs), erasable programmable read-only memories (EPROMs), flash memories, electrically erasable programmable read-only memories (EEPROMs), magnetic or optical cards, or any other type of media suitable for storing electronic instructions.
While the present invention has been described with respect to a limited number of embodiments, those skilled in the art will appreciate numerous modifications and variations therefrom. It is intended that the appended claims cover all such modifications and variations as fall within the true spirit and scope of this present invention.
Claims
1. An apparatus comprising:
- a clock channel to receive and distribute a clock signal to a plurality of data channels;
- the plurality of data channels, wherein each of the plurality of data channels includes: a first sampler to sample data; a second sampler to sample the data; and a deskew calibration circuit to receive first sampled data from the first sampler and second sampled data from the second sampler and generate a local calibration signal for use in the corresponding data channel;
- a global deskew calibration circuit to receive the clock signal from the clock channel, receive the first sampled data and the second sampled data from the plurality of data channels, and generate a global calibration signal for provision to the plurality of data channels, wherein the plurality of data channels further comprises: a first delay adjuster to receive the global calibration signal and adjust a phase of the clock signal based thereon; a second delay adjuster to receive the local calibration signal and adjust a phase of at least one of a first sampling clock signal and a second sampling clock signal based thereon, wherein the first sampler is to sample the data according to the first sampling clock signal and the second sampler is to sample the data according to the second sampling clock signal; a first buffer to receive the phase adjusted clock signal from the first delay adjuster and provide the phase adjusted clock signal to the second delay adjuster; and a second buffer to receive the phase adjusted clock signal from the first delay adjuster and provide the phase adjusted clock signal to the second delay adjuster, out of phase from the phase adjusted clock signal provided by the first buffer.
2-3. (canceled)
4. The apparatus of claim 1, wherein the deskew calibration circuit is to generate the local calibration signal based at least in part on a duty cycle between the first sampling clock signal and the second sampling clock signal.
5. (canceled)
6. The apparatus of claim 1, wherein the global deskew calibration circuit is to dynamically and automatically generate the global calibration signal during a periodic calibration routine.
7. The apparatus of claim 6, wherein the clock channel is to distribute the clock signal according to a calibration clock signal generated in the clock channel during the calibration routine.
8. The apparatus of claim 7, wherein the global deskew calibration circuit is to provide a predetermined data sequence to the plurality of channels during the calibration routine.
9. The apparatus of claim 1, wherein the global deskew calibration circuit is to generate and provide an independent global calibration signal to each of the plurality of data channels.
10. The apparatus of claim 1, wherein the deskew calibration circuit of each of the plurality of data channels is to execute independently, responsive to initiation by the global deskew calibration circuit.
11. The apparatus of claim 1, wherein the apparatus comprises a receiver to receive source synchronous multi-lane parallel data from a transmitter.
12-17. (canceled)
18. A system comprising:
- a transmitter to send information including data and a clock signal via a plurality of parallel links; and
- a receiver coupled to the transmitter to receive the information, the receiver comprising: a clock channel to receive and distribute the clock signal to a plurality of data channels; the plurality of data channels, wherein each of the plurality of data channels includes: a first sampler to sample at least some of the data; and a second sampler to sample the at least some of the data; a first circuit to receive the clock signal from the clock channel, receive the data sampled by the first sampler and the data sampled by the second sampler from the plurality of data channels, and generate a global calibration signal for provision to the plurality of data channels, wherein at least some of the plurality of data channels further comprises: a second circuit to receive first sampled test data from the first sampler and second sampled test data from the second sampler and generate a local calibration signal; a first delay adjuster to receive the global calibration signal and adjust a phase of the clock signal based thereon; a first buffer to receive the phase adjusted clock signal from the first delay adjuster; a second buffer to receive the phase adjusted clock signal from the first delay adjuster; and a second delay adjuster coupled to the first buffer and the second buffer, the second delay adjuster to receive an output of the first buffer and the second buffer, and the local calibration signal and adjust a phase of at least one of a first sampling clock signal to clock the first sampler and a second sampling clock signal to clock the second sampler.
19. The system of claim 18, wherein the system comprises a multi-chip module including a first semiconductor die having the transmitter and a second semiconductor die having the receiver.
20. (canceled)
Type: Application
Filed: May 24, 2016
Publication Date: Nov 30, 2017
Inventors: Chenchu Punnarao Bandi (Pulaue Penang), Amit Kumar Srivastava (Penang)
Application Number: 15/162,884