The accompanying drawings, which are incorporated herein and form part of the specification, illustrate the present invention and, together with the description, further serve to explain the principles of the invention and to enable a person skilled in the relevant art(s) to make and use the invention.
The features and advantages of the present invention will become more apparent from the detailed description set forth below when taken in conjunction with the drawings, in which like reference characters identify corresponding elements throughout. In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements. The drawing in which an element first appears is indicated by the leftmost digit(s) in the corresponding reference number.
As shown in
The TX reference clock is a clock signal that is generated from a clock source physically located within TX wireless media adapter 202 and is preferably used both for the wireless transmission of video content from TX wireless media adapter 202 and for generating control data used for pixel clock regeneration in accordance with the method described herein. By using the TX reference clock to perform both these functions, an embodiment of the present invention avoids the cost and complexity associated with having to use two separate clock sources. In order to facilitate high data transfer rates, the TX reference clock preferably has a much higher frequency than the pixel clock associated with the video content. In particular, the frequency of the TX reference clock is preferably such that the period of the TX reference clock is much less than the period of a horizontal video line.
The time reference period received by cycle time counter 204 is based on some aspect of the video content being received from the content source.
In a preferred embodiment, the time reference period is preferably the video frame (or field) period, which is equal to the number of pixel clock cycles in a video frame. However, it should be apparent to persons skilled in the art that other time reference periods could be used, including but not limited to a video horizontal line period or a period associated with multiple frames of video.
Like the time reference period, the number of lines per video frame is essentially a predefined value that depends on the format of the video data being received from the video content source. When the format of the video content received by TX wireless media adapter 202 changes, it is to be expected that both the time reference period and the number of lines per video frame will change as well.
Given the time reference period and the TX reference clock, cycle time counter 204 measures an integer quantity referred to herein as “Frame Count”, wherein:
Frame Count=Number of TX reference clocks/video frame period.
From Frame Count and the number of lines per video frame, an integer quantity referred to herein as “Line Count” is derived using:
Note that the operation └x┘ above provides the greatest integer that is less than x, so Line Count is an integer quantity. In addition, the operation
represents integer dividing x by y.
Because the └x┘ operation is essentially a rounding down operation, the calculation of Line Count in this manner results in an overall loss of a number of TX reference clocks per video frame period. An embodiment of the present invention compensates for this loss by identifying the number of lost clocks and transmitting the number to a receive (RX) wireless media adapter, which then alters the rate of a regenerated pixel clock to compensate for the lost clocks. In order to limit the rate at which the regenerated pixel clock period can change, an embodiment of the present invention only allows the period of an RX phase lock loop (PLL) reference generator (located within the RX wireless media adapter) to increase by one RX reference clock per horizontal video line.
The number of lost TX reference clocks is captured using the variable “Adjustment Lines”, which is calculated by cycle time counter 204 within TX wireless media adapter 202 using:
Adjustment Lines=Frame Count−(Line Count*lines per video frame).
The derivation of this quantity ensures that Adjustment Lines is always less than the number of lines per video frame. Adjustment Lines is then an integer quantity that in one embodiment represents the number of lines per frame in which the RX PLL reference generator output period is increased by one RX reference clock. In an alternative embodiment, Adjustment Lines is used to derive a fractional quantity that represents the fraction of video frames in which the RX PLL reference generator output period is increased by one RX reference clock for all of the lines in the video frame. The RX wireless media adapter calculates this fraction by dividing Adjustment Lines by lines per video frame.
After deriving Line Count and Adjustment Lines, TX wireless media adapter 202 wirelessly transmits a video format indicator, Line Count and Adjustment Lines to an RX wireless media adapter. These values need only be sent once each time a new video format is selected. This is in contrast to the method described in the Background section above, which sends updated CTS and N values every time reference period (e.g., every horizontal line period). Since the video format, Line Count and Adjustment Lines are sent only once per video format, these values can be transmitted using a method that guarantees a high probability of successful (i.e., non-errored) delivery, without consuming a substantial amount of bandwidth on the wireless link.
As shown in
The number of lines per video frame received as input by RX PLL reference generator 404 is a predefined value that is selected based on a video format indicator which is wirelessly communicated from TX wireless media adapter 202 in a manner previously described. The integer values Line Count and Adjustment Lines are also wirelessly communicated from TX wireless media adapter 202 and the generation and transmission of these values has already been described.
RX PLL reference generator 404 derives a BASE, 50% duty cycle input reference signal 408 to PLL 406 with a BASE input reference period equal to the RX reference clock times Line Count. This BASE input reference period is always slightly less than the horizontal line period, due to the inherent rounding down operation of the generation method.
PLL 406 receives as input the number of pixels per horizontal video line and the input reference signal 408 from the RX PLL reference generator.
The number of pixels per horizontal video line is a predefined value that is selected based on a video format indicator which is wirelessly communicated to RX wireless media adapter 402 by TX wireless media adapter 202 in a manner previously described.
As will be appreciated by persons skilled in the art, the basic operation of a PLL is to produce an output signal which is both phase aligned and rate locked to an input reference signal, where the rate of the output signal is equal to A/B times the rate of the input signal. Additionally, due to the basic implementation of a PLL (e.g., a closed loop feedback system), the response time (e.g., the control loop bandwidth) of the PLL is typically much slower than the period of the input reference signal. The effect of this is that the output signal will not respond very rapidly to a rapid change in either the phase or rate of the input reference signal. In other words, the PLL tends to smooth out rapid changes in the input signal. The PLL control loop bandwidth and parameters A/B can be set based on the requirements of a particular application.
The A/B parameters for PLL 406 are programmed to equal the number of pixels per horizontal video line. The effect of setting the A/B parameters in this manner is to generate an output signal that is A/B times the input signal.
Thus, in this case, the input reference signal 408 from RX PLL reference generator (representative of the horizontal line rate) is multiplied by the number of pixels per horizontal line to generate a pixel clock rate, or regenerated pixel clock.
Furthermore, in one embodiment of the present invention, RX PLL reference generator 404 increases the period of the input reference signal 408 (representative of the horizontal line period) by one RX reference clock for the first Adjustment Lines of the total number of lines in each video frame. RX PLL reference generator 404 then reduces the period of the input reference signal 408 back to the BASE input reference period for the remaining number of lines in the video frame. The remaining number of lines in the video frame will equal the total number of lines per video frame less Adjustment Lines.
Furthermore, in another embodiment, RX PLL reference generator 404 increases the period of the input reference signal 408 (representative of the horizontal line period) by one RX reference clock for all of the lines in a number of video frames E. Then RX PLL reference generator 404 reduces the period of the input reference signal 408 back to the BASE input reference period for all of the lines in a number of video frames F, such that the total number of video frames D over which the adjustment occurs is:
D=(Adjustment Lines/lines per video frame*E)+((1−Adjustment Lines)/lines per video frame*F).
The effects of the operation of RX PLL reference generator 404 and PLL 406 as previously described are as follows:
(1) The rate of change in input reference signal 408 is constrained to one RX reference clock period per horizontal video line, versus the N and CTS method described in the Background Section, in which the rate of change in the regenerated clock is not constrained (e.g., the output rate changes instantaneously whenever N and CTS are updated);
(2) The rate of change of the regenerated pixel clock (i.e., the output of PLL 406) is further reduced or smoothed due to the control loop bandwidth implementation of PLL 406; and
(3) The total amount of change in the period of input reference signal 408 in any video frame is always constrained to be a number of clocks that is less than the number of lines per video frame, versus the N and CTS method described in the Background Section, in which the amount of change per any N/CTS update period was only constrained by the maximum period difference between the TX reference clock and the RX reference clock.
The overall effect of the foregoing pixel clock regeneration method is to generate a regenerated pixel clock that does not cause any of the display artifacts caused by the N and CTS method described in the Background Section.
The foregoing approach to pixel clock regeneration can also be used to regenerate an audio sampling clock in a system that wirelessly transmits audio content from a content source to content sink.
As shown in
The time reference period received by cycle time counter 304 is based on some aspect of the audio content being received from the content source. In a preferred embodiment, the time reference period is equal to the number of audio sampling clock cycles in a single audio packet (or “packet period”) multiplied by M, wherein M is a positive integer. However, it should be apparent to persons skilled in the art that other time reference periods could be used.
Like the time reference period, the value M is essentially a predefined value that depends on the format of the audio data being received from the audio content source. When the format of the audio content received by TX wireless media adapter 302 changes, it is to be expected that both the time reference period and M will change as well.
Given the time reference period and the TX reference clock, cycle time counter 304 measures an integer quantity referred to herein as “M Count”, wherein:
M Count=Number of TX reference clocks/M audio packets.
From M Count and the number of bits per audio packet, an integer quantity referred to herein as “Packet Count” is derived using:
Note that the operation └x┘ above provides the greatest integer that is less than x, so Packet Count is an integer quantity. In addition, the operation
represents integer dividing x by y.
Because the └x┘ operation is essentially a rounding down operation, the calculation of Packet Count in this manner results in an overall loss of a number of TX reference clocks per each period of M audio packets. An embodiment of the present invention compensates for this loss by identifying the number of lost clocks and transmitting the number to a receive (RX) wireless media adapter, which then alters the rate of a regenerated audio sampling clock to compensate for the lost clocks. In order to limit the rate at which the regenerated audio sampling clock period can change, an embodiment of the present invention only allows the period of an RX phase lock loop (PLL) reference generator (located within the RX wireless media adapter) to increase by one RX reference clock per audio packet.
The number of lost TX reference clocks is captured using the variable “Adjustment Packets”, which is calculated by cycle time counter 304 within TX wireless media adapter 302 using:
Adjustment Packets=M Count−(Packet Count*M).
The derivation of this quantity ensures that Adjustment Packets is always less than M. Adjustment Packets is then an integer quantity in one embodiment that represents the number of audio packets per M audio packets in which the RX PLL reference generator output period is increased by one RX reference clock. In an alternative embodiment, Adjustment Packets is used to derive a fractional quantity that represents the fraction of blocks of M audio packets in which the RX PLL reference generator output period is increased by one RX reference clock. The RX wireless media adapter calculates this fraction by dividing Adjustment Packets by M.
After deriving M Count and Adjustment Packets, TX wireless media adapter 302 wirelessly transmits an audio format indicator, Packet Count and Adjustment Packets to an RX wireless media adapter. These values need only be sent once each time a new audio format is selected. Since the audio format, Packet Count and Adjustment Packets are sent only once per audio format, these values can be transmitted using a method that guarantees a high probability of successful (i.e., non-errored) delivery, without consuming a substantial amount of bandwidth on the wireless link.
As shown in
RX PLL reference generator 604 receives as input an RX reference clock, M, M Count and Adjustment Packets. The RX reference clock is a clock signal that is generated from a clock source physically located within RX wireless media adapter 602 and is preferably used both for the wireless reception of audio content from TX wireless media adapter 302 and for audio sampling clock regeneration in accordance with the method described herein. The RX reference clock is selected to have an identical frequency (or as close as possible) to the TX reference clock of TX wireless media adapter 302, although in practice the TX and RX reference clocks may vary by a few parts per million (ppm).
The value M received as input by RX PLL reference generator 604 is a predefined value that is selected based on an audio format indicator which is wirelessly communicated from TX wireless media adapter 302 in a manner previously described. The integer values M Count and Adjustment Packets are also wirelessly communicated from TX wireless media adapter 302 and the generation and transmission of these values has already been described.
RX PLL reference generator 604 derives a BASE, 50% duty cycle input reference signal 608 to PLL 606 with a BASE input reference period equal to the RX reference clock times M Count. This BASE input reference period is always slightly less than the audio packet period, due to the inherent rounding down operation of the generation method.
PLL 606 receives as input the number of bits per audio packet and the input reference signal 608 from the RX PLL reference generator. The number of bits per audio packet is a predefined value that is selected based on an audio format indicator which is wirelessly communicated to RX wireless media adapter 602 by TX wireless media adapter 302 in a manner previously described.
The A/B parameters for PLL 606 are programmed to equal the number of bits per audio packet. The effect of setting the A/B parameters this way is to generate an output signal that is A/B times the input signal. Thus, in this case, the input reference signal 608 from RX PLL reference generator (representative of the audio packet rate) is multiplied by the number of bits per audio packet to generate an audio sampling clock rate, or regenerated audio sampling clock.
Furthermore, in one embodiment of the present invention, RX PLL reference generator 604 increases the period of the input reference signal 608 (representative of the audio packet period) by one RX reference clock for the first Adjustment Packets in each set of M audio packets. RX PLL reference generator 604 then reduces the period of the input reference signal 608 back to the BASE input reference period for the remaining number of audio packets in the set of M audio packets. The remaining number of audio packets in the set of M audio packets will equal M−Adjustment Packets.
Furthermore, in another embodiment, RX PLL reference generator 604 increases the period of the input reference signal 608 (representative of the audio packet period) by one RX reference clock for a number of audio packets E. Then RX PLL reference generator 604 reduces the period of the input reference signal 608 back to the BASE input reference period for a number of audio packets F, such that the total number of audio packets D over which the adjustment occurs is:
D=(Adjustment Packets/M*E)+((1−Adjustment Packets)/M*F).
The effects of the operation of RX PLL reference generator 604 and PLL 606 as previously described are as follows:
(1) The rate of change in input reference signal 608 is constrained to one RX reference clock period per audio packet, versus the N and CTS method described in the Background Section, in which the rate of change in the regenerated clock is not constrained (e.g., the output rate changes instantaneously whenever N and CTS are updated);
(2) The rate of change of the regenerated audio sampling clock (i.e., the output of PLL 606) is further reduced or smoothed due to the control loop bandwidth implementation of PLL 606; and
(3) The total amount of change in the period of input reference signal 608 in any set of M audio packets is always constrained to be a number of clocks that is less than the number M, versus the N and CTS method described in the Background Section, in which the amount of change per any N/CTS update period was only constrained by the maximum period difference between the TX reference clock and the RX reference clock.
The N and CTS clock regeneration method described above in the Background Section and the clock regeneration methods described above in Sections A and B each utilize TX and RX reference clocks to perform clock regeneration. Due to the independent nature of the sources (e.g., crystal oscillator, clock oscillator, etc.) for the TX and RX reference clocks, there will be a persistent, long term frequency offset drift between a TX wireless media adapter and a RX wireless media adapter. This long term, and possibly very slow, frequency offset drift will adversely affect the accuracy of any recovered clock generated from the RX reference clock.
As shown in
Storage element 806 may include any type of memory, including but not limited to a random access memory (RAM) or a First-in-First-Out (FIFO).
Recovered clock generator 804 could be implemented using either the closed loop N and CTS method described in the Background Section, the clock regeneration methods described in Sections A and B, or as an open loop clock source set to a nominal clock frequency based upon a video or audio format indicator received from a TX wireless media adapter.
In all implementations, the BASE regenerated clock frequency is modified (or further modified in the closed loop cases) by closed loop control signals derived from the relative input and output rates of data into/out of storage element 806. The input rate into storage element 806 is based indirectly on both the source video pixel clock (or audio sample clock) on the TX wireless media adapter and the TX reference clock which is used to wirelessly transmit the media content. The output rate of storage element 806 is directly based on the regenerated clock from recovered clock generator 804. The additional closed loop control signals to recovered clock generator 804 are derived by setting (e.g., by programming) both a high threshold and a low threshold on the fill capacity of storage element 806.
Conceptually, this is similar to setting a high level to turn on a water pump in a water tank to prevent the tank from overflowing and setting a low level to turn off a water pump in a water tank to prevent the tank from going empty.
When the fill capacity of storage element 806 reaches the high threshold, this means that the source for the TX reference clock is faster than the source for the RX reference clock; therefore, the period of the regenerated clock from recovered clock generator 804 must be decreased (i.e., the storage element 806 output rate must be increased). Similarly, when the fill capacity of storage element 806 reaches the low threshold, this means that the source for the TX reference clock is slower than the source for the RX reference clock. Therefore, the period of the regenerated clock from recovered clock generator 804 must be increased (i.e., the storage element 806 output rate must be decreased). The high and low thresholds can be set based on the specified or expected maximum frequency offset drift of the TX reference and RX reference clock sources, the size of the storage element and/or the regenerated clock rate.
For the N and CTS clock regeneration method described in the Background Section, decreasing the storage element 806 output rate could be achieved by increasing the CTS value and increasing the storage element 806 output rate could by achieved by decreasing the CTS value based on these high/low thresholds.
For the clock regeneration methods described above in Sections A and B, the input reference signal to the PLL (from the RX PLL reference generator) could be increased or decreased by one RX reference clock for the entire adjustment period (video frame or M packets) based on these high/low thresholds. Note that this adjustment would be in addition to the one clock adjustment generated by the Adjustment Lines or Adjustment Packets parameters. However, the maximum rate of adjustment could still be limited to one RX reference clock per adjustment period but staggering the time at which the adjustments were applied by the RX PLL Reference generator.
For an open loop clock recovery method, the nominal regenerated clock frequency could be switch to a higher or lower frequency based upon these high/low thresholds.
While various embodiments of the present invention have been described above, it should be understood that they have been presented by way of example only, and not limitation. It will be understood by those skilled in the relevant art(s) that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined in the appended claims. Accordingly, the breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.
This application claims priority to U.S. Provisional Patent Application No. 60/814,874 entitled “Clock Regeneration Method for Wireless Media Content Delivery Systems,” filed Jun. 20, 2006, the contents of which are incorporated by reference herein in their entirety.
Number | Date | Country | |
---|---|---|---|
60814874 | Jun 2006 | US |