N/A
N/A
The present invention relates generally to digital communications systems, and more specifically to digital communications systems in which digital signals are asynchronously mapped/de-mapped from one clock domain to another.
Digital communications systems are known that can transport one or more digital signals, e.g., data frames, across multiple clock domains. A conventional digital communications system having such a capability includes a first communications network operating at a first clock rate connected to a second communications network operating at a second clock rate, in which the first clock signal is asynchronous to the second clock signal. The conventional digital communications system further includes a mechanism configured to compensate for the timing differences between the first and second clock signals when transporting the data frames between the first and second clock domains.
In the conventional digital communications system, the timing compensation mechanism typically includes a First-In First-Out (FIFO) buffer, in which digital information comprising incoming data frames can be written into the FIFO buffer at the first clock rate, and digital information comprising outgoing data frames can subsequently be read out of the FIFO buffer at the second clock rate. In the event the rate at which the digital information is written into the FIFO buffer exceeds a first threshold value, the timing compensation mechanism performs at least one negative justification to allow more space in the outgoing data frames for the information. In the event the rate at which the digital information is read out of the FIFO buffer exceeds a second threshold value, the timing compensation mechanism performs at least one positive justification to allow less space in the outgoing data frames for the information. Such negative and positive justifications are typically performed by removing and inserting, respectively, one or more “stuff” bits from/into the data frames. In this way, data frames can be asynchronously mapped from one clock domain to another.
One drawback of the above-described timing compensation mechanism is that sufficient resolution often cannot be achieved using the FIFO buffer. For example, the FIFO buffer may be configured as a 32×16 byte FIFO buffer to provide a resolution of 16 bytes. This means that when removing or inserting stuff bits from/into the data frames based on whether the rate at which digital information is written into/read out of the FIFO buffer is outside the limits set by the first and second threshold values, the “de-stuffing” and “stuffing” operations would typically have to be performed 16 bytes at a time. However, performing de-stuffing and stuffing operations at such a relatively low byte resolution can unduly complicate the asynchronous mapping of the data frames. In addition, variations in the instantaneous rate of the data frames caused by the interspersing of the stuff bits frequently causes mapping jitter to be introduced into the communications system.
Another approach to implementing the above-described timing compensation mechanism is to employ a circular buffer such as a barrel shifter in place of the FIFO buffer. Like the FIFO buffer, digital information comprising incoming data frames is written into the circular buffer at the first clock rate and subsequently read out of the buffer at the second clock rate. Further, stuffing and de-stuffing operations are performed as needed for asynchronously mapping the data frames from the first clock domain to the second clock domain. Moreover, whereas the exemplary FIFO buffer described above provides 16-byte resolution when performing the stuffing and de-stuffing operations, the circular buffer can be configured to provide an increased resolution of up to 1 byte or higher.
However, the timing compensation mechanism including the circular buffer also has drawbacks. For example, in order to match the size of the above-described 32×16 byte FIFO buffer, the circular buffer would have to be configured to store 512 bytes. Further, a significant amount of control logic would typically be required to control the shifting of the data frame bytes through the 512-byte circular buffer. This can be problematic when implementing the circular buffer on an Application Specific Integrated Circuit (ASIC) because such an implementation would normally entail the use of a relatively large number of custom gates, which can increase the die size and lead to increased manufacturing costs. In addition, like the timing compensation mechanism that includes the FIFO buffer, the mechanism including the circular buffer frequently causes mapping jitter to be introduced into the communications system.
It would therefore be desirable to have a digital communications system that has the capability of asynchronously mapping/de-mapping digital signals from one clock domain to another while reducing the level of mapping jitter introduced into the system. It would also be desirable to have such a digital communications system in which the asynchronous mapping/de-mapping capability can be implemented on one or more ASICs with a reduced number of gates.
In accordance with the present invention, a digital communications system is provided that can asynchronously map/de-map digital signals from one clock domain to another, while reducing mapping jitter levels and permitting higher levels of integration. In one embodiment, the digital communications system comprises an asynchronous stuff bit insertion circuit, an asynchronous stuff bit removal circuit, and a communications network connected between the asynchronous stuff bit insertion and removal circuits. The asynchronous stuff bit insertion circuit is configured for asynchronously mapping one or more data frames from a first clock domain to the clock domain of the network. Further, the asynchronous stuff bit removal circuit is configured for asynchronously de-mapping the data frames from the clock domain of the network to the first clock domain.
In the presently disclosed embodiment, the asynchronous stuff bit insertion circuit includes a first elastic store, and a barrel shifter coupled to the first elastic store. The first elastic store operates as a temporary gross data frame storage, while the barrel shifter operates as a temporary fine data frame storage. The first elastic store is configured to receive a predetermined number of bytes of each data frame at a time. The first elastic store is further configured for temporarily storing a predetermined number of data words, each word having a width equal to the predetermined number of data frame bytes received by the elastic store. The barrel shifter is configured for successively receiving the predetermined number of data frame bytes from the first elastic store, and successively providing the predetermined number of data frame bytes to a stuffing circuit, which is communicatively connected to the communications network. Read and write pointers associated with the barrel shifter are periodically monitored, and in the event the read pointer is within a specified number of locations from the write pointer, the first elastic store is directed to provide the predetermined number of data frame bytes to the barrel shifter. The stuffing circuit is configured to make stuffing decisions based on the periodic measurements of the time delay through the first elastic store and the barrel shifter. In this way, data frames can be asynchronously mapped from the first clock domain to the clock domain of the network.
The asynchronous stuff bit removal circuit includes a de-stuffing circuit for receiving the data frame bytes from the communications network, a first divider circuit coupled to the de-stuffing circuit, a second divider circuit, a second elastic store coupled between the first and second divider circuits, and a frequency control path connecting respective clock inputs of the first and second divider circuits. The clock inputs of the de-stuffing circuit and the first divider circuit are in the clock domain of the network, and the clock input of the second divider circuit is in the above-described first clock domain. The frequency control path includes a phase-locked loop having a variable divider circuit, the operation of which is controlled based on the presence/absence of stuff bits in the data frame bytes provided to the de-stuffing circuit by the network. The asynchronous stuff bit removal circuit is configured for de-stuffing the data frame bytes, and re-covering the clock signal of the first clock domain. In this way, data frames can be asynchronously de-mapped from the clock domain of the communications network to the first clock domain.
By employing the first elastic store for temporary gross data frame storage and the barrel shifter for temporary fine data frame storage to reduce the number of gates in the asynchronous stuff bit insertion circuit, integration levels are increased. Further, by employing the frequency control path in the asynchronous stuff bit removal circuit to recover the clock signal of the first clock domain, mapping jitter levels in the digital communications system are reduced.
Other features, functions, and aspects of the invention will be evident from the Detailed Description of the Invention that follows.
The invention will be more fully understood with reference to the following Detailed Description of the Invention in conjunction with the drawings of which:
a–5b depict a flow diagram of a method of operating the digital communications system of
A digital communications system is disclosed that has the capability of asynchronously mapping/de-mapping digital signals from one clock domain to another. In the presently disclosed system, the asynchronous mapping capability is provided by an asynchronous stuff bit insertion circuit, which includes an elastic store for temporary gross data frame storage and a barrel shifter for temporary fine data frame storage. Use of the elastic store in combination with the barrel shifter allows increased levels of integration in the asynchronous stuff bit insertion circuit. Further, the asynchronous de-mapping capability is provided by an asynchronous stuff bit removal circuit, which includes a frequency control path that allows mapping jitter levels in the system to be reduced.
For example, the clock domain A may comprise one or more communications networks conforming to the Synchronous Digital Hierarchy (SDH) standard, as specified in the final or most recent published drafts of CCITT/ITU-TS G.707, G.781–G.783, and G.803, which are incorporated herein by reference. Further, the clock domain B may comprise one or more communications networks conforming to the Optical Transport Hierarchy (OTH) standard, as specified in the CCITT Recommendations G.709, October 2001, which is incorporated herein by reference. It should be understood, however, that the respective clock domains A and B may comprise any suitable network(s), in which asynchronous mapping/de-mapping can be employed to transport data frames across the clock domain boundaries. In the presently disclosed embodiment, the clock domain A comprises the SDH clock domain, and the clock domain B comprises the OTH clock domain, for purposes of illustration.
As shown in
Next, the asynchronous stuff bit insertion circuit 102 provides the data B and the clock B to the communications network 104 for subsequent transmission therethrough. As described above, the clock domain B includes the network 104, which conforms to the OTH standard in this illustrative embodiment. The network 104 then provides the data B and the clock B to the asynchronous stuff bit removal circuit 106, which is configured for asynchronously de-mapping the data B from the OTH clock domain B to the reduced bandwidth of the SDH clock domain A by removing the stuff bits from the data B, thereby re-generating the data A. The asynchronous stuff bit removal circuit 106 is further configured to recover the clock A from the clock B.
Accordingly, in the presently disclosed embodiment, the MUX 202 successively receives two (2) bytes (i.e., 16 bits) of the data A at a time, in parallel, at the clock rate A. Further, the divide-by-8 circuit 204 provides three (3) binary outputs on lines 224 to corresponding select inputs of the MUX 202. The three binary outputs of the divide-by-8 circuit 204 count from 0 (i.e., 000) to 7 (i.e., 111) at the clock rate A, thereby periodically causing the MUX 202 to provide eight (8) successive pairs of bytes (i.e., 16 bytes), in parallel, of the data A to the elastic store 206.
As shown in
Accordingly, the write counter 208 provides five (5) binary outputs on lines 228 to corresponding write address inputs of the elastic store 206. The five binary outputs of the write counter 208 count from 0 (i.e., 00000) to 31 (i.e., 11111) at the clock rate A/8, thereby causing the elastic store 206 to write successive groups of 16 bytes of the data A, provided by the MUX 202, to corresponding ones of the 32 storage locations included therein. In the presently disclosed embodiment, the elastic store 206 has a total capacity of 32×16 bytes.
Further, the read counter 210 provides five (5) binary outputs on lines 230 to corresponding read address inputs of the elastic store 206. Like the write counter 208, the five binary outputs of the read counter 210 count from 0 (i.e., 00000) to 31 (i.e., 11111), thereby causing the elastic store 206 to read successive groups of 16 bytes of the data A from corresponding storage locations in the elastic store 206, and to provide the 16 bytes, in parallel, to the barrel shifter 218. It is noted that the elastic store 206 is configured for successively receiving the 16 bytes from the MUX 202, and for providing the 16 bytes to the barrel shifter 218, on a first-in first-out basis. The elastic store 206 therefore operates as a First-In First-Out (FIFO) buffer.
The write control 218 provides a 6-bit write pointer on lines 232 to corresponding write address inputs of the barrel shifter 218, and the read control 220 provides a 6-bit read pointer on lines 238 to corresponding read address inputs of the barrel shifter, at the clock rate A/8. In the presently disclosed embodiment, the barrel shifter 218 has a total capacity of 64 bytes. Accordingly,
The asynchronous stuff bit insertion circuit 102 is operative to determine whether the barrel shifter 218 reads the 16 bytes of the data A from the elastic store 206 to the corresponding storage location of the barrel shifter 218 by monitoring the write and read pointer values provided by the write and read controls 218 and 220, respectively. In the presently disclosed embodiment, in the event the values of the write and read pointers get too close, e.g., within 16 bytes, the barrel shifter 218 reads the 16 bytes provided by the elastic store 206. Specifically, the read control logic 212 monitors the write and read pointer values provided by the respective write and read controls 218 and 220, and in the event the read control logic 212 determines that the write and read pointer values are within, e.g., 16 bytes of each other, the read control logic 212 sends a control signal to the read counter 210, thereby causing the elastic store 206 to provide the 16 bytes of the data A corresponding to the value at its read address inputs to the barrel shifter 218.
It is noted that the re-center control logic 214 is configured to put the current address and pointer values of the elastic store 206 and the barrel shifter 218, respectively, into known states, thereby preventing the elastic store 206 and the barrel shifter 218 from straying too far away from the center of the respective buffers. In the presently disclosed embodiment, the re-center control logic 214 performs the re-center operation each time a “frame sync” is generated by a user (e.g., a human operator or a computer process) of the digital communications system 100 (see
As shown in
The stuffing circuit 222 asynchronously maps the data A from the SDH clock domain A to the OTH clock domain B (see
Time_Delay1=Write_Address (W8,W7,W6,W5,W4,W3,W2,W1,W0)−Read_Address (R8,R7,R6,R5,R4,R3,R2,R1,R0), (1)
in which the Least Significant Bit (LSB) “W0” is set to zero, the bits “W1–W3” correspond to the binary outputs of the divide-by-8 circuit 204 on the lines 224, the bits “W4–W8” correspond to the binary outputs of the write counter 208 on the lines 228, the bits “R0–R3” are set to zero, and the bits “R4–R8” correspond to the binary outputs of the read counter 210 on the lines 230.
Moreover, the time delay through the barrel shifter 218 may be represented as:
Time_Delay2=Write_Ptr (BW5,BW4,BW3,BW2,BW1,BW0)−Read_Ptr (BR5,BR4,BR3,BR2,BR1,BR0), (2)
in which the bits “BW0–BW5” correspond to the binary outputs of the write control 218 on the lines 232, and the bits “BR0–BR5” correspond to the binary outputs of the read control 220 on the lines 238. The total time delay through the elastic store 206 and the barrel shifter 218 may therefore be represented as:
Total_Delay=Time_Delay1+Time_Delay2, (3)
in which “Time_Delay1” and “Time_Delay2” are defined as in equations 1 and 2 above.
Accordingly, in the event the stuffing circuit 222 determines that the total delay through the elastic store 206 and the barrel shifter 218 exceeds a predetermined “high” threshold value, i.e.,
Total_Delay>High_Threshold, (4)
data is being read at too slow a rate, and therefore the stuffing circuit 222 performs a negative stuff operation on the current data frame A. In the event the stuffing circuit 222 determines that the total delay through the elastic store 206 and the barrel shifter 218 is below a predetermined “low” threshold value, i.e.,
Total_Delay<Low_Threshold, (5)
data is being read at too fast a rate, and therefore the stuffing circuit 222 performs a positive stuff operation on the current data frame A. It is noted that even though the exemplary elastic store 206 is 16 bytes wide, employing the binary outputs provided by the divide-by-8 counter 204 on the lines 224 when determining the time delay, Time_Delay1, through the elastic store 206 makes it possible to achieve 2-byte accuracy.
The stuffing algorithm employed by the stuffing circuit 222 for determining whether to perform a negative stuff operation, a positive stuff operation, or no stuff operation on the current data frame A will be better understood with reference to the following TABLES 1–2:
in which “HT” indicates that the Total_Delay (see equation 3) has crossed the High_Threshold, “LT” indicates that the Total_Delay (see equation 3) has crossed the Low_Threshold, “JC” is the Justification Control signal, “NJO” is the Negative Justification Opportunity byte, and “PJO” is the Positive Justification Opportunity byte.
There are therefore three valid states, and one invalid state, in the above-described stuffing algorithm. Specifically, the first valid state is the “No Stuff” state, in which the total delay (Total_Delay; see equation 3) through the elastic store 206 and the barrel shifter 218 crosses neither the predetermined high threshold value nor the predetermined low threshold value (HT=0, LT=0; see TABLE 2). Accordingly, when the stuffing algorithm is in the No Stuff state, the stuffing circuit 222 performs no stuff operation on the current data frame A (JC=00, NJO=No Data, PJO=Data; see TABLE 1).
The second valid state is the “Negative Stuff” state, in which the Total_Delay value (see equation 3) crosses the predetermined high threshold value (HT=1, LT=0; see TABLE 2). Accordingly, when the stuffing algorithm is in the Negative Stuff state, the stuffing circuit 222 performs a negative stuff operation on the current data frame A (JC=01, NJO=Data, PJO=Data).
The third valid state is the “Positive Stuff” state, in which the Total_Delay value (see equation 3) crosses the predetermined low threshold value (LT=1, HT=0; see TABLE 2). Accordingly, when the stuffing algorithm is in the Positive Stuff state, the stuffing circuit 222 performs a positive stuff operation on the current data frame A (JC=11, NJO=No Data, PJO=No Data; see TABLE 1).
It is noted that the invalid state (LT=1, HT=1, JC=10; see TABLE 2) is not generated by the stuffing algorithm because the Total_Delay value (see equation 3) cannot cross both of the predetermined low and high threshold values in the same data frame. The stuffing circuit 222 then provides the 16 bytes of the data B to the communications network 104 (see
Specifically, the OPUk frame structure 400 has four rows and 3824 columns of bytes including a plurality of OPUk payload bytes disposed in columns 17–3824, and a plurality of OPUk overhead (OH) bytes disposed in columns 15–16. As shown in
Accordingly, the stuffing circuit 222 (see
Specifically, the divide-by-8 counter 302 receives 16 bits of the data B, and the clock B, from the communications network 104 (see
The divide-by-15 circuit 304 receives the clock B, and provides a clock signal B/15 (the “clock B/15”) on a line 322 to the PLL 301, particularly, the phase detector 306. The clock B/15 has a frequency equal to the clock rate B divided by 15 (i.e., about 45 MHz).
The frequency control path comprising the divide-by-15 counter 304 and the PLL 301 is configured for recovering the clock A from the clock B. Further, the divide-by-8 circuit 314 is configured to employ the recovered clock A for completing the asynchronous de-mapping of the data frames from the clock domain B to the clock domain A. In the presently disclosed embodiment, the asynchronous stuff bit removal circuit 106 recovers the clock A and de-maps the data frames A by a frequency synthesis technique that controls the divide-by-14/13/12 circuit 312 based on the presence/absence of stuff bytes in the data B. Specifically, the divide-by-14/13/12 circuit 312 is controlled to divide by 14 with the following two exceptions: (1) every 17th reset of the divide-by-8 circuit 204, the write counter 208, and the read control 220 (see
The operation of the frequency control path of the asynchronous stuff bit removal circuit 106 (see
Accordingly, in the event the stuffing circuit 222 (see
In the event the stuffing circuit 222 performs a Positive Stuff action (see TABLE 3) on every data frame, the input frequency to the PLL 301 is off one byte every 237×4×16 (i.e., 15168) bytes. The frequency at the output of the PLL 301 is therefore 15167/15168×622 MHz, and the PLL 301 has to multiply by (237/255)×(15167/15168). Because the divide-by-15 circuit 304 is at the input of the frequency control path, the divide-by-14/13/12 circuit 312 is controlled to provide a Divide-By ratio of
(237/17)×(15167/15168)=15167/1088=14−(1/17)−(1/1088). (6)
In general, if we divide by N−1 every M cycles, divide by N−2 every M×P cycles, and divide by N the rest of the time, then the effective Divide-By ratio is N−(1/M)−(1/MP). In this analysis, N=14, M=17, and P=64.
To verify the Divide-By algorithm for the No Stuff action (NJO=No Data, PJO=Data; see TABLE 3), it is assumed that the incoming data rate is (255/237)×16×622 MHz, and the incoming data frame time is (Frame Size)/(Rate), or
4080×4×8×(237/255)/(16×622 MHz)=12.2 μs. (7)
Further, the number of input pulses at the phase detector 306 per frame is (Frame Size)/16/(Divide Ratio), or
4080×4×8/16/15=544. (8)
Now, consider the number of output pulses at the phase detector 306 per frame. First, we take the No Stuff case, in which the output is divided by 14 or 13. Accordingly, the outgoing data rate is 16×622 MHz (i.e., OC-192), the outgoing time for one data frame is
(237×16×4×8)/OC−192=12.2 μs, (9)
the number of output pulses at the phase detector 306 per frame is (Rate/16)×Time/(Divide Ratio), and the Divide Ratio is (16×14+13/17)=237/17. This means that there are 17 output pulses for (16×14+13)=237 input pulses. Accordingly, the number of output pulses at the phase detector 306 per frame is
(OC−192/16)×(237×16×4×8)/OC−192/(237/17)=4×8×17=544, (10)
which is equal to the number of input pulses at the phase detector 306 per frame (see equation 8). The Divide-By algorithm for the No Stuff action (see TABLE 3) is therefore successfully verified.
To verify the Divide-By algorithm for the case in which the Positive Stuff action (NJO=PJO=No Data; see TABLE 3) is performed every fourth frame, it is assumed that the reference frequency at the phase detector 306 input is nominal. The input frequency to the PLL 301 is therefore off one byte every 237×4×16×4 bytes or 16.5 ppm. This means that the output frequency is lower than expected. For example, if the frequency at the input of the phase detector 306 is 15167.75/15168×(OC−192), then the frequency at the output is 15167.75/15168×(OC−192). Because the Positive Stuff action is being performed once in four frames, the Divide-By ratio is 4×17×64 output pulses for
3×((16×14+13)×63+(16×14+13))+(16×14+13)×63+(16×14+12)
input pulses, i.e., 4352 output pulses for 60671 input pulses, or a Divide-By ratio of 60671/4352. The number of output pulses at the phase detector 306 per frame is
which is equal to the number of input pulses at the phase detector 306 per frame (see equation 8). The Divide-By algorithm for the Positive Stuff action (see TABLE 3) is therefore successfully verified.
In the above analysis, there are 544 pulses per frame at the phase detector 306 (see
Rate/16×(Frame Time)=OC−192/16×4080×4×8×237/255/OC−192=7584 (12)
pulses at the output of the PLL 301. Further, one Positive Stuff action corresponds to a frequency change of 15167/15168, or
15167/15168×7584=7583.5 (13)
pulses at the PLL 301 output. Accordingly, for this analysis, two Positive Stuff actions are needed before changing the variable divide-by-14/13/12 circuit 312.
As shown in
A method of operating the digital communications system for asynchronously mapping/de-mapping data frames across the boundaries of the clock domains A and B using the above-described stuffing and divide-by algorithms (see TABLES 2–3) is illustrated by reference to
It will further be appreciated by those of ordinary skill in the art that modifications to and variations of the above-described asynchronous stuffing insertion and de-stuffing removal circuit may be made without departing from the inventive concepts disclosed herein. Accordingly, the invention should not be viewed as limited except as by the scope and spirit of the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
4596026 | Cease et al. | Jun 1986 | A |
5268936 | Bernardy | Dec 1993 | A |
5359727 | Kurita et al. | Oct 1994 | A |
5461380 | Peters et al. | Oct 1995 | A |
5497405 | Elliott et al. | Mar 1996 | A |
5548534 | Upp | Aug 1996 | A |
5737373 | Sato et al. | Apr 1998 | A |
5757871 | Furukawa et al. | May 1998 | A |
5835543 | Mazzurco et al. | Nov 1998 | A |
6172626 | McDonnell et al. | Jan 2001 | B1 |
6266385 | Roy et al. | Jul 2001 | B1 |
6272574 | Hamada | Aug 2001 | B1 |
6289067 | Nguyen et al. | Sep 2001 | B1 |
6463111 | Upp | Oct 2002 | B1 |
6658074 | Murakami | Dec 2003 | B1 |
6819725 | Oliver et al. | Nov 2004 | B1 |
20060029174 | Blake | Feb 2006 | A1 |
Number | Date | Country | |
---|---|---|---|
20040042474 A1 | Mar 2004 | US |