The subject matter disclosed herein generally relates to techniques to modify a frequency of a signal.
Elastic buffers may be used to modify the frequency of a signal. For example,
The subject matter regarded as the invention is particularly pointed out and distinctly claimed in the concluding portion of the specification. The invention, however, both as to organization and method of operation, together with objects, features, and advantages thereof, may best be understood by reference to the following detailed description when read with the accompanying drawings in which:
Note that use of the same reference numbers in different figures indicates the same or like elements.
For example,
De-serializer 310 may convert an input signal (shown as INPUT) from serial to parallel format. De-serializer 310 may attempt to output a symbol in each grouping of parallel bits. A symbol may be multiple bits that are grouped together. For example, to determine the occurrence of a symbol, de-serializer 310 may search for a bit pattern that signifies a boundary between symbols. For example, under PCI express and IBA, a COM symbol may signify a boundary between symbols. In one implementation, de-serializer 310 may examine a serial bit stream to determine whether a boundary bit pattern is present, and based on the presence of the boundary bit pattern, output parallel bits that at least include a symbol. De-serializer 310 may further determine a frequency of signal INPUT and output a clock signal TCLK based on such frequency. For example, clock signal TCLK may have a frequency of the signal INPUT divided by the number of parallel bits output by de-serializer 310.
Re-timing buffer 320 may store signal INPUT according to the frequency of clock signal TCLK and output a signal OUTPUT according to a frequency of clock signal RCLK, where TCLK and RCLK have different frequencies. Re-timing buffer 320 may include a storage buffer (not depicted) to store signal INPUT and provide signal OUTPUT based, in part, on bits of signal INPUT. Re-timing buffer 320 may use clock signal TCLK to time storage of signal INPUT and clock signal RCLK to time output of signal OUTPUT.. In one implementation, to provide signal OUTPUT, re-timing buffer 320 may transfer information from signal INPUT and delete or add dummy data substantially in accordance with the process described with respect to
Decoder 330 may convert an A bit parallel stream to a B bit parallel stream, where both A and B are both integers. For example, decoder 330 may perform 8B10B decoding (described by PCI express and IBA specifications) or 64/66B control mapping in accordance with 10-Gbps attachment unit interface (XAUI) (described in versions of IEEE 802.3 and related standards). Decoder 330 may utilize the clock signal RCLK to time its operations.
De-skew buffer 340 may re-order parallel bit streams. For example, in some cases, bit streams may arrive to de-skew buffer 340 out of the intended sequence. De-skew buffer 340 may correct the sequence of parallel bit streams and output multiple parallel streams in correct sequence.
In action 410, the process initializes. For example, initialization may include initializing a first write location in which to write into the storage device and a first read location from which to read from the storage device. For example, addressing of locations in storage device addressing may be modulo N format, where N is an integer and represents the maximum number of storage locations in the storage device. For example, data may be written into consecutive storage locations and read out from consecutive storage locations. There may be one or more addressable locations between the first write location and first read location.
In action 420, the process may determine whether data immediately read out was dummy data. For example under PCI express, the dummy data may be SKP type. If data immediately read out was dummy data, action 430 may follow action 420. If data immediately read out was not dummy data, action 440 may follow action 420.
In action 430, the process may check for overflow state. For example, action 430 may include determining whether a number of addressable storage locations between subject storage locations in which write and read operations most recently took place are equal to or greater than a specified margin. For example, the margin may be six (6) addressable storage locations or six (6) symbols (where each symbol may be 1 byte). If the buffer is in an overflow state, then action 450 may follow action 430. If the buffer is not in an overflow state, then action 460 may follow action 430.
In action 450, the process may skip over dummy data and provide content of a next storage location. For example, action 450 may include skipping an integer X memory storage locations that store dummy data and providing the content of the next storage location as an output. The content of the next storage location may or may not include dummy data. The integer X may be a minimum number of consecutive storage locations that store dummy data minus one. The integer X can be specified by the storage buffer designer or the relevant governing specification such as PCI express or IBA. In one embodiment, integer X may be two (2).
In action 460, the process may check for an underflow state. For example, action 460 may include determining whether a number of addressable storage locations between subject storage locations in which write and read operations most recently took place are equal to or less than a specified margin. For example, the specified margin may be two (2) addressable storage locations or two (2) symbols (where each symbol may be 1 byte). If the buffer is in an underflow state, then action 470 may follow action 460. If the buffer is not in an underflow state, then action 440 may follow action 460.
In action 470, the process may insert dummy data into the signal that is to be output by the buffer (e.g., signal OUTPUT). For example, action 470 may include reading out the same memory storage location that was previously read and provide such as an output.
In action 440, the process may read from the next storage location and provide such as the output.
Modifications
The drawings and the forgoing description gave examples of the present invention. The scope of the present invention, however, is by no means limited by these specific examples. Numerous variations, whether explicitly given in the specification or not, such as differences in structure, dimension, and use of material, are possible. The scope of the invention is at least as broad as given by the following claims.