Abstract:
This circuit provides for synchronizing the internal clocks of at least two central processing unit process controllers. In order to synchronize the internal clocks of these central processing units (CPUs), the CPUs periodically execute a predetermined set of operating instructions which cause their internal clocks to coincide. This synchronization function is dynamic in that it is continually performed in an on-line fashion while the processors are performing their telecommunication process control function.

Description:
BACKGROUND OF THE INVENTION 
     The present invention pertains to controllers for operating a telecommunication process and more particularly to internal clock synchronization of multiple central processing units. 
     Public policy requires that telecommunication systems provide virtually uninterrupted service to its subscribers over long periods of time. Providing redundant circuitry is an aid in meeting this public policy requirement. 
     However, simple duplication of circuitry creates a problem of simultaneous operation of the circuitry. In order to meet the objective of no loss of service for long periods of time, it is undesirable for telecommunication system outages to occur during a change-over from one copy of the duplicated circuitry to the redundant back-up copy of the circuitry. 
     Modern telecommunication systems employ multiprocessing arrangements of central processing units in order to accomplish their switching operations. The central processing units (CPUs) of this multiprocessing arrangement may be synchronized in order to avoid loss of service during change-over operations. Typically, central processing unit synchronization has been performed by a vast amount of clock circuitry, which provides the driving signals to the CPUs. With the advent of single chip microprocessor CPUs, this synchronization function is made difficult. Since much of the clocking function of these single chip microprocessor CPUs is internal to the chip package, synchronizing multiple CPU is more complex. 
     SUMMARY OF THE INVENTION 
     In a telecommunication system which has a system clock, a CPU synchronization circuit is connected between the system clock and at least two CPU copies. The system clock operates to produce two distinct periodic signals. The goal of the CPU synchronization circuit is to ensure that all the CPUs are executing the same machine state of the same machine cycle at the same time. This is accomplished by synchronizing the internal clocks of the CPUs. 
     Each of the CPUs of each copy includes a clock input lead which connects the system clock to each CPU copy; a status output lead which is capable of providing information as to the particular machine state and cycle of the CPU; and an address latch enable output lead, which provides proper timing for interrogation of the state of the status output lead. At the appropriate CPU machine state, a production arrangement yields a predefined value via the status output lead of each CPU copy. 
     Each CPU copy also includes a generating apparatus which is connected to the corresponding CPU copy via the status output lead and via the address latch output lead. The generating apparatus operates in response to the production of the predefined value of the status output lead to produce an inhibit signal. 
     Lastly, each CPU copy includes a gating arrangement which is connected to the system clock, to the generating apparatus and to the corresponding CPU of its copy. The gating arrangement operates in response to the inhibit signal and the second periodic signal to prevent one of the first periodic signals from being received by one corresponding CPU copy. As a result, one CPU copy is slowed by one periodic signal and the other CPU copy is unchanged, resulting in synchronization of the two CPU copies. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of the telecommunication system embodying the present invention. 
     FIG. 2 is a schematic diagram of the synchronization circuitry for synchronizing the internal clocks of at least two central processing units. 
     FIG. 3 is a timing diagram of various key signals for the synchronization process. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     Referring to FIG. 1, a time-space-time digital switching network along with the corresponding common control is shown. Telephone subscribers, such as subscribers 1 and 2, are shown connected to analog line unit 13. Analog line unit 13 is connected to both copies of the analog control unit 14 and 14&#39;. Originating time switches 20 and 20&#39; are connected to a duplex pair of space switch units 30 and 30&#39; which are in turn connected to a duplex pair of terminating time switches 21 and 21&#39;. Terminating time switches 21 and 21&#39; are connected to analog control units 14 and 14&#39; via digital pad devices and ultimately to the telephone subscribers 1 and 2 via analog line circuit 13. Digital control units 15, 15&#39; and 16, 16&#39; connect the digital spans to the switching network. Digital span equipment may be implemented using a model 9004 T1 digital span, manufactured by GTE Lenkurt, Inc. Similarly, analog trunk unit 18 connects trunk circuits to the digital switching network via analog control units 17 and 17&#39;. 
     A peripheral processor CPU 70 controls the digital switching network and digital and analog control units. Analog line unit 13 and a duplex pair of analog control units 14 and 14&#39; interface to telephone subscribers directly. A duplicate pair of digital control units 15, 15&#39; and 16, 16&#39; control the incoming PCM data from the digital spans. Similarly, the analog trunk unit 18 and a duplex pair of analog control units 17 and 17&#39; interface to trunk circuits. The analog and digital control units are each duplicated for reliability purposes. 
     The network of FIG. 1 also includes a Remote Data Link Controller (RDLC) 100 which provides formatting and control of data transmitted and received between the peripheral processors of two or more networks. The RDLC can provide up to 16, 64 kilobits per second data links arranged for full duplex operation and is configured so that it can provide one full duplex data link for each of the 16 T1 spans. RDLC 100 can operate together with one or two digital control unit (DCUs), with each DCU being capable of providing up to eight T1 carrier facilities. 
     RDLC 100 includes a duplicated data link processor and control 80 and 80&#39; and a duplicated peripheral processor I/O buffer 60 and 60&#39;. 
     Each RDLC message consists of eight, 8-bit bytes of data for a total of 64 bits. The peripheral processor I/O buffer provides four transmit message buffers and four receive message buffers for each of the 16 possible data links. 
     Normally, peripheral processor software writes a message into a transmit message buffer of peripheral processor I/O buffer 60 and 60&#39; associated with a data link and then issues a transmit command to data link processor and control 80 and 80&#39;. The data link processor and control 80 and 80&#39; responds by taking the message out of the transmit message buffer and reformatting the data, so that it can be transmitted over a T1 carrier. Then data link processor and control 80 and 80&#39; transmits the message to the distant end of the data link through the appropriate DCU and digital span. 
     When a message is received, the data link processor and control 80 and 80&#39; reformats the received data and places the message into an appropriate receive message buffer in the peripheral I/O buffer 60 and 60&#39; respectively. Data link processor and control 80 and 80&#39; then causes an interrupt, alerting peripheral processor 70 and 70&#39; to the fact that a message has been received. The RDLC will queue up to three received messages. It should be noted that under normal operating conditions, the RDLC operates in a duplex configuration, that is, each RDLC copy matches all outgoing signals performed in the DCUs. 
     In order to synchronize the two RDLC copies, it is necessary to ensure that both of their peripheral processors 70 and 70&#39; are performing the same function at the same time. Each peripheral processor includes an Intel 8085A or 8085A-2 8-bit parallel central processing unit (CPU). Intel is a registered trademark of the Intel Corporation. In order to synchronize the two Intel 8085A processors, it is necessary that their respective internal clocks are synchronized to one another. The MCS-86 User&#39;s Manual, Copyright 1978 by the Intel Corporation, is hereby incorporated by reference. 
     Referring to FIG. 2, the Intel 8085A CPUs and associated synchronizing circuitry comprising copy 0 and copy 1 of the RDLC is shown. CPUs 21 and 21&#39; each include two inputs X1 and X2 which are connected to a clock source and which serve to drive the internal clock generator of the 8085A processor. The input frequency is divided by two on the integrated circuit package to give the processor its internal operating frequency. 
     Each CPU 21 and 21&#39; also includes a trap input. The trap input is a non-maskable restart interrupt. It is unaffected by any mask or interrupt enable and has the highest priority of any interrupt. 
     The central processing units 21 and 21&#39; each produce an output signal, referred to as an address latch enable (ALE). The ALE signal occurs during the first clock state of a machine cycle (see FIG. 3) and enables the address to be latched into an on-chip latch for peripheral devices. The falling edge of the ALE signal guarantees set-up and hold times for the address information. In addition, the falling edge of the ALE signal is used to strobe the status information. The ALE signal is not three-stated. 
     The status information of the 8085A comprises three outputs S0, S1 and IO/M. The S0 and S1 output signals are not shown in FIG. 2. These status outputs become valid at the beginning of a machine cycle and remain stable throughout the cycle. The falling edge of the ALE signal is used to latch the status of these three signals. The values of the states of these three signals are indicated by the following table: 
     
                       TABLE______________________________________IO/--M    S1    S0         Explanation______________________________________0         0     1          Memory Write0         1     0          Memory Read1         0     1          I/O Write1         1     0          I/O Read0         1     1          Opcode Fetch1         1     1          Interrupt Acknowledge______________________________________ 
    
     As can be seen from the above table for an I/O write or read, the IO/M is a logic 1. 
     A system clock (not shown) generates three clock signals for use by the CPUs 21 and 21&#39; and the synchronizing circuitry. First, the system clock generates a 6 MHz signal (a range of 1 MHz to 10 MHz may be employed) on the 6 MCLK lead. Second, the clock generates a 12 MHz signal (a range of 10 MHz to 20 MHz may be employed corresponding to the 1 MHz to 10 MHz range of the 6 MCLK lead) on the 12 MCLK lead. Lastly, the clock generates a pulse once every six milliseconds (a range of 1 Hz to 1 K Hz may be used) on the 6 MSCLK lead. 
     The 6 MCLK lead connects the system clock to NAND gates 4 and 4&#39;. The other input to NAND gate 4 is connected to the Q output of flip-flop 23 via the -FRZ lead. Similarly, the other input of NAND gate 4&#39; is connected to the Q output of flip-flop 23&#39; via a corresponding -FRZ lead. 
     The output of NAND gates 4 and 4&#39; are connected respectively to the D-inputs of flip-flops 11 and 11&#39;. The clock is connected to the CLK-input of flip-flops 11 and 11&#39; via the 12 MCLK lead. The Q outputs of flip-flops 11 and 11&#39; are connected to the X1 and X2 inputs of CPUs 21 and 21&#39; respectively. This connection to the X1 and X2 leads of the CPU is in a push-pull configuration. 
     The ALE output of CPUs 21 and 21&#39; is respectively connected to the clock inputs of flip-flops 23 and 23&#39; via the corresponding ALE lead. Similarly, the status lead IO/M of each CPU 21 and 21&#39; is connected respectively to the J-input of flip-flops 23 and 23&#39;. Flip-flops 23 and 23&#39; are J-K flip-flops and flip-flops 11 and 11&#39; are D-type flip-flops of the 7400 logic family such as those manufactured by the Texas Instruments Corporation. 
     Every six milliseconds a signal is produced by the clock of the 6MSCLK lead and transmitted to CPUs 21 and 21&#39; via the trap inputs. As a result, a trap is generated by each CPU. This trap forces an internal branch to location 24 hexadecimal which contains an I/O instruction. As a result of the execution of this I/O instruction, status lead IO/M is at logic 1. Flip-flops 23 nd 23&#39; will latch the IOM lead value on the next falling edge of the ALE signal. As a result, the -FRZ lead will go active to logic 0 (see FIG. 3). 
     If one of the CPUs is operating faster than the other (i.e. not in synchronization), the -FRZ lead at logic 0 will inhibit the operation of its corresponding NAND gate 4 or 4&#39;. Thereby, flip-flop 11 or 11&#39; will be prevented from transmitting one clock pulse to the X1 and X2 leads of the CPU which is operating faster than the other CPU. That is, if the two RDLC microprocessor copies were operating out of synchronization, one will skip a clock pulse and the other will not. As a result of this clock pulse deletion, the internal clocks of CPUs 21 and 21&#39; will be placed in synchronization. 
     Referring to FIG. 3, the timing of the 8085A or 8085A-2 microprocessor CPU is shown. The CLK signal is the internal clock of the 8085A microprocessor. M1, M2 and M3 are three machine states which depict an instruction fetch, a memory read and an I/O write cycle respectively. ALE is the address latch enable signal which occurs during the first clock state of each machine cycle. The read control signal RD indicates whether a memory or I/O device is to be read and that the data bus is available for data transfer. The write control signal WR indicates that the contents of the data bus is ready to be written into the selected memory or I/O location. The IO/M status signal indicates that an I/O read or write is occurring and is used to perform the synchronization of the CPUs as indicated above. The -FRZ lead is shown making its transition from logic 1 to logic 0 in response to the IO/M signal being logic 1 and a falling edge of the ALE signal. 
     Machine cycle M1 consists of four states, T1 through T4, since it is an opcode fetch. Machine cycles M2 and M3 each contain three states, T1 through T3, since they respectively constitute a memory read and an I/O write operation. 
     Although the preferred embodiment of the invention has been illustrated, and that form described in detail, it will be readily apparent to those skilled in the art that various modifications may be made therein without departing from the spirit of the invention or from the scope of the appended claims.