Source: http://www.everypatent.com/comp/pat5654698.html
Timestamp: 2019-08-26 10:06:28
Document Index: 146068024

Matched Legal Cases: ['ART) 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26', 'ART 26']

U.S. Patent: 5654698 - Missile telemetry data interface circuit - August 5, 1997
United States Patent 5,654,698
Snelgrove , et al. August 5, 1997
Missile telemetry data interface circuit
An interface circuit which receives a PCM telemetry data stream comprising waveform divided into 100 words including a three word frame sync signal. The PCM data stream is supplied to a comparator which converts input telemetry signal to a TTL compatible signal. When the PCM data is unencrypted, the PCM data stream is supplied to a de-randomizer circuit which de-randomizes the randomized data. A bit sync circuit which also receives the PCM data stream generates a 320 kHz clock signal which is synchronized to the incoming PCM data stream. The de-randomized PCM telemetry data stream which is in a serial format and the 320 kHz clock signal pass through a digital multiplexer to a universal synchronous asynchronous receiver transmitter. When the receiver transmitter detects a PCM frame sync signal for a frame of PCM data, it interrupts a master microprocessor which then retrieves each word of PCM data from the frame. The master microprocessor writes the frame of PCM data into one bank of a dual Port RAM. The master microprocessor then sends a command to a slave microprocessor to retrieve the frame of PCM data stored in the dual port RAM. The slave microprocessor processes each word of the PCM data stream in accordance with a predetermined algorithm which scales the PCM data providing at least one ten bit digital equivalent word for each channel of PCM data. The ten bit digital words for the one hundred channels of a frame of PCM data are then output to a missile subsystem test set along with the appropriate channel identifications.
Inventors: Snelgrove; Andrew H. (Ventura, CA); Buchwitz; Guy R. (Oxnard, CA); Sailer; Paul H. (Ventura, CA)
Appl. No.: 631287
Current U.S. Class: 340/870.01; 340/825.64; 340/870.18; 340/870.19; 375/242; 455/98
Intern'l Class: G08C 019/16
Field of Search: 340/870.01,870.18,870.19,825.64 343/708 375/242,239 327/31 455/98
3805266 Apr., 1974 Fletcher 343/708.
3942446 Mar., 1976 Cruzan 327/31.
4253192 Feb., 1981 Donnally 455/98.
4354278 Oct., 1982 Clark 340/870.
4768207 Aug., 1988 Sejourne 375/242.
5016005 May., 1991 Shaw 340/870.
5227783 Jul., 1993 Shaw 340/870.
Attorney, Agent or Firm: Kalmbaugh; David S., Sliwka; Melvin J.
This application is a continuation-in-part of U.S. patent application, Ser. No. 08/619,289, filed Mar. 18, 1996 now issued as U.S. Pat. No. 5,610,598.
1. A microprocessor controlled digital interface circuit for processing a randomized pulse code modulated telemetry data stream from a missile's telemetry unit, said randomized pulse code modulated telemetry data stream having a plurality of data frames, each of said plurality of data frames including a pulse code modulated frame sync signal and a plurality of channels of pulse code modulated telemetry data, said microprocessor controlled digital interface circuit comprising:
first multiplexing means having a data input for receiving said randomized pulse code modulated telemetry data stream, a control signal input, and an output;
first processing means connected to the control signal input of said first multiplexing means, said first processing means supplying first and second control signals to said first multiplexing means;
said first multiplexing means being enabled by said first and second control signals allowing said randomized pulse code modulated telemetry data stream to pass through said first multiplexing means;
de-randomizer means connected to the output of said first multiplexing means to receive said randomized pulse code modulated telemetry data stream, said de-randomizer means de-randomizing said randomized pulse code modulated telemetry data stream to provide a de-randomized pulse code modulated telemetry data stream;
bit sync circuit means connected to the output of said first multiplexing means to receive said randomized pulse code modulated telemetry data stream, said bit sync circuit means extracting a pulse code modulation clock signal from said randomized pulse code modulated telemetry data stream which is synchronized to said randomized pulse code modulated telemetry data stream;
second multiplexing means having a data input connected to said de-randomizer means to receive said randomized pulse code modulated telemetry data stream, a clock signal input connected to said bit sync circuit means to receive said pulse code modulation clock signal, a control signal input, a data output and a clock signal output;
said first processing means being connected to the control signal input of said second multiplexing means, said first processing means supplying a third control signal to said second multiplexing means, the data input and the clock signal input of said second multiplexing means being enabled by said third control signal allowing said de-randomized pulse code modulated telemetry data stream and said pulse code modulation clock signal to pass through said second multiplexing means;
receiving/transmitting means connected to said first processing means, and to the data output and the clock signal output of said second multiplexing means to receive said de-randomized pulse code modulated telemetry data stream and said pulse code modulation clock signal;
said receiving/transmitting means being adapted to detect said pulse code modulated frame sync signal of each of said plurality of data frames, said receiving/transmitting means upon detecting said pulse code modulated frame sync signal of each of said data frames, generating and then sending a frame sync detected signal to said first processing means;
said receiving/transmitting means first converting said pulse code modulated telemetry data stream from a serial format to a parallel format, said receiving/transmitting means then sending said pulse code modulated telemetry data stream to said first processing means;
a dual port RAM connected to said first processing means, said dual port RAM having first and second data storage banks, each of said first and second data storage banks of said dual port RAM being adapted to receive and store therein one of said plurality of data frames;
said first processing means, responsive to said frame sync detected signal generated for each of said plurality of data frames, transferring said data frame to said dual port RAM, said dual port RAM alternately storing said plurality of data frames in the first and second storage banks of said dual port RAM; and
second processing means connected to said dual port RAM to retrieve said data frames stored in the first and second storage banks of said dual port RAM, said second processing means alternately retrieving from the first and second banks of said dual port RAM the data frames stored in the first and second storage banks of said dual port RAM;
said second processing means handling, processing and scaling said plurality of channels of pulse code modulated telemetry data of each of said data frames;
said second processing means generating an equivalent digital word for each of said plurality of channels of pulse code modulated telemetry data processed and scaled by said second processing means.
2. The microprocessor controlled digital interface circuit of claim 1 wherein said first multiplexing means comprises an analog multiplexer.
3. The microprocessor controlled digital interface circuit of claim 1 wherein said first processing means and said second processing means each comprise a microcontroller.
4. The microprocessor controlled digital interface circuit of claim 1 wherein said de-randomizer means comprises:
a first EXCLUSIVE-OR gate having a first input connected to the output of said first multiplexing means to receive said randomized pulse code modulated telemetry data stream, a second input and an output connected to the data input of said second multiplexing means;
a first 8-bit shift register having a data input, a clock input for receiving an externally generated clock signal and eight data outputs;
a second 8-bit shift register having a data input connected to an eighth data output of the eight data outputs of said first 8-bit shift register, a clock input for receiving an externally generated clock signal and eight data outputs; and
a second EXCLUSIVE-OR gate having a first input connected to a sixth data output of the eight data outputs of said second 8-bit shift register, a second input connected to a seventh data output of the eight data outputs of said second 8-bit shift register and an output connected to the second input of said first EXCLUSIVE-OR gate.
5. The microprocessor controlled digital interface circuit of claim 1 wherein said bit sync circuit means comprises:
a first Flip-Flop having a data input for receiving said randomized pulse code modulated telemetry data stream, a clock input for receiving an external clock signal, a clear input for receiving a reset signal and a Q output;
a second Flip-Flop having a data input connected to the Q output of said first Flip-Flop, a clock input for receiving said external clock signal, a clear input for receiving said reset signal and a Q output;
a first inverter having an input for receiving said external clock signal and an output;
a third Flip-Flop having a data input connected to the Q output of said second Flip-Flop, a clock input connected to the output of said first inverter, a clear input for receiving said reset signal and a Q output;
an EXCLUSIVE-NOR gate having a first input connected to the Q output of said second Flip-Flop, a second input connected to the Q output of said third Flip-Flop and an output;
a state machine having an asynchronous input connected to the output of said EXCLUSIVE-NOR gate, a clock input for receiving said second external clock signal and an enable output;
a fourth Flip-Flop having a toggle input connected to the enable output of said state machine, a clock input for receiving said second clock signal, a clear input connected to the output of said EXCLUSIVE-NOR gate and a Q output; and
a second inverter having an input connected to the Q output of said fourth Flip-Flop and an output, the output of said second inverter being connected to the clock signal input of said second multiplexing means.
6. The microprocessor controlled digital interface circuit of claim 1 wherein said second multiplexing means comprises a digital multiplexer.
7. The microprocessor controlled digital interface circuit of claim 1 wherein said receiving/transmitting means comprises a universal synchronous asynchronous receiver transmitter.
8. The microprocessor controlled digital interface circuit of claim 1 further comprising a memory coupled to said second processing means, said memory containing a computer software program, said computer software program controlling the handling, processing and scaling of each of said plurality of channels of pulse code modulated telemetry data by said second processing means.
9. The microprocessor controlled digital interface circuit of claim 8 wherein said memory comprises four programmable read only memories coupled to said second processing means.
10. A microprocessor controlled digital interface circuit for processing a randomized pulse code modulated telemetry data stream from a missile's telemetry unit, said randomized pulse code modulated telemetry data stream having a plurality of data frames, each of said plurality of data frames including a pulse code modulated frame sync signal and a plurality of channels of pulse code modulated telemetry data, said microprocessor controlled digital interface circuit comprising:
an analog multiplexer having a data input for receiving said randomized pulse code modulated telemetry data stream, a control signal input, and an output;
a first microprocessor connected to the control signal input of said analog multiplexer, said first microprocessor supplying first and second control signals to said analog multiplexer;
the data input of said analog multiplexer being enabled by said first and second control signals allowing said randomized pulse code modulated telemetry data stream to pass through said analog multiplexer;
a comparator circuit connected to the output of said analog multiplexer to receive said randomized pulse code modulated telemetry data stream, said comparator circuit converting said randomized pulse code modulated telemetry data stream from a first voltage range signal to a second voltage range signal which is transistor-to-transistor logic compatible;
a de-randomizer circuit connected to said analog multiplexer to receive said randomized pulse code modulated telemetry data stream from said comparator circuit, said de-randomizer circuit de-randomizing said randomized pulse code modulated telemetry data stream to provide a de-randomized pulse code modulated telemetry data stream;
a bit sync circuit connected said analog multiplexer to receive said randomized pulse code modulated telemetry data stream from said analog multiplexer, said bit sync circuit extracting a pulse code modulation clock signal from said randomized pulse code modulated telemetry data stream which is synchronized to said randomized pulse code modulated telemetry data stream;
a digital multiplexer having a data input connected to said de-randomizer circuit to receive said randomized pulse code modulated telemetry data stream, a clock signal input connected to said bit sync circuit to receive said pulse code modulation clock signal, a control signal input, a data output and a clock signal output;
said first microprocessor being connected to the control signal input of said digital multiplexer, said first microprocessor supplying a third control signal to said digital multiplexer, the data input and the clock signal input of said digital multiplexer being enabled by said third control signal allowing said de-randomized pulse code modulated telemetry data stream and said pulse code modulation clock signal to pass through said digital multiplexer;
a universal synchronous asynchronous receiver transmitter connected to said first microprocessor, and to the data output and the clock signal output of said digital multiplexer to receive said de-randomized pulse code modulated telemetry data stream and said pulse code modulation clock signal;
said universal synchronous asynchronous receiver transmitter being adapted to detect said pulse code modulated frame sync signal of each of said plurality of data frames, said universal synchronous asynchronous receiver transmitter upon detecting said pulse code modulated frame sync signal of each of said data frames, generating and then sending a frame sync detected signal to said first microprocessor;
said universal synchronous asynchronous receiver transmitter first converting said pulse code modulated telemetry data stream from a serial format to a parallel format, said universal synchronous asynchronous receiver transmitter then sending said pulse code modulated telemetry data stream to said first microprocessor;
a dual port RAM connected to said first microprocessor, said dual port RAM having first and second data storage banks, each of said first and second data storage banks of said dual port RAM being adapted to receive and store therein one of said plurality of data frames;
said first microprocessor, responsive to said frame sync detected signal generated for each of said plurality of data frames, transferring said data frame to said dual port RAM, said dual port RAM alternately storing said plurality of data frames in the first and second storage banks of said dual port RAM; and
a second microprocessor connected to said dual port RAM to retrieve said data frames stored in the first and second storage banks of said dual port RAM, said second microprocessor alternately retrieving from the first and second banks of said dual port RAM the data frames stored in the first and second storage banks of said dual port RAM;
said second microprocessor handling, processing and scaling said plurality of channels of pulse code modulated telemetry data of each of said data frames;
said second microprocessor generating an equivalent digital word for each of said plurality of channels of pulse code modulated telemetry data processed and scaled by said second microprocessor.
11. The microprocessor controlled digital interface circuit of claim 10 wherein said first microprocessor and said second microprocessor each comprise a microcontroller.
12. The microprocessor controlled interface circuit of claim 10 wherein said de-randomizer circuit comprises: a first EXCLUSIVE-OR gate having a first input connected to the output of said comparison circuit to receive said randomized pulse code modulated telemetry data stream, a second input and an output connected to the data input of said digital multiplexer;
13. The microprocessor controlled interface circuit of claim 10 wherein said bit sync circuit comprises:
a second inverter having an input connected to the Q output of said fourth Flip-Flop and an output, the output of said second inverter being connected to the clock signal input of said digital multiplexer.
14. The microprocessor controlled digital interface circuit of claim 10 further comprising a memory coupled to said second microprocessor, said memory containing a computer software program, said computer software program controlling the handling, processing and scaling of each of said plurality of channels of each of said plurality of channels of pulse code modulated telemetry data by said second microprocessor.
15. The microprocessor controlled digital interface circuit of claim 14 wherein said memory comprises four programmable read only memories coupled to said second microprocessor.
16. The microprocessor controlled digital interface circuit of claim 10 further comprising first and second eight bit latches coupled to said second microprocessor for receiving and latching therein each equivalent digital word generated by said second microprocessor.
17. A microprocessor controlled digital interface circuit for processing a de-randomized pulse code modulated telemetry data stream from a missile's encryption unit, said microprocessor controlled digital interface circuit receiving a pulse code modulation clock signal from said encryption unit, said randomized pulse code modulated telemetry data stream having a plurality of data frames, each of said plurality of data frames including a pulse code modulated frame sync signal and a plurality of channels of pulse code modulated telemetry data, said microprocessor controlled digital interface circuit comprising:
a digital multiplexer having a data input for receiving said de-randomized pulse code modulated telemetry data stream from said encryption unit, a clock signal input for receiving said pulse code modulation clock signal from said encryption unit, a control signal input, a data output and a clock signal output;
a first microprocessor connected to the control signal input of said digital multiplexer, said first microprocessor supplying a control signal to said digital multiplexer, the data input and the clock signal input of said digital multiplexer being enabled by said control signal allowing said de-randomized pulse code modulated telemetry data stream and said pulse code modulation clock signal to pass through said digital multiplexer;
said first microprocessor, responsive to said frame sync detected signal generated for each of said plurality of data frames, transferring said data frame to said dual port RAM, said dual port RAM alternately storing said plurality of data frames in the first and second storage banks of said dual port RAM;
said second microprocessor generating an equivalent digital word for each of said plurality of channels of pulse code modulated telemetry data processed and scaled by said second microprocessor; and
a memory coupled to said second microprocessor, said memory containing a computer software program, said computer software program controlling the handling, processing and scaling of each of said plurality of channels of each of said plurality of channels of pulse code modulated telemetry data by said second microprocessor.
18. The microprocessor controlled digital interface circuit of claim 17 wherein said first microprocessor and said second microprocessor each comprise a microcontroller.
19. The microprocessor controlled digital interface circuit of claim 17 wherein said memory comprises four programmable read only memories coupled to said second microprocessor.
20. The microprocessor controlled digital interface circuit of claim 17 further comprising first and second eight bit latches coupled to said second microprocessor for receiving and latching therein each equivalent digital word generated by said second microprocessor.
This present invention relates generally to digital computer controlled data processing apparatus. In particular, the present invention relates to a digital interface circuit which receives telemetry data from a missile's telemetry unit, processes the telemetry data and provides the processed data to a Missile Subsystem Test Set for evaluation.
There is currently a missile subsystem test set being utilized to test certain missiles, such as HARPOON and SLAM, prior to the missiles being approved for deployment with the United States Navy. Pulse amplitude modulated (PAM) telemetry data is supplied from the missile's telemetry unit to PAM PDM Synchronizer which processes the PAM telemetry data converting the PAM telemetry data from an analog format to a digital data format which is compatible with the missile subsystem test set.
The PAM PDM Synchronizer is no longer manufactured by its designer, Monitor Systems Company. In addition, the PAM PDM Synchronizer does not process pulse code modulated (PCM) telemetry data from a missile's telemetry unit.
Accordingly, there is a need to provide a state of the art microprocessor controlled missile telemetry data interface circuit which can receive PCM telemetry data from a missile's telemetry unit and then process the PCM telemetry data so that the processed data is in a digital format which is compatible with the missile subsystem test set.
The present invention comprises an interface circuit which receives a PCM telemetry data stream from a missile's telemetry unit. The PCM telemetry data stream comprises a waveform divided into 100 channels or words of PCM data. Channels 1 through 97 of the data stream are data words from the missile's telemetry unit, while channels 98, 99 and 100 are the PCM frame sync signal which is used to locate the start of a frame of PCM data. The PCM telemetry data stream is first supplied to an analog multiplexer which has its input receiving the PCM telemetry data stream enabled by a master microprocessor allowing the analog multiplexer to pass therethrough PCM telemetry data.
The PCM telemetry data passing through the analog multiplexer is supplied to a comparator which converts the +15 V to -15 V input telemetry signal to a TTL compatible signal. The 0-5 V TTL compatible signal is next supplied to an inverter which inverts the signal and eliminates noise from the signal.
When the PCM data is unencrypted data, the PCM data stream is supplied to a de-randomizer circuit which de-randomizes the PCM randomized telemetry data. A bit sync circuit which also receives the PCM telemetry data stream generates a 320 kHz clock signal which is synchronized to the incoming PCM data stream. The de-randomized PCM telemetry data stream which is in a serial format and the 320 kHz clock signal pass through a digital multiplexer to a universal synchronous asynchronous receiver transmitter.
When the PCM data stream is from an encryption unit, the PCM data passes directly through the digital multiplexer to the universal synchronous asynchronous receiver transmitter. The encryption unit also supplies a 320 kHz clock signal which passes directly through the digital multiplexer to the universal synchronous asynchronous receiver transmitter.
When the universal synchronous asynchronous receiver transmitter detects a PCM frame sync signal for a frame of PCM data, universal synchronous asynchronous receiver transmitter interrupts a master microprocessor which then retrieves each word of PCM data from the frame. The master microprocessor writes the frame of PCM data into one bank of a dual Port RAM which has two banks (bank 0 and bank 1). The master microprocessor first stores the frame of PCM data in the dual port RAM and then sends a command to a slave microprocessor to retrieve the frame of PCM data stored in the dual port RAM.
The slave microprocessor processes each word of the PCM data stream in accordance with a predetermined algorithm which scales the PCM data providing at least one ten bit digital equivalent word for each channel of PCM data. The ten bit digital words for the one hundred channels of a frame of PCM data are then output to a missile subsystem test set along with the appropriate channel identifications.
FIGS. 1a, 1b and 1c illustrate the master microprocessor of the present invention and its associated logic circuitry;
FIG. 2 illustrates the dual port RAM used in the present invention;
FIG. 3a and 3b illustrate the slave microprocessor of the present invention and its associated logic circuitry;
FIG. 4 illustrates an interface circuit and its associated logic circuitry used in the present invention;
FIGS. 5a and 5b illustrate latching circuitry which is coupled to the slave microprocessor of FIG. 3a for receiving and latching therein telemetry data processed by the slave microprocessor of FIG. 3a;
FIGS. 6a and 6b illustrate analog input circuitry used in the present invention;
FIG. 7 illustrates a window comparison circuit used in the present invention;
FIG. 8 illustrates the 6 pole low pass bessel filter used in the present invention;
FIG. 9 illustrates a first signal connector used in the present invention;
FIG. 10 illustrates a second signal connector used in the present invention;
FIG. 11 illustrates a third signal connector used in the present invention;
FIG. 12 illustrates a fourth signal connector used in the present invention;
FIG. 13 illustrates the front panel of the present invention; and
FIGS. 14a, 14b, 14c, 14d, 14e, 14f, 14g, 14h, 14i and 14j are a detailed logic diagram of the interface circuit of FIG. 4.
The preferred embodiment of the present invention will now be discussed in conjunction with all of the figures of the drawings, wherein like parts are designated by like reference numerals, insofar as it is possible and practical to do so.
OPERATION OF THE COMPUTER SOFTWARE FOR SLAVE MICROPROCESSOR 70
Referring to FIGS. 1a, 1b, 3a, 3b, 5a, 5b and 13 and the computer program listing of Appendix A, slave microprocessor 70 utilizes the computer software program of Appendix A which comprises the modules set forth in the table below:
c.sub.-- int11.c
ipcomms2.c    pcm.sub.-- mod3.c
comp.c       lachtest.c    ramtest.c
dprantst.c   lookups.asm   regtest.c
gen.sub.-- pcm
mail.c        send.sub.-- pcm.c
getpcm.c     newmtim.c     simpam.c
globals.h    newmtim.h     sndnontm.c
gnuusart.c   pcf.c         st3.c
gs2.c        pcm.h         to2.c
hex2bcd. c   pcm.sub.-- lkup.asm
Module newmtim.h of the computer software of Appendix A is a header file which defines certain constants in the computer program of Appendix A in terms of a hexadecimal number which causes the program's compiler to substitute the hexadecimal number for the constant. For example, when the program detects the statement "SETUP.sub.-- TIMER1" the program's compiler will substitute the hexadecimal number 200 for the statement. The hexadecimal numbers of the module newmtim.h define the assembly language utilized by slave microprocessor 70.
The computer program for slave microprocessor 70 is stored in four erasable programmable read only memories 72, 74, 76 and 78. The erasable programmable read only memories 72, 74, 76 and 78 are enabled by a logic zero chip signal supplied to the .sub.-- CS inputs of memories 72, 74, 76 and 78. This logic zero chip select signal is provided by microprocessor 70 utilizing the strobe signal and the read/write signal from microprocessor 70. The strobe signal and the inverted read/write signal from microprocessor 70 are supplied to OR gate 110 which, in turn, supplies the chip select signal to the four erasable programmable read only memories 72, 74, 76 and 78.
The newmtim.h module of the computer software of Appendix A defines the operation codes which are utilized by the master microprocessor 20 to request that the slave microprocessor 70 perform operations defined by the constant (lines 68-88 of the newmtim.h module). The constant "SEARCH.sub.-- FOR.sub.-- PAM.sub.-- SYNC" will result in the program's compiler substituting the hexadecimal number 40 for the constant. Slave microprocessor 70 in response to the hexadecimal number 40 will look for a sync signal in a pulse amplitude modulated data stream which is being received by microprocessor 70.
The newmtim.h module also includes the operation codes which are utilized by the slave microprocessor 70 to request that the master microprocessor 20 perform operations defined by the constant (lines 90-99 of the newmtim.h module).
The globals.h module is a header file which is included in each module of Table I. This module includes every global variable required by each module during its execution.
The pcm.h module is a header file which includes the definitions required by slave microprocessor 70 to allow slave microprocessor 70 to perform any pulse code modulation operation.
The newmtim.c module is the main program utilized by the slave microprocessor 70 to process pulse amplitude modulated data and pulse code modulated data received by microprocessor 70. The newmtim.c module also includes the operation codes supplied by microprocessor 20 to microprocessor 70. At lines 5-94 of the newmtim.c module pointers are declared. The pointers first initialized are for universal synchronous asynchronous receiver transmitter 140. For example, at line 6 of the newmtim.c module the pointer "*gnu.sub.-- usar.sub.-- rcvr.sub.-- xmit.sub.-- ptr" is declared. This pointer holds the address of an unsigned integer. The contents of this address are initialized with a defined constant of "GNU.sub.-- USART.sub.-- RCVR.sub.-- XMIT.sub.-- ADD" which is at line 25 of the newmtim.h module and has a hexadecimal value of 800E00.
It should be noted that universal synchronous asynchronous receiver transmitter 140 along with a differential line driver 144 function as an RS-422 interface receiving selected PCM data words of an incoming PCM data stream in a parallel format from microprocessor 70 and then transmitting these selected PCM data words in a differential serial RS-422 format to an RS-422 interface of an external computer (not illustrated) for processing. Universal synchronous asynchronous receiver transmitter 140 also provides at its .sub.-- TX.sub.-- RDY output a .sub.-- TXRDY signal to microprocessor 70 which indicates that its transmit buffer is empty. The transmit clock signal, which is a 38.4 kHz signal, is provided by a clock signal generator 142 to the TXC input of universal synchronous asynchronous receiver transmitter 140.
At lines 19-24 of the newmtim.c module the variables for serial port 1 (FSX1, DX1, CLKX1, FSR1, DR1 and CLKR1 inputs/outputs) of microprocessor 70. The pointers which are declared refer to registers within microprocessor 70 which control the operation of serial port 1 of microprocessor 70. The timer 0 (TCLK0 input/output) and timer 1 (TCLK0 input/output) pointers for microprocessor 70 are declared at lines 28-33 of the newmtim.c module.
The analog to digital pointers for analog-to-digital converter 88 are declared at lines 36-37 of the newmtim.c module. The variable "*adc.sub.-- status.sub.-- control.sub.-- ptr" comprises the address of a control register within analog to digital converter 88 which defines the operating characteristics or manner of operation for converter 88. The variable "*adc.sub.-- fifo.sub.-- data.sub.-- out.sub.-- ptr" comprises the address of a separate register within analog to digital converter 88 which has the output digital data from converter 88 latched therein. To retrieve output digital data from converter 88 the variable "*adc.sub.-- fifo.sub.-- data.sub.-- out.sub.-- ptr" is utilized.
Analog-to-digital converter 88 has a plurality of address and control inputs which receive logic signals from microprocessor 70 to control the operation of analog-to-digital converter 88. The ADD0 address input of converter 88 is an address input which determines whether a word placed on the output data bus of converter 88 is a data word from the FIFO RAM within converter 88 or the contents of the status/control register of converter 88. A logic low accesses the data word from location zero of the FIFO, while a logic one selects the contents of the status/control register of converter 88. The .sub.-- CS input of converter 88 is a chip select input which is active low and is used to select converter 88. The .sub.-- DMWR (data memory write) input is an active low input which is used in conjunction with .sub.-- CS input low and ADD0 input high to write data to the status/control register of converter 88. The .sub.-- DMRD (data memory read) input is an active low input used in conjunction with .sub.-- CS input low to enable three state output buffers within converter 88. The .sub.-- CONVST input is a logic input wherein a low to high transition at this input places a track/hold mode of operation into its hold mode and starts a conversion. The .sub.-- CONVST input of converter 88 is synchronous with the CLKIN input of converter 88. The .sub.-- RESET input of converter 88 is an active low reset signal to converter 88. The CLKIN input of analog-to-digital converter 88 is the clock input for converter 88 and is used as the clock source for the A/D conversion. Analog-to-digital converter 88 also has a .sub.-- BUSY output which goes low when converter 88 receives a not CONVST pulse and remains low until the track/hold has gone into its hold mode. In addition, analog-to-digital converter 88 has a .sub.-- ALFL output which indicates at the logic zero state that the word count (i.e., number of conversion results) in the FIFO memory has reached the programmed word count in the status control register. The .sub.-- ALFL output is updated at the end of each conversion. The .sub.-- ALFL output is reset to a logic one when a word is read from the FIFO memory.
The interprocessor communications pointers are declared at lines 40-43 of the newmtim.c module. For example, at line 40 the variable "*t.sub.-- mess.sub.-- opcode.sub.-- ptr" is the variable which comprises the address of the message operation code transmitted to master microprocessor 20 by slave microprocessor 70.
At lines 12-16 of the newmtim.c module the MTIM I/O pointers are declared. At line 12 the variable "*mtim.sub.-- chan.sub.-- out.sub.-- ptr" is declared which indicates to microprocessor 70 that it is to perform the operation of writing data to an eight bit latch 148. Microprocessor provides a thirteen bit address at its XA0-XA12 outputs and a master strobe signal at its .sub.-- MSTRB output. Bits SA8-SA12 of the thirteen bit address signal are supplied to a three line to eight line decoder 92 which decodes these signals. When the signals occurring at the A and G1 inputs of decoder 92 are high and the signals occurring at B, C and G2 inputs of decoder 92 are low, decoder 92 provides at its .sub.-- Y1 output a logic zero chip enable signal which enables latch 148. Microprocessor 70 then writes an eight bit data word into latch 148.
In a like manner, the variable "*mtim.sub.-- data.sub.-- out.sub.-- ptr" indicates to microprocessor 70 that it is to perform the operation of writing data to eight bit latches 146 and 152. The variable "*input.sub.-- port.sub.-- ptr" indicates to microprocessor 70 that it is to provide an enable signal via the .sub.-- Y4 output of decoder 92 and a read signal via inverter 98 and OR gate 100 to tri-state octal buffers 158 and 160 allowing buffers 158 and 160 to read the data at their A1-A8 inputs to the XD0-XD15 inputs/outputs of microprocessor 70. This data is provided by a PCM pushwheel switch 202 and an MTIM pushwheel switch 204 on front panel 200. The variable "*mtim.sub.-- led.sub.-- out.sub.-- ptr" is a pointer assigned to latches 150 and 156, while the variable "*pcm.sub.-- led.sub.-- out.sub.-- ptr" is a pointer assigned to latches 154.
When the logic zero .sub.-- MD.sub.-- CE signal occurring at the .sub.-- Y0 output of three line to eight line decoder 92 is low an enable signal is supplied to latch 146. When the logic zero .sub.-- PL.sub.-- CE signal occurring at the .sub.-- Y3 output of three line to eight line decoder 92 is low an enable signal is supplied to latch 154. When the logic zero .sub.-- ML.sub.-- CE signal occurring at the .sub.-- Y3 output of three line to eight line decoder 92 is low an enable signal is supplied to latches 150 and 156. When the logic zero .sub.-- WS.sub.-- CE signal occurring at the.sub.-- Y5 output of three line to eight line decoder 92 is low an enable signal is supplied to tri-state octal buffers 158 and 160.
The read/write signal and the clock signal for each latch 146, 148, 150, 152, 154 and 156 are also provided by microprocessor 70, with the read/write signal occurring at the output of OR gate 100 and the clock signal occurring at the output of OR gate 102. For example, when latch 146 is enabled and the .sub.-- MRD line is high data is written into an latch 146 by a negative going pulse supplied to the CLK input of latch 146. It should be noted that each latch 146, 148, 150, 152, 154 and 156 has a read back mode of operation which allows data in the latch to be read back by setting the .sub.-- MRD line to the logic zero state.
Referring to FIGS. 3a, 3b, 4 and 6b, microprocessor 70 provides at its XF1 output a watch dog interrupt signal which is supplied to the NSLV.sub.-- WDI of interface circuit 120. Interface circuit 120, in turn, provides an edge signal which is supplied to a watch dog timer 176. Watch dog timer 176 will, in turn, provide a system reset signal (RESET.sub.-- IN) whenever it does not receive an edge signal from interface circuit 120 within a predetermined time period of about 1.6 seconds.
Referring to FIGS. 1a, 1b, 3a, 3b, 5a, 5b and 13 and the computer program listing of Appendix A at line 50 of the newmtim.c module the variable type is "Mtim.sub.-- data" and the name of the variable is "mtim.sub.-- data.sub.-- output". The program's compiler sets aside ten bits of memory for data, one bit is set aside for sync status, one bit is set aside for analog to digital converter 88, one bit is set aside "mclk" and one bit is set aside for "track hold" (lines 189-193 of the newmtim.h module). This is the data output from microprocessor 70 to eight bit latches 146 and 152. Whenever the pointer "*mtim.sub.-- data.sub.-- out.sub.-- ptr" at line 13 of the newmtim.c file is declared in the computer software of Appendix A microprocessor 70 will output data bits MD0-MD9 and bits SYNCST, ADC.sub.-- DR and MCLK to a connector MJ5, and the bit "TRACK.sub.-- HOLD" to an analog track-hold circuit 162.
Referring to FIGS. 3a, 3b, 4 and 6b, a flag "watch.sub.-- dog.sub.-- timer.sub.-- reset" (line 94 of the newmtim.c module) is used to determine the state of the signal occurring at the XF1 output of microprocessor 70. At lines 296-303 of the newmtim.c module the watch dog timer function is set forth. Whenever microprocessor 70 loops through the main program (the newmtim.c module), microprocessor 70 will output a signal to clear timer 176 which is supplied to interface circuit 120. Depending upon whether a falling edge or a rising edge signal was previously provided to timer 176 by interface circuit 120, the edge signal currently being supplied to timer 176 will always be the opposite of the edge signal previously provided to timer 176.
Referring to Appendix B and FIGS. 1a, 1b, 2, 3a and 3b Appendix B sets forth the communications protocol between master microprocessor 20 and slave microprocessor 70 via a dual port RAM 60. The messages sent between microprocessor 20 and microprocessor 70 consist of two bytes of information, the first byte being the data byte and the second byte being the opcode byte. The opcode indicates the function which either master microprocessor 20 or slave microprocessor 70 is to perform, while the data byte provides additional requirements for the particular function being performed by either microprocessor 20 or microprocessor 70. For example, the opcode 40h is from microprocessor 20 to microprocessor 70 commanding microprocessor 70 to search for a PAM (pulse amplitude modulated) sync signal and return an opcode 41h if the PAM sync signal is found. Microprocessor 70 then returns the opcode 41h when microprocessor 70 detects the sync signal. Each opcode 40h and 41h has a data byte of 00h.
When master microprocessor 20 sends the opcode 02h to slave microprocessor 70, microprocessor 20 commands microprocessor 70 to send non-telemetry function status to microprocessor 20. The data byte accompanying opcode 02h is 00h. Microprocessor 70 will respond with an opcode 03h and a data byte consisting of eight bits (MSB=b7,b6,b5,b4,b3,b2,b1,b0=LSB) with bits b0, b1, b2, b3, b4 and b5 indicating non-telemetry function status. For example, when bit b4 is a one the 320 kHz test clock frequency is within 0.1% of its value. When bit b4 is a zero the 320 kHz test clock frequency is outside of its tolerance. When b5 is a one the 25.6 kHz PAM clock frequency is within 0.1% of its value. When bit b5 is a zero the PAM clock frequency is outside of its tolerance. When the data bits b0-b5 are zeros the particular device being tested is not operating within the parameters of the device.
Referring again to FIGS. 1a, 1b, 2, 3a, 3b, 4 and 6b and the computer program listing of Appendix A, the watch.sub.-- dog.sub.-- timer.sub.-- reset variable is initialized to a one. The first time through the system loop of the main program the watch.sub.-- dog.sub.-- timer.sub.-- reset variable is set to zero. Microprocessor 70 then sends a falling edge signal via its port XF1 interface circuit 120 which then clears timer 176 (lines 296-299 of the newmtim.c module). The next time through the system loop of the main program the watch.sub.-- dog.sub.-- timer.sub.-- reset variable is set to one. Microprocessor 70 will send a rising edge signal via its port XF1 to interface circuit 120 (lines 300-303 of the newmtim.c module).
At line 291 of the newmtim.c module the switch mode of the main program is entered. At the end of the main program an r.sub.-- message.sub.-- flag is examined. If this flag is set then master microprocessor 20 has communicated with slave microprocessor 70. When slave microprocessor 70 is interrupted an interrupt service routine identified as ipcomms2.c is entered. The interrupt service routine sets a flag which is the r.sub.-- message.sub.-- flag and retrieves the opcode and the data byte of the message supplied by master microprocessor 20 to slave microprocessor 70 via dual port RAM 60.
When the r.sub.-- message.sub.-- flag is set the main program calls the mail.c module. When, however, the r.sub.-- message.sub.-- flag is not set the main program continues to loop. The mail.c module examines the opcode byte relating to the function to be performed by slave microprocessor 70. For example, if the master microprocessor 20 commands the slave microprocessor to process a DISPLAY TEST which is opcode 60h, the program jump to line 220 of the mail.c module executing the code at lines 220-225 of the mail.c module. At line 222 the mode variable is set equal to "DISPLAY TEST". The program of Appendix A returns to the main program (newmtim.c module) at line 293. The program then executes the code beginning at line 293 (case DISPLAY.sub.-- TEST) and continuing through line 323.
Referring to FIGS. 3a, 3b, 5a, 5b and 13, during the display test microprocessor 70 energizes the light emitting diodes 206 and 208 on the front panel 200 of the present invention for about three seconds. The light emitting diodes 206 and 208 on the front panel 200 are energized by microprocessor 70 which provides logic zero signals through latch 154 to the PCM light emitting diodes 206 and latches 150 and 156 to the MTIM light emitting diodes 208. Microprocessor 70 next reads the settings, which is a binary number, from a PCM pushwheel switch 202 and an MTIM pushwheel switch 204 on front panel 200 and then energizes light emitting diodes 206 and 208 to display the settings from pushwheel switches 206 and 208. Microprocessor 70 utilizes a flag "all.sub.-- leds.sub.-- are.sub.-- on" to keep track of when light emitting diodes 206 and 208 are energized and when light emitting diodes 206 and 208 are displaying the settings from pushwheel switches 206 and 208. When light emitting diodes 206 and 208 are energized timer 1 of microprocessor 70 is polled for a time period of about one half second and then microprocessor 70 resets timer 176. This sequence is repeated to prevent watch dog timer 176 from generating a reset signal. After about three seconds the main program begins to cycle through a loop. Since the flag "all.sub.-- leds.sub.-- are.sub.-- on" is set microprocessor 70 utilizes two lines of code (lines 321 and 322 of newmtim.c module) to read the settings of from pushwheel switches 206 and 208 and then display these settings on light emitting diodes 206 and 208. When the master microprocessor 20 sends the opcode 0.times.61 to slave microprocessor 70, the main.c module sets the mode=PAUSE (line 230 of mail.c) which causes no matches to any of the cases (set forth at lines 291-564 of newmtim.c module) within the switch statement of the main program. The main program (newmtim.c module) then resets the watch dog timer 176 and checks the r.sub.-- message.sub.-- flag until a new message is received from master microprocessor 20. The mail.c module turns off the PCM light emitting diodes 206 (line 227 of the mail.c module) and the MTIM light emitting diodes 208 (line 228 of the mail.c module) and resets the flag "all.sub.-- leds.sub.-- are.sub.-- on" at line 233 of the mail.c module.
Referring to FIGS. 1a, 1b, 3a, 3b, 4 and 8, whenever master microprocessor 20 supplies to slave microprocessor 70 an opcode 11h and a data byte 00h; an opcode 13h and a data byte 00h or an opcode 15h and a data byte 00h a DAC.sub.-- ADC.sub.-- TEST is implemented which checks the operation of a digital-to-analog, analog-to-digital loop in the circuit elements of the present invention. Master microprocessor 20 supplies to the D0-D7 inputs of an digital-to-analog converter 38 an eight bit data word which digital-to-analog converter 38 then converts the eight bit data word to a first analog signal which has a voltage range of between 0 volts and 1.5 volts. A clock signal generator 132 provides at its CLK output a 256 kHz clock signal which is supplied to the 256 KHZ input of an interface circuit 120. Interface circuit 120 then divides the signal by a factor of ten resulting in a 25.6 kHz clock signal at the NLDAC output of interface circuit 120. This 25.6 kHz signal provided by interface circuit 120 is next supplied to the .sub.-- LDCA input of digital-to-analog converter 38 which then converts the digital words to its equivalent analog signal at a frequency of 25.6 kHz. A logic zero chip select signal (NDAC.sub.-- AC) is also supplied to the .sub.-- CS input of digital-to-analog converter 38 by interface circuit 120 enabling digital-to-analog converter 38.
This first analog signal is supplied to an operational amplifier 40 which provides at its output a second analog signal having a voltage range of .+-.1.5 volts. The second analog signal from amplifier 40 is supplied through an analog multiplexer 174 to a 6 pole low pass bessel filter 121. Bessel filter 121 has a center frequency f.sub.c =38 kHz and an attenuation of -40 dB at 140 kHz. This filter 121 is utilized to remove from the PAM data signal subcarrier channel oscillator frequencies which are 144 kHz and 160 kHz.
The filtered analog PAM signal is next supplied to an analog-to-digital converter 88 which converts the filtered analog signal to an equivalent twelve bit digital word. This twelve bit digital word is supplied to the XD0-XD15 inputs/outputs of microprocessor 70 for processing by microprocessor 70. Microprocessor 70 also provides a pulse signal (.sub.-- CONVST) at its XF0 output which is supplied to the .sub.-- CONVST input of analog to digital converter 88 initiating a data conversion by analog to digital converter 88. Analog-to-digital converter 88 receives an 8 MHz clock signal from Flip-Flop 96 which divides a 16 MHz from the H1 output of microprocessor 70 by two.
The voltages selected for testing are about -1.45 VDC (11h), 0.00 VDC(13h) and 1.45 VDC(15h). After comparing the twelve bit digital word supplied to its XD0-XD15 inputs to a predetermined value, microprocessor 70 supplies to microprocessor 20 a status message which indicates whether the analog voltage signal provided to converter 88 is within one percent of the expected voltage.
Referring now to FIGS. 1a, 1b, 3a, 3b, 4, 5a, 5b and 13, the master microprocessor 20 first sends the message "search for PAM sync" (opcode 40h, data byte 00h). Upon detecting the PAM sync signal, slave microprocessor 70 sends a message to the master microprocessor "PAM sync detected" (opcode 40h, data byte 00h). The master microprocessor 20 then sends a message to slave microprocessor 70 having an opcode of 42h and a data byte of 00h. Microprocessor 20 is sending a command to microprocessor 70 to enter a PAM mode of operation. Microprocessor 70 then calls the mail.c module of the software of Appendix A. The case PAM.sub.-- MODE at lines 128-154 of mail.c turns off the PCM light emitting diodes 206 and the MTIM light emitting diodes 208 as well as the frame sync light 222 on front panel 200.
In the case PAM MODE the processing function is performed by three interrupt service routines: c.sub.-- int03 (EN.sub.-- PAM.sub.-- CLK) within the module st3.c; cint09 (en.sub.-- tint.sub.-- 0) within the module t02.c and c.sub.-- int01 (EN.sub.-- ALFL) within the module gs2.c. The mail.c module enables these interrupts at lines 139 and 140 of mail.c. Since the mode is set equal to PAM a switch is executed to the main program, case PAM beginning at line 460 of the newmtim.c module and continuing through line 496 of the newmtim.c module.
In case PAM of the main program microprocessor 70 performs a debounce function which allows the MTIM pushwheel switch 204 on front panel 200 to settle out. The MTIM pushwheel switch 204 on front panel 200 is used to set a binary value into microprocessor 70 which is representative of a particular PAM channel of data to be displayed by the MTIM light emitting diodes 208. The debounce function in case PAM is performed as follows: Each time the main program passes through case PAM, microprocessor 70 reads MTIM pushwheel switch 204 on front panel 200 and then compares the binary value read with the binary value from the from the previous pass through case PAM (lines 460-496 of the newmtim.c module). When the values the mtim.sub.-- debounce.sub.-- count is incremented, otherwise it is set to zero (lines 462-467 of the newmtim.c module). The mtim.sub.-- debounce.sub.-- count is incremented until a count of 10,000 is reached allowing a sufficient time period for MTIM pushwheel switch 204 on front panel 200 to settle out into a stable state.
At lines 469-485 of the newmtim.c module, the current binary value from MTIM pushwheel switch 204 is checked to determine whether the number entered into switch 204 is outside the range of channels for PAM data. If MTIM pushwheel switch 204 reads zero or above hexadecimal 64 or if the least significant digit is hexadecimal A through hexadecimal F and the bogus.sub.-- mtim.sub.-- pushwheel.sub.-- flag is not set, then a DATA.sub.-- SELECTION.sub.-- ERROR message (hexadecimal 71) is sent to master microprocessor 20 by slave microprocessor 70 and the bogus.sub.-- mtim.sub.-- pushwheel.sub.-- flag is set. This bogus.sub.-- mtim.sub.-- pushwheel.sub.-- flag prevents microprocessor 70 from again sending this message to microprocessor 20. When pushwheel switch 204 is set within the range of allowable channels in PAM mode and the bogus.sub.-- mtim.sub.-- pushwheel.sub.-- flag is still set, a new DATA SELECTION ERROR message (hexadecimal 71) is sent to master microprocessor 70 by slave microprocessor 20 indicating pushwheel switch 204 is now within the allowable range of sixty four PAM channels. The bogus.sub.-- mtim.sub.-- pushwheel.sub.-- flag is next reset.
Master microprocessor 20 will display an error message on a dot matrix alpha numeric display 210 of front panel 200 indicating that MTIM pushwheel switch 204 is not set at a value which is within the range of allowable channels in PAM mode.
The PAM mode also indicates to master microprocessor 20 that slave microprocessor 70 is locked to the PAM sync signal. When a sent.sub.-- lost.sub.-- sync.sub.-- flag is set and the PAM sync signal has been found, the PAM.sub.-- SYNC.sub.-- DETECTED message (hexadecimal 41) is sent by microprocessor 70 to microprocessor 20. If the PAM sync signal is lost by microprocessor 70 and the sent.sub.-- lost.sub.-- sync.sub.-- flag is low, the PAM.sub.-- SYNC.sub.-- LOST message (hexadecimal 43) is sent to master microprocessor 20 by slave microprocessor 70. The sent.sub.-- lost.sub.-- sync.sub.-- flag is set until sync is regained.
At this time it should be noted that the PAM data signal comprises an analog waveform received from a missile telemetry unit which is divided into 64 channels. Channels 1 through 59 represent data signals sent from the missile's telemetry unit while channels 60 through 64 comprises the sync signal used to identify the start of a frame of PAM data. The PAM analog signal is a three volt signal peak to peak which ranges from -1.5 VDC to +1.5 VDC. In addition, the PAM data signal is modulated by one of two subcarrier channel oscillator frequencies which are 144 kHz and 160 kHz.
The interrupts c.sub.-- int03 in module st3.c, c.sub.-- int09 in t02.c and c.sub.-- int01 in module gs2.c operate in a round-robin manner in the order set forth to implement all of the PAM data processing. Microprocessor 70 processes each of the sixty four PAM channels by utilizing the PAM clock which is a clock signal derived from the PAM data signal and which is a clock signal synchronized to each of the sixty four PAM channels. A logic zero interrupt is provided by interface circuit 120 to the .sub.-- INT2 input of microprocessor 70 indicating the presence of a PAM channel to be processed by microprocessor 70. This interrupt results in a jump to the stc.3 module of the computer program of Appendix A. In the st3.c module a logic one signal is generated by microprocessor 70 which is supplied via its DR0 output to the PC.sub.-- INT input of interface circuit 120. This logic one sets a Flip-Flop 318 (FIG. 14g) to the logic one state within interface circuit 120 allowing the PAM clock signal which is derived from the next channel to be processed by processor 70 to clock the Flip-Flop 318 to generate another interrupt. The Flip-Flop 318 within interface circuit 120 is set with bit 6 of the FSR/DR/CLKR port 0 control register within microprocessor 70.
A timer 0 within microprocessor 70 is initiated to provide a delay of about 12.5 us. which equates to a count of 100 (lines 31-33 of st3.c). A check is made to see if oper.sub.-- cal is set and whenever oper.sub.-- cal is set then mtim.sub.-- data.sub.-- output.data is equal to mtim.sub.-- 1015.sub.-- or.sub.-- 8 (line 36 of stc.3 module). This is a calibration function which results in an output at latches 146 and 152 of the binary equivalent of 1015, 8 or 512. The binary equivalent of 1015 represents 100% calibration, 8 represents 0% calibration and 512 represents a calibration error. Oper.sub.-- cal is set only when master microprocessor 20 supplies to slave microprocessor 70 an opcode 21h (calibrate PAM) and a data byte which has bit b0 set to a one or a zero. When bit b0 of the data byte is set to one then slave microprocessor 70 is to output 0% (MTIM DATA=8)for all non-sync data. When bit b0 of the data byte is set to zero then slave microprocessor 70 is to output 100% (MTIM DATA=1015) for all non-sync data.
If the PAM sync signal has been decoded by microprocessor 70, then the PAM data is scaled in accordance with the following expression: ##EQU1## where R.sub.0% is a voltage reading representing an ADC (analog to digital conversion) input voltage for channel 60 of the sync signal, R.sub.CH is the PAM data sample voltage reading representing the channel of telemetry data being processed by slave microprocessor 70 and R.sub.100% is a voltage reading representing an ADC input voltage for channels 61, 62 and 63 of the sync signal. R.sub.0% is about +1.5 volts and R.sub.100% is about -1.5 volts. This expression provides a range of 8 to 1015 for 0% to 100% of full scale. If the scaled value of the expression (1) is more than 1023 it is set equal to 1023. If the scaled value is less than zero, that is the scaled value is negative, it is set equal to zero.
When slave microprocessor 70 is in a calibration mode the simulated scaled PAM data is stored in an array (pam.sub.-- test.sub.-- array) within microprocessor 70 for later comparison with a fixed set of values stored within microprocessor 70. When the oper.sub.-- cal line to master microprocessor 20 is low and the hund.sub.-- zero line to master microprocessor 20 is high, slave microprocessor 70 will output the binary equivalent of 1015 to latches 146 and 152 indicating that the simulated PAM data compared favorably with the fixed set of values stored within microprocessor 70. In a like manner, when the oper.sub.-- cal line to master microprocessor 20 is low and the hund.sub.-- zero line to master microprocessor 20 is low, slave microprocessor 70 will output the binary equivalent of 8 to latches 146 and 152 indicating that the simulated PAM data compared favorably with the fixed set of values stored within microprocessor 70. When microprocessor 70 outputs the binary equivalent of 512 the simulated PAM data did not compare with the fixed set of values stored within microprocessor 70.
If oper.sub.-- cal (operate mode) is high and sync is established then the PAM data is scaled in accordance with expression one and then written to eight bit latches 146 and 152. The identification of the channel is written to latch 148 and the syncst bit (SYNCST), which is to be written to latch 152, is now at the logic one state indicating sync has been established. If sync is not established then logic zeros are written to latches 146 and 152, that is MD0-MD9 are zeros and SYNCST is also zero. When the channel identification matches the ID set by MTIM pushwheel switch 204 on front panel 200, microprocessor 70 latches the MTIM data in latches 150 and 156 which then provide the MTIM data to MTIM light emitting diodes 208 on front panel 200 indicating the binary value of the MTIM data for the selected channel.
The stc.3 module increments and reinitializes chan.sub.-- id which is a channel counter (lines 85-88 of the st3.c module).
The timer 0 within microprocessor 70 initiates the interrupt cint09 in the t02.c module. When timer 0 times, that is reaches a count of 100, the interrupt cint09 is generated and microprocessor 70 executes the code within the t02.c module of the software of Appendix A. When the channel identification from MTIM pushwheel switch 204 matches the channel of PAM data being processed by microprocessor 70, microprocessor 70 asserts a track/hold signal which is written to latch 152 and appears at the 6Q output of latch 152. This track/hold signal which is now a logic one is supplied to an analog track/hold amplifier 162 which also receives the analog PAM data signal from bessel filter 121. Circuit 162, in turn, tracks the analog PAM data signal and then holds the PAM data sample when the track/hold signal is asserted low allowing the PAM data sample for the selected PAM channel to be accessible through a connector 213 on front panel 200. At line 20 of the t02.c module microprocessor 70 sets its XF0 output to a logic zero state generating a logic zero CONVST signal which is supplied to the .sub.-- CONVST input of analog to digital converter 88. This CONVST signal initiates an analog-to-digital conversion of the incoming analog PAM data. The ADC.sub.-- DR signal from latch 152 is also set low. When this signal is low external devices do not read the MTIM data output from latches 146 and 152 via the MTIM.sub.-- DATA (12:0) bus to connector MJ5.
Analog-to-digital converter 88 provides at its .sub.-- ALFL output a logic zero interrupt pulse which is supplied to the .sub.-- INT0 input of slave microprocessor 70. This pulse indicates that an analog to digital conversion of analog PAM data is complete and that an equivalent digital data byte (bits SD0-SD11) is ready to be supplied to the XD0-XD11 data inputs of microprocessor 70 for processing by microprocessor 70. This interrupt causes a jump to the gs2.c module of Appendix A.
This gs2.c module is used to locate the PAM sync signal. At lines 12-13 the TRACK.sub.13 HOLD signal from the 6Q output of latch 152 is driven to a logic zero and ADC.sub.-- DR signal is set high. It should be noted that a rising edge of the ADC.sub.-- DR signal indicates to the missile subsystem test set (MSTS) that it is to accept MTIM data output via the MTIM.sub.-- DATA (12:0) bus from latches 146 and 152.
During the gs2.c module microprocessor 70 retrieves samples of digital data from analog-to-digital converter 88 and then uses two state machines operating in parallel to detect the PAM sync signal. The first state machine is used to locate the 0%, 100%, 100%, 100%, 50% PAM sync sequence that marks the end of a frame of PAM data, that is the first state machine locates channels 60-64 of a frame of PAM data. The second state machine tracks the spacing between frame sync patterns to ensure that the frame sync patterns are the correct distance apart before sync is actually established. Two frame sync patterns must be detected by microprocessor 70 at the correct spacing before microprocessor 70 is synchronized to the incoming PAM data stream. Each time this interrupt service routine is executed, it makes one pass through the code (gs2.c module) changing the states of both machines as required.
The first state machine which looks for the sync pattern has seven states including a state "NOT.sub.-- SEARCHING" during which the state machine is disabled. The state "NOT.sub.-- SEARCHING" does not match any of the "case:" instances of the switch (sync.sub.-- state) statement. During the state "IDLE:" microprocessor 70 is waiting for first zero percent value of the PAM sync pattern. When the first PAM sample is greater than or equal to the zero percent threshold voltage the first state machine proceeds to state "FIRST.sub.-- ZERO.sub.-- PERCENT:" during which the first state machine waits for the first hundred percent voltage value of the PAM sync signal. The first state machine will remain in this state for repeated zero percent voltage values or return to state "IDLE".
When the first hundred percent voltage value of the PAM sync signal is located by microprocessor 70, the first state machine proceeds to state "SECOND.sub.-- HUNDRED.sub.-- PERCENT:" during which the state machine waits for the second hundred percent voltage value of the PAM sync signal, otherwise the first state machine returns to state "IDLE". When the second hundred percent voltage value of the PAM sync signal is located by microprocessor 70, the first state machine proceeds to state "THIRD.sub.-- HUNDRED.sub.-- PERCENT:" during which the state machine waits for the third hundred percent voltage value of the PAM sync signal, otherwise the first state machine returns to state "IDLE". When the third hundred percent voltage value of the PAM sync signal is located by microprocessor 70, the first state machine calculates the fifty percent value of the PAM sync signal, checks tolerance and proceeds to state "FIFTY.sub.-- PERCENT:" during which the state machine returns state "IDLE".
The second state machine of the gs2.c module checks the spacing between sync patterns has four states. Until the first PAM sync pattern is detected the second state machine remains in a state identified as "LOST.sub.-- SYNC". When the first PAM sync pattern is located, that is the fifty percent value has been detected in channel sixty four by state machine one, the channel identification counter is set to sixty four. When the channel identification is sixty four, the voltage level in channel sixty four is fifty percent and the second state machine is in state "LOST.sub.-- SYNC" then the second state machine proceeds to a state identified as "FIRST.sub.-- SYNC" indicating that a PAM sync pattern has been detected. In state "FIRST.sub.-- SYNC:", microprocessor 70 is waiting for second sync pattern. When a second PAM sync pattern is detected by the first state machine sixty four channels after the first PAM sync pattern was located by the first state machine, the second state machine proceeds to a state "IN.sub.-- SYNC:" indicating that two sync patterns have been located which are the correct distance apart. The second state machine also has a state identified as "LOST.sub.-- FIRST:" which the second state machine proceeds to when it missed one PAM sync pattern. Thus, the second machine determines when microprocessor 70 is synchronized to the incoming PAM data stream.
During the gs2.c module frame sync light 222 on front panel 200 is energized when microprocessor 70 when bit 6 of the fsr/dr/clkr port 1 control register of microprocessor 70 is pulled low.
The gs2.c module also resets the getting.sub.-- test.sub.-- adc.sub.-- sample which is required for the analog-to-digital, digital-to-analog test in the calibration mode.
At this time it should be noted that a zero percent voltage value in the PAM waveform is approximately +1.5 VDC, a one hundred percent voltage value is approximately -1.5 VDC and a fifty percent voltage value in the PAM waveform is approximately 0 VDC.
Referring now to FIGS. 3a, 3b, 5b and 13 the newmtim.c module the case "PCM:" (line 498 of the newmtim.c module) includes a switch debouncing routine which monitors PCM pushwheel switch 202 and an MTIM pushwheel switch 204 on front panel 200. When monitoring PCM pushwheel switch 202, the pcm.sub.-- debounce.sub.-- count reaches 100 before it is zeroed. DATA.sub.-- SELECTION.sub.-- ERROR messages are not utilized when processing a PCM data stream since all switch settings for PCM pushwheel switch 202 are valid for the PCM mode. Since the pushwheel inputs from PCM pushwheel switch 202 are supplied to microprocessor 70 by latch 160 in the byte of the reading of the switch settings, the reading is masked off with hexadecimal FFFF00FF and then shifted right by eight bits. The hexadecimal value of the switch setting is then converted to its decimal equivalent.
The MTIM output pushwheel settings from MTIM pushwheel switch 204 in PCM mode in the same manner the settings are monitored in PAM mode. The valid range of settings for MTIM pushwheel switch 204 in PCM mode is from hexadecimal 00 to hexadecimal 7F. When the settings on MTIM pushwheel switch 204 in PCM mode are greater than hexadecimal 7F and the bogus.sub.-- mtim.sub.-- pushwheel.sub.-- flag is not set, then a DATA.sub.-- SELECTION.sub.-- ERROR message (hexadecimal 71) is sent to master microprocessor 20 by slave microprocessor 70 and the bogus.sub.-- mtim.sub.-- pushwheel.sub.-- flag is set.
Referring to FIGS. 1a, 1b, 2, 3a and 3b, 5a and 13, microprocessor 20 receives a PCM (pulse code modulated) data stream via universal synchronous asynchronous receiver transmitter (USART) 26 from an external device such as a telemetry unit. USART 26 detects a sync pattern and then interrupts microprocessor 20 which then retrieves each word of PCM data from each frame of the PCM data stream. Dual Port RAM 60 has two banks (bank 0 and bank 1) for storing data therein and then having data read therefrom. Each bank in dual port RAM 60 is adapted for storing one frame of PCM data. This, in turn, requires that master microprocessor 20 first store one frame of PCM data in the bank 0 of dual port RAM 60 and then send a command to slave microprocessor 70 to retrieve the frame of PCM data stored in the bank 0 of dual port RAM 60. This command is PCM mode (opcode 50h, data byte 00h) which indicates to microprocessor 70 that PCM data is stored in bank 0 of dual port RAM 60 and is awaiting processing by slave microprocessor 70.
To generate an interrupt to the master microprocessor 20, the slave microprocessor 70 supplies the address 3FEh to the A0-A9 inputs (right side inputs) of dual port RAM 60. This, in turn requires that the A0 input of dual port RAM 60 be at the logic zero state and that the A1-A9 inputs of dual port RAM 60 be at the logic one state. To generate an interrupt to the slave microprocessor 70, the master microprocessor 20 supplies the address 3FFh to A0L-A9L inputs (left side inputs) of dual port RAM 60. This requires that the A0L-A9L of dual port RAM 60 be at the logic one state.
While microprocessor 70 is retrieving the PCM data stored in the bank 0 of dual port RAM 60, microprocessor 20 is storing another frame of PCM data in the bank 1 of dual port RAM 60. As storage of each subsequent frame of data into one of the two banks of PCM data in dual port RAM 60 is completed, master microprocessor 20 sends a message to slave microprocessor 70 to begin processing the recently filled bank by alternately sending the following two commands: (1) Process DPRAM Bank 1 (opcode 52h and data byte 00h) or (2) Process DPRAM Bank 0 (opcode 51h and data byte 00h).
The getpcm.c module is used by microprocessor 70 to retrieve data from bank 0 or bank 1 of dual port RAM 60 depending upon the message received from microprocessor 20. If the message is opcode 50h or opcode 51h microprocessor 70 is commanded to read the PCM data from bank 0 (lines 18-19 of the getpcm.c module) otherwise microprocessor 70 reads the PCM data from bank 1. Microprocessor 70 will then read 100 words of PCM data from either bank 1 or bank 2 of dual port RAM 60. The PCM data words in two's complement form are stored in a one hundred word/slot array (identified as pcm.sub.-- wd[]) within RAM in microprocessor 70.
Each word of PCM data has thirty two bits or four eight bit bytes. The upper three bytes of each word are set to zero and bit eight of the lower byte is examined to determine its state. If this bit is a logic zero each bit of the upper three bytes is cleared to zero. If this bit is a logic one each bit of the upper three bytes are set to a logic one. Thus, each PCM data byte read from the dual port RAM 60 is converted to 32-bit 2's compliment form. The pushwheel setting 202 is compared with the channel identification for sending input PCM data via latch 154 to the PCM light emitting diodes 206.
The module lookups.asm includes a lookup table (set forth as .sub.-- scale.sub.-- 2 table at lines 6-19 of the module lookups.asm) which identifies each word of PCM data that is to be processed in accordance with the function identified as scale 2. The pcm.sub.-- mod3.c module includes a counter identified as pcm.sub.-- loop.sub.-- counter that counts the number of PCM words processed in accordance with the function scale 2.
Microprocessor 70 utilizes a one hundred twenty eight slot internal array (identified as PCM[]) to store each channel of PCM data processed in accordance with the function scale 2. The function scale 2 is expressed as follows: ##EQU2## where the symbol "*" indicates multiply.
Microprocessor 70 retrieves a pair of hexadecimal numbers from the lookup table which identify the location of the word in the one hundred slot array in microprocessor 70 and the location for storing the data in the one hundred twenty eight slot array in microprocessor 70. For example, for the numbers 16h, 0Fh, microprocessor 70 will read the PCM word stored in slot 15 (0F hexadecimal) of the 100 slot array in microprocessor 70, process the word in accordance with the function scale 2 and store the result in slot 16h of the 128 slot array in microprocessor 70.
The scaled PCM data is output from microprocessor 70 via latches 146 and 152 through bus MTIM.sub.-- DATA(12:0) to connector MJ5, while the channel identification is output from microprocessor 70 via latch 148 through bus MTIM.sub.-- CHAN(6:0) to connector MJ5 (FIG. 6b). Connector MJ5 is connected to the missile subsystem test set. The bit ADC.sub.-- DR from latch 152 when at the logic one state indicates to the missile subsystem test set that the scaled PCM data from microprocessor 70 is valid.
At this time it should be noted that Appendix G sets forth the manner by which each of the 100 channels of PCM data is to be processed by microprocessor 70. For example, as shown in Appendix B each of the PCM words in channels 20 through 40 of the 100 channel PCM data stream will be processed in accordance with the function scale 2 and then stored in the 128 channel array as set forth in Appendix G.
OPERATION OF THE COMPUTER SOFTWARE FORMASTER MICROPROCESSOR 70
Referring to FIGS. 1a, 1b, 2, 3a, 3b and 13 and the software of Appendix C, (which is the source code listing for microprocessor 20 and is identified as MTIMASTER.ASM) at lines 13-146 symbolic references are assigned to constants. For example, at line 13 DSP.sub.-- SW.sub.-- VER.sub.-- ADDRESS EQU 70h allows the assembler to replace the symbol "DSP.sub.-- SW.sub.-- VER.sub.-- ADDRESS" with 70h. At line 120-146 symbolic references are assigned to bits of the ports P1, P2 and P3 of microprocessor 30. Port P0 of microprocessor 20 is being used as a general purpose data and address bus. For example, the line of code HUND.sub.-- zero refers to the bit occurring at the P10 input of master microprocessor 20. Further, the line of code HI.sub.-- IO refers to the bit occurring at the P17 output of master microprocessor 20.
At lines 151-166 of MTIMASTER.ASM interrupt vectors are established. A logic one RESET signal occurring at RST input of microprocessor 20 initializes microprocessor 20. An active low interrupt signal (.sub.-- RXRDY) from USART 26 to the P32 input of microprocessor 20 will result in a jump to address 0003h. There are interrupt vectors for TIMER0 and TIMER1 which are internal timers of microprocessor 20. There is an interrupt .sub.-- SLAV.sub.-- MASTER.sub.-- INT from dual port RAM 60.
Beginning at line 169 microprocessor 20 is initialized. The input/output ports P0, P1 and P2 of microprocessor 20 are set to a known state. A flag MBANK.sub.-- STAT is set to a logic one. The signal MBANK is a control signal provided to dual port RAM 60 which allows master microprocessor 20 to access BANK 0 and BANK 1 of dual port RAM 60. BANK 1 is accessed when the signal MBANK is set, BANK 0 is accessed when the signal MBANK is cleared. Internal registers are set to trigger the USART 26 and dual port RAM 60 interrupts when a falling edge occurs. The USART 26 and dual port RAM 60 interrupts are then cleared. TIMER0 and TIMER1 of microprocessor 20 are cleared.
Interrupts which are active during the power up sequence microprocessor 20 are initialized beginning at line 189 of MTIMASTER.ASM. Interrupt priorities are set beginning of line 198 of MTIMASTER.ASM with the highest priority being assigned to USART 26. At line 207 the TIMER1 interrupt service routine is told not to execute its routine. The USART 26 is next initialized to accept PCM telemetry data allowing USART 26 to search for the PCM frame sync signal. At lines 212-216 of MTIMASTER.ASM, register bank 3 of microprocessor 20, which is utilized to process PCM data, is initialized.
At line 218 of MTIMASTER.ASM, the main program for microprocessor 20 is entered. At line 219 of MTIMASTER.ASM, a flag is cleared indicating that calibration test performed by microprocessors 20 and 70 have not passed. At line 220 of MTIMASTER.ASM the USART interrupt service routine is notified that the first frame of PCM data has not been acquired. At lines 221, 222 and 223 of MTIMASTER.ASM respectively the flags PCM.sub.-- FRAME.sub.-- ERROR, NO.sub.-- PCM and CALIBRATING are cleared.
At line 224 of MTIMASTER.ASM the flag, which indicates that a "data select error", opcode error 71h was previously supplied to microprocessor 20 by microprocessor 70, is cleared. At line 225 of MTIMASTER.ASM the variable which receives the opcode for messages supplied by microprocessor 70 to microprocessor 20 is cleared. At line 226 of MTIMASTER.ASM the USART interrupt service routine is notified that the HUND.sub.-- ZERO signal occurring at the P10 input of microprocessor 20 has not changed state during calibration. Microprocessor 20 is initialized to a PAM mode of operation at line 228 of MTIMASTER.ASM. A jump to the calibrate mode occurs at line 229 of MTIMASTER.ASM if the missile subsystem test set sends a logic zero to microprocessor 20 via its P27 input. A routine SELF.sub.-- TEST is called at line 230 of MTIMASTER.ASM which is a display test for checking the PCM pushwheel switch 202 and an MTIM pushwheel switch 204 on front panel 200. The SELF.sub.-- TEST routine test all front panel display elements on front panel 200 and allows an operator to access PAM and PCM data simulated by the present invention via connector 211 on front panel 200.
It should be noted that front panel 200 has a connector 215 which is used to access PAM and PCM frame sync and an MTIM data and clock output connector 217.
At line 231 a routine CALIBRATE is called which test, for example, the internal RAM and registers of microprocessor 20 and the ability of microprocessor 20 to access to dual port RAM 60. When the OPER.sub.-- CAL line is high (operate mode), a display test is executed. When OPER.sub.-- CAL line is low (calibrate mode), a display test is not executed.
After the self test of the missile telemetry data interface circuit are complete, the MAIN.sub.-- PROCESSING is entered at line 233 of MTIMASTER.ASM. The USART 26 interrupt is disabled at line 234 of MTIMASTER.ASM.
Referring to FIGS. 1a, 1b and 6a microprocessor 20 supplies a pair of signals TM.sub.-- SEL.sub.-- 0 and TM.sub.-- SEL.sub.-- 1 to an analog multiplexer 174 which allows multiplexer 174 to pass through a ground, external generated PCM or PAM data, simulated PCM data or simulated PAM data. At lines 123-127 of MTIMASTER.ASM the logic states for allowing analog telemetry data to pass through multiplexer 174 are defined. For example, when the TM.sub.-- SEL.sub.-- 1 signal is zero and the TM.sub.-- SEL.sub.-- 0 signal is one external PAM or PCM data from a missile's telemetry unit passes through multiplexer 174 via its S2A input. At lines 235 and 236 of MTIMASTER.ASM the TM.sub.-- SEL.sub.-- 0 and TM.sub.-- SEL.sub.-- 1 signals are initialized so that external PCM or PAM telemetry data passes through multiplexer 174. At line 237 of MTIMASTER.ASM the PAM PCM signal is cleared to a logic zero state. This signal is supplied to the A0 input of an analog multiplexer 170 which allows PAM or PCM telemetry data to pass through multiplexer 170 to an output buffer 172. When the S2A input of multiplexer 170 is selected filtered PAM data from 6 pole low pass bessel filter 121 passes through multiplexer 170 to output buffer 172. When missile telemetry data interface circuit is in the PCM mode, PCM data (SEL.sub.-- DATA) supplied to the RXD input of USART 26 is also provided to the S1A input of multiplexer 170 passing through multiplexer 170 to output buffer 172.
At this time it should be noted that the mode of processing telemetry data which is either PAM mode or PCM mode is determined by the detection of the sync signal by microprocessor 70 or USART 26. When microprocessor 70 first detects a PAM sync signal the mode of processing telemetry data is changed to PAM mode. When, however, USART 26 first detects a PCM sync signal, the mode of processing telemetry data is changed to PCM mode.
Referring to FIGS. 1c, and 6a telemetry data which passes through analog multiplexer 174 is supplied to a comparator 44 which converts the input +15 V to -15 V input signal to a TTL compatible 0 V to +5 V signal. The 0-5 V TTL compatible signal is next supplied to an inverter 46 which inverts the signal and eliminates noise from the signal.
Referring now to FIG. 1c, 4, and 14a, 14b, and 14c, when interface circuit 120 receives unencrypted PCM data directly from a missile telemetry unit there is a requirement that the data be decoded or de-randomized for processing by missile telemetry data interface circuit. Interface circuit 120 includes a de-randomizer circuit 223 which receives randomized unencrypted PCM data directly from the telemetry unit via its BTM.sub.-- IN input.
Referring to FIG. 14d, the randomized PCM data is provided by an externally located randomizer circuit which is identical to the randomizer circuit 225 illustrated in FIG. 14d. Randomizer circuit 225 includes a pair of EXCLUSIVE-OR gates 226 and 232 and a pair of 8-Bit Parallel-Out Serial Shift registers 228 and 230 which comprise the data randomizer within randomizer circuit 225. Shift registers 228 and 230 are configured to form a 15 bit shift register with the fourteenth and fifteenth bit of the shift register being connected to the inputs of EXCLUSIVE-OR gate 232. The data randomizer within randomizer circuit 225 encodes PCM telemetry data in accordance with the following Boolean expression:
D=A.sym.B.sym.C (3)
where A is the PCM data input to EXCLUSIVE-OR gate 226 via the PRE.sub.-- RAN.sub.-- PCM input of circuit 225, B is the data bit which is output from the QF output of shift register 230 to the first input of EXCLUSIVE-OR gate 232, C is the data bit which is output from the QG output of shift register 230 to the second input of EXCLUSIVE-OR gate 232 and D is the output of EXCLUSIVE-OR gate 226. The randomized PCM data from EXCLUSIVE-OR gate 226 is supplied to shift register 228 and than clocked through shift register 228 by a 320 kHz clock signal to eliminate glitches which may occur at the output of EXCLUSIVE-OR gate 226.
Randomizer circuit 225 also includes a pair of Synchronous 4-Bit Decade counters 234 and 236 which receive an external 32 MHz clock signal generated by a clock signal generator 106 (FIG. 3a). Counter 234 divides the 32 MHz clock signal by ten resulting in a 3.2 MHz clock signal at the 3.sub.-- 2 output of randomizer circuit 225. Counter 236 divides the 3.2 MHz clock signal by ten resulting in the 320 kHz signal which to the clock inputs of shift registers 228 and 230.
Referring to FIG. 14e, de-randomizer circuit 223 includes a pair of 8-Bit Parallel-Out Serial Shift registers 240 and 242 and a pair of EXCLUSIVE-OR gates 244 and 246. The de-randomizer circuit 223 de-randomizes PCM randomized telemetry data in accordance with the following Boolean expression:
A'=D.sym.B.sym.C (4)
where D is the randomized PCM telemetry data output from the QA output of shift register 240 to the first input of EXCLUSIVE-OR gate 246, B is the data bit which is output from the QG output of shift register 242 to the first input of EXCLUSIVE-OR gate 244, C is the data bit which is output from the QH output of shift register 242 to the second input of EXCLUSIVE-OR gate 244 and A' is the de-randomized PCM telemetry data supplied from the output of EXCLUSIVE-OR gate 246.
At this time it should be noted that randomized PCM telemetry data generated by randomizer circuit 225 is utilized to test missile telemetry data interface circuit in the PCM mode of operation.
Referring to FIGS. 1b, 14a, 14c and 14e, interface circuit 120 includes a 4-line to 1-line multiplexer 250. Multiplexer 250 receives at its A input a PT.sub.-- CT signal which is supplied to its A input by microprocessor 20. Multiplexer 250 also receives at its 1C1 input the de-randomized PCM telemetry data supplied from the output of EXCLUSIVE-OR gate 246. When the PT.sub.-- CT signal is a one the PCM data provided to the 1C1 input of multiplexer 250 passes through multiplexer 250 to the SEL.sub.-- DATA output of interface circuit 120. The clock signal, which has a frequency of 320 kHz, for the de-randomized PCM telemetry data is supplied by a bit sync circuit 260 to the 2C1 input of multiplexer 250. When the PT.sub.-- CT signal is a one this 320 kHz clock signal passes through multiplexer 250 to the SEL.sub.-- CLK output of interface circuit 120. The SEL.sub.-- DATA output of interface circuit 120 is connected to the RXD input of universal synchronous asynchronous receiver transmitter 26, while the SEL.sub.-- CLK output of interface circuit 120 is connected to the RXC input of universal synchronous asynchronous receiver transmitter 26. The universal synchronous asynchronous receiver transmitter 26 then converts the de-randomized PCM telemetry data from a serial format to a parallel format for transmission to microprocessor 20. The 320 KHz signal provided to the RXD input of universal synchronous asynchronous receiver transmitter 26 is the data sampling signal for the universal synchronous asynchronous receiver transmitter 26.
The interface circuit 120 also is adapted to receive PCM data and a clock signal from an encryption unit which may be a KGR-68 decryption unit. This data which is de-randomized PCM telemetry data is supplied through a buffer 28 to the 1C0 input of multiplexer 250, while the 320 kHz clock signal is supplied through buffer 28 to the 2C0 input of multiplexer 250. When the PT.sub.-- CT signal is low the PCM telemetry data and the clock signal from the KGR-68 decryption unit pass through multiplexer 250 to its 1Y and 2Y outputs. It should be noted that the PT.sub.-- CT signal is a signal which is toggled by microprocessor 20.
Referring to FIGS. 4, 14a and 14f, the interface circuit 120 includes a bit sync circuit 260 which receives the randomized PCM telemetry data via its BTM.sub.-- IN input. Bit sync circuit 260 also receives the 3.2 MHz clock signal from randomizer circuit 225 and a negative reset (NREST) from inverter 256. Bit sync circuit 260 includes a pair of D type Flip-Flops 262 and 264 which synchronize an incoming serial PCM data stream to the 3.2 MHz clock signal. The combination of a third D Flip-Flop 266 and an EXCLUSIVE-NOR gate 270 generates a clear pulse whenever a change of state occurs within the synchronized serial PCM data stream. This clear pulse is supplied to the .sub.-- aclr input of a ten state state machine 272 resetting the state machine 272 to a state s0. This clear pulse is also supplied to the NTRANS output of bit sync circuit 260.
When the state machine 272 transition to a state s4 the state machine generates a logic one enable signal at its tick output which is supplied to the T input if a toggle Flip-Flop 274 enabling toggle Flip-Flop 274. Enabling toggle Flip-Flop 274 allows Flip-Flop 274 to change state. The 3.2 MHz clock signal then clocks toggle Flip-Flop 274 causing the Q output of Flip-Flop 274 to change state. At its state s9 state machine 274 again provides a logic one enable signal to the T input of toggle Flip-Flop 274 enabling toggle Flip-Flop 274 which allows the 3.2 MHz clock signal to clock Flip-Flop 274 causing another change of state at the Q output of toggle Flip-Flop 274. This results in a 320 kHz clock signal at the output of the toggle Flip-Flop which is synchronized to the incoming PCM serial data stream, that is the 320 kHz signal transitions at approximately at the center of the bit period of a data bit of the PCM data stream. This 320 kHz clock signal is then provided to the CLOCK output of interface circuit 120. There is also an inverted 320 kHz signal provided by bit sync circuit 260 at its NCLK output. This inverted 320 kHz signal is also supplied to the 2C1 input of multiplexer 250.
Appendix E is a program listing for the state machine 272. At states S4 and S9 a logic one is provided at the TICK output of state machine 272 which when supplied to the T input of Flip-Flop 274 allows the 3.2 megahertz clock signal to toggle (change the state of) the Q output of Flip-Flop 24. As is best illustrated by Appendix E state machine 272 branches from state s9 to state s5 unless state machine 272 is reset to state s0 by an asynchronous clear pulse supplied by EXCLUSIVE-NOR gate 270 to the .sub.-- ACLR input of state machine 272. Only during a logic zero to one transition of the incoming PCM data stream or a logic one to zero transition of the incoming PCM data stream is an asynchronous clear pulse supplied by EXCLUSIVE-NOR gate 270 to the ACLR input of state machine 272.
The QA, QB and QC outputs of bit sync circuit 260 are respectively connected to the A, B and C inputs of a three line to eight line decoder 283, while the QD output of bit sync circuit 260 is connected to the G2AN input of three line to eight line decoder 283. Decoder 283 decodes the binary output counts 0 through 4 from bit sync circuit 260 will provide logic zeros at its Y1, Y2, Y3, Y4 or Y5 outputs which depend upon the states of the input signals supplied to A, B and C inputs of three line to eight line decoder 283.
The switches of switch block SS1 may be either closed or opened to select the desired counts within the bit period of a data bit of the PCM data stream at which a logic zero will be provided to the NINV.sub.-- TR.sub.-- ST input of interface circuit 120. When a logic zero is supplied through the NINV.sub.-- TR.sub.-- ST input of interface circuit 120 to the D input of Flip-Flop 280 a clear pulse occurring at the NTRAN output of the bit sync circuit 260 will clock the logic zero to the Q output of Flip-Flop 280. This logic zero (NBS.sub.-- ERR) is supplied to the P22 input of microprocessor 20. In normal operation the switches of switch block SS1 will be configured to generate this NBS.sub.-- ERR signal only when a transition of the 320 kHz signal provided by bit sync circuit 260 occurs at point other than approximately the center of the bit period of a data bit of the PCM data stream.
The digital logic illustrated in FIG. 14f was implemented using an Erasable Programmable Logic Device manufactured by the ALTERA Corporation of San Jose, Calif. Any of the 5000 series Erasable Programmable Logic Devices, such as the EPM5128 or the EPM5130 manufactured by the ALTERA Corporation may be used to implement the digital logic of FIG. 14f. The ALTERA Corporation MAX+PLUS AHDL software implements the logic elements of FIG. 14f as well as the state machine functions of Appendix E.
Referring to FIGS. 4, 14a, 14b and 14c, interface circuit 120 also includes an eight bit binary counter 284 which provides a negative going pulse whenever the counter 284 reaches the hex word FF. Eight bit binary counter 284 is reset to a count of zero whenever a logic zero is supplied to its /CCLRN input from AND gate 282. AND gate 282, in turn, transitions to the logic zero state whenever a negative reset signal (NRESET) from inverter 256 is supplied to the first input of AND gate 282 or the clear signal from bit sync circuit 260 is supplied to the second input of AND gate 282. Bit sync circuit 260 supplies the inverted 320 kHz clock signal to counter 284 clocking circuit 284 until an overflow error occurs. When 256 consecutive clock pulses are provided to counter 284 without counter 284 being reset, counter 284 will clear D-type Flip-Flop 280 resulting in the Q output of Flip-Flop 280 transitioning to the logic zero state. This logic zero is supplied via the NBS.sub.-- ERR output of interface circuit 120 to the P22 input of microprocessor 20 indicating to microprocessor 20 that the missile telemetry data interface circuit is not receiving PCM telemetry data.
Interface circuit 120 also includes an AND gate 290 which receives at its first input an NPAM.sub.-- SYN signal from microprocessor 70 and at its second input an NPCM.sub.-- SYN signal from microprocessor 20. When either the NPAM.sub.-- SYN signal or the NPCM.sub.-- SYN signal is active, that is at the logic zero state, the output of AND gate 290 will transition to the logic zero state indicating the presence of a sync signal. This signal is supplied through the FRA.sub.-- SYN output of interface circuit to the missile subsystem test set.
Referring to FIGS. 3a, 4, 14a, 14b, 14c and 14g interface circuit 120 receives a 256 kHz clock signal from a clock signal generator 132. This 256 kHz clock signal is supplied through the 256 KHZ input of a PAM signal processing circuit 294 to the 256 KHZ.sub.-- O output of circuit 294 and then to a divide-by-ten circuit. The divide-by-ten circuit which comprises a decade counter 295, a Flip-Flop 296 and a pair of inverters 297 and 299 divides the 256 kHz clock signal by a factor of ten. This results in a 25.6 kHz signal at the 256 KHZ output of interface circuit 120. The 25.6 kHz is inverted by an inverter 135 and is then output from missile telemetry data interface circuit via connector MJ5, Pin 24.
The 256 kHz clock signal from clock signal generator 132 is also supplied to the CLK input of Synchronous 4-Bit Decade counter 292 which divides the signal by ten resulting in a 25.6 kHz clock signal. This signal is inverted by inverter 293 and then supplied through the NLDAC output of interface circuit 120 to the .sub.-- LDAC (load digital-to-analog converter) input of digital-to-analog converter 38. This 25.6 kHz clock signal provided by interface circuit 120 is next supplied to the .sub.-- LOAD input of digital-to-analog converter 38 which then converts the digital words to its equivalent analog signal at a frequency of 25.6 kHz.
The 256 kHz clock signal is supplied to the clock input of a Synchronous 4-Bit Decade counter 300 which divides the signal by five resulting in a 51.2 kHz signal at the QC output of counter 300. This 51.2 kHz signal is inverted by an inverter 302 and then supplied to the CLK input of a D-type Flip-Flop 304. The Q output of Flip-Flop 304 is connected to the input of inverter 306 which has its output connected to the D input of Flip-Flop 304 so that Flip-Flop 304 functions as a toggle Flip-Flop. Flip-Flop 304 divides the 51.2 kHz signal resulting in a 25.6 kHz signal at the Q output of Flip-Flop 304. This 25.6 kHz signal occurring at the Q output of Flip-Flop 304 has a fifty percent duty cycle.
The 25.6 kHz signal at the Q output of Flip-Flop 304 is supplied to the input of an inverter 312 which inverts the signal and provides the inverted 25.6 kHz signal to the clock input of a Flip-Flop 318. The 25.6 kHz signal clocks the logic zero at the D input of Flip-Flop 318 to its Q output. The logic zero signal (PAM.sub.-- CLK) is supplied by interface circuit 318 to the .sub.-- INT2 input of microprocessor 70 indicating the presence of a PAM channel to be processed by microprocessor 70. It should be noted that this logic zero PAM.sub.-- CLK signal occurs immediately following beginning the beginning of a PAM channel.
Microprocessor 70 responds with a signal PC.sub.-- INT.sub.-- CLR (pam clock interrupt clear) which is supplied to the PC.sub.-- INT of interface circuit 120. This PC.sub.-- INT.sub.-- CLR signal which is a logic one is supplied to the first input of a NOR gate 316 resulting in a logic zero at the output of NOR gate 316. The logic zero occurring at the output of NOR gate 316 is supplied to the preset input of Flip-Flop 318 presetting the Q output of Flip-Flop 318 to the logic one state allowing Flip-Flop 318 to again interrupt microprocessor 70.
The PAM signal processing circuit 294 also includes a an eight bit binary counter 320 which provides a negative going pulse whenever the counter 320 reaches the hex word FF (decimal count 256). Whenever the NRESET signal from inverter 256 transitions to the logic zero state the output of AND gate 310 will transition to the logic zero state. Eight bit binary counter 320 is then reset to a count of zero whenever this logic zero is supplied to its /CCLRN input from AND gate 310. Eight bit binary counter 320 is also reset by a negative going clear pulse generated by a negative edge detect circuit 308 which is supplied to AND gate 310. The negative going pulse (NNO.sub.-- DATA) generated by counter 320 occurs whenever counter 320 reaches a count of 256 is supplied to the FSX1 input of microprocessor 70 indicating to microprocessor 70 that a PAM data stream is not being received by missile telemetry data interface circuit. When the clear.sub.-- out output of negative edge detect circuit 308 remains at the logic one state counter 320 will reach a count of FF (hexadecimal) resulting in the overflow condition which generates the NNO.sub.-- DATA negative going pulse. It should be noted that this condition will not occur when a sixty four channel PAM frame of PAM data since the window comparator circuit of FIG. 7 will provide at least one negative going NPAM.sub.-- TRANS pulse every frame of PAM data.
Referring to FIGS. 1b, 3a, 7, 8, 13, 14g and 14i, the circuit illustrated in FIG. 7 is used to identify channel edges in the incoming PAM telemetry data stream. Low pass bessel filter 121 includes an operational amplifier 128 which functions as a differentiating circuit providing a derivative with respect to time of the input signal. Operational amplifier 128 provides at the DV.sub.-- DT output of filter 121 an analog output voltage signal which is proportional to the rate of change of the input voltage which is the filtered analog PAM data signal provided by filter 121. The analog output voltage signal (DV.sub.-- DT) from operational amplifier 126 is supplied to the window comparator circuit of FIG. 7. The window comparator circuit of FIG. 7, in turn, comprises operational amplifiers 48, 50 and 52.
When a voltage spike of the analog output voltage signal (DV.sub.-- DT) exceeds +2 VDC or -2 VDC the window comparator circuit of FIG. 7 will provide a negative going pulse at its NPAM.sub.-- TRANS output. This negative going pulse, which is a TTL compatible signal, is then supplied through the NPAM.sub.-- TRANS input of PAM signal processing circuit 294 to the npam.sub.-- trans input of negative edge detect circuit 308. It should be noted that the negative going pulse provided by the window comparator circuit of FIG. 7 is greater than one clock cycle wide of the 256 kHz clock signal. It should also be noted that this negative going pulse is used to define boundaries of channels of the incoming PAN telemetry data stream.
Counter 300 and Flip-Flop 318 are cleared by the negative going clear pulse signal provided to counter 300 and Flip-Flop 318 by negative edge detect circuit 308. As shown in FIG. 14i negative edge detect circuit 308 includes a state machine 322 and a two input NAND gate 324. The ALTERA Corporation MAX+PLUS AHDL software is used to implement the state machine functions of state machine 322 as set forth in Appendix D.
State machine 322 is a three state state machine having states s0, s1 and s2. State machine 322 is clocked by the 256 kHz clock signal which is supplied to the 256 kHz input of state machine 322 and is cleared by the negative reset signal (NRESET) from inverter 256. When state machine 322 is in state s0, clear.sub.-- out is zero. When state machine 322 is in state s1 clear.sub.-- out is at a logic one state. When state machine 322 is in state s2, clear.sub.-- out is again zero. State machine is clocked by the 256 kHz clock signal supplied to its 256 kHz input. When state machine 322 is in state s0, a logic one at the npam.sub.-- trans input of state machine 322 will result in state machine remaining in state s0. When, however, the npam.sub.-- trans input of state machine 322 transitions to the logic zero state, the 256 kHz clock signal will clock state machine 322 to state s1. If the npam.sub.-- trans input of state machine 322 remains at zero than the 256 kHz clock signal will clock state machine 322 to state s2. The state machine 322 will remain in state s2 until the npam.sub.-- trans input of state machine 322 again transitions to the logic one state. The 256 kHz clock signal will then clock state machine 322 to its initial state which is state s0. The transition of state machine from state s0 through state s1 to state s2 results in the generation of a positive going pulse signal at the clear.sub.-- out output of state machine 322.
This positive going pulse signal from the clear.sub.-- out output is next supplied to NAND gate 324 which gates the positive going pulse signal with the 256 kHz clock signal to provide the negative going clear pulse which is supplied to AND gate 282. This negative going pulse signal has a pulse width of about one half the clock cycle of the clock signal of the 256 kHz. Thus, the negative going pulse occurring at the clear.sub.-- out output of negative edge detect circuit 308 is now less than one clock pulse cycle wide of the 256 kHz clock signal.
It should be noted that state machine 322 will return to state s0 from state s1 if the npam.sub.-- trans input of state machine 322 is at the logic one state. It should also be noted that the signal appearing at the npam.sub.-- trans input of state machine 322 indicates the occurrence of a transition in the PAM data stream.
Slave microprocessor 70 generates a negative going pulse signal (NSLV.sub.-- WDI) at its XF1 output which is supplied to the PRN input of a D-type Flip-Flop 314. In a like manner, master microprocessor 20 generates a negative going pulse at its P12 output which is supplied to the CLRN input of a D-type Flip-Flop 314. A logic zero occurring at the PRN input of D-type Flip-Flop 314 will cause the Q output of Flip-Flop 314 to transition from the logic zero state to the logic one state, while a logic zero occurring at CLRN input of D-type Flip-Flop 314 will cause the Q output of Flip-Flop 314 to transition from the logic one state to the logic zero state. These logic state transitions or edges are supplied to WDI input of timer 176 so that timer signal 176 will not generate the RESET.sub.-- IN signal. Whenever timer 176 generates a RESET.sub.-- IN signal, this signal is supplied to the RESET.sub.-- IN input of interface circuit 120. The RESET.sub.-- IN signal is inverted by inverter 254 to a logic one state passing through OR gate 252 to the RESET output of interface circuit 120. The logic signal passing through OR gate 252 is also supplied to the input of inverter 256 which inverts the signal to a logic zero NRESET signal. The logic zero NRESET signal is supplied to the NRESET input of PAM signal processing circuit 294, the NRESET input of bit sync circuit 260, the PRN input of D-type Flip-Flop 280 resulting in the Q output of Flip-Flop 280 being preset to a logic one state and the first input of AND gate 282. The NRESET signal from interface circuit 120 is supplied to microprocessor 70 resetting microprocessor 70, while the RESET signal from interface circuit 120 is supplied to microprocessor 20 resetting microprocessor 20.
Front panel 200 has a reset push button 214 which supplies a logic zero EXT.sub.-- RST signal through the EXT.sub.-- RST input of interface circuit 120 to OR gate 252 allowing an operator to reset missile telemetry data interface circuit.
Referring to FIGS. 4 and 14h, interface circuit 120 includes a USART wait circuit 330 which comprises a USART wait state machine 332 and an AND gate 334. The ALTERA Corporation MAX+PLUS AHDL software is used to implement the state machine functions of state machine 332 as set forth in Appendix F.
Referring to FIGS. 3a, 4, 5b and 14h, three line to eight line decoder 92 will provide at its .sub.-- Y6 output a logic zero (SLV.sub.-- NUSART) when its G1, B and C inputs are high and its .sub.-- G2A, .sub.-- G2B and A inputs are low. This logic zero is supplied to the D input of Flip-Flop 94 and then clocked through Flip-Flop 94 by the sixteen megahertz clock signal occurring at the H1 output of microprocessor 70. This logic zero will next pass through OR gate 104 when the master strobe signal occurring at the .sub.-- MSTRB output of microprocessor 104 is at the logic zero state resulting in a logic zero chip enable (.sub.-- CE) at the output of OR gate 104.
The logic zero chip enable occurring at the output of OR gate 104 is provided to an inverter 131 which inverts the signal. The inverted chip enable signal is supplied to the clock input of Flip-Flop 133 clocking the logic one at the D input of Flip-Flop 133 to its Q output. This logic one signal (.sub.-- XRDY) is supplied to the .sub.-- XRDY input of microprocessor 70 resulting in microprocessor 70 suspending the transmission of data (SD)-SD15) via the SLAV.sub.-- DATA(15:0) bus to the D0-D7 inputs of universal synchronous asynchronous receiver 140.
The logic zero chip enable occurring at the output of OR gate 92 is provided to the .sub.-- gnu.sub.-- usart.sub.-- ce input of state machine 332. State machine 332 is clocked by the 32 MHz clock signal. When the signal occurring at the gnu.sub.-- usart.sub.-- ce input of state machine 332 is one then state machine remains at state s0. When the signal occurring at the .sub.-- gnu.sub.-- usart.sub.-- ce input of state machine 332 transitions to zero than the 32 MHz clock signal will clock state machine 332 from state s0 through states s1, s2, s3, s4, s5, s6, s7, s8, s9 and s10 to state s11. At state s11 the .sub.-- xrdy output of output will transition to a logic zero which is then supplied through AND gate 334 to the clear input of Flip-Flop 133 clearing the Q output of Flip-Flop 133 to the logic zero state. This logic zero is supplied to the.sub.-- XRDY input of microprocessor 70 indicating to microprocessor 70 that microprocessor 70 may transmit data to universal synchronous asynchronous receiver 140.
Referring to FIGS. 1a, 1b, 2, 3a, 3b, 14a, 14b, 14c and 14j, interface circuit 120 includes a decoder circuit 340. Decoder circuit 340 has a three line to eight line decoder 342 which receives the signal HI.sub.-- IO, address signals MA4, MA5 and MA6 from microprocessor 20 as well as IO.sub.-- DPRAM from microprocessor 20 via latch 24. In addition, decoder circuit 340 receives a write signal at its NWR input and a read signal at its NRD input. It should be noted that the NP36WR of interface circuit 120 receives the write signal which is identified as MSTRWR in FIG. 4. Microprocessor 20 provides the write signal and the read signal each of which are logic zero signals.
When, for example, microprocessor 20 provides the write signal to the first input of an OR gate 344 and the Y0N output of three line to eight line decoder 342 is at the logic zero state the output of OR gate 344 will transition to the logic zero state. This logic zero is supplied to the .sub.-- CS (chip select) input of digital-to-analog converter 38 enabling digital-to-analog converter 38.
When either the read signal or the write signal from microprocessor 20 is at the logic zero state, a logic one is provided at the output of NAND gate 30 which results in a logic zero at the output of NAND gate 32. This logic zero is supplied to OR gates 34 and 36 enabling OR gates 34 and 36. When OR gate 36 is enabled and the Y1N output of three line to eight line decoder 342 is at the logic zero state this logic zero will pass through OR gate 36 to the .sub.-- CE input of universal synchronous asynchronous receiver transmitter 26 enabling transmitter 26. When OR gate 34 is enabled and the IO.sub.-- DPRAM signal from latch 24 is at the logic zero state a logic zero NCE.sub.-- LEFT signal is provided at the output of OR gate 34. This logic zero is supplied to the .sub.-- CEL input of dual port RAM 60 enabling the left side data and address inputs and outputs which allows microprocessor 20 to communicate with the left side of dual port RAM 60.
In a similar manner, microprocessor 70 uses three line to eight line decoder 92 to provides an enable signal (.sub.-- CE.sub.-- RIGHT) to enable the right side of dual port RAM 60. Three line to eight line decoder 92 provides at its .sub.-- Y2 output a logic zero which passes through an OR gate 97 to the .sub.-- CER input of dual port RAM whenever the master strobe signal from microprocessor 70 is at the logic zero state.
Decoder circuit 340 also provides a pair of logic zero signals NDISP0 and NDISP1 which are enable signals for the alpha numeric display 210 of front panel 200 (FIG. 13).
Referring to FIGS. 1a, 1b, 2, 3a, 3b, 4, 6a and 13 and the software of Appendix C, microprocessor 20 enters its main program at line 233 (MAIN.sub.-- PROCESSING). At lines 265-269, microprocessor 20 is checking for plain text PCM telemetry data, that is PCM telemetry data which is not provided by an encryption unit. The PT.sub.-- CT output of microprocessor 20 is first set to the logic one state followed by a 10 millisecond delay. Microprocessor 20 than waits from an interrupt from USART 26.
When the USART 26 recognizes a frame synchronization pattern of the incoming PCM data stream, the USART 26 asserts an interrupt via its .sub.-- RX.sub.-- RDY output to the P32 input of microprocessor 20. At line 269 of the software of Appendix C, microprocessor 20 test the interrupt from USART 26. If the interrupt is not set a jump occurs to line 308. The PT.sub.-- CT line (P21 output of microprocessor 20) is set to a logic zero. Setting the PT.sub.-- CT line to a logic zero gates the PCM telemetry data stream and the clock signal from the encryption unit, i.e. a KGR-68 encryption unit to USART 26.
Microprocessor 20 also will respond to a message from the slave microprocessor 70 indicating that microprocessor 70 has detected a PAM synchronization signal.
When microprocessor 20 detects an interrupt from USART 26, microprocessor 20 sets a variable MASTER MODE (line 271 of Appendix C). Microprocessor 20 next sets its P23 output to a logic zero resulting in a logic zero being supplied to the A0 input of analog multiplexer 170 which allows PCM telemetry data to pass through multiplexer 170 to output buffer 172.
At line 273 a subroutine ACQUIRE.sub.-- PCM.sub.-- BANK0 is called. During this subroutine, the one hundred eight bit words of PCM data from a frame of the PCM data stream are placed in Bank 0 of dual port RAM 60. It should be noted that USART 26 converts each eight bit word of the PCM data stream from a serial format to a parallel format generating an interrupt for each eight bit word of the PCM data stream. Microprocessor 20 then reads the data from USART 26.
Microprocessor 20 first polls or monitors the .sub.-- RX.sub.-- RDY line for an interrupt from USART 26 until word 93 is reached. When word 93 is reached, microprocessor 20 responds to the interrupt from USART 26 exiting the interrupt mode and entering a polling mode.
When USART 26 first detects the frame sync of the PCM data stream, microprocessor 20 will re-initialize USART 26 allowing USART 26 to again look for the synchronization pattern of the PCM data stream which occurs once for each frame of PCM data. During the 10 millisecond delay four frame of PCM data may be supplied to USART 26.
It should be noted that USART 26 recognizes the first and second eight bit words of the three word synchronization pattern of the PCM data stream. The third eight bit word of the three word synchronization pattern is supplied to microprocessor 20 which then checks the third word for a match of the bit pattern for the third word. The PCM data from the first frame is now stored in bank 0 of dual port RAM 60.
At line 873 MBANK is cleared, while MBANK.sub.-- STAT is cleared at line 874 of the ACQUIRE.sub.-- PCM.sub.-- BANK0 subroutine. The signal MBANK is the control signal provided to the A7L input of dual port RAM 60 which allows master microprocessor 20 to access BANK 0 and BANK 1 of dual port RAM 60. BANK 0 of dual port RAM 60 is accessed when the signal MBANK is cleared.
Register one of microprocessor 20, which is a pointer to the first address within dual pointer, is initialized to zero at line 877. The ACQUIRE.sub.-- PCM.sub.-- BANK0 subroutine then enters a loop writing the 100 words of the first frame of PCM data into bank 0 of dual port RAM 60. At line 880 of the ACQUIRE.sub.-- PCM.sub.-- BANK0 subroutine a 30 microsecond timeout is initialized. If microprocessor 20 does not receive an interrupt from USART 26 within 30 microseconds, microprocessor 20 returns to the main program unless the mode of operation is the calibrate mode which results in an error message being displayed on dot matrix alpha numeric display 210 of front panel 200.
When microprocessor 20 is in an interrupt mode of operation, microprocessor 20 responds to an a logic interrupt from the RX.sub.-- RDY output of USART 26. Microprocessor 20 transitions to the interrupt after PCM word 93. At line 893 of the Appendix C, microprocessor 20 moves to USART.sub.-- ISR.
At line 275 of MAIN.sub.-- PCM.sub.-- LOOP the watch dog timer 176 is reset when PCM data is written alternatively into bank 0 and then bank 1 of dual port RAM 60. At line 277 a check is made to determine if slave microprocessor 70 supplied a message to master microprocessor 20. If the message is not "Display Data Select Error" then a jump occurs to line 285 (CHECK.sub.-- PCM.sub.-- USART.sub.-- ISR.sub.-- FLAGS). If PCM synchronization is not confirmed then a jump occurs at line 286. It should be noted that PCM words 98, 99 and 100 comprise the PCM frame sync words.
When PCM synchronization is confirmed, then a flag PCM.sub.-- VERIFIED is cleared. At line 290, the message "PROCESSING PCM" is pointed to for display on the alpha numeric display 210 of front panel 200, while at line 293 the message "PROCESSING STM" is pointed to for display on the alpha numeric display 210 of front panel 200. STM data is secured telemetry data. At line 295, a routine "DISPLAY.sub.-- PCM.sub.-- OR.sub.-- STM" for displaying the selected message is called.
At line 296, microprocessor 20 checks for a PCM frame error, that is a flag indicating a frame error has been set. If the flag has been set a jump to "MAIN.sub.-- PROCESSING" occurs at line 299 re-initializing the search for telemetry data. The frame error occurs, for example, when word 99 of the PCM telemetry data stream does not match the PCM word microprocessor 20 expects to receive, that is there is an error in the frame sync.
At lines 303-304, a check is made to determine if there is a loss of PCM data. A logic zero is supplied via the NBS.sub.-- ERR output of interface circuit 120 to the P22 input of microprocessor 20 indicating to microprocessor 20 that the missile telemetry data interface circuit is not receiving PCM telemetry data which, in turn, sets a flag NO.sub.-- PCM data. The NO.sub.-- PCM flag is cleared at line 305 of Appendix C.
Microprocessor 20 first checks for a PCM data frame sync and then checks for a message from microprocessor 70 indicating that microprocessor 70 has detected a PAM synchronization signal beginning at line 315. At line 347 the main program checks the hold/index push button 216 on front panel 200 to determine whether the operator has activated the push button 216. If the push button 216 has been activated and any errors occurred during calibration, then the appropriate error messages are displayed via dot matrix alpha numeric display 210 of front panel 200. If an error did not occur the message "PASSED SELF TEST" is displayed via dot matrix alpha numeric display 210 of front panel 200. When error occurs during calibration, the software of Appendix C jumps to line 359 LIST.sub.-- SELF.sub.-- TEST.sub.-- ERRORS. From line 360 to line 434 of Appendix. C, the self test errors are displayed on dot matrix alpha numeric display 210 of front panel 200. These error messages include MASTER.sub.-- RAM.sub.-- ERROR, MASTER.sub.-- DPRAM.sub.-- ERROR, MASTER.sub.-- PAM.sub.-- CLK.sub.-- ERROR (25.6 kHz clock signal), MASTER.sub.-- PCM.sub.-- CLK.sub.-- ERROR (320 kHz clock signal) and the remaining error messages set forth at lines 360-434 of Appendix C.
When slave microprocessor 70 detects the PAM synchronization signal, then master microprocessor 20 displays the message "PROCESSING PAM" via dot matrix alpha numeric display 210 of front panel 200 (line 317 of Appendix C). Microprocessor 20 also sends an acknowledgement message "PAM mode" to microprocessor 70 which indicates to microprocessor 70 that microprocessor 70 is to begin processing PAM data. Microprocessor 20 also sets its P23 output high (PAM.sub.-- PCM line) which allows PAM data from filter 121 to pass through multiplexer 170 to output buffer 172.
At line 325 microprocessor enter the main program loop for processing PAM data. At line 326 the HOUSEKEEPING subroutine is called which is used to reset the watch dog timer 176. At line 327 messages from microprocessor 70 are read by microprocessor 20. Microprocessor 20 first checks to see if the message is a "PAM sync lost" message which is a message slave microprocessor 70 sends to master microprocessor 20 indicating that PAM frame sync has been lost by microprocessor 70 (see Appendix B). Microprocessor 20 then checks for "data select error" message from microprocessor 70 which results when the operator selects a number outside of the PAM data channel range of from 1 to 64 while in the PAM mode of operation. If neither of these messages are supplied to microprocessor 20 to microprocessor 70 then a loop occurs to line 325 "MAIN.sub.-- PAM.sub.-- LOOP".
When a PAM sync lost message is received by master microprocessor 20 (line 328), the OPCODE for the message is cleared and the program of Appendix C returns to MAIN.sub.-- PROCESSING (line 233).
When the data byte of the "Display data select error" from microprocessor 70 is a one then slave microprocessor 70 is indicating to microprocessor 20 that an error has been detected by microprocessor 70. When the data byte of the "Display data select error" from microprocessor 70 is a zero then slave microprocessor 70 is indicating to microprocessor 20 that the error has been corrected.
At line 1224 of Appendix C, the software enters a SEND.sub.-- MESSAGE routine. Microprocessor 20 first checks the variable MASTER MODE to see if the interface circuit is operating in PCM mode. If microprocessor 20 is not in PCM mode then a jump occurs to SEND.sub.-- MSG at line 1236 of Appendix C. For master microprocessor 20 to send a message to microprocessor 70 output P30 of microprocessor 20 must be at the logic one state. Dual port RAM 60 requires a logic one at its A7L input to enable the communications interrupt from microprocessor 20 to microprocessor 70. When the master microprocessor 20 writes the data byte to the 3FC Dual Port RAM address and the opcode to the 3FF Dual Port RAM address, the .sub.-- INTR output of dual port RAM 60 is asserted low indicating to slave microprocessor 70 that a message will be sent from master microprocessor 20 to slave microprocessor 70. It should be noted that the opcode 3FF generates the interrupt to the slave microprocessor 70. In a like manner, the slave microprocessor 70 writes the data byte to the 3FD Dual Port RAM address and the opcode to the 3FE Dual Port RAM address, dual port RAM 60 generates a logic zero interrupt at its .sub.-- INTL output which is supplied to the P33 input of microprocessor 20. The toggling function which is used to write PCM data into bank 0 and bank 1 of dual port RAM 60 is controlled during the interrupt service routine for USART 26.
Beginning at line 1251 of Appendix C, there is a routine SIMULATE.sub.-- PAM which generates simulated PAM data which is used to test analog to digital converter 88 and all PAM data processing functions. Beginning at line 1379 of Appendix C, there is routine INIT.sub.-- USART which initializes USART 26. At line 1424 of Appendix C, the software enters the USART 26 interrupt service routine (USART.sub.-- ISR) during which microprocessor 20 monitors the .sub.-- RX.sub.-- RDY line from USART 26 for interrupts. During this routine the master microprocessor 20 is processing the one hundred words of a frame of PCM data.
Microprocessor 20 is a Model 8751H 8-Bit Microcomputer commercially available from Intel Corporation of Santa Clara, Calif. Microprocessor 70 is a Model TMS320C30 Microcontroller commercially available from Texas Instruments of Dallas, Tex. Dual Port RAM 60 is a Model IDT130SA35P Dual Port RAM commercially available from Integrated Device Technology Incorporated of Santa Clara, Calif. Universal synchronous asynchronous receiver transmitters 26 and 140 are each Model SCN2651 USARTS commercially available from Signetics Company of Sunnyvale, Calif. Digital-to-analog converter 38 is a Model PM-7224 eight bit D/A converter commercially available from Analog Devices PMI Division of Norwood, Mass. Analog to digital converter 88 is a Model AD7878 12 bit A/D converter commercially available from Analog Devices PMI Division of Norwood, Mass. Analog track-hold circuit 162 is a Model AD389 Track-and-Hold Amplifier commercially available from Analog Devices PMI Division of Norwood, Mass.
From the foregoing, it may readily be seen that the present invention comprises a new, unique and exceedingly useful missile telemetry data interface circuit which constitutes a considerable improvement over the known prior art. Obviously, many modifications and variations of the present invention are possible in light of the above teachings. It is therefore to be understood that within the scope of the appended claims the invention may be practiced otherwise than as specifically described. ##SPC1##