Enhanced B3ZS decoder and method for identifying true zero-substitutions
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates generally to bi-polar data decoding/encoding and, more particularly, to a B3ZS decoder which is capable of identifying true zero-substitution patterns and recognizing certain corrupted zero substitution patterns. 
     2. Description of Related Art 
     Bipolar coding is a form of ternary coding in which a binary signal is encoded by alternating the sense (positive/negative) of the logical &#34;ones&#34; of the binary signal. Thus binary &#34;zero&#34; bits are represented as the absence of a pulse, but binary &#34;one&#34; bits are represented by either positive or negative pulses (e.g., +/-3 Volts), the polarity being changed at every successive occurrence of a &#34;one&#34; bit. Since the coding only changes the polarity of logic ones, signalling rate remains unchanged. 
     The alternation of polarity provides a simple way of in-service performance monitoring. That is, since the polarity of the &#34;ones&#34; is alternated at each consecutive &#34;one&#34; bit, any isolated error, whether deletion or addition of a pulse, causes a violation of the alternating polarity. Such a violation is called a bipolar violation (BPV). Therefore, a monitoring system can detect an error whenever two consecutive &#34;ones&#34; have the same polarity (e.g., two consecutive +3 volts). 
     In addition to communicating the data, the received signal is also used by the receiving station to generate a clock signal for synchronization. The received signal is sent to a clock circuit which generates clock pulses by sensing the signal&#39;s level changes. However, since the clock signal is generated based on level changes, its accuracy may be effected when the received signal contains a long string of zeros. 
     In order to avoid transmission of strings of zeros, line coding methods are used which replace long strings of zeros with a sequence of symbols forming a substituted word. One such family of codes is known as bipolar with N-zero substitution (BNZS). For example, the B6ZS code allows strings of up to five zeros, but replaces strings of six zeros with a specific word. The definitions of various BNZS codes can be found in ANSI® T1.102-1993, Revision of ANSI® T1.102-1987. 
     A fundamental requirement for the substituted word is that it must have some characteristic which allows it to be easily and reliably identified, so that it can eventually be removed and replaced by the original string of zeros. The characteristic property used in BNZS coding is the occurrence of multiple BPVs. That is, the strings of zeros is replaced with a word which induces several BPVs. Since the probability of occurrence of more than one BPV in a block of N pulses is small, when such a multiple violation is detected, it may be safely assumed to be a substitution sequence by the BNZS decoder and the word can be replaced with the appropriate string of zeros. 
     The B8ZS line coding is currently used, for example, for DS1 and DS1C telecommunication channels, and the B6ZS for DS2 telecommunication channels. The B6ZS replaces a string of six zeros with a word which creates multiple BPVs, but allows strings of up to five zeros. Similarly, the B8ZS replaces a string of eight zeros with a word which creates multiple BPVs, but allows strings of up to seven zeros. However, in time synchronization sensitive systems, strings of five zeros may be problematic. Therefore, for such systems it is preferable to use a B3ZS coding. That is, to ensure accurate synchronization, no more than two consecutive zeros are allowed in such systems. 
     Although the B3ZS provides higher density of 1&#39;s by allowing strings of no more than two zeros, it does not support multiple BPVs in a single replacement word. That is, the string of three zeros is replaced by a word which induces only one violation. Thus, typical B3ZS decoders identify three-zero-substitution patterns by detecting the occurrence of any single BPV, regardless of their context. For example, the RC-28D B3ZS decoder designed by NEC-Japan searches for xxV and substitutes 0×0 (x being either a one or a zero and V being a logical one of the same polarity as the previous logical one). The Wandell &amp; Goltermann design (WG-PF5) searches for x0V and substitutes 000 (Wandell &amp; Goltermann, Description and Operating Manual, PF-5, BN2110, Edition 4021/11.90). 
     In error-free environments, reliance on a single BPV presents no problem, as every occurrence of a BPV is used as the indication of a substitution pattern. In real environments, however, where errors occur with a statistical probability that is non-zero, error-multiplication results, where the number of errors leaving the B3ZS decoder is greater than the number of errors it receives. As stated above, any isolated error, whether addition or deletion of a &#34;one&#34; bit, causes a BPV. Accordingly, the above-mentioned B3ZS decoders will identify the BPV associated with the isolated error as an indication of a substitution pattern and will substitute two or three zeros. Consequentially, downstream equipment receive a degraded signal. Moreover, downstream circuits that must synchronize on the decoded signal (e.g., demultiplexers, VMRs) can lose synchronization sooner and take longer to resynchronize, disrupting communication channels for longer periods of time. 
     SUMMARY OF THE INVENTION 
     The enhanced B3ZS decoder and method of the present invention provides a more accurate detection of true and corrupted zero-substitutions, to allow the system to ignore certain error-related BPVs. Thus the enhanced B3ZS decoder and method of the present invention is capable of restoring corrupted zero substitutions and minimizes erroneous substitution of zeros for certain error-related BPVs. 
     According to an embodiment of the invention, a string of four bits is examined to detect whether it satisfies two specific criteria. When these criteria are met, the appropriate bits are set to zero, effectively replacing the identified pattern with the original three-zero pattern. The first criterion is that every valid zero-substitution pattern is immediately preceded by a &#34;one&#34; bit (pulse). Thus, when a zero substitution pattern is identified to be immediately preceded by a &#34;1,&#34; it is determined to be a true zero substitution pattern. It should be noted, however, that the immediately preceding one bit may be a part of a preceding zero substitution pattern rather than a &#34;signal&#34; one bit. 
     The second criterion is that successive zero-substitution BPVs will be of opposite polarity. Thus, the string is examined to detect the specific occurrences of successive same-polarity BPVs. Such an occurrence would signify a zero-substitution pattern that has been corrupted by a random isolated bit error, and the string could be reconstructed. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIGS. 1a-1d are examples of B3ZS signals and of corrupted B3ZS signals, which an enhanced B3ZS decoder according to the present invention is capable of identifying. 
     FIG. 2 is a circuit diagram of an enhanced B3ZS decoder according to an embodiment of the present invention. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     A system for recovering a digital data stream from a bipolar B3ZS encoded signal generally comprises two main parts. A bipolar-to-unipolar and clock recovery circuit receives the bipolar B3ZS signal as an input, and outputs a positive data rail, a negative data rail, and an extracted clock signal as digital signals. The positive and negative data rails and the extracted clock are input to a B3ZS decoder, which resubstitutes appropriate strings of zeros and outputs recovered Non-return to Zero (NRZ) data. 
     The enhanced B3ZS decoder of the present invention uses the multiple criteria described above to identify the true zero-substitution patterns, while ignoring certain false zero-substitution patterns caused by random channel errors. In addition, the enhanced B3ZS decoder of the present invention uses these criteria to identify corrupted zero-substitution patterns. When these criteria are met, the appropriate bits are set to zero, effectively replacing the identified pattern with the original three-zero pattern. 
     In a particular embodiment of the present invention, four sequential bits are examined to include both the zero-substitution pattern and the required preceding &#34;one&#34; symbol. If both requirements are satisfied, it may be determined that a valid zero-substitution pattern has been detected. Another particular feature of the present invention relates to comparing successive BPVs for opposite polarity. In order to preserve the DC balance characteristics of the bipolar code, subsequent substituted words must also be DC balanced. Thus, successive substituted BPVs are of opposite polarity. For example, an unencoded 10001000 may be coded as either 1001-100-1 or 1-10-11001, the first substitution being a 100V100V and the second being a 1B0V100V. When a violation of this property is detected, it may be concluded that a valid zero-substitution pattern has been corrupted by random isolated bit errors. 
     The zero-substitution patterns that are identified by the enhanced B3ZS according to the present invention are as follows: 
     
         ______________________________________                                    
Found Pattern                                                             
           Action   Explanation                                           
______________________________________                                    
100V       xxx0     A valid 00V substitution pattern                      
1B0V       x0x0     A valid B0V substitution pattern                      
1V0V       x0x0     A corrupted 00V                                       
1BVV       x000     A corrupted B0V                                       
10VV       xx00     A corrupted B0V0 or 100V                              
______________________________________                                    
 
    
     Where: 
     1=Any &#34;one&#34; symbol (+or-); 
     B=A &#34;one&#34; symbol of opposite polarity as the previous &#34;one&#34; symbol; 
     V=A &#34;one&#34; symbol of the same polarity as the previous &#34;one&#34; symbol; 
     0=A &#34;zero&#34; symbol; and 
     x=No action taken on this bit. 
     FIGS. 1a-1d provide graphical representation of the identifiable patterns listed in the first four rows of the above table. For example, FIGS. 1a and 1b show an uncorrupted 100V and 1B0V, respectively. That is, in both 1a and 1b, the transmitted pattern is received as transmitted. On the other hand, examples of corrupted substitutions are shown in FIGS. 1c and 1d. In FIG. 1c, a string of three zeros was replaced by a 00V pattern. However, through random error in the line, a bit referenced by numeral 1 has been changed to a logical one, thereby changing the received pattern to a V0V. Since this pattern introduces two BPVs of the same polarity, an enhanced B3ZS decoder according to the present invention would recognize this pattern to be a corrupted valid substitution. Similarly, FIG. 1d shows an example of a corrupted B0V substitution. In the example shown in FIG. 1d, the bit referenced by numeral 2 has been changed by random error from zero to negative one. Again, such an error introduces two successive BPV of the same polarity. Thus, an enhanced B3ZS according to the present invention would identify such a pattern as being a corrupted substitution. The fifth row of Table 1 shows two possible variations on the above examples. 
     One particular example of an enhanced decoder according to the present invention is shown in FIG. 2. With reference to FIG. 2, the enhanced B3ZS decoder circuit 10 of this example consists of three distinct linear shift registers used as memory circuit 20 (U1-U11), pattern recognition circuit 30 (U16-U28), and zero-resubstitution circuit 40 (U13-U15). The memory circuit 20 includes a positive and a negative data rail shift registers 22 and 24 (U1-U4 and U5-U8 respectively) which keep the values of the last four bits of the positive data rail and the negative data rail, respectively, received from the U/B circuit (not shown). The memory circuit 20 also includes linear shift register 26 (U9-U11) which keeps the logical &#34;OR&#34; value of the last three positive and negative data rail values. 
     While the positive and negative data rail shift registers 22 and 24 keep polarity information of the received &#34;one&#34; symbols, polarity information is lost in the shift register 26. In the enhanced B3ZS decoder of this embodiment, identification and resubstitution functions are separated. Consequently, the values of the positive and negative data rail registers 22 and 24 are not effected by substitution instructions, an advantage required for the implementation of the full set of identification criteria. To demonstrate this feature, assume that a pattern of six consecutive zeros, 000000, is to be transmitted. Assume, in addition, that the pattern was coded according to 00VB0V and transmitted as 001-10-1. Ordinarily, after identifying the 001 to be a 00V substitution pattern, the positive one bit will be set to zero to provide the resubstitution of three consecutive zeros. However, if the resubstitution function is not separated from the identification function --as is done by the enhanced B3ZS of the present invention --the decoder will not be able to recognize satisfaction of the first criterion. That is, if the positive one bit of the 00V is resubstituted to zero, the next zero substitution pattern B0V will no longer be preceded by a one bit. The enhanced B3ZS decoder of the present invention avoids this problem by using the shift register 26 to perform the resubstitution, thereby ensuring that the positive and negative data rail shift registers 22 and 24 retain the information of the received substitution pattern. 
     In the example of FIG. 2, NOR gate U12 is used to provide an indication of the logical value of the first bit. Specifically, in this particular example, when the first bit of either the positive or the negative data rail is of logical &#34;one&#34;, NOR gate U12 outputs a logical &#34;zero&#34; into NOR gate U13. A particular example of the use of NOR gate U12 is given below in connection with an explanation regarding the function of NOR gates U13-U15. 
     The pattern recognition circuit 30 (U16-U28) decodes the shift register element values into substitution instructions for the zero-resubstitution circuitry (U13-U15). The AND gates U16-U25 are used to identify individual patterns, while the three OR gates U26-U28 are used to identify a valid substitution pattern upon which a resubstitution action will be taken. When any of OR gates U26-U28 identify a valid substitution pattern, it outputs a logical &#34;1&#34;. In this particular preferred embodiment, the number of AND gates required to identify all the possible patterns is reduced by advantageously using the outputs of flip-flops U9 and U10. However, it will be understood by those skilled in the art that other configurations can be used to identify the possible patterns. 
     In the example of FIG. 2, when a valid substitution has been identified and a logical &#34;1&#34; output by any of OR gates U26-U28, the output of NOR gates U13-U15 is forced to zero, thereby resubstituting the appropriate logical zeros for the valid B3ZS pattern. An example of this process will be given with respect to NOR gate U13. When 0R gate U28 identifies a valid substitution, it sends a 1 to NOR gate U13 and forces U13 to output a zero. This zero would be resubstituted for the second bit, regardless of the output of U12. However, if the output of U28 is zero, the output of U12 passes through U13 inverted and is output by flip-flop U9. Thus, NOR gate U13 either forces a zero output or passes an inverted signal from NOR gate U12. Similarly, NOR gate U14 either forces a zero or passes an inverted signal received from flip-flop U9, and NOR gate U15 either forces a zero or passes an inverted signal received from flip-flop U10. 
     As explained above, the use of alternating polarity coding allows for in-service performance monitoring. Thus, generally a counter is provided which counts the number of BPVs to provide an indication of the integrity of the line. However, in B3ZS coding, any string of three zeros is replaced with a word containing a BPV. Thus, the above-mentioned counter may provide an erroneous indication of low integrity when encountering the B3ZS substitution patterns. To avoid this difficulty, the enhanced B3ZS decoder of FIG. 2 provides an indication whenever a valid substitution pattern has been identified, so that the associated violation will not be counted as a random error. In the particular example of FIG. 2, this is done by using the output of OR gate U28. labeled BPV-DEL. 
     While the invention has been described with reference to specific embodiments thereof, it will be appreciated by those skilled in the art that numerous variations, modifications, and embodiments are possible, and accordingly, all such variations, modifications, and embodiments ar to be regarded as being within the spirit and scope of the invention.