High speed serializer/deserializer transmit architecture

A Serializer/Deserializer apparatus comprises a serializer adapted to take N parallel bits of data and shifts them out serially at N times a clock speed to a transmitter, a transmitter enable block adapted to start the serializer means, and a count block. The serializer comprises flip-flops and muxes, and is adapted to N parallel bits of data and shifts them out serially at N times a clock speed to a transmitter. The transmitter enable block comprises an inverter and flip-flops, and is adapted to start the serializer. The transmitter enable block comprises an inverter, flip-flops, and a NOR gate, and is adapted to create a waveform which programs data loading in the serializer.

BACKGROUND

The present invention relates generally to communication systems, and more particularly to serializer/deserializer (SerDes) circuits used in communication systems.

SerDes circuits are generally incorporated into integrated circuits and operate at high speed, and convert parallel data to serial data and serial data to parallel data.

Conventional SerDes have the following disadvantages:—they use First In-First Out (FIFO) circuits to cross clock domains, thereby requiring extra power and area—they use high speed mux's to manage the bit selection for the output path which adds asymmetry to the waveform or adds an additional pipeline flip flop of latency.

SUMMARY

In accordance with an aspect, a circuit takes four parallel data bits and their low-frequency (e.g. 200 MHz) clock, and converts them into a serial stream of data at high-frequency (e.g. 800 MHz). The basic architecture can support speeds well beyond 1 GHz. The following problems are solved:—data/clock skew from the core to the pad. This problem is solved by pulling the last stage of core logic into the pad—clock uncertainty between the slow clock (nibl clock—200 MHz) and the fast clock (tx clock—800 MHz). This problem is solved by using a circuit to cross the clock domains safely and keep all high speed clock jitter/skew limited to the small area inside the transmitter. Also, there is a circuit that avoids any metastable issues between nibl and tx clock.—The circuit avoids additional latency that comes when using a FIFO circuit (as in conventional practice) for crossing the clock domains.—The circuit avoids additional circuit area and power used by FIFO's and the control logic needed to handle the FIFO pointers.

To the accomplishment of the foregoing and related ends, the one or more aspects comprise the features hereinafter fully described and particularly pointed out in the claims. The following description and the annexed drawings set forth in detail certain illustrative aspects of the one or more aspects. These aspects are indicative, however, of but a few of the various ways in which the principles of various aspects may be employed and the described aspects are intended to include all such aspects and their equivalents.

DETAILED DESCRIPTION

Various embodiments are now described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of one or more embodiments. However, it may be evident that such embodiment(s) may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate the description of one or more embodiments.

In an embodiment serializer circuit100comprises the following circuits depicted inFIG. 1:

Pipe input stage110: This is a bank of registers that allows easy timing closure of the data bits from the core to the MDDI host PHY. It takes eight bits of parallel data from the core and latches them using the core byte_clock. Primary host and external host have different byte clocks to allow them to run simultaneously at different data rates.

Serializer start block120: The tx_ff_ena signal is asserted by the core when the serializer should start. This block takes the tx_ff_ena signal from the core and synchronizes it to the tx_clk domain (high-speed clock, i.e., 768 MHz).

Byte-select generator130: This block generates a byte-select signal that is synchronous to the full-rate clock tx_clk. It also maximizes the setup/hold timing margin by loading the data after it has been resting in the pipe stage for four tx_clk periods. This is critical as variations in temperature and voltage may cause the byte and Tx clocks from the core to have up to ±3 ns phase skew with respect to each other.

Serializer output stage140: This block loads the eight parallel data bits from the pipe stage and then shifts them out serially. It repeats this operation every eight tx_clk periods (i.e., 8/768 MHz).

Serializer circuit100enables the host to run at high speeds (e.g. 768 Mbps) by taking 8 bits of slow parallel data from the core and shifting them out serially at 8× speed to the strobe encoder and eventually the host driver.

According to an aspect, the timing diagram depicted inFIG. 2shows the host startup sequence. The following are descriptions for sections A, B, and C in the diagram.

Section A represents two byte-clock periods where the tx_ff_ena is asserted to load the data pipeline in the pad with logic 1s. Note that data and strobe lines are both floating here.

Section B represents the STB_START_UP state where the strobe driver is enabled but tx_ff_ena is low. The expected output on the strobe lines is logic 0. The data lines are still floating.

Section C represents the DATA_START_UP state where the data driver is enabled but tx_ff_ena is low. The expected output on the data lines is logic 0. At the end of C, the tx_ff_ena is asserted and the strobe should start toggling as per the mddi_data_out byte from the core.

In another aspect, the timing diagram depicted inFIG. 3shows the host serializer and driver interface skew calibration. When skew_cal_ena is asserted from the core, the data byte from the core is 0x00. The last eight data bytes have been zero so the pad continues toggling strobe lines as if the data were 0. When the skew_cal_ena signal goes high, the MDDI starts routing the output of strobe to data. In other words, the effect of the skew_cal_ena signal is to use the incoming data byte to encode the strobe sequence, and both data and strobe drivers output the encoded strobe sequence. The data byte is only used to figure out the strobe value and is never transmitted out.

With reference now toFIG. 4, in another embodiment a transmit SerDes400contains 3 major functional areas: 1) A Serializer410: this circuit contains 4 flip-flops and 4 muxes. It takes 4 parallel bits of nibl data and shifts them out serially at 4× clock speed to a Low Voltage Differential Signal transmitter. The parallel bits are loaded once every 4 TX clocks (at e.g. 200 MHz) and shifted out serially every TX clock (at e.g. 800 MHz). 2) A Transmitter (TX) Enable Block420: this circuit contains an inverter and 3 flip-flops. It has three inputs from the core: txff_ena, nibl_clk, and tx_clk. Its output starts the serializer: tx_clk_ena. When txff_ena is asserted, a flip-flop loads a “1” at the next rising edge of nibl_clk. Then this “1” is shifted by tx_clk through 2 serial registers. The last register outputs tx_clk_ena, which starts the serializer. 3) A Count Block430: this circuit contains an inverter, 2 flip-flops, and a NOR gate. It creates the nibl_d_ena waveform which programs nibl or serial data loading in the serializer.