1. Field of the Invention
The invention generally relates to high speed data transmission using high speed links, and specifically to improving the quality of reception of audio and video transmitted over high speed links by reducing the jitter at the receiver due to fast changing stream clock.
2. Prior Art
When video and audio data are packetized and sent from a transmitter to a receiver across a high speed link, the data packets are combined with buffer packets, control and other instruction packets. (The buffer packets are filler packets when blanking information etc are present in the video stream). The video stream clock frequency at the transmitter, henceforth referred to as video clock, is Fvid, and the audio stream clock frequency, henceforth referred to as audio clock, is Faud. During the transmission and reception of a video stream only a link clock having a frequency Flink, henceforth referred as link clock, is used over the high speed link. The values of Fvid and Faud vary to adjust for the packet count containing video data across the link. The transmitted packets on the link include the data packets, associated control and special instruction packets and buffer packets when needed.
Typical values of clocks in the display port transmit-receive system for the Fvid ˜2.7 GHz or 1.6 GHz. The lower frequency Flink used for transmitting the packed data has values close to 1/10th of Fvid. The value of Flink is hence 270 MHz or 162 MHz respectively. The typical frequencies for Faud are 32 KHz, 44.1 KHz, 48 KHz, 88.2 KHz, 96 KHz, 176.4 KHz or 192 KHz. Since the packed data stream consists of video and audio packets in addition to control and special instruction packets and only a fixed packet rate is available across the link, Fvid and Faud at the transmitter change to enable sufficient data to be packed within an available transmission period. In the prior art receivers it is necessary to recover the Fvid and Faud, used in the transmitter, to enable proper unpacking and processing of the packets of data. To enable the recovery of the stream clocks, two 24 bit integer values M and N, with relationship to Flink are used, one set for the Fvid recovery and another for the Faud recovery. The relationship between the link clock Flink and the stream clock Fvid or Faud can be expressed as:
Fvid=(Mvid/Nvid)×Flink and
Faud=(Maud/Naud)×Flink
Though the Mvid and Nvid values are both variables, in a typical system, for ease of operation and transmission, the value of Mvid is made variable while the value of Nvid is kept constant for a transmission. The Nvid and Naud values are transmitted with the data stream initially and then only intermittently, to enable set up and checking. The Mvid and Maud values are transmitted to the receiver at intervals that are close as possible to take care of the variations in the Fvid and Faud. As a typical example this may be at the end of a set of data comprising a video line. It is difficult to have the integers continuously follow the variations of clocks at the receiver as they are only transmitted at definite intervals and are not a continuously received at the receiver. This can result in jitter in the recovered clock.
In a high speed transmit/receive system, as the data stream clock is continuously varying, there is need for high speed response to the clock changes in the recovery block. In addition the current link transmission standard for display port system link is spread spectrum clocking. The unpredictable nature of the variations in clock frequency superimposed on the variations due to spread spectrum results in large variations in the recovered values of Fvid and Faud resulting in large jitter in the recovered clock and hence the output of the video and audio streams. In a video analog output system this jitter can impact the quality of the output. Audio is also similarly impacted by the jitter present in the recovered stream clock.
It would hence be useful to have a system and method thereto which can reduce the jitter generated when clocks are recovered from the received packet stream using Flink for use in data processing at the receiver.
The system and method, applicable to a video display port application reduces the jitter in a regenerated data stream clock by using a first-in first-out (FIFO) storage memory to average the variations thereto. The method comprises loading the data extracted from data packets, received over a high speed connection, into the FIFO and running the application using the data in the FIFO. An initial frequency value of the stream clock Fvid is generated from the link clock Flink. Two integer values received over the link, M and N, that establish a relationship between Flink and Fvid, are used to initiate recovery of Fvid. Lower and upper limits are set for data in the FIFO and the value of Fvid is adjusted, by adjusting the values of the integers M and N, to keep the level of data stored in the FIFO within these limits. Accordingly, variations of Fvid are averaged over the limits of the FIFO thereby reducing the jitter.
The exemplary and non-limiting system and method thereto use a first-in first-out (FIFO) storage memory to average the variations of the regenerated data stream clock in a video display port application. The method comprises loading the data extracted from data packets received over a high speed connection into a FIFO and running the application using the data in the FIFO. An initial value of the stream clock Fvid is generated from the link clock Flink. The two integer values received over the link M and N that establishes the initial relationship between Flink and Fvid are used to initiate recovery of Fvid. Lower and upper limits are set for data in the FIFO and the value of Fvid generated is adjusted, to keep the level of data stored in the FIFO within these limits. This method hence averages the variations of Fvid over the limits of the FIFO, thereby reducing the jitter.
The exemplary and non-limiting method and system are explained in more detail using the recovery process for Video stream clock Fvid. The same process can be used to extract the audio stream clock Faud.
The initially transmitted integer values Mvid and Nvid are used in the clock recovery circuit 100, to extract an initial value of the stream clock Fvid from the link clock Flink. Typically the extracted Flink is used as the reference clock. The data packets stripped from the control and special instruction packets are unpacked and fed into a FIFO data store. The FIFO is monitored for a multiple high levels of data fill and similarly for low levels of data fill. As the data gets stored in the FIFO and processed from the FIFO, if the level of data stored falls below a monitored low level then the frequency value of the clock Fvid is adjusted up by a value equal to δf thereby increasing the extraction and unpacking of the packets. This increase is done for each monitored level below the mean value of the FIFO to bring up the dropping level of data in the FIFO. Similarly if the stored data level starts to increase in the FIFO and goes above a monitored high level, the frequency Fvid is decreased by a value δf for each monitored level to reduce the speed of unpacking and hence reduce the level of data stored in the FIFO to the average value.
If the level of data stored 221 increases due to the need for data by the receiver is less than the unpacked data, it causes the data stored to increase and cross the first high monitor level 214. The monitor circuit passes the information to the Mf & Nf value adjuster 240 to change the value of the received and saved Mvid, (saved as Mf), and Nvid, (saved as Nf), fed through the link 241, to the switch circuit 250 and hence to the ratio modulator 107 through the connection 209 to decrease the Fvid value by δf such that
Fvid=Fvid−δf.
If the data stored 221 still increases and crosses the second high threshold 216, the value of Fvid is further adjusted by another δf and so on, the reduction to the Fvid being implemented only when the stored data 221 value cross a new high threshold. A lower value of Fvid so achieved reduces the unpacking and loading speed of data 220 into the FIFO 210 and tends to reduce the level of the stored data 221 in the FIFO 210.
Similarly if the data value crosses the low threshold 213, the value of the Fvid is lower than necessary and hence it is increased by a value of δf providing an Fvid value
Fvid=Fvid+δf
enabling the data flow 220 into the FIFO 210 to increase. This frequency increase is repeated for each of the additional low monitoring threshold levels 215 and 217. The higher value of Fvid allows the data level in the FIFO 210 to increase.
receiving the data and control as packetized data over the link connection from the transmitter at a link frequency is Flink. Two integers Mvid and Nvid 108 correlating the packing frequency Fvid to Flink are also transmitted over the link connection (S301);
recovering and regenerating Fvid or a frequency using the Flink, as a reference clock 101 for use in a video clock recovery circuit 100 (S302);
extracting Packet Data and storing the same for unpacking (S303)
receiving the values of the two integers Mvid and Nvid 108, transmitted on the link connection at the receiver (S304);
saving the highest value of the received integers Mvid (as Mf) and Nvid (as Nf) 108 for use in initial re-generation of Fvid 110 (S311);
using the saved integers Mvid and Nvid, to provide an initial feedback input 209 to the video clock recovery circuit 100 to generate the instantaneous value of the clock frequency Fvid 110 (S306);
loading the initial value of the received Mvid and Nvid 108 into the Mf and Nf value adjuster circuit 240 as its initial value (S316);
using the instantaneous value of the regenerated packing frequency Fvid 110 to unpack the data from the packets received (S307);
loading the unpacked data 220 into a FIFO 210 with established sense capability for average data level 212, low data levels 213, 215 or 217, and high data levels. 214, 216, or 218 (S308);
sensing of the respective data levels using a monitor circuit 211 (S309);
checking the data level to find if it has initially reached the average data value 212 (S310);
enabling a switching signal 231 to a switch 250 when the data level first reaches the average value 212 in the FIFO 210, enabling the feedback input 209 to the video clock recovery circuit 100 to switched from the received Mvid and Nvid values 108 to the Mf and Nf values provided through link 241 from the Mf & Nf value adjuster circuit 240 (S316);
continuing checking the data level to see if it is crossing a high value limit; (S312); and if it has then
generating an input to the Mf & Nf adjuster circuit to adjust the Mf and Nf values to reduce the re-generated frequency value of Fvid, such that Fvid=Fvid−δF (S313); if not then,
checking the data level to see if it has crossed a low value limit; (S314); and if it has then
generating a feedback to the Mf & Nf adjuster circuit to increase the re-generated frequency value of Fvid, such that Fvid=Fvid+δF (S314); if not then,
retaining the value of the Mf and Nf same and continue checking the data level in the Fifo (S309);
extracting the data 222 is extracted from the FIFO 210 for further processing and display (S317);
continuously using the extracted data 22 for the display application (S318).
This exemplary and non-limiting flow described allows the feedback generated and hence the Fvid 110 to remain stable till the data in the FIFO crosses a high data level 214, 216 or 218 or a low data level 213, 215 or 217, at which time the monitor circuit 211 generates a signal corresponding to the level and sends it 232 to the Mf and Nf value adjuster circuit 240. This enables the adjustment of the value of the integers Mf and Nf 241 by the Mf and Nf adjuster circuit 240. The change in feedback to the ratio modulator 107 in the clock recovery circuit 100 allows the regenerated Fvid 110 to change. Increasing the value of Fvid 110 if the stored data value 221 crosses a low data level 213, 215, or 217, increases the unpacking speed to increase the rate of data 220 loading into the FIFO 210. Alternately, decreasing the value of Fvid 110 if the data level 221 crossed a high data level 214, 216 or 218 reduces the unpacking speed to reduce the data 220 loading into the FIFO 210.
This method and circuit hence limit the change in the frequency of Fvid 110 from instantaneous high speed response to the received Mvid and Nvid 108 value from the link 108, creating high jitter, to a more gradual average change of the Fvid 110 based on the fill levels 213 to 218 of the FIFO 210. This lower rate of change of Fvid reduces the jitter in Fvid and hence the degradation of quality of the video stream. The stored data 221 also allows the slow changing Fvid 110 to provide for a continuous fixed bit-rate buffered output stream of data 222 from the FIFO 210 even when the unpacking and processing is slower than the output flow of data 222. This method hence provides for a much higher quality of output from the receiver.
Though an exemplary system and method for reducing the jitter at a video display port receiver is described these are not meant to be limiting in any way. The method may be implemented with other high speed systems and processes, in the areas of high speed data transmission and other high speed applications where clock jitter is a concern. Such implementations and operations will be understandable to practitioners of the art. The application will enable the practitioners to overcome or reduce the jitter at the output by averaging the clock variations over time in high speed applications. Such implementations and improvements to the disclosed invention are all covered by this disclosure. Certain elements of this disclosure may be implemented in hardware, software, firmware or combinations thereof. Computer or computing capable device implementations of the method are also covered under this disclosure.
This application claims the benefit of U.S. Provisional Patent Application No. 61/337,697 filed Feb. 11, 2010.
Number | Date | Country | |
---|---|---|---|
61337697 | Feb 2010 | US |