The present invention relates to an asynchronous communications network, and in particular, to an asynchronous multi-media digital home network having a system level clocking scheme to remove jitter from multi-media data packets.
Recent advances in digital communications technology have increased the viability of digital home networks (“DHN”), which can allow various devices in a home to communicate with each other. In particular, the growing availability of broadband access has made it desirable to be able to tie in various devices in a home to a single gateway device that is coupled to a broadband network, or a plurality of networks, for centralized access and distribution of multi-media information. In such a digital home network, the gateway device accesses and buffers multi-media content and distributes the content over the network as requested by various client devices coupled to the network.
Ethernet is a common option for implementing a LAN. Ethernet is an asynchronous collision detect network. HPNA is also an asynchronous collision detect network and some power line based networks are often asynchronous collision detect networks. However, difficulties may arise when such networks are used to distribute multi-media content.
In this regard, there are a number of problems associated with taking a live broadcast and distributing it on an asynchronous digital home network. In a live broadcast signal, the data is pushed to the client device, and the client device does not have any control over the incoming data stream. In order to ensure that the networked client device can decode and display all of the audio and video data delivered to it at the correct frame rate, and without repeated or dropped frames, it is in general required that the networked client device be clock synchronized to the headend clock. The most widely accepted method for clock synchronization in a broadcast A/V network relies on delivering counter samples taken at the broadcast site to the receiver with a fixed delay from the time of broadcast till the time of receipt. The counter at the broadcast site is incremented by the broadcast site's reference clock. At the instant those clock samples arrive in the receiver, a counter clocked by a voltage controlled oscillator (VCXO) is sampled. The value of the counter and the time stamp received from the broadcast site are compared and if the difference between the samples of the local counter and the clock samples taken at the broadcast site varies over time, the voltage applied to the local VCXO is adjusted to try to frequency lock the local clock to the broadcast site's reference clock.
On an asynchronous collision detect network, such as an Ethernet network, the delay from the time a packet is constructed and placed in a transmit buffer until the time the packet is received by a network connected device is not always constant. In such networks, multiple devices colliding on a network can cause variable packet and unpredictable delays in the reception of a packet. In this environment it is not possible to use the method described above to frequency lock the clock at the networked receiver to a clock at the networked transmitter due to the variable and unpredictable delays. Using such a method to attempt to lock the receiver clock to the transmitter clock may produce significant jitter in the receiver clock. Depending upon the magnitude of the jitter in the receiver's clock, it may not be possible to produce an NTSC compliant color burst for video display. In addition, this jitter will at a minimum require the audio and video compressed data buffers to be larger than necessary and at worst cause the buffers to underflow or overflow. The side effects would include video freezing, possible audio chirps and the display colors changing dynamically due to the variations in the color burst.
Some networks, such as 1394 networks, provide isochronous capability that can eliminate this problem. Additionally, various methods, such as SRTS, have also been developed for ATM networks to address these timing issues. The SRTS method assumes that the transmitting device and the receiving device both have access to a network clock for the synchronization. However, such methods may not be completely suitable for correcting jitter in an asynchronous collision detect network, such as an Ethernet network. Therefore, what is desired is a system and a method for synchronizing the clocks and controlling the data flow in an asynchronous network, and in particular, in an asynchronous collision detect network to overcome the above-noted problems. Furthermore, what is needed is a system and a method for synchronizing the clocks and controlling the data flow in an asynchronous network, wherein the broadband receiver is able to receive signals from one of a plurality of headend networks and each headend has its own system clock.
The present invention overcomes the jitter problems discussed above, and in particular, provides a system and a method for distributing multi-media content over an asynchronous network, wherein the receiver is able to receive inputs from multiple headend networks. More specifically, the present invention uses time stamps and clock adjustment factors to minimize and reduce the jitter effects caused by software processing and collisions on an asynchronous home network. A set of time stamps are used to perform synchronization of the clock in the client device to the headend clock and another set of time stamps are used to control data flow in the client device.
One set of time stamps is added for flow control. When a packet arrives from a broadband network, a sample of a local counter in the server is latched into a register. The local counter is clocked with a system clock of the server. The server attaches the sampled counter value to the received transport packets. Once a packet is time stamped, the server may place the packet in a transmit buffer. This time stamp indicates the moment at which the data was received from the broadband connection and placed into a buffer, and as such, can be used by the client device to remove the data from a receive buffer at the exact same rate as it entered the buffer.
Another set of time stamps, along with a clock adjustment factor, are used for synchronizing the client device clock with the head end clock. Each headend transmits synchronizing information, SCR, along with the multi-media data. When the server detects a SCR, the server runs an algorithm to calculate a normalization, or scaling factor, to be applied to the time stamps. The local clock of the server is not adjusted. The normalization allows the server's local clock to be expressed in terms of the headend clock. The adjustment factor is applied to the broadband receiver's time stamps to express them in terms of the headend clock. At the moment a frame of data is being placed onto the network, a local counter running on the system clock is sampled. A time stamp based on the sampled clock is placed in the data frame in real-time at the physical layer of the network so that there is a fixed and constant amount of time from the sampling of the local counter and the sampled count value being placed onto the network. If a collision condition occurs, the time stamp is updated when the data is retransmitted. At the moment the new data frame is received in the physical layer of a client device, a sample of a local counter running on the client's local clock is latched into a register. This “receive-time” time stamp is then attached to the received frame of data and passed onto successive layers of the client's network protocol hardware and software. After the client data is passed through the communication protocols, the data is ready to be used by the client.
The client device uses the time stamps attached at the physical layer of the server's network interface and the clock adjustment factor, along with the time stamps that were attached when the data was received by the client device, to lock the client's local system clock to the headend system clock.
The time stamps attached to the data when the data arrived at the server from the broadband network, along with the clock adjustment factor, may then be used to determine the exact time when each data packet should be extracted from the client's buffer and passed on to the audio/video subsystems in the client. In this way the packet arrival timing at the server is exactly matched at the input to the A/V subsystem in the client device.
The invention is described with reference to the drawings, wherein:
In accordance with the present invention, in order to ensure that the exact arrival time of packets at the client device may be reproduced, each packet arriving from the broadband network is stamped with a time stamp, T1, when server 202 receives the packet. Time stamp T1 is a sample of a local counter that is clocked with a local system clock of server 202. Time stamp T1 and the packet are stored together in buffer 205 prior to being broadcast together over the DHN.
At some later point in time, a group of transport packets, along with header information, is assembled to form a data frame for transmission on the network DHN. The data frame includes portions where various time stamps and a clock adjustment factor may be placed. The moment the data frame starts to be placed onto the network, local counter in server 202, running on the local system time clock, is sampled to generate a counter sample time stamp T2. Time stamp T2 is placed in the outgoing data frame such that the time from sampling the counter value to the time the counter value enters the network is fixed and constant. It is important that this time is fixed and constant, and for this reason the counter sampling and time stamp placement is performed in the physical layer hardware of the network interface. Since the propagation delay from server 202 to client device 204 over the network is fixed and constant, the overall propagation delay from sampling T2 until the packet containing time stamp T2 arrives at client device 204 is also fixed and constant. Additionally, in a system where the symbol times may change, the present invention is able to provide the necessary synchronization as long as the propagation time in the network remains constant.
In the present invention, the system clock of server 202 is not changed. Instead, a clock adjustment factor is calculated and placed in the data frames to allow the time stamps to be used to frequency lock a client device clock to the particular headend clock. A suitable normalization factor may be, for example, clock adjust=SCR(0)−SCR(1)−[local clock (0)−local clock (1)]/(SCR(0)−SCR(1)). In this manner, the client device is able to frequency lock to any one of a plurality of network headends. Time stamp T2 and the clock adjustment factor are included in portions 306 and 305 in data frame 300 as shown in
If a collision event occurs, time stamp T2 is updated the next time server 202 attempts to place the data frame onto the asynchronous network. It is important to note that the time stamp T2 is based on the local clock of server 202, which is not adjusted.
At the moment the data frame arrives at client device 204, a local counter of client device 204, running on the client system clock, is sampled to generate a time stamp T3. This counter value is compared to the adjusted time stamp T2 in the arriving data frame to ensure that the difference between the client clock and the headend clock is not changing. If this difference is changing over time, the client device will modify the voltage on its local VCXO to move its local system clock into frequency lock with the headend clock. For example,
error=(T2(0)−T2(1))*((clock adjust (0)+clock adjust (1))/2)−(T3(0)−T3(1)),
where (clock adjust (0)+clock adjust (1))/2 is the median clock adjust error, and error is how far off the client clock is from the headend clock.
Thus, time stamps T2 and T3, along with the adjustment factor, are used to frequency lock the system clocks of the headend and client device 204 together. Time stamps T2 and T3 may be discarded after they are used in client device 204 for synchronization. At this point, data frames that encapsulate transport packets and their associated time stamps T1 and the clock adjustment factor may be stored in buffer 203 in client device 204.
The next step is to remove data from the buffer of client device 204 at a rate that exactly matches the rate at which the packets arrived at the input of server 202. When client device 204 has accumulated enough data in a receive buffer to absorb a reasonable amount of network jitter client device 204 starts extracting data from the receive buffer, and making that data available to the decoders within client device 204. A local counter, which is based on the client clock is initialized with the count value stored with the first transport packet to be extracted from memory. The counter is clocked with the client's system clock, which is locked to the headend clock, so the subsequent packets may be extracted from memory when their stored time stamp value matches the counter value. In this manner, the rate of removal from the receive buffer of client device 204 matches the rate at which the data was received at server 202. The format of the data frame and placement of the time stamps T1, T2, T3 and the clock adjustment factor within the data frame are shown in
The format of the data packets and the placement of the times stamps into the data frames in an Ethernet environment are further described below. The Ethernet packets in the present embodiment use the UDP/IP protocols, but it is to be understood that other suitable protocols, such as TCP, or “raw” Ethernet may be used to implement the time stamping features of the present invention. In accordance with the present invention, the IP header utilizes an IP option identifying the data frames that need to have a time stamp placed therein. The time stamps are placed in the data frames following the UDP header. There is a unique location in the extended UDP header for the outgoing and incoming packets.
The clock synchronization time stamps T2 and T3 and the clock adjustment factor are placed after the UDP header. Time stamp T2 is a 32-bit time stamp and is applied when the IP packet has an option 25 set. The time stamp is placed into the data frame at the physical network layer. Although the present embodiment utilizes option 25 to indicate the presence of time stamps in the frame, it is to be understood that other suitable method for indicating time stamps, such as designating specific IP address and port number may be utilized.
Time stamp T3 is also a 32-bit time stamp and is applied when an IP packet with option 25 is detected. This time stamp is also placed into the data frame at the physical network layer.
The data flow control time stamps T1 are placed into the data stream when the data is received from a broadband network. Time stamps T1 are generated using a local counter in server 202. By placing a time stamp T1 on each transport packet as the packet arrives at server 202, client device 204 can reproduce the same bit rate as the rate received at server 202. Data flow control time stamps T1 are in the UDP payload. Table 1 shows the data format used in the exemplary embodiment of the present invention.
Once the data frame has been time stamped, the UDP checksum is checked. If the checksum is not zero, the old checksum is replaced with a newly created checksum. After resolving the UDP checksum, a new CRC is calculated and replaces the old CRC value in the MAC layer. If at any point of the packet interrogation it is determined that the data frame is not a valid time stamp frame, the frame is passed through with no alterations to the data.
The time stamp value is generated from an external system clock. The external clock drives a 32-bit counter. A snapshot of the counter is taken when a data frame is placed onto the network. On an incoming packet, a snapshot of a counter in the client device is taken. If it is a valid time stamped packet, the snapshot of the counter is placed into the payload portion of the data frame. The 32-bit counter is a free running rollover counter synchronous to the external system clock.
The following describes the search sequence to determine whether a particular data frame needs a time stamp, and if so, where the time stamp data is placed. The first test is to validate the MAC frame. Validating the MAC frame requires the CRC to be calculated and compared. If the CRC test fails, the frame is allowed to pass through without any modifications to ensure that a valid CRC is not added to a data frame that was received with an invalid CRC. If the CRC test is passed, a second test is conducted to find an Internet Protocol (IP) in the MAC frame. Twenty octets into the MAC frame, from the 802.3 specification section 3.2.6, Length/Type, is the Length/Type field. From ITEF RFC 1700 EtherTypes table, an Internet IP (Ipv4) is 0×800 (Hexadecimal). If the value is not 0×800, the packet is passed through. If the Length/Type is 0×800, another test is conducted to determine the size of the IP header and whether it contains an UDP packet. The contents of a MAC frame are specified in IEEE 802.3, section 3.1.1.
If the MAC frame contains an IP packet, the next test determines the size and the option settings. First, in order to determine the size, the second nibble of the IP packet, which is the Header Length, is examined. The Header Length is the number of 32-bit words that make up the IP header. Without options, the IP header is normally 20 bytes, so the Header Length is 5. The IP Header options have a 20 decimal offset from the start of the IP Header.
The steps to determine whether the packet is a valid time stamp packet is now described. If any of the steps fail, the packet is passed through without any modifications. First, the header length field is examined to determine whether it is greater than 5. If so, the 1st IP option located 20 bytes from the beginning of the IP Header is checked against 0×99040000. The format of the option is shown in Table 2 below:
Table 3 shows an IP header with IP option 25 included.
If the IP options include the designated time stamping option described above, the present system places a time stamp into the data frame. The time stamps are placed in the UDP payload portion that follows the IP header, and in particular, at the beginning of the payload portion. The UDP header is 8 bytes long. The first 32 bit word of the UDP payload is reserved for time stamp T3, and the second 32 bit word of the UDP payload is reserved for T2.
A significant aspect of the present invention is that the time stamps and the CRC are generated and placed into the data frames at the physical layer. As such, the time stamps and CRC are placed into the data frames as the data frames are actually being placed onto the network or are received from the network. This allows the time stamps to accurately reflect the time the data enters the network and the time the data is received from the network.
The elements of a system for implementing the time stamping described above is now described in further detail with respect to a DBS receiver. However, it is to be understood that similar time stamping may be performed for multi-media data received on other types of broadband networks, such as DSL or cable.
As shown in
In operation, host controller 406 reads the transport packets out of the FIFO memory of PCI DBS tuner 402. The packets are then processed according to the network protocol software and the network frames are then written into the Ethernet MAC of time stamp board 404. The MAC waits for the Ethernet Network to become available, and then sends the data through a time stamp controller to an Ethernet PHY. When a video network packet is detected by the time stamp controller, a time stamp is added to that packet. The time stamp T2 is a sample of a counter in the time stamp controller that is clocked by a clock in server 202. In server 202, the clock source for the time stamp controller is a VCXO in PCI DBS tuner 402.
Second, PCI DBS tuner 402 filters the packets of the transport stream. Tuner controller 506 contains logic to filter out only the transport packets requested by host controller 406. The transport packets are then stored in FIFO buffer 512. Host controller 506 can then read the packets out of FIFO buffer 512 via PCI bus interface 405. In order to facilitate the PCI bus interface, a PCI bridge chip 508 is used.
Additionally, time stamps T1 can be added to each transport packet using the system clock from VCXO 510. Time stamp T1 is based on a sample of the local counter at the moment the packet is received at tuner 402.
The elements of network client 204 are shown in
Client controller 608 is responsible for executing a clock recovery algorithm. The data frame departure times T2 from server 202, adjusted by the clock adjustment factor, are compared to the arrival times T3 at client 204. In this manner, client controller 608 can determine whether decoder VCXO 812 is faster or slower than the headend clock. Client controller 608 sends commands to decoder controller 810 to speed up or slow down decoder VCXO 812 through a low speed serial (RS-232) connection.
The time stamp board of the client device is similar to the time stamp board of the server device except that the recovered clock source in the client device is derived from the clock of decoder 606.
The elements of transport formatter 604 are shown in
Transport formatter controller 704 has two modes of operation. The first is flow control mode in which transport packets are forwarded to decoder 606 according to the optional time stamps added by tuner controller 506 of PCI DBS tuner 402. In this manner, the relative transport packet departure times from transport formatter 604 match the transport packet arrival times at tuner controller 506. This has the effect of making the packet timing at the input of decoder 606 appear to be connected directly to tuner 502 and demodulator 504 of PCI DBS tuner 402.
The second mode of operation allows the data to flow immediately from transport formatter controller 704 to decoder 606. In this mode, decoder 606 is required to buffer the data internally. This requires decoder 606 to contain more memory than the first mode.
Data arrives from transport formatter 604 into high speed serial interface 802 of decoder 606. Transport processor 804 sorts the incoming transport packets and puts them into the correct buffer (video, audio, program guide, other data, etc.). The video and audio data are decompressed in the video/audio decoder 806. After that, decompressed digital data is converted to analog NTSC signals via NTSC encoder/audio DAC 808.
The time stamping board used in implementing the present time stamping method is now further described. Although, described with reference to the time stamping board associated with server 202, as noted above, the time stamping board associated with client 204 is similar. Time stamping board 404 is a PCI Ethernet NIC that can support both 10 Mb/s and 100 Mb/s data rates. It is capable of resetting the UDP check sum and placing 32-bit time stamps in the data frames, as well as recalculating the CRC for the designated data frames. The external interfaces allow board 404 to be integrated into PC PCI or embedded PCI architectures. An external clock interface is provided to generate time stamp values.
Time stamp controller 916 is coupled to configuration device 918, which stores and loads the program to operate time stamp controller 916. Time stamp controller 916 is also coupled to Ethernet MAC unit 914, which is a LAN controller for both 10 Mb/s and 100 Mb/s data rates. Ethernet MAC 914 provides a direct interface to the peripheral component interconnect (PCI) local bus or the CardBus.
Time stamp controller 916 provides the MII interfaces to the PHY and the MAC. As shown in
As shown in
Calculate new CRC module 1106 calculates the CRC check sum for the modified data stream (Ethernet packet which has time stamp and reset UDP check sum), this new CRC will be placed into the modified data stream before it arrives at the MAC. The difference of receiver unit 1002 to transmitter unit 1004 is that receiver unit 1002 included verify CRC module 1110. It is necessary to verify the CRC on packets that are received, due to the fact that this data may have been corrupted on the medium. If the CRC is not correct, this indicates that the data has indeed become corrupted. Instead of adding a new, correct CRC to the data, the data is allowed to pass through to the MAC with an incorrect CRC.
Controller 1102 synchronizes and controls the operations of all modules and components. Two clocks are used: a receive clock and an external system clock. The time stamp is generated by the external clock and latched into the receive clock domain at the start of every packet. Data is received from the PHY and the appropriate data (receive data, reset UDP check sum, time stamp, new CRC) is transmitted to the MAC in accordance with IEEE 802.3.
When the data is received, the time stamp T3 is placed in the appropriate area and a new CRC is calculated and replaces the old CRC value in the MAC layer. Again, a significant aspect of the present invention is that the time stamps and the CRC are generated and placed in the data frames at the physical layer as the data frame is received from the network. As such, the time stamps and the CRC, which reflect the actual time the data frames are received from the network, are quickly and efficiently placed in the data frames as they move to the MAC layer. If at any point of the packet interrogation it is determined that the data frame is not a valid time stamp frame or there are errors while receiving, the data frame is allowed to pass through with no alterations to the data.
As shown in
While this invention has been described as having a preferred design, the present invention can be further modified within the spirit and scope of this disclosure. For example, the time stamping features may be implemented in other asynchronous networks, including, but not limited to, HPNA, PLC, and certain wireless networks, for example IEEE 802.11b. This application is therefore intended to cover any variations, uses, or adaptations of the invention using its general principles. Further, this application is intended to cover such departures from the present disclosure as come within known or customary practice in the art to which this invention pertains and which fall within the limits of the appended claims.
This application claims the benefit under 35 U.S.C. § 365 of International Application PCT/US01/20748, filed Jun. 29, 2001, which was published in accordance with PCT Article 21(2) on Jan. 31, 2002 in English; and which claims benefit of U.S. provisional application Ser. No. 60/220,940 filed Jul. 26, 2000.
| Filing Document | Filing Date | Country | Kind | 371c Date |
|---|---|---|---|---|
| PCT/US01/20748 | 6/29/2001 | WO | 00 | 1/16/2003 |
| Publishing Document | Publishing Date | Country | Kind |
|---|---|---|---|
| WO02/09351 | 1/31/2002 | WO | A |
| Number | Name | Date | Kind |
|---|---|---|---|
| 5150363 | Mitchell | Sep 1992 | A |
| 5467137 | Zdepski | Nov 1995 | A |
| 5602992 | Danneels | Feb 1997 | A |
| 5822317 | Shibata | Oct 1998 | A |
| 5867488 | Derango et al. | Feb 1999 | A |
| 5907685 | Douceur | May 1999 | A |
| 6069902 | Kurano et al. | May 2000 | A |
| 6434116 | Ott | Aug 2002 | B1 |
| 6449291 | Burns et al. | Sep 2002 | B1 |
| 6700876 | DiNicola et al. | Mar 2004 | B1 |
| 20010022823 | Renaud | Sep 2001 | A1 |
| 20010030978 | Holloway et al. | Oct 2001 | A1 |
| 20020131398 | Taylor | Sep 2002 | A1 |
| 20040090994 | Lockridge et al. | May 2004 | A1 |
| Number | Date | Country | |
|---|---|---|---|
| 20040010729 A1 | Jan 2004 | US |
| Number | Date | Country | |
|---|---|---|---|
| 60220940 | Jul 2000 | US |