Abstract:
A method for detecting the mode of a telecommunications signal is provided. The method receives the telecommunications signal and contemporaneously evaluates the telecommunications signal for compliance with at least two signal modes. When the evaluation indicates that the signal conforms to a first mode, the signal is processed as a first mode signal. When the evaluation indicates that the signal conforms to a second mode, the signal is processed as a second mode signal.

Description:
RELATED APPLICATION  
       [0001]    This application is a continuation under 37 C.F.R. 1.53(b) of U.S. patent application Ser. No. 09/191,501 filed Nov. 13, 1998, which application is incorporated herein by reference. 
     
    
     
       TECHNICAL FIELD OF THE INVENTION  
         [0002]    The present invention relates generally to the field of telecommunications and, in particular, to circuits and methods for detecting the mode of a telecommunications signal.  
         BACKGROUND  
         [0003]    Telecommunications systems connect users at geographically dispersed locations. The public switched telephone network (PSTN) evolved around providing a narrow-band medium for carrying voice traffic between users. More recently, the PSTN has been used to carry data to and from computers that connect to the PSTN with modems. These modems typically carry data with bit rates of up to 56 Kbps.  
           [0004]    The integrated services digital network (ISDN) was developed to carry higher bandwidth traffic over the existing local loop facilities of the PSTN. This network allows voice or data to be carried in digital form from user to user over the network. Various protocols or modes exist for transporting data over an ISDN network. Thus, the existing networks provide means for transporting telecommunications signals of a number of different modes between users. These modes are, essentially, incompatible and conventional equipment is typically dedicated to a specific telephone number such that a specific device only receives signals of a designated mode.  
           [0005]    For the reasons stated above, and for other reasons stated below which will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art for circuits and methods for handling a variety of signal modes with a single number.  
         SUMMARY OF THE INVENTION  
         [0006]    The above mentioned problems with telecommunications circuits and other problems are addressed by the present invention and will be understood by reading and studying the following specification. A system and method for detecting the mode of a telecommunications signal is described which contemporaneously evaluates the signal for compliance with at least two signal modes. This evaluation is accomplished by analyzing a bit stream of the telecommunications signal over a period of time, e.g., up to 2 seconds. In one embodiment, the mode is determined when a frame is successfully decoded from the bit stream according to one of the signal modes. Further, the method also keeps a score for each mode as the signal is evaluated to assist in determining the mode of the signal.  
           [0007]    In particular, in one embodiment, a method for detecting the mode of a telecommunications signal is provided. The method receives the telecommunications signal and contemporaneously evaluates the telecommunications signal for compliance with at least two signal modes. When the evaluation indicates that the signal conforms to a first mode, the signal is processed as a first mode signal. When the evaluation indicates that the signal conforms to a second mode, the signal is processed as a second mode signal. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0008]    [0008]FIG. 1 is a block diagram of an illustrative embodiment of the present invention.  
         [0009]    [0009]FIG. 2 is a flow chart of an embodiment of a process for detecting the mode of a telecommunications signal.  
         [0010]    [0010]FIGS. 3A and 3B are flow charts of an embodiment of a process for evaluating the compliance of a telecommunications signal with a selected mode.  
     
    
     DETAILED DESCRIPTION  
       [0011]    The following detailed description refers to the accompanying drawings which form a part of the specification. The drawings show, and the detailed description describes, by way of illustration specific illustrative embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention. Other embodiments may be used and logical, mechanical and electrical changes may be made without departing from the scope of the present invention. The following detailed description is, therefore, not to be taken in a limiting sense.  
         [0012]    [0012]FIG. 1 is a block diagram of an illustrative embodiment of the present invention. System  100  includes computer  102  that is coupled to adaptor card  104 . Adaptor card  104  provides a number of ports,  116   1 , . . . ,  116   N  for system  100  so as to allow system  100  to function as a Remote Access Server (RAS). Each port  116   i  comprises a digital signal processor (DSP) and can receive signals in one of a number of modes. For example, port  116   1  can receive signals in 56K HDLC mode, 64K HDLC mode, or other mode for telecommunications signals. Adaptor card  104  includes a process that is loaded into a port when an incoming signal is received to detect the mode of the signal.  
         [0013]    Adaptor card  104  resides in an interface slot on the main or mother board of computer  102 . Computer  102  comprises, for example, a microprocessor-based computer or server. Computer  102  includes processor  106 , input/output devices  108 , and memory  110  that are interconnected on the main board by bus  112 . Input/output devices  108  include, for example, network connections, communications ports, and other conventional devices for connecting with external systems and networks.  
         [0014]    Processor  106  is communicatively coupled to processor  114  of adaptor card  104  through interface  113  and system controller  115 . Processor  114  communicates with ports  116   1 , . . .  116   N , over bus  117 .  
         [0015]    Ports  116   1 , . . . ,  116   N  communicate with, for example, the public switched telephone network (PSTN) over communication link  120 , e.g., T1, E1 or other appropriate communication link. Adaptor card  104  includes a time division multiplexing (TDM) bus  119  that couples ports  116   1 , . . . ,  116   N  with communication link  120 .  
         [0016]    In operation, adaptor card  104  detects the mode of an incoming telecommunications signal based on the bits in the bit stream of the telecommunications signal. When an incoming telecommunications signal is received, processor  114  places a selected port into reset, e.g., port  116   1 . A code image from memory devices  121  is loaded into port  116   1 . In one embodiment, this code image includes a detection process that detects the mode of the incoming telecommunications signal as well as code to process the signal in at least two modes. For example, the code image can include code to implement the processes described below with respect to FIGS. 2, 3A and  3 B. Code to detect other appropriate modes can also be loaded into the selected port.  
         [0017]    Processor  114  then takes port  116   1  out of reset. The detection process then contemporaneously analyzes the incoming telecommunications signal for compliance with at least two modes for a period of time, e.g., two seconds. This analysis for the two modes is accomplished as data is received.  
         [0018]    If the detection process identifies the mode of the incoming telecommunications signal, then the port processes the signal accordingly. If, however, the mode is not identified by the detection process, then another code image, e.g., for processing an analog data stream, can be loaded into port  116   1 . It is noted that in other embodiments, if the detection process fails to identify the mode of the telecommunications signal, then code containing additional detection algorithms can be loaded into the port.  
         [0019]    [0019]FIG. 2 is a flow chart of an embodiment of a process for detecting the mode of a telecommunications signal. In this embodiment, the process analyzes a bit stream of the telecommunications signal to determine whether the signal is in a 64 kbps high level data link control (HDLC) mode, a 56 kbps HDLC mode or another mode, e.g., an analog data stream. It is noted that this process can be adapted to detect other modes and other data rates for telecommunications signals.  
         [0020]    To detect the mode of the telecommunications signal, the process contemporaneously processes the bit stream of the telecommunications signal under at least two potential modes for a time period, e.g., up to two seconds. During this time period, the process evaluates the signal&#39;s compliance with the potential modes.  
         [0021]    As one measure of compliance, the process assigns a “score” to the modes under consideration as the bit stream is processed. The score for each mode is modified throughout the time period as the bit stream is processed. Each mode has a target score. When a target score is reached, the process identifies the mode that achieved the target score as the mode of the telecommunications signal.  
         [0022]    Further, the process can detect the mode of the telecommunications signal based on compliance with other aspects of the mode. For example, the mode of the telecommunications signal can be identified when an error-free frame has been successfully decoded under one of the modes. Compliance in other aspects of a mode can also be used to identify the mode of the telecommunications signal.  
         [0023]    The process of FIG. 2 begins analyzing a telecommunications signal (the “signal”) at block  200 . In one embodiment, this signal comprises a bit stream that is received from a digital communication line, e.g., an ISDN line. At block  202 , the process initializes a number of variables used to monitor the compliance of the signal with two or more potential modes. For example, the process initializes the variables identified below in Table 1.  
                       TABLE 1                       Variable   Description   Value                   64K buffer   FIFO Queue for analyzing compliance with 64K   empty           HDLC mode       56K buffer   FIFO Queue for analyzing compliance with 56K   empty           HDLC mode       64K score   Running score of processing under the 64K   0           HDLC mode       56K score   Running score of processing under the 56K   0           HDLC mode       64K state   Derived state of processing under 64K   SYNC           HDLC mode       56K state   Derived state of processing under 64K   SYNC           HDLC mode       Time   Running time from initiation of the detection   0           process                  
 
         [0024]    At block  204 , the process extracts groups of bits (e.g., 8 bits or an octet) from the telecommunications line. The process further pushes the 8 bits into the 64K buffer for processing and monitoring as a 64K HDLC mode signal. Further, the process pushes the 7 least significant bits of the same octet into the 56K buffer for processing as a 56K HDLC mode signal.  
         [0025]    At blocks  206  and  208  the process calls functions that test the data in the 64K buffer and the 56K buffer for compliance with their respective modes. These functions keep score for the modes under consideration using the 56K score and 64K score variables. These variables track how closely the signal fits within their associated modes of operation. For example, points can be awarded according to the following table:  
                           TABLE 2                                   Event   Points                           Consecutive idle flags    1           Erroneous data frame   −1 x number of octets in frame           Aborted data frame   −1 x (number of octets in frame + 1)                      
 
         [0026]    If a score falls below zero, the score is reset to zero. With this scoring format, the target score for a two second interval of a 64K HDLC mode signal is 8000 and the target score for a 56K HDLC mode signal is 7000 for a similar two second interval. This represents the number of idle flags that would be transmitted during half of this time period assuming no data frames are transmitted.  
         [0027]    If a data frame is transmitted, then one of the modes of operation may successfully decode an error free data frame. In that case, the mode that decodes the error free data frame is declared the winner since the probability of decoding an error free data frame from an otherwise meaningless stream of data is effectively nil.  
         [0028]    A specific embodiment of a test process using this scoring format is described with respect to FIGS. 3A and 3B below. It is noted that other scoring formats and criteria can be used to test the compliance of a signal with other particular modes of operation.  
         [0029]    Beginning at block  210 , the process analyzes the results of the data returned by the test functions. At block  210 , the process determines whether the a 64K HDLC data frame has been decoded error-free (i.e., 64K state==Lock) or the whether the 64K HDLC mode has achieved its target score, e.g., 8000. If so, the process indicates that the telecommunications signal is in 64K HDLC mode at block  212 . If not, the process proceeds to block  214 .  
         [0030]    At block  214 , the process determines whether a 56K HDLC data frame has been decoded error-free (i.e., 56K state==lock). If so, the process proceeds to block  216  and indicates that the telecommunications signal is in 56K HDLC mode. If a 56K HDLC frame has not been decoded error-free, the process proceeds to block  218  and checks the score from the test function for the 56K HDLC mode. If the score is greater than 7000 and the score is at least 5 points greater than the score for the 64K HDLC mode, then the process determines that the telecommunications signal is a 56K HDLC signal at block  216 . This addresses the unique case of misinterpreting a 64K non-shared-zero-bit idle pattern as a 56K shared-zero-bit idle pattern.  
         [0031]    If, at block  218 , the score for the 56K HDLC mode does not pass the tests, then the process proceeds to block  220 . At block  220 , the time variable is incremented. At block  222 , the time variable is tested to determine whether the time period of, for example, 2 seconds has lapsed. If yes, then the process concludes at block  224  that the telecommunications signal is not in either 56K or 64K HDLC mode. If time has not elapsed, the process returns to block  204  and processes the next group of bits.  
         [0032]    When the mode is determined, the process further processes the signal according to the identified mode.  
         [0033]    [0033]FIGS. 3A and 3B are flow charts of an embodiment of a process or “test function” for evaluating a telecommunications signal for compliance with a selected mode, e.g., 56K HDLC or 64K HDLC signal modes. The process of FIGS. 3A and 3B is repeatedly called by a higher level process, e.g., the process of FIG. 2 at blocks  206  and  208 , to analyze the telecommunications signal as its bit stream is received. The process uses a number of variables identified below in Table 3.  
                   TABLE 3                       Variable   Definition                   State   Tracks the detected state of the telecommunications signal       Score   Tracks the score for the selected mode       CRC   Stores value for cyclic redundancy check as octets are           processed       Frame Store   Buffers fragments of an octet at the end of a pass through           the process       Octet Count   Counts the number of octets in a frame                  
 
         [0034]    For HDLC signals, the process performs a number of different operations depending on the detected state of the signal as represented by the variable state. Table 4 identifies the various states of the telecommunications signal.  
                   TABLE 4                       State   Description                   SYNC   The initial state during which portions of the bit stream are           compared with flags of the selected mode       IDLE   The state after detection of at least one idle flag       INFRAME   The state of the signal when a potential frame is being           processed       LOCK   The state when an error-free frame has been processed                  
 
         [0035]    Looking for an Idle Flag  
         [0036]    The process begins at block  300 . At block  302 , the process determines whether the detected state of the telecommunications signal is still in the initial state, i.e., SYNC. If so, the process looks at the data in the buffer to determine whether the next group of bits, e.g., octet, is an idle flag. For HDLC, the idle flag is 01111110.  
         [0037]    At block  304 , the process determines whether there are sufficient bits in the buffer to make up an idle flag. If not, the process ends a block  306 . If there are sufficient bits the process compares the first 8 bits in the buffer with the idle flag at block  308 . If the bits match the idle flag, the process sets the state variable to IDLE and pops the 8 bits from the buffer. The process then proceeds to block  314 .  
         [0038]    If, at block  308 , the bits do not match the idle pattern, the process pops one bit from the buffer at block  310  and proceeds to block  314 .  
         [0039]    Scoring Idle Flags and Determining When a Potential Frame is Being Processed  
         [0040]    The next portion of the process processes idle flags and determines when a potential frame is being received. At block  314 , the process determines whether an idle flag has been detected. If so, the process proceeds to block  316  and determines whether at least 8 bits are in the buffer and the first 8 bits match the idle flag. If so, the score variable is incremented by 1 and the 8 bits are popped from the buffer at block  318 . This means that consecutive idle flags have been detected. The process then proceeds to block  320 .  
         [0041]    If, however, the next 8 bits in the buffer did not match the idle flag, then the process looks at the first 7 bits in the buffer at block  322 . If the bits match the pattern 0111111, then the process proceeds to block  324  and increments the score variable indicating that consecutive idle flags have been detected. These seven bits are popped from the buffer. The process proceeds to block  320 .  
         [0042]    If the first 7 bits in the buffer do not match the pattern at block  322 , the process proceeds to block  326 . At block  326 , the process determines whether there are at least 8 bits in the buffer. If not, the process ends at block  328 . If there are at least 8 bits in the buffer, then the process determines that a potential frame has been detected because an octet that is not an idle flag was detected after an idle flag. At block  330 , the process initializes the CRC, frame store and octet count variables to monitor the success in decoding the potential frame. At block  332 , the process sets the state variable to INFRAME.  
         [0043]    Processing a Frame  
         [0044]    The next portion of the process handles the processing of a potential frame. At block  320 , the process determines whether a potential frame is being processed. If so, the process proceeds to block  334  and pops and analyzes bits from the buffer according to the selected mode. For example, the process processes the bits as an HDLC signal and performs zero-extraction as necessary. At block  336 , for each octet processed, the process increments the octet count variable by 1 and updates the CRC variable. At block  338 , the process stores any incomplete octets in frame store, if any.  
         [0045]    At block  340 , the process determines whether an end-of-frame (EOF) or a Frame Abort flag was detected. If not, then the data being processed is still within the potential frame and the process proceeds to block  342 .  
         [0046]    If an EOF or Frame Abort flag was detected, the process proceeds to block  344 . If, at block  344 , the process determines that an error-free frame was received and that it was not aborted, the process proceeds to block  346  and sets the state variable to LOCK and proceeds to block  342 .  
         [0047]    If, however, the process determines at block  344 , that the frame was aborted or that an erroneous frame was decoded then the process proceeds to block  348 . At block  348 , the score variable is decremented by the number of octets in the potential frame as indicated by the octet count variable. It is noted that the value of score is capped on the lower end to not go below zero. The process proceeds to block  350 .  
         [0048]    At block  350 , the process determines whether the frame was aborted. If so, the process returns the state variable back to the IDLE state and proceeds to block  342 . If the frame was aborted, the process proceeds to block  356 . The state variable is returned to the SYNC state and the score is decremented by 1.  
         [0049]    At block  342 , the process determines if bits remain in the buffer. If not, then the process ends at block  362 . If there are more bits, the process proceeds to block  302 .  
         [0050]    At block  358 , the process determines whether an error-free frame has been decoded. If not, the process returns to block  302 . If an error-free frame has been decoded, then the process proceeds to block  360  and flushes all of the bits from the buffer. The process ends at block  362 .  
       CONCLUSION  
       [0051]    Although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that any arrangement which is calculated to achieve the same purpose may be substituted for the specific embodiment shown. This application is intended to cover any adaptations or variations of the present invention. For example, the process for detecting the mode of a telecommunications signal is not limited to the HDLC modes described herein. Other modes, conventional or later developed, can be detected. Further, other aspects of the telecommunications signal can be monitored and scored to determine the mode of the signal.