WO1985000255A1 - Digital modem with plural microprocessors - Google Patents
Digital modem with plural microprocessors Download PDFInfo
- Publication number
- WO1985000255A1 WO1985000255A1 PCT/US1984/000997 US8400997W WO8500255A1 WO 1985000255 A1 WO1985000255 A1 WO 1985000255A1 US 8400997 W US8400997 W US 8400997W WO 8500255 A1 WO8500255 A1 WO 8500255A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- microprocessor
- output
- degrees
- dibit
- Prior art date
Links
- 230000005540 biological transmission Effects 0.000 claims abstract description 8
- 230000008859 change Effects 0.000 claims description 32
- 238000000034 method Methods 0.000 claims description 16
- 230000010363 phase shift Effects 0.000 claims description 10
- 230000000630 rising effect Effects 0.000 claims description 7
- 238000005259 measurement Methods 0.000 claims description 6
- 238000001514 detection method Methods 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 claims description 2
- 241000269627 Amphiuma means Species 0.000 claims 3
- 238000009499 grossing Methods 0.000 claims 1
- 230000000977 initiatory effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 20
- FXWALQSAZZPDOT-NMUGVGKYSA-N Arg-Thr-Cys-Cys Chemical compound SC[C@@H](C(O)=O)NC(=O)[C@H](CS)NC(=O)[C@H]([C@H](O)C)NC(=O)[C@@H](N)CCCNC(N)=N FXWALQSAZZPDOT-NMUGVGKYSA-N 0.000 description 8
- 239000003990 capacitor Substances 0.000 description 7
- 230000007704 transition Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L27/00—Modulated-carrier systems
- H04L27/18—Phase-modulated carrier systems, i.e. using phase-shift keying
- H04L27/20—Modulator circuits; Transmitter circuits
- H04L27/2032—Modulator circuits; Transmitter circuits for discrete phase modulation, e.g. in which the phase of the carrier is modulated in a nominally instantaneous manner
- H04L27/2053—Modulator circuits; Transmitter circuits for discrete phase modulation, e.g. in which the phase of the carrier is modulated in a nominally instantaneous manner using more than one carrier, e.g. carriers with different phases
- H04L27/2057—Modulator circuits; Transmitter circuits for discrete phase modulation, e.g. in which the phase of the carrier is modulated in a nominally instantaneous manner using more than one carrier, e.g. carriers with different phases with a separate carrier for each phase state
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L27/00—Modulated-carrier systems
- H04L27/18—Phase-modulated carrier systems, i.e. using phase-shift keying
- H04L27/22—Demodulator circuits; Receiver circuits
- H04L27/233—Demodulator circuits; Receiver circuits using non-coherent demodulation
- H04L27/2335—Demodulator circuits; Receiver circuits using non-coherent demodulation using temporal properties of the received signal
- H04L27/2337—Demodulator circuits; Receiver circuits using non-coherent demodulation using temporal properties of the received signal using digital techniques to measure the time between zero-crossings
Definitions
- This invention relates to modems in general, and more particularly to a low cost 1200/1200 baud full duplex modem.
- Modems are devices which are utilized for converting digital data into a form which permits it to be transmitted over the telephone lines and conversely to transform such data which has been transmitted back into digital data.
- the rate at which this can be carried out is called the baud rate, a baud corresponding to a bit per second.
- Inexpensive modems are available which operate at relatively low baud rates of, for example, 300 and which can only operate in one direction at a time. That is to say that they cannot transmit and receive at the same time, as is required for full duplex operation.
- Modems achieving a 1200 baud rate and a full duplex operation have in the past been relatively expensive. In general, this is because such modems require a large amount of analog circuitry.
- the object of the present invention to provide a 1200/1200 baud full duplex modem which can be manufactured and sold at a relatively low cost but which still provides reliable, trouble-free operation.
- the present invention provides such a modem.
- a plurality of microprocessors along with other circuitry is utilized.
- Two microprocessors control a demodulator which is used for converting received signals into digital data, whereas one or two additional microprocessors control a modulator which converts the digital data into information which can be fed over the telephone line.
- the modulator and demodulator are coupled to each other through a filter circuit and an appropriate coupler to the telephone system. Full duplex operation is made possible through the use of different modulation frequencies for sending and transmitting.
- the modem uses quad-phase modulation to phase modulate a carrier.
- the data being transmitted is thus indicated by a phase shift.
- no phase shift represents the dibit 10
- a 90 degree phase shift the dibit 01
- a 180 degree shift the dibit 11
- 0° 01
- 90° is 00
- 180° is 10
- 270° is 11.
- the demodulator includes a zero crossing detector which converts the incoming signal into a square wave.
- the phase modulated signal is coupled through a logic driver to a dual one-shot multivibrator which provides outputs corresponding to the leading and trailing edges of squared pulses (the zero crossings).
- the outputs of the one-shot are fed to a first microprocessor.
- This microprocessor generates the appropriate dibits.
- This output is fed to a second microprocessor, which converts this information back into a serial stream of digital data at the proper frequency.
- the second microprocessor also software implements the bit descramble necessary for the Bell protocol if necessary.
- the modulator utilizes a third (if the Vadic protocol is implemented) or third and fourth microprocessor (if the Bell protocol is implemented).
- the third processor samples the signal to be modulated, puts the sampled data into dibit form, removes or adds start and stop bits (in accord with Bell protocol) and puts the data onto a stack for processing by the fourth processor.
- the third processor operates at the data rate of the signal to be modulated whereas the fourth processor must transmit at precisely 1200 (or 2-400) baud.
- the fourth processor takes data from the stack of the third processor, scrambles it in accordance with the Bell scrambler protocol.
- the microprocessor providing the output modulates the signal as follows.
- the clock output of the output processor (third in a Vadic and fourth in a Bell type) is divided down to toggle at the carrier frequency.
- the carrier frequency will typically be either 1150 Hz or 2250 Hz for Vadic (1200 or 2400 for Bell).
- One frequency is used for transmitting and one for receiving. Which is used depends on which modem is the originator and which is the answering modem.
- the divided output will thus be a square wave.
- Logic is used to generate four such square wave signals mutually shifted 90 degrees.
- One of those square waves is selected by closing a switch in response to an output from the output microprocessor in correspondence with the dibit being transmitted.
- the selected wave is converted to a sine wave by filtering.
- the final output is then provided through filtering and output circuits to the telephone line.
- microprocessors At both the input and output, the use of microprocessors has a further advantage over conventional modems in that either serial or parallel data can be handled. With typical prior art modems a conversion of parallel data into serial date outside the modem is necessary.
- FIG. 1 is a block diagram showing the overall system of the modem of the present invention.
- FIG. 2 is a block/circuit diagram of the modem of the present invention employing the Vadic standard.
- FIG. 2A is a block/circuit diagram of the modem employing the Bell standard.
- FIG. 3 is a flow diagram for the modulator of FIG. 2.
- FrGS. 3A and 3B are the flow diagrams for the modulator of FIG. 2A.
- FIG. 4 is a waveform diagram showing the manner in which modulation and demodulation is carried out.
- FIGS. 5-7 are flow diagrams of the programs of the first demodulator microprocessor.
- FIGS. 8-10 are flow diagrams for the second demodulator microprocessor.
- the modem of the present invention includes a coupler 11 for coupling to the telephone lines 13.
- the coupler 11 is a device which isolates the modem from the telephone line in a manner complying with FCC regulations. Coupling to and from the coupler is through a filter 15.
- Filter 15 is utilized to separate the transmitting and receiving frequencies in order to permit full duplex operation. It includes switches so that the filters, one of which operates at the 1150 or 1200 Hz frequency and the other of which operates at the 2250 or 2400 Hz frequency, for example, can be utilized either with the modulator or the demodulator depending on whether this particular modem is the originating or answering modem.
- the two final elements of the modem comprise a modulator 17 and a demodulator 19.
- the modulator 17 receives input data from line 21 and converts it to a modulated carrier for transmission over the telephone line 13.
- the demodulator receives a modulated carrier signal and converts it into binary data on an output line 22.
- FIG. 2 is a block/circuit diagram of the modem according to the present invention for use with the Vadic standard.
- the modulator for the modem includes a microprocessor 31 which is preferably a PIC-1656 or PIC1670.
- This particular microprocessor includes, in a single chip, not only the processor but also ROM and RAM memory, the ROM memory being for program storage and the RAM memory for data storage.
- the microprocessor 31 receives data on data input line 33. Data is supplied as serial data through diode 32 and transistor 34, with a base resistor 36 and collector resistor 38.
- the microprocessor also includes an line 37, coupled to a microprocessor 128, to indicate whether the particular modem is the originating or answering modem.
- microprocessor 31 Coupled to an input of microprocessor 31 is a crystal oscillator or clock 39 which establishes the clock frequency for the microprocessor.
- the microprocessor has a clock output on line 47 at 207 KHz. Depending on whether the modem is the originating or answering modem, an output a frequency of either 1150 or 2250 Hz is required.
- the output on line 47 is fed to a programmable divider 49 which can be made up of two commercially available interconnected programmable dividers.
- the final output from the two dividers is on a line 54.
- Programming inputs are supplied to divider 49 from line 37.
- an appropriate division will be made to obtain a frequency on line 54 of either 9000 or 4600 Hz.
- the final two stages of division are carried out in flip flops contained within a module or final dividing stage 63-
- the output on line 65 from module 61 will be a square wave at the desired frequency.
- the signal on line 67 is at the same frequency but inverted. Thus, signals at the same frequency but shifted in phase 180 degrees from each other are provided.
- Each of the outputs is coupled through a resistor 72 typically 10K with a capacitor 73 to ground, the capacitor being typically .005 MF.
- the junction of each resistor 72 and capacitor 73 is coupled to one of the four switch inputs of an analog switch module 75.
- the switches in analog switch module 75 have control inputs on lines 79a-79d, respectively, obtained from the microprocessor 31.
- the microprocessor 31 determines what serial data has been received and accordingly provides an output on one of the lines 79a-79d to close one of the switches.
- the outputs of all the switches are tied together into a line 81 which is coupled through a capacitor 83, typically, .1MF and a resistor 85, typically 100K to the input of a filter, in this case a Reticon modem filter model R5632.
- FIG. 3 is a flow diagram of the program resident in microprocessor 31. When started up, a number of housekeeping chores are undertaken. As indicated by block 101 the dibit register is cleared, the real time clock register cleared, the serial input cleared, the phase register cleared and the phase select register cleared.
- the dibit register is a register in which the groups of two bits coming in on the serial input 33 are stored.
- the phase register is a register in which the current phase, based on the current pair of dibits is contained and the phase select register an output register which determined the outputs on line 79a-79d of FIG. 2.
- the self-count is enabled on the real time clock as indicated on block 103 and an interrupt enabled on the real time clock transition from 377 octal to 0 octal as indicated in block 104. This in effect, enables the interrupt at 1/1200 second intervals.
- the phase register and phase select register are set to enable followed by a loop operation as indicated by block 107.
- the values of the input and dibit register are looked at, this being the dibit information, as indicated in block 116. Based on this information, the phase register is shifted as indicated in block 117.
- FIG. 2A is a block/circuit diagram of the modem according to the present invention for use with the Bell standard. Parts the same as those in FIG. 2 are given the same reference numbers and are only described again where their operation is different.
- two microprocessors 31 and 31A are provided. Microprocessor 31 receive data as before. Microprocessor 31A has a clock output on line 47 at 240 KHz. Depending on whether the modem is the originating or answering modem, an output frequency of either 1200 or 2400Hz is required.
- Microprocessors 31 and 31A are connected together by an 8 bit data bus from 31 to 31A, a 4 bit data bus from 31A to 31, and a one bit flag from 31 to 31A.
- Microprocessor 31A provides a 4 bit pointer to microprocessor 31 to indicate which bit in a 8 bit data buffer it is using.
- a one bit flag is provided as an indication from microprocessor 31 to microprocessor 31 A that the buffer is nearly full.
- the microprocessor 31 determines what serial data has been received and accordingly provides an output on the 8 bit data bus to microprocessor 31A.
- the output on line 47 is fed to programmable divider 49.
- the final output from divider 49 is on a line 54.
- Programming inputs are supplied to divider 49 from line 37.
- a frequency on line 54 of either 9600 or 4800 Hz.
- the final two stages of division are carried out in flip flops contained within a module or final dividing stage 63, to provide a square waves at the desired frequency. All of the signals are the same frequency of either 1200 or 2400 Hz.
- the switches in analog switch module 75 have control inputs on lines 79a-79d, respectively, obtained from the microprocessor 31A.
- Microprocessor 31A determines what data has been received and accordingly provides an output on one of the lines 79a - 79d to close one of the switches.
- the outputs of all the switches in module 75 are coupled together into a line 81 which is coupled through a capacitor 83, typically, 1MF and a potentiometer 85 typically 100K to the input of a summing amplifier 84 between the 100K potentiometer and filter 15.
- the other input to amplifier comes from microprocessor 31 through a capacitor 86 and potentiometer 88. It provides the answer tone and low speed transmitter.
- FIG. 3A and 3B are flow diagrams for microprocessors 31 and 31A of FIG. 2A.
- the flow diagram for processor 31, is shown in Fig. 3A.
- the real time clock register is cleared, the serial input is cleared, the bit buffer is cleared and the A pointer is cleared.
- the self-count is enabled on the real time clock as indicated on block 503 and an interrupt enabled on the real time clock transition from 377 octal to 0 octal as indicated in block 504. This in effect, enables the interrupt at 1/1200 second intervals.
- the B pointer is retrieved from microprocessor 31A.
- the B pointer is tested to see if it is greater than 6. If it is, the near full flag is set as indicated by block 514. If not, the near full flag is cleared as indicated by block 516. In either case the program returns to block 505.
- block 509 actual operation begins on interrupt as shown by block 509.
- block 510 the RTCC count word is re-loaded. This word is a slight offset to assure that the RTCC makes its transition at exactly 1/1200 seconds.
- block 511 retrieves data from the serial input.
- block 512 the data is put on the bit buffer via the A pointer and the A pointer is incremented.
- block 513 the program returns from the interrupt.
- FIG. 3B is a flow diagram of the program resident in microcomputer 31A.
- a number of housekeeping tasks are performed.
- all registers are cleared.
- the RTCC self count is enabled.
- the interrupt is enabled on RTCC transition from 377 octal to 0 octal.
- the phase register and phase select register are set to enable.
- the program loops back on itself.
- Interrupts operate as follows. As indicated on the right hand side of the diagram, actual operation begins on interrupt as indicated in block 559. As indicated by block 560, the RTCC count word is re-loaded. Next, a check is made in block 561 to see if there is a dibit. If "yes”, as indicated by block 562, the program gets the dibit. Block 563 shifts the phase according to the dibit value. In block.564 the phase is moved to the phase shift register (as above). In block 565 the B (bit) pointer is moved to the output. If there is a "no" answer to 561, block 566 gets one bit from bit buffer via the C pointer. The C pointer is incremented.
- Block 567 the B pointer is incremented and moved to the output.
- block 568 the program tests the bit just received to see if it is a stop bit. If "Yes”, a test is made on the near full flag (from microprocessor 31) to see if it is set. If it is, the program returns to block 566. If the near full flag is "No” or stop bit is "No”, as shown by block 572 program goes to 569 which is the bit scrambler otherwise it loops back to block 566. Block 570 saves the scrambled data. Block 571 returns from interrupt.
- FIG. 4 illustrates the manner in which the carrier is modulated.
- a positive half cycle 601 for reference, between times to and t1
- if the data is 01 (Vadic 10) this will be followed by the normal negative half cycle, i.e., there is no phase shift.
- the data is now 00 (Vadic 00)
- a 90 degree phase shift will take place. Therefore, there will be a jump in amplitude from zero to maximum.
- the next data is, for example, 10 (Vadic 11) there will be a reversal of direction, i.e., a 180 degree shift.
- a 270 degree shift representing the digital data 11 (Vadic 01). This is the type of information then which is transmitted and after transmission and receipt is provided into the demodulator.
- the demodulator of the present invention will now be explained. As shown, there are two further microprocessors 127 and 128 which receive clock inputs at 3.312MHz (or 3.84MHz for Bell) from the same oscillator 39 associated with the microprocessor 31. Line 37 is also provided to microprocessor 127 to indicate if the modem is originating or answering. From microprocessor 128 there is a serial output line 129 on which the digital output is provided and a carrier detect output on line 130.
- the incoming signal to be demodulated is coupled through filter 15 which as noted above may be a Redicon modem filter.
- This filter is a switched capacitance filter which receives an input from an oscillator 103.
- the filter output is coupled through a capacitor 105 into a zero crossing detector 107.
- the incoming sine wave signal is shown as waveform 501 and the output of the zero crossing detector as waveform 503. Note that at each zero crossing, the output changes.
- the output changes between a level of logic 1 and logic 0.
- the output of the zero crossing detector 107 is. coupled into a driver 109 comprising a NAND gate with its second input tied to +5 volts.
- the output of the NAND gate provides inputs to a pair of one-shot multivibrators contained within a module 115.
- the inputs to the two one-shots may be direct as in FIG. 2A or through input resistors 117 and 119, respectively, these typically being 1K resistors.
- the time constants of the two multivibrators are set by RC circuits 121 in conventional fashion.
- One of the one-shots triggers on a rising edge and the other on a falling edge of the waveform out of the driver 109.
- the two outputs are coupled into a NAND gate 123 which performs an ORing function. That is to say, it will provide an output whenever a output pulse is provided by either of the two one-shots.
- an additional NAND gate 126 is used at the input of gate 123. Its inputs are from line 37, the ANS line and from one of the multivibrator outputs. The purpose of this gate is to disable one of the zero crossing edges in originate mode. The purpose of this gate is 37. Note also that in FIG. 2A, the two inputs to microprocessor 127 are from the one shot 115 and from gate 123. Also show at the input to microprocessor 128 are the conventional modem switch inputs and interconnections between microprocessors.
- microprocessor interconnect lines are as follows:
- HS/LS High speed command From microprocessor 128 to 127 and 31, in originate mode, and from microprocessor 127 to 128 and 31, in answer mode. When HS/LS is in "High State”, high speed is selected. (TX EN and HS/LS are Anded together in AND gate 130, the output of which is coupled to the enable input on microprocessor 31A);
- Tone detect - From microprocessor 127 to 128, tells microprocessor 128 that a carrier is present.
- the switches to microprocessor 128 are as follows:
- microprocessor 127 The purpose of microprocessor 127 is to generate the dibit or phase information from the incoming data. It provides this information to a microprocessor 128 which functions primarily as a timer to provide the dibit information as an output on line 129 through a driver 131 to line 133 and to also provide a carrier detect output on line 130 through driver 131 to line 135.
- FIGS. 5, 6 and 7 are software flow diagrams for microprocessor 127.
- the program begins at point 201.
- First a block 203 is entered where quantity N ⁇ P, which is in a register storing the present value of that quantity is moved into the register for N ⁇ P old for storing the last value of that quantity.
- the "time now” is shifted to the "time past” (T P ) register, and the parity stack is pushed, the parity stack being an indication of the input received on line 126.
- T P time past register
- data is read in block 205. Basically, this data is the time T N and the parity on line 126.
- a calculation of N ⁇ P is then made, N ⁇ P being the difference between the time past and the time now (T N -T p ).
- a check is made to see if there has been a change in phase.
- change is a gross change, e.g., a change of between 150 degrees and 230 degrees. This insures that change will be indicated only when a real change has taken place. Because there is drift in the system, treating small variations as actual changes could result in error.
- block 209 is entered where the quantity ⁇ is calculated as ⁇ + N ⁇ P.
- T N the previous time T P would be the time at t3 and N ⁇ P the difference in time between these two.
- the quantity ⁇ is computed which is equal to the previous ⁇ + N ⁇ P.
- the previous ⁇ is the sum, since the last time ⁇ had been set to zero of the increments N ⁇ P.
- the "no change reservoir” is a register which is adapted to overflow when the quantity stored in it indicates a time of more than a 1/600 of a second.
- the assumption is made here that the system is operating on a 2400Hz and that changes take place every 1/600 of a second or every four cycles. It is possible, of course, to operate at other frequencies, for example, 1200Hz in which case changes taking place at every 1/600 of a second will take place every two cycles. In theory, the samples are every 1/600 of a second. However, there is shift and drift and it is for this reason that the change detected in block 207 is detected as a gross change.
- block 213 is a block determining whether there is a change or no change. This block responds to the overflow from the "no change reservoir.” If there is no change, the output of block 213 is directed back to the input of block 203 and the process repeated and another reading taken. Thus, a reading would be taken at time t5. The value at t4 now becomes T P and the value at t5 becomes T N . Readings continue to be taken until the "no change reservoir" overflows. Then the program enters block 215. This block represents a subroutine which is shown in detail in FIG. 6.
- a check is made to see if the parity bit P 4 is equal to the present parity bit, P N . In effect, this is checking to see whether what is being done is being done on a rising or falling edge.
- the parity bit P 4 was set previously when the system was re-zeroed in a manner which will be described below. If P 4 is not equal to P N then in block 219, ⁇ has subtracted from it 180 degrees. Then, in block 221, is made equal to ⁇ minus 45 degrees. This in effect establishes an offset to take care of drift problems. Next, in block 223 there is. a check made to see whether is greater than 360 degrees.
- the phase had been exactly 180 degrees, the offset of 45 degrees would put it at 135 degrees, exactly midway between these two limits. If ⁇ is not greater than 180 degrees block 233 is entered and the 180 degree dibit sent. If is greater than 180 degrees then block 235 is entered and a check made to see if it is greater than 270 degrees. If it is greater than 270 degrees, then no change is sent. If it is not greater than 270 degrees, then according to block 239 the 90 degree dibit is sent.
- block 245 is entered.
- ⁇ NP + ⁇ NP old is the time between t5 and t6 and ⁇ NP the time between t6 and t7, thus, ⁇ is set to be the time between t5 and t7.
- P 3 is set equal to P p , i.e., P present.
- T N present time, is put into the past time T P register in accordance with block 247.
- block 249 is entered which reads data and calculates N ⁇ P. This then would be the time between t7 and t8.
- Block 255 is now entered which is another subroutine for calculating the dibits shown in FIG. 7.
- a check is made to see if P N , the present parity bit is equal to P 3 .
- P 3 was set at the detection of a change or at the time t7. That was a downgoing transition.
- P N at t9 is also a downgoing transition and so the answer is "yes”.
- a block 257 would have been entered where ⁇ was set equal to ⁇ + 180 degrees.
- Block 259 is now entered, to check if is greater than 360 degrees. Since it is, block 261 is entered and 360 degrees subtracted frora ⁇ . After one subtraction the value will be 270 degrees and the answer NO.
- block 263 is entered.
- the question is whether ⁇ is greater than 135 degrees. It is greater than 135 degrees so block 265 is entered. Had it been less than 135 degrees then block 267 would have been entered and the 270 degree dibit would have been sent and P 3 cleared. In block 265 there is a check made to see if is greater than 225 degrees. The answer is "yes”, it is 270 degrees, and thus, block 269 is entered causing the 90 degree dibit to be sent and again P, to be cleared. Had the answer been "no", block 271 would have been entered and the 180 degree dibit sent and again P cleared. In this case, the no change or zero degree dibit cannot be sent since, by definition, this path will not be entered unless there is a change.
- N the last value of p.
- the "no change reservoir" is set to N ⁇ P Plus a constant. This step corresponds, in general, to the step of block 211.
- T N is moved to T P and the parity stack is pushed. This is equivalent to what is done in block 203.
- block 279 data is read and N ⁇ P is calculated. This corresponds to what is done in block 205.
- the new starting point i.e., the new value starting with the value N ⁇ P is thus, reset to a reasonably accurate point.
- the reason for adding a constant in block 275 is to insure that when a quantity corresponding to 1/600 of a second is exceeded the reservoir will overflow.
- microprocessor 127 there are three lines 127 a, b and c coming out of microprocessor 127 into microprocessor 128. On two of these lines are the dibit and on the "third is a signal to set a flip flop indicating that data is ready. Data is transferred from microprocessor 127 to microprocessor 128 approximately every 1/600 of a second with data provided two bits at a time. Microprocessor 128 must provide the data out one bit at a time at 1/1200 of a second. Furthermore, the output of microprocessor 127 is not at a particularly accurate rate.
- the microprocessor 128 in addition to converting the stream of dibits into a string of single bits must also smooth out the rate of output so that it is close to the desired 1/1200 of a second rate. In addition, it is adapted to make small adjustments in output rate depending on whether or not it has a sufficient backlog of data from microprocessor 127.
- FIGS. 8, 9 and 10 are flow diagrams illustrating operation of the microprocessor 128.
- the program starts at point 301 of FIG. 8.
- First in block 303 all registers are cleared.
- a block 305 is entered where there is a check made to see if data is available. This is a check of whether or not the flip flop has been set by the third line from microprocessor 127 has been set. If data is not available, it continues to cycle back to the input of block 305. If data is available, block 306 is entered. There, a check is made to see if the dibit is a 11. If it is not a 11 the program loops back to block 303. When a 11 is detected, indicating the presence of a carrier, block 307 is entered.
- a counter is incremented and a check made to see if the count is equal to 32. If the count is not equal to 32, it loops back to the input of block 305. Assuming a carrier is present, this loop will be transverse until the counter of block 307 reaches a count of 32, at which point block 309 will be entered. The output on line 135 indicating a carrier detect will be set and the timer interrupt, to be explained below, will be set. As indicated by the circle a 311, also shown in FIG. 9 a block 313 is now entered where a check is made again to see if data is available. If the answer is "no", block 315 is entered and a check made to see if the carrier detect is a 1.
- block 303 of FIG. 8 is entered to again perform the carrier detection function. Assuming data is available, a check is made in block 319 to see if the stack of data is equal to 20. Incoming data from microprocessor 127 is put in a stack and up to 20 dibits can be stacked. If the stack is full, the program loops back to block 313. Normally, the stack will not be full and as indicated by block 321 data will be gotten and the top of stack pointer incremented. In block 322 the stack is then incremented and a check made to see if the top of stack pointer is equal to zero.
- block 323 is entered and data is put in the top of the stack. If the top of the stack pointer is at zero after being incremented, then in accordance with block 325 the top of the stack pointer is set equal to 20, before block 323 is entered. The program now goes back to block 313. Thus, as data becomes available it is put into the stack and the stack pointer reset each time. Each time the stack pointer gets to the bottom it is reset to the top in conventional fashion.
- FIG. 9 shows a manner in which data is put into the stack. Although put in basically at a 1/600 of a second there is some variation in this rate. Generally, the stack should remain about half full for best operation.
- FIG. 10 illustrates the manner in which data is taken out of the stack.
- An internal interrupt is generated at a fixed rate.
- the timer interrupt was enabled by block 309 of FIG. 8.
- block 331 is entered and the present processing being carried out is saved. This is what is meant by "push w.”
- a test bit is complemented.
- the test bit has as its purpose indicating whether it is the first bit of the dibit or the second bit of the dibit which is to be output on that particular cycle. Assume that it is the first bit of the dibit. In that case, the test bit is zero.
- block 335 is entered to check if the stack is empty.
- the carrier detect is cleared as indicated by block 356 and the material previously being processed is brought back as indicated by the command "pop w" in block 357 and the program returns from the interrupt to the main program, in this case ending up again look for a carrier as shown in FIG. 8.
- block 359 is entered and the bottom of the stack is moved to the output. (Note that in accordance with FIG. 9 new data is put at the top of the stack.)
- the stack is then decremented as indicated by block 361 and the bottom of the stack pointer incremented as indicated by block 363.
- a check is made in block 365 to see if the pointer is at zero and if it is it is reset to 20 as indicated in block 367.
- a constant is added to the timer register as indicated in block 369. This is done because the clock frequency will not give exactly 1/1200 of a second. By adding this constant, the timer will generate an interrupt at exactly 1/.1200 of a second.
- the rate can be adjusted slightly as a function of the number of dibits in the stack. Thus, the rate can be made slightly more than 1/1200 of a second, or less, to allow the stack to become more full or emptier as the need arises. After doing this, as indicated by block 371, the step being performed before the interrupt is brought back and the program returns to the main program of FIGS. 8 and 9.
- test bit is complemented in block 331 and it is now not a zero.
- block 373 is entered. This causes the dibit to be shifted in the output register. Only a single line, the line 129 is taken off of the output register in microprocessor 128. The second bit is present but not used. By causing a shift, the second bit of the dibit now appears on the output line.
- a constant is added to the timer register again and then in block 375 the previous material brought back to the program register and a return to the main program.
- the result on line 133 is a decoded serial stream of data at the desired baud rate of 1200.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
Abstract
An all digital modem includes a clock divider (49, 63) for generating four waveforms (65, 67, 69, 71) at a desired transmission frequency but mutually phase shifted by 90 degrees, a first microprocessor (31) programmed to receive digital data (33) at its input, to convert the data into dibits and to select as a modem output (81) one of the four waveforms phase shifted 90 degrees with respect to each other. To demodulate incoming signals, a zero crossing detector (107) detects zero crossings of an incoming modulated signal, a second microprocessor (127) coupled to the zero crossing detector (107) receives the zero crossing information along with parity information and converts the information into dibits, and a third microprocessor (128) receives dibit outputs from the second microprocessor (127) and converts the dibits into a serial stream of data (133) at essentially constant frequency.
Description
DIGITAL MODEM WITH PLURAL MICROPROCESSORS
BACKGROUND OF THE INVENTION
This invention relates to modems in general, and more particularly to a low cost 1200/1200 baud full duplex modem.
Modems are devices which are utilized for converting digital data into a form which permits it to be transmitted over the telephone lines and conversely to transform such data which has been transmitted back into digital data. The rate at which this can be carried out is called the baud rate, a baud corresponding to a bit per second. Inexpensive modems are available which operate at relatively low baud rates of, for example, 300 and which can only operate in one direction at a time. That is to say that they cannot transmit and receive at the same time, as is required for full duplex operation. Modems achieving a 1200 baud rate and a full duplex operation have in the past been relatively expensive. In general, this is because such modems require a large amount of analog circuitry.
It is, thus, the object of the present invention to provide a 1200/1200 baud full duplex modem which can be manufactured and sold at a relatively low cost but which still provides reliable, trouble-free operation.
SUMMARY OF THE INVENTION
The present invention provides such a modem. To accomplish this, a plurality of microprocessors, along with other circuitry is utilized. Two microprocessors control a demodulator which is used for converting received signals into digital data, whereas one or two additional microprocessors control a modulator which converts the digital data into information which can be fed over the telephone line. The modulator and demodulator are coupled to each other through a filter circuit and an appropriate coupler to the telephone system. Full duplex operation is made possible through the use of different modulation frequencies for sending and transmitting.
The modem uses quad-phase modulation to phase modulate a carrier. The data being transmitted is thus indicated by a phase shift. For example, with the Vadic protocol, no phase shift represents the dibit 10, a 90 degree phase shift the dibit 01, a 180 degree shift the dibit 11 and a 270 degree shift the dibit 01. In the Bell protocol, 0° is 01, 90° is 00, 180° is 10 and 270° is 11.
In general, the demodulator includes a zero crossing detector which converts the incoming signal into a square wave. The phase modulated signal is coupled through a logic driver to a dual one-shot multivibrator which provides outputs corresponding to the leading and trailing edges of squared pulses (the zero crossings). The outputs of the one-shot are fed to a first microprocessor. This microprocessor generates the appropriate dibits. This output is fed to a second microprocessor, which converts this information back into a serial stream of digital data at the proper frequency. The second microprocessor also software
implements the bit descramble necessary for the Bell protocol if necessary.
The modulator utilizes a third (if the Vadic protocol is implemented) or third and fourth microprocessor (if the Bell protocol is implemented). The third processor samples the signal to be modulated, puts the sampled data into dibit form, removes or adds start and stop bits (in accord with Bell protocol) and puts the data onto a stack for processing by the fourth processor. The third processor operates at the data rate of the signal to be modulated whereas the fourth processor must transmit at precisely 1200 (or 2-400) baud. The fourth processor takes data from the stack of the third processor, scrambles it in accordance with the Bell scrambler protocol. The microprocessor providing the output modulates the signal as follows. The clock output of the output processor (third in a Vadic and fourth in a Bell type) is divided down to toggle at the carrier frequency. The carrier frequency will typically be either 1150 Hz or 2250 Hz for Vadic (1200 or 2400 for Bell). One frequency is used for transmitting and one for receiving. Which is used depends on which modem is the originator and which is the answering modem. The divided output will thus be a square wave. Logic is used to generate four such square wave signals mutually shifted 90 degrees. One of those square waves is selected by closing a switch in response to an output from the output microprocessor in correspondence with the dibit being transmitted. The selected wave is converted to a sine wave by filtering. The final output is then provided through filtering and output circuits to the telephone line.
At both the input and output, the use of microprocessors has a further advantage over conventional modems in that either serial or parallel data can be handled. With
typical prior art modems a conversion of parallel data into serial date outside the modem is necessary.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram showing the overall system of the modem of the present invention.
FIG. 2 is a block/circuit diagram of the modem of the present invention employing the Vadic standard.
FIG. 2A is a block/circuit diagram of the modem employing the Bell standard.
FIG. 3 is a flow diagram for the modulator of FIG. 2.
FrGS. 3A and 3B are the flow diagrams for the modulator of FIG. 2A.
FIG. 4 is a waveform diagram showing the manner in which modulation and demodulation is carried out.
FIGS. 5-7 are flow diagrams of the programs of the first demodulator microprocessor.
FIGS. 8-10 are flow diagrams for the second demodulator microprocessor.
DETAILED DESCRIPTION
As illustrated by FIG. 1, the modem of the present invention includes a coupler 11 for coupling to the telephone lines 13. The coupler 11 is a device which isolates the modem from the telephone line in a manner complying with FCC regulations. Coupling to and from the coupler is through a filter 15. Filter 15 is utilized to separate the transmitting and receiving
frequencies in order to permit full duplex operation. It includes switches so that the filters, one of which operates at the 1150 or 1200 Hz frequency and the other of which operates at the 2250 or 2400 Hz frequency, for example, can be utilized either with the modulator or the demodulator depending on whether this particular modem is the originating or answering modem. The two final elements of the modem comprise a modulator 17 and a demodulator 19. The modulator 17 receives input data from line 21 and converts it to a modulated carrier for transmission over the telephone line 13. The demodulator receives a modulated carrier signal and converts it into binary data on an output line 22.
FIG. 2 is a block/circuit diagram of the modem according to the present invention for use with the Vadic standard. The modulator for the modem includes a microprocessor 31 which is preferably a PIC-1656 or PIC1670. This particular microprocessor includes, in a single chip, not only the processor but also ROM and RAM memory, the ROM memory being for program storage and the RAM memory for data storage. The microprocessor 31 receives data on data input line 33. Data is supplied as serial data through diode 32 and transistor 34, with a base resistor 36 and collector resistor 38. The microprocessor also includes an line 37, coupled to a microprocessor 128, to indicate whether the particular modem is the originating or answering modem. Coupled to an input of microprocessor 31 is a crystal oscillator or clock 39 which establishes the clock frequency for the microprocessor. The microprocessor has a clock output on line 47 at 207 KHz. Depending on whether the modem is the originating or answering modem, an output a frequency of either 1150 or 2250 Hz is required.
The output on line 47 is fed to a programmable divider 49 which can be made up of two commercially available
interconnected programmable dividers. The final output from the two dividers is on a line 54. Programming inputs are supplied to divider 49 from line 37. Depending upon whether the needed frequency is 1150 or 2250 Hz, an appropriate division will be made to obtain a frequency on line 54 of either 9000 or 4600 Hz. The final two stages of division are carried out in flip flops contained within a module or final dividing stage 63- The output on line 65 from module 61 will be a square wave at the desired frequency. The signal on line 67 is at the same frequency but inverted. Thus, signals at the same frequency but shifted in phase 180 degrees from each other are provided. These can be the complementary outputs of one flip flop. The outputs of another flip flop in module 61 are shifted 90 degrees with respect to to these first two outputs. These signals shifted 90 degrees and 270 degrees, respectively, are provided on lines 69 and 71. All of the signals are the same frequency of either 1150 or 2250 Hz.
Each of the outputs is coupled through a resistor 72 typically 10K with a capacitor 73 to ground, the capacitor being typically .005 MF. The junction of each resistor 72 and capacitor 73 is coupled to one of the four switch inputs of an analog switch module 75. The switches in analog switch module 75 have control inputs on lines 79a-79d, respectively, obtained from the microprocessor 31. The microprocessor 31 determines what serial data has been received and accordingly provides an output on one of the lines 79a-79d to close one of the switches.
The outputs of all the switches are tied together into a line 81 which is coupled through a capacitor 83, typically, .1MF and a resistor 85, typically 100K to the input of a filter, in this case a Reticon modem filter
model R5632.
FIG. 3 is a flow diagram of the program resident in microprocessor 31. When started up, a number of housekeeping chores are undertaken. As indicated by block 101 the dibit register is cleared, the real time clock register cleared, the serial input cleared, the phase register cleared and the phase select register cleared. The dibit register is a register in which the groups of two bits coming in on the serial input 33 are stored. The phase register is a register in which the current phase, based on the current pair of dibits is contained and the phase select register an output register which determined the outputs on line 79a-79d of FIG. 2.
After clearing, the self-count is enabled on the real time clock as indicated on block 103 and an interrupt enabled on the real time clock transition from 377 octal to 0 octal as indicated in block 104. This in effect, enables the interrupt at 1/1200 second intervals. Next, as indicated by block 105, the phase register and phase select register are set to enable followed by a loop operation as indicated by block 107.
As shown on the righthand side of the diagram, actual operation begins on interrupt as indicated by block 109. Next, a check is made to see if there is a dibit, i.e., if two bits are present in the dibit register in block 110. If the answer is No, as indicated by block 111, the program looks at the input and saves it. As indicated by block 113 the RTCC count word is also reloaded. This word is a slight offset to insure that the RTCC makes its transition at exactly 1/1200 seconds. This is followed by a return from interrupt as indicated in block 115. If the answer to the question in block 110 is Yes, that there is a dibit, i.e., that this is
the second of two inputs, then the values of the input and dibit register are looked at, this being the dibit information, as indicated in block 116. Based on this information, the phase register is shifted as indicated in block 117.
Referring to FIG. 2, if one realizes that the outputs 79d,c,b and a correspond, respectively, to the first, second, third and fourth positions in a shift register, no shift will result in an output on line 79d, for example. This corresponds to zero phase shift.
Similarly, if a one bit shift is carried out the output will appear on line 79c resulting in a 90 degree shift. This shifted information is then moved to the phase select register as indicated by block 118 and is in fact coupled to the outputs 79a and 79d causing one of the switches of FIG. 2 to be closed. Following this, the RTCC count-word is reloaded, as indicated in block 119 and a return from interrupt then takes place as indicated in block 120.
FIG. 2A is a block/circuit diagram of the modem according to the present invention for use with the Bell standard. Parts the same as those in FIG. 2 are given the same reference numbers and are only described again where their operation is different. In this embodiment two microprocessors 31 and 31A are provided. Microprocessor 31 receive data as before. Microprocessor 31A has a clock output on line 47 at 240 KHz. Depending on whether the modem is the originating or answering modem, an output frequency of either 1200 or 2400Hz is required.
Microprocessors 31 and 31A are connected together by an 8 bit data bus from 31 to 31A, a 4 bit data bus from 31A to 31, and a one bit flag from 31 to 31A. Microprocessor 31A provides a 4 bit pointer to
microprocessor 31 to indicate which bit in a 8 bit data buffer it is using. A one bit flag is provided as an indication from microprocessor 31 to microprocessor 31 A that the buffer is nearly full. The microprocessor 31 determines what serial data has been received and accordingly provides an output on the 8 bit data bus to microprocessor 31A.
The output on line 47 is fed to programmable divider 49. The final output from divider 49 is on a line 54. Programming inputs are supplied to divider 49 from line 37. Depending upon whether the needed frequency is 1200 or 2400 an appropriate division will be made to obtain a frequency on line 54 of either 9600 or 4800 Hz. Again the final two stages of division are carried out in flip flops contained within a module or final dividing stage 63, to provide a square waves at the desired frequency. All of the signals are the same frequency of either 1200 or 2400 Hz.
The switches in analog switch module 75 have control inputs on lines 79a-79d, respectively, obtained from the microprocessor 31A. Microprocessor 31A determines what data has been received and accordingly provides an output on one of the lines 79a - 79d to close one of the switches. The outputs of all the switches in module 75 are coupled together into a line 81 which is coupled through a capacitor 83, typically, 1MF and a potentiometer 85 typically 100K to the input of a summing amplifier 84 between the 100K potentiometer and filter 15. The other input to amplifier comes from microprocessor 31 through a capacitor 86 and potentiometer 88. It provides the answer tone and low speed transmitter.
FIG. 3A and 3B are flow diagrams for microprocessors 31 and 31A of FIG. 2A. The flow diagram for processor 31,
is shown in Fig. 3A. In block 501 the real time clock register is cleared, the serial input is cleared, the bit buffer is cleared and the A pointer is cleared. After clearing, the self-count is enabled on the real time clock as indicated on block 503 and an interrupt enabled on the real time clock transition from 377 octal to 0 octal as indicated in block 504. This in effect, enables the interrupt at 1/1200 second intervals. In block 505, the B pointer is retrieved from microprocessor 31A. In block 506, the B pointer is tested to see if it is greater than 6. If it is, the near full flag is set as indicated by block 514. If not, the near full flag is cleared as indicated by block 516. In either case the program returns to block 505.
As indicated in right side of block diagram FIG. 3A, actual operation begins on interrupt as shown by block 509. As indicated by block 510, the RTCC count word is re-loaded. This word is a slight offset to assure that the RTCC makes its transition at exactly 1/1200 seconds. Next, block 511 retrieves data from the serial input. In block 512, the data is put on the bit buffer via the A pointer and the A pointer is incremented. In block 513 the program returns from the interrupt.
FIG. 3B is a flow diagram of the program resident in microcomputer 31A. When started up, a number of housekeeping tasks are performed. As indicated in block 551, all registers are cleared. In block 513, the RTCC self count is enabled. In block 554, the interrupt is enabled on RTCC transition from 377 octal to 0 octal. In block 555, the phase register and phase select register are set to enable. In block 557 the program loops back on itself.
Interrupts operate as follows. As indicated on the right hand side of the diagram, actual operation begins
on interrupt as indicated in block 559. As indicated by block 560, the RTCC count word is re-loaded. Next, a check is made in block 561 to see if there is a dibit. If "yes", as indicated by block 562, the program gets the dibit. Block 563 shifts the phase according to the dibit value. In block.564 the phase is moved to the phase shift register (as above). In block 565 the B (bit) pointer is moved to the output. If there is a "no" answer to 561, block 566 gets one bit from bit buffer via the C pointer. The C pointer is incremented. In block 567 the B pointer is incremented and moved to the output. In block 568 the program tests the bit just received to see if it is a stop bit. If "Yes", a test is made on the near full flag (from microprocessor 31) to see if it is set. If it is, the program returns to block 566. If the near full flag is "No" or stop bit is "No", as shown by block 572 program goes to 569 which is the bit scrambler otherwise it loops back to block 566. Block 570 saves the scrambled data. Block 571 returns from interrupt.
FIG. 4 illustrates the manner in which the carrier is modulated. Starting with a positive half cycle 601, for reference, between times to and t1, if the data is 01 (Vadic 10), this will be followed by the normal negative half cycle, i.e., there is no phase shift. At the zero crossing at t6, however, if the data is now 00 (Vadic 00), a 90 degree phase shift will take place. Therefore, there will be a jump in amplitude from zero to maximum. When a zero crossover is reached at time t10, and the next data is, for example, 10 (Vadic 11) there will be a reversal of direction, i.e., a 180 degree shift. Finally, at t11, there is shown a 270 degree shift representing the digital data 11 (Vadic 01). This is the type of information then which is transmitted and after transmission and receipt is provided into the demodulator.
Returning to the block-logic diagrams of FIG. 2 and FIG. 2A, the demodulator of the present invention will now be explained. As shown, there are two further microprocessors 127 and 128 which receive clock inputs at 3.312MHz (or 3.84MHz for Bell) from the same oscillator 39 associated with the microprocessor 31. Line 37 is also provided to microprocessor 127 to indicate if the modem is originating or answering. From microprocessor 128 there is a serial output line 129 on which the digital output is provided and a carrier detect output on line 130. The incoming signal to be demodulated is coupled through filter 15 which as noted above may be a Redicon modem filter. This filter is a switched capacitance filter which receives an input from an oscillator 103. The filter output is coupled through a capacitor 105 into a zero crossing detector 107. Referring to FIG. 4, the incoming sine wave signal is shown as waveform 501 and the output of the zero crossing detector as waveform 503. Note that at each zero crossing, the output changes. The output changes between a level of logic 1 and logic 0. The output of the zero crossing detector 107 is. coupled into a driver 109 comprising a NAND gate with its second input tied to +5 volts. The output of the NAND gate provides inputs to a pair of one-shot multivibrators contained within a module 115. The inputs to the two one-shots may be direct as in FIG. 2A or through input resistors 117 and 119, respectively, these typically being 1K resistors. The time constants of the two multivibrators are set by RC circuits 121 in conventional fashion. One of the one-shots triggers on a rising edge and the other on a falling edge of the waveform out of the driver 109. The two outputs are coupled into a NAND gate 123 which performs an ORing function. That is to say, it will provide an output whenever a output pulse is provided by either of the two one-shots. This is coupled through a further NAND gate 125 acting as a driver and inverter to
the interrupt input of a second microprocessor 127. Also coupled as an input to the microprocessor is the output of driver 109. This output will be the square wave 503 and thus vary between "1" and "0". By checking this input, the microprocessor can tell whether the zero crossing which caused the interrupt was on a rising edge or falling edge.
As shown in FIG. 2A an additional NAND gate 126 is used at the input of gate 123. Its inputs are from line 37, the ANS line and from one of the multivibrator outputs. The purpose of this gate is to disable one of the zero crossing edges in originate mode. The purpose of this gate is 37. Note also that in FIG. 2A, the two inputs to microprocessor 127 are from the one shot 115 and from gate 123. Also show at the input to microprocessor 128 are the conventional modem switch inputs and interconnections between microprocessors.
The microprocessor interconnect lines are as follows:
TX EN - Transmit Enable - From microprocessor 128 to 31, turns transmitter on;
HS/LS High speed command - From microprocessor 128 to 127 and 31, in originate mode, and from microprocessor 127 to 128 and 31, in answer mode. When HS/LS is in "High State", high speed is selected. (TX EN and HS/LS are Anded together in AND gate 130, the output of which is coupled to the enable input on microprocessor 31A);
RX EN - Receive Enable - From microprocessor 128 to 127, turns on receiver; and
Tone detect - From microprocessor 127 to 128, tells microprocessor 128 that a carrier is present.
The switches to microprocessor 128 are as follows:
voice/DATA - When on makes the modem enter originate mode;
HS - When on makes the modem originate at high speed;
AL - When on makes the modem enter analog loop; and
FA - Force answer - when on makes the modem enter answer mode.
The purpose of microprocessor 127 is to generate the dibit or phase information from the incoming data. It provides this information to a microprocessor 128 which functions primarily as a timer to provide the dibit information as an output on line 129 through a driver 131 to line 133 and to also provide a carrier detect output on line 130 through driver 131 to line 135.
FIGS. 5, 6 and 7 are software flow diagrams for microprocessor 127. The program begins at point 201. First a block 203 is entered where quantity N Δ P, which is in a register storing the present value of that quantity is moved into the register for N Δ P old for storing the last value of that quantity. Similarly, the "time now" is shifted to the "time past" (TP) register, and the parity stack is pushed, the parity stack being an indication of the input received on line 126. Now that the registers have been cleared, data is read in block 205. Basically, this data is the time TN and the parity on line 126. A calculation of NΔ P is then made, N Δ P being the difference between the time past and the time now (TN-Tp).
Next in block 207, a check is made to see if there has been a change in phase. What is meant by change is a
gross change, e.g., a change of between 150 degrees and 230 degrees. This insures that change will be indicated only when a real change has taken place. Because there is drift in the system, treating small variations as actual changes could result in error.
Assuming that change has not taken place, block 209 is entered where the quantity Δ is calculated as Δ + N Δ P. Referring to FIG. 4, assume that the measurement has been made at time t4. This then is TN the previous time TP would be the time at t3 and N Δ P the difference in time between these two. In block 209 the quantity Δ is computed which is equal to the previous Δ + N Δ P. The previous Δ is the sum, since the last time Δ had been set to zero of the increments N Δ P. Thus, if we assume thatΔ was set to zero at time to there will already be three increments of N Δ P in the quantity Δ and the fourth will now be added. In the next block 211 something called the "no change reservoir" is updated by having added to it the quantity N Δ P. The "no change reservoir" is a register which is adapted to overflow when the quantity stored in it indicates a time of more than a 1/600 of a second. The assumption is made here that the system is operating on a 2400Hz and that changes take place every 1/600 of a second or every four cycles. It is possible, of course, to operate at other frequencies, for example, 1200Hz in which case changes taking place at every 1/600 of a second will take place every two cycles. In theory, the samples are every 1/600 of a second. However, there is shift and drift and it is for this reason that the change detected in block 207 is detected as a gross change.
Returning to block 211, its output is directed to block 213 which is a block determining whether there is a change or no change. This block responds to the overflow from the "no change reservoir." If there is no
change, the output of block 213 is directed back to the input of block 203 and the process repeated and another reading taken. Thus, a reading would be taken at time t5. The value at t4 now becomes TP and the value at t5 becomes TN. Readings continue to be taken until the "no change reservoir" overflows. Then the program enters block 215. This block represents a subroutine which is shown in detail in FIG. 6.
As indicated in FIG. 6, in block 217, a check is made to see if the parity bit P 4 is equal to the present parity bit, PN. In effect, this is checking to see whether what is being done is being done on a rising or falling edge. The parity bit P4 was set previously when the system was re-zeroed in a manner which will be described below. If P 4 is not equal to PN then in block 219, Δ has subtracted from it 180 degrees. Then, in block 221, is made equal to Δ minus 45 degrees. This in effect establishes an offset to take care of drift problems. Next, in block 223 there is. a check made to see whether is greater than 360 degrees. One can speak of degrees here even though measurements are made in time since there is a known frequency. IfΔ is greater than 360 degrees, 360 degrees is subtracted from Δ in block 225 and block 223 re-entered. This continues untilΔ is below 360 degrees. Then, block 227 is entered where a check is made to see if Δ is greater than 90 degrees, if it is not, then according to block 229 the 270 degree dibit is sent. If "yes", block 231 is entered to see if is greater than 180 degrees. If it is not greater than 180 degrees then the 180 degree dibit is sent. Note that this, in effect, means that the value is between 90 and 180 degrees. Thus, if the phase had been exactly 180 degrees, the offset of 45 degrees would put it at 135 degrees, exactly midway between these two limits. IfΔ is not greater than 180 degrees block 233 is entered and the 180 degree dibit sent. If is greater
than 180 degrees then block 235 is entered and a check made to see if it is greater than 270 degrees. If it is greater than 270 degrees, then no change is sent. If it is not greater than 270 degrees, then according to block 239 the 90 degree dibit is sent.
The main program of FIG. 5 now resumes with block 241. In this block the "no change reservoir" has subtracted from it 1/600 of a second. This, in effect, sets it close to zero but with a little offset as will be described below. In block 243Δ is set to zero and P4 is reset equal to PN The program then returns to bloc
203.
Assume that a detectable change does occur. Such a change does show between t6 and t7. At t6, there was a 90 degree jump. Now, block 245 is entered. Here, is set equal toΔ NP + Δ NP old, Δ NP old is the time between t5 and t6 and Δ NP the time between t6 and t7, thus, Δ is set to be the time between t5 and t7. P3 is set equal to Pp, i.e., P present. TN, present time, is put into the past time TP register in accordance with block 247. Now block 249 is entered which reads data and calculates NΔ P. This then would be the time between t7 and t8. Next, a check is made to see in block 251 to see if Δ + N Δ P is less than 500 degrees, if it is less than 500 degrees, the program moves back to block 249. It continues in this loop until the value tested exceeds 500 degrees. By time t9 this will have occurred. The total value checked in block 251 is now set equal to the previous Δ + P Δ N or the period between t7 and t9. Δ was originally equal to approximately 270 degrees. After the first addition check it would be equal to 450 degrees, and then with an additional 180 degrees it will be equal to 630 degrees. Now thatΔ + N Δ P is greater than 500 degrees, i.e., not less than 500 degrees, block 253 is entered and N
P added to
Block 255 is now entered which is another subroutine for calculating the dibits shown in FIG. 7. As indicated, first in block 256, a check is made to see if PN, the present parity bit is equal to P3. Remember that P3 was set at the detection of a change or at the time t7. That was a downgoing transition. PN at t9 is also a downgoing transition and so the answer is "yes". Had the answer been "no", a block 257 would have been entered where Δ was set equal to Δ+ 180 degrees. Block 259 is now entered, to check if is greater than 360 degrees. Since it is, block 261 is entered and 360 degrees subtracted froraΔ. After one subtraction the value will be 270 degrees and the answer NO. Thus, block 263 is entered. The question is whetherΔ is greater than 135 degrees. It is greater than 135 degrees so block 265 is entered. Had it been less than 135 degrees then block 267 would have been entered and the 270 degree dibit would have been sent and P3 cleared. In block 265 there is a check made to see if is greater than 225 degrees. The answer is "yes", it is 270 degrees, and thus, block 269 is entered causing the 90 degree dibit to be sent and again P, to be cleared. Had the answer been "no", block 271 would have been entered and the 180 degree dibit sent and again P cleared. In this case, the no change or zero degree dibit cannot be sent since, by definition, this path will not be entered unless there is a change.
In this subroutine, note that the offset is obtained in a slightly different fashion. Instead of subtracting 45 degrees as was done in the subroutine of FIG. 6, the limits are offset by 45 degrees.
The main program is resumed with block 273 of FIG. 5.
Here is set to zero, P3 set to zero and P4, set PN, the
last value of p. In block 275 the "no change reservoir" is set to N Δ P Plus a constant. This step corresponds, in general, to the step of block 211. Next, as indicated by block 277, TN is moved to TP and the parity stack is pushed. This is equivalent to what is done in block 203. Then in block 279 data is read and N Δ P is calculated. This corresponds to what is done in block 205. These steps are carried out rather than going back to block 203 since it is desired to run through the righthand portion of the program at least once before going through block 205 and again checking for a phase change. After leaving block 279, block.209 is entered and the program proceeds in the manner described above.
The new starting point, i.e., the new value starting with the value N Δ P is thus, reset to a reasonably accurate point. The reason for adding a constant in block 275 is to insure that when a quantity corresponding to 1/600 of a second is exceeded the reservoir will overflow.
Referring now to FIGS. 2 and 2A, there are three lines 127 a, b and c coming out of microprocessor 127 into microprocessor 128. On two of these lines are the dibit and on the "third is a signal to set a flip flop indicating that data is ready. Data is transferred from microprocessor 127 to microprocessor 128 approximately every 1/600 of a second with data provided two bits at a time. Microprocessor 128 must provide the data out one bit at a time at 1/1200 of a second. Furthermore, the output of microprocessor 127 is not at a particularly accurate rate. Thus, the microprocessor 128 in addition to converting the stream of dibits into a string of single bits must also smooth out the rate of output so that it is close to the desired 1/1200 of a second rate. In addition, it is adapted to make small adjustments in output rate depending on whether or not it has a
sufficient backlog of data from microprocessor 127.
FIGS. 8, 9 and 10 are flow diagrams illustrating operation of the microprocessor 128. The program starts at point 301 of FIG. 8. First in block 303 all registers are cleared. A block 305 is entered where there is a check made to see if data is available. This is a check of whether or not the flip flop has been set by the third line from microprocessor 127 has been set. If data is not available, it continues to cycle back to the input of block 305. If data is available, block 306 is entered. There, a check is made to see if the dibit is a 11. If it is not a 11 the program loops back to block 303. When a 11 is detected, indicating the presence of a carrier, block 307 is entered. Here, a counter is incremented and a check made to see if the count is equal to 32. If the count is not equal to 32, it loops back to the input of block 305. Assuming a carrier is present, this loop will be transverse until the counter of block 307 reaches a count of 32, at which point block 309 will be entered. The output on line 135 indicating a carrier detect will be set and the timer interrupt, to be explained below, will be set. As indicated by the circle a 311, also shown in FIG. 9 a block 313 is now entered where a check is made again to see if data is available. If the answer is "no", block 315 is entered and a check made to see if the carrier detect is a 1. If it is, the program loops back to block 313. Otherwise, as indicated by circle B, 317, block 303 of FIG. 8 is entered to again perform the carrier detection function. Assuming data is available, a check is made in block 319 to see if the stack of data is equal to 20. Incoming data from microprocessor 127 is put in a stack and up to 20 dibits can be stacked. If the stack is full, the program loops back to block 313. Normally, the stack will not be full and as indicated by block 321 data will be gotten and the top
of stack pointer incremented. In block 322 the stack is then incremented and a check made to see if the top of stack pointer is equal to zero. If it is not, then block 323 is entered and data is put in the top of the stack. If the top of the stack pointer is at zero after being incremented, then in accordance with block 325 the top of the stack pointer is set equal to 20, before block 323 is entered. The program now goes back to block 313. Thus, as data becomes available it is put into the stack and the stack pointer reset each time. Each time the stack pointer gets to the bottom it is reset to the top in conventional fashion.
FIG. 9 shows a manner in which data is put into the stack. Although put in basically at a 1/600 of a second there is some variation in this rate. Generally, the stack should remain about half full for best operation.
FIG. 10 illustrates the manner in which data is taken out of the stack. An internal interrupt is generated at a fixed rate. The timer interrupt was enabled by block 309 of FIG. 8. On an interrupt, block 331 is entered and the present processing being carried out is saved. This is what is meant by "push w." In addition, a test bit is complemented. The test bit has as its purpose indicating whether it is the first bit of the dibit or the second bit of the dibit which is to be output on that particular cycle. Assume that it is the first bit of the dibit. In that case, the test bit is zero. After making a check of this in block 333, block 335 is entered to check if the stack is empty. If the stack is empty, the carrier detect is cleared as indicated by block 356 and the material previously being processed is brought back as indicated by the command "pop w" in block 357 and the program returns from the interrupt to the main program, in this case ending up again look for a carrier as shown in FIG. 8. Assuming the stack is not
empty, block 359 is entered and the bottom of the stack is moved to the output. (Note that in accordance with FIG. 9 new data is put at the top of the stack.) The stack is then decremented as indicated by block 361 and the bottom of the stack pointer incremented as indicated by block 363. A check is made in block 365 to see if the pointer is at zero and if it is it is reset to 20 as indicated in block 367. Then, a constant is added to the timer register as indicated in block 369. This is done because the clock frequency will not give exactly 1/1200 of a second. By adding this constant, the timer will generate an interrupt at exactly 1/.1200 of a second. If desired, as indicated above, the rate can be adjusted slightly as a function of the number of dibits in the stack. Thus, the rate can be made slightly more than 1/1200 of a second, or less, to allow the stack to become more full or emptier as the need arises. After doing this, as indicated by block 371, the step being performed before the interrupt is brought back and the program returns to the main program of FIGS. 8 and 9.
On the next interrupt, the test bit is complemented in block 331 and it is now not a zero. Thus, block 373 is entered. This causes the dibit to be shifted in the output register. Only a single line, the line 129 is taken off of the output register in microprocessor 128. The second bit is present but not used. By causing a shift, the second bit of the dibit now appears on the output line. In block 374, a constant is added to the timer register again and then in block 375 the previous material brought back to the program register and a return to the main program.
The result on line 133 is a decoded serial stream of data at the desired baud rate of 1200.
Claims
1. In a data modem for transmitting data over the telephone, a method of modulation comprising: a. supplying the data to be transmitted to a first microprocessor; b. converting the data into dibits in said microprocessor; c. generating four waveforms having a frequency equal to a desired frequency of transmission but mutually shifted 90 degrees in phase from each other, each of said waveforms representative of a different one of the four potential dibits; and d. switching one of said waveforms to the output of the modem utilizing a control signal from said microprocessor.
2. The method according to claim 1 and further including first encoding said data in a second microprocessor before supplying it to said first microprocessor.
3. The method according to claim 1, comprising providing four separate switches each having as an input one of said four phase shifted waveforms and wherein said step of switching utilizing a control signal from said first microprocessor comprises selectively generating one of four separate switching signals, one associated with each of said switches, said switches having their outputs tied in common and coupled to the output of said modem.
4. The method according to claim 1, wherein said step of generating comprises generating square waves, and further including the step of smoothing said square waves to provide an output approximating a sine wave.
5. In a modem, for transmitting at a desired transmission frequency, a digital modulator comprising: a. a first microprocessor having a data input at least four control outputs and a clock output, said first microprocessor coupled to receive, at its data input, data to be transmitted by said modulator; b. a clock providing a clock frequency input to said first microprocessor, c. dividing means having as an input the clock output, said output providing a signal at a multiple of said clock frequency equal to or less than one, for dividing said clock output to a frequency which is a multiple of the desired transmission frequency; d. additional means for dividing and phase shifting said divided frequency to obtain four waveforms mutually shifted 90 degrees from each other and at the desired transmission frequency; e. means to smooth said four phase shifted waveforms to approximate sine waves;
h. analog switch means having data inputs and control inputs including at least four switches, said switches having their respective data inputs coupled to said phase shifted waveforms and their outputs coupled to the output of said modem, the control inputs of said switches coupled to said control outputs of said microprocessor; and i. said microprocessor programmed to receive data at its input, to convert said data into dibits and, in accordance with the dibits so formed to select a corresponding one of said four switches to couple to the output of said modem.
6. A digital modulator according to claim 5 and further including a second microprocessor receiving a serial data input and providing parallel encoded data to said first microprocessor.
7. An all digital modem comprising: a. means for generating four waveforms at a desired transmission frequency but mutually phase shifted by 90 degrees; b. a first microprocessor programmed to receive digital data at its input, to convert said data into dibits and to select as a modem output one of said four waveforms phase shifted 90 degrees with respect to each other; c. means for detecting zero crossings of an incoming modulated signal; d. a second microprocessor coupled to receive zero crossing information along with parity information and convert said information into dibits; and
e. a third microprocessor receiving dibit outputs from said second microprocessor as inputs and programmed to convert said dibits into a serial stream of data, at essentially constant frequency.
8. A modem according to claim 7 and further including a fourth microprocessor for receiving serial data to be transmitted, encoding said data and providing said data in parallel form to said first microprocessor.
9. A demodulator for a digital modem comprising: a. means for generating a pulse at each zero crossing of an incoming waveform to be demodulated; b. means for indicating whether each zero crossing occurs with the waveform going positive or negative; c. a first microprocessor having as inputs said pulses and the output of said means for indicating, said microprocessor programmed to determine, from said information, dibits being received on an incoming waveform and to provide said dibits as outputs, at a rate equal to about one half the data rate; and d. a second microprocessor receiving as inputs said dibit information from said first microprocessor programmed to convert said dibit information into a serial bit stream at the desired data rate.
10. Apparatus according to claim 9, wherein said means for generating pulses at each zero crossing comprise: a. means to convert the incoming signal into a square wave having rising and falling edges occurring at the times of zero crossings; b. first and second one-shot multivibrators responsive respectively to said rising and falling edges; and c. means for combining the outputs of said one-shot multivibrators to thereby provide a series of pulses, one occurring at each zero crossing.
11. Apparatus according to claim 10, wherein said means for indicating comprise an output from said means for converting into a square wave coupled as an input to said microprocessor, whereby by determining the parity of said waveform and maintaining its history, rising and falling edges can be differentiated.
12. Apparatus according to claim 11, wherein said microprocessors comprise PIC 1656 microprocessors.
13. Apparatus according to claim 11 wherein said microprocessors comprise PIC 1670 microprocessors.
14. In a digital modem, a method of demodulating an incoming analog waveform containing dibit information comprising: a. detecting the zero crossings of said waveform; b. keeping track of whether the zero crossings occur on a rising or falling waveform; c. measuring times between zero crossings;
d. after the total time between a first measured zero crossing and a current measured zero crossing exceeds the amount of time between expected data changes comparing said time or the corresponding number of degrees with predetermined limits to determine whether or not a phase shift has occurred and if so the amount of said phase shift; e. in accordance with the amount of phase shift determined, generating a dibit; f. storing a plurality of said dibits as they are determined; and g. at a fixed rate, converting said dibits to serial data and providing said data as an output data stream.
15. The method according to claim 14, comprising carrying out said steps of steps a. to e. in a first microprocessor and said steps f and g in a second microprocessor.
16. The method according to claim 15, and further including periodically resynchronizing said first microprocessor.
17. The method according to claim 16, wherein said step of providing said data as an output comprises: a. loading dibits, as they are generated into one end of a stack in said second microprocessor; b. generating internal interrupts at a fixed rate; c. on the first of alternate interrupts moving the dibit at the other end of said stack to an output register one bit of which is coupled to the output data line and on the other of the alternate interrupts shifting the dibit in said
output register, whereby in sequence the first and second bits of the dibit will thus be provided as serial outputs.
18. The method according to claim 17, and further including, prior to loading data at one end of said stack detecting the presence of a carrier and providing an output indicating that a carrier is present.
19. The method according to claim 18, and further including clearing the carrier detection if the stack becomes empty and then again checking for a carrier presence.
20. The method according to claim 19, wherein the step of generating said dibit includes the steps of: a. keeping track of current and old times between measurements, times of measurements and parity; b. upon initiation of a cycle transferring the time between the last two measurements to an N Δ P old register and transferring the last measurement time TN to a TP register and pushing the parity stack; c. reading a new time TN, parity and calculating from TN and TP a new value N Δ P; d. calculating a value equal to the former value of Δ + N Δ P; e. providing a no change reservoir register and increasing its value by an amount N
P with each reading; f. allowing said no change reservoir to overflow when the value therein exceeds 1/600 second plus an offset; g. upon overflow, calculating from the dibit value and from the direction of change, as
indicated by the parity bits, and providing said bit. as an output; h. subtracting 1/600th second from the no change reservoir; i. setting Δ equal to zero; and j. returning to step b.
21. The method according to claim 20, wherein said cycle further includes setting a parity bit P 4 equal to zero at the end of each cycle at the time when is set to zero and said step of calculating the dibit includes: a. comparing the present parity with said parity P4 at the time of calculation; b. if P4 and the present parity are not equal adjusting the value ofΔ by 180 degrees; c. reducing the value of Δ to a value less than 360 degrees by successively subtracting 360 degrees therefrom; and d. comparing the value of Δ when less than 360 degrees with predetermined limits, said value or said limits being offset by 45 degrees, to determine which dibit has been detected.
22. The method according to claim 21, wherein said step of resynchronizing comprises: a. each time data is read determining from the value of NΔ P whether a phase change has definitely occurred and if a phase change has occurred, setting Δ equal to the present value of NΔ P plus the old value of NΔ P and setting a parity bit P3 equal to the present parity; b. storing the present time as the past time and pushing the parity stack; c. reading data and calculating NΔ P using the present value TN and the value TP previously stored;
d. checking to see if a value of Δ + NΔ P is less than 500 degrees; e. continuing to read data and calculate N Δ P and checking the sura of this value and Δ until a value of 500 degrees is exceeded; f. then setting Δ equal to Δ + N Δ P; g. calculating the dibit usingΔ and P3 and providing the dibit as an output; h. setting Δ and P3 equal to zero and P 4 equal to PN; i. resetting the no change reservoir to N P plus a constant offset to insure overflow after 1/600th second; j. storing the present value TN as TP and pushing the parity stack; k. reading data and calculating N Δ P; and Δ
1. then carrying out steps d-i of claim 18.
23. The method according to claim 22, wherein said step of calculating said dibit comprises: a. checking to see if P3 is equal to PN and if not adjustingΔ by 180 degrees; b. checking to see ifΔ is greater than 360 degrees and successively subtracting therefrom
360 degrees until the value ofΔ is below 360 degrees; and c. comparing said remaining value with predetermined limits, one of said value and said limits offset by 45 degrees to determine which dibit is present.
24. The method of detecting the carrier in a digital modem comprising: a. checking for data being available; b. checking to see if the available
dibit data is a 11; c. incrementing a count if a 11 is detected and otherwise clearing any count previously accumulated; d. repeating steps a-c until a predetermined count is reached; and e. providing a carrier detect output when said count is reached.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US507,578 | 1983-06-24 | ||
US06/507,578 US4573166A (en) | 1983-06-24 | 1983-06-24 | Digital modem with plural microprocessors |
Publications (1)
Publication Number | Publication Date |
---|---|
WO1985000255A1 true WO1985000255A1 (en) | 1985-01-17 |
Family
ID=24019202
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US1984/000997 WO1985000255A1 (en) | 1983-06-24 | 1984-06-25 | Digital modem with plural microprocessors |
Country Status (4)
Country | Link |
---|---|
US (1) | US4573166A (en) |
EP (1) | EP0148906A1 (en) |
AU (1) | AU3101084A (en) |
WO (1) | WO1985000255A1 (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0194791A2 (en) * | 1985-03-04 | 1986-09-17 | Digital Equipment Corporation | Digitally implemented modulators |
US4808937A (en) * | 1986-07-15 | 1989-02-28 | Hayes Microcomputer Products, Inc. | Phase-locked loop for a modem |
US4849703A (en) * | 1986-07-15 | 1989-07-18 | Hayes Microcomputer Products, Inc. | Method and apparatus for generating a data sampling clock locked to a baud clock contained in a data signal |
US4868864A (en) * | 1986-07-15 | 1989-09-19 | Hayes Microcomputer Products, Inc. | Autocorrelating 2400 bps handshake sequence detector |
US4910474A (en) * | 1986-07-15 | 1990-03-20 | Hayes Microcomputer Products, Inc. | Method and apparatus for generating phase and amplitude modulated signals |
US5040194A (en) * | 1986-07-15 | 1991-08-13 | Hayes Microcomputer Products, Inc. | Method and apparatus for providing for automatic gain control of incoming signals in a modem |
US5480792A (en) * | 1990-09-14 | 1996-01-02 | Biosite Diagnostics, Inc. | Antibodies to complexes of ligand receptors and ligands and their utility in ligand-receptor assays |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NL8402318A (en) * | 1984-07-23 | 1986-02-17 | Philips Nv | DEVICE FOR GENERATING AN ANGLE MODULATED CARRIER SIGNAL OF CONSTANT AMPLITUDE RESPONSE TO DATA SIGNALS. |
DE3644066C2 (en) * | 1986-08-07 | 2000-03-02 | Interdigital Tech Corp | Subscriber unit for a wireless digital telephone system |
US4825448A (en) * | 1986-08-07 | 1989-04-25 | International Mobile Machines Corporation | Subscriber unit for wireless digital telephone system |
US4773082A (en) * | 1986-11-17 | 1988-09-20 | Amp Incorporated | RF modem with improved binary transversal filter |
US4926444A (en) * | 1988-04-29 | 1990-05-15 | Scientific-Atlanta, Inc. | Data transmission method and apparatus by period shift keying (TSK) |
US5299230A (en) * | 1990-12-21 | 1994-03-29 | The Whitaker Corporation | Digital data transmission system with predistortion of transmitted pulses |
US5148383A (en) * | 1990-12-21 | 1992-09-15 | Amp Incorporated | Digital transversal filter |
US5253272A (en) * | 1991-03-01 | 1993-10-12 | Amp Incorporated | Digital data transmission system with adaptive predistortion of transmitted pulses |
US5238677A (en) * | 1992-06-15 | 1993-08-24 | Mobil Oil Corp. | Process for the dealumination of mordenite |
JP2006060451A (en) * | 2004-08-19 | 2006-03-02 | Matsushita Electric Ind Co Ltd | Power amplifier and delay measuring method for power combining system |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3131363A (en) * | 1960-05-18 | 1964-04-28 | Collins Radio Co | Instantaneous phase-pulse modulator |
US3553368A (en) * | 1965-02-04 | 1971-01-05 | Siemens Ag | Phase shift keyed transmission of dibits encoded to eliminate receiver phase uncertainty |
US3619503A (en) * | 1969-11-18 | 1971-11-09 | Int Communications Corp | Phase and amplitude modulated modem |
US3624560A (en) * | 1969-12-16 | 1971-11-30 | Gen Electric | Modulation technique for a limited energy speech transmission system employing phase reversal of alternate pulses |
US3816657A (en) * | 1972-10-12 | 1974-06-11 | Nasa | Differential phase-shift-keyed communication system |
US3818135A (en) * | 1971-09-24 | 1974-06-18 | A Tannhauser | Circuitry for transmission of phase difference modulated data signals |
US3987422A (en) * | 1973-03-28 | 1976-10-19 | Kokusai Denshin Denwa Kabushiki Kaisha | System for detecting signal quality of a phase-modulated wave |
US4292593A (en) * | 1979-03-26 | 1981-09-29 | U.S. Philips Corporation | Method of demodulating a quadphase coded data signal and receiver for carrying out the method |
US4362997A (en) * | 1980-12-18 | 1982-12-07 | Ncr Corporation | Quadriphase differential demodulator |
US4377791A (en) * | 1979-10-31 | 1983-03-22 | Roland Bailly | Phase displacement modulator having four quadrant phases |
-
1983
- 1983-06-24 US US06/507,578 patent/US4573166A/en not_active Expired - Fee Related
-
1984
- 1984-06-25 EP EP84902668A patent/EP0148906A1/en not_active Withdrawn
- 1984-06-25 WO PCT/US1984/000997 patent/WO1985000255A1/en unknown
- 1984-06-25 AU AU31010/84A patent/AU3101084A/en not_active Abandoned
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3131363A (en) * | 1960-05-18 | 1964-04-28 | Collins Radio Co | Instantaneous phase-pulse modulator |
US3553368A (en) * | 1965-02-04 | 1971-01-05 | Siemens Ag | Phase shift keyed transmission of dibits encoded to eliminate receiver phase uncertainty |
US3619503A (en) * | 1969-11-18 | 1971-11-09 | Int Communications Corp | Phase and amplitude modulated modem |
US3624560A (en) * | 1969-12-16 | 1971-11-30 | Gen Electric | Modulation technique for a limited energy speech transmission system employing phase reversal of alternate pulses |
US3818135A (en) * | 1971-09-24 | 1974-06-18 | A Tannhauser | Circuitry for transmission of phase difference modulated data signals |
US3816657A (en) * | 1972-10-12 | 1974-06-11 | Nasa | Differential phase-shift-keyed communication system |
US3987422A (en) * | 1973-03-28 | 1976-10-19 | Kokusai Denshin Denwa Kabushiki Kaisha | System for detecting signal quality of a phase-modulated wave |
US4292593A (en) * | 1979-03-26 | 1981-09-29 | U.S. Philips Corporation | Method of demodulating a quadphase coded data signal and receiver for carrying out the method |
US4377791A (en) * | 1979-10-31 | 1983-03-22 | Roland Bailly | Phase displacement modulator having four quadrant phases |
US4362997A (en) * | 1980-12-18 | 1982-12-07 | Ncr Corporation | Quadriphase differential demodulator |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0194791A2 (en) * | 1985-03-04 | 1986-09-17 | Digital Equipment Corporation | Digitally implemented modulators |
EP0194791A3 (en) * | 1985-03-04 | 1987-12-02 | Digital Equipment Corporation | Digitally implemented modulators |
US4808937A (en) * | 1986-07-15 | 1989-02-28 | Hayes Microcomputer Products, Inc. | Phase-locked loop for a modem |
US4849703A (en) * | 1986-07-15 | 1989-07-18 | Hayes Microcomputer Products, Inc. | Method and apparatus for generating a data sampling clock locked to a baud clock contained in a data signal |
US4868864A (en) * | 1986-07-15 | 1989-09-19 | Hayes Microcomputer Products, Inc. | Autocorrelating 2400 bps handshake sequence detector |
US4910474A (en) * | 1986-07-15 | 1990-03-20 | Hayes Microcomputer Products, Inc. | Method and apparatus for generating phase and amplitude modulated signals |
US5040194A (en) * | 1986-07-15 | 1991-08-13 | Hayes Microcomputer Products, Inc. | Method and apparatus for providing for automatic gain control of incoming signals in a modem |
US5480792A (en) * | 1990-09-14 | 1996-01-02 | Biosite Diagnostics, Inc. | Antibodies to complexes of ligand receptors and ligands and their utility in ligand-receptor assays |
US5985579A (en) * | 1990-09-14 | 1999-11-16 | Biosite Diagnostics, Inc. | Antibodies to complexes of ligand receptors and ligands and their utility in ligand-receptor assays |
Also Published As
Publication number | Publication date |
---|---|
EP0148906A1 (en) | 1985-07-24 |
AU3101084A (en) | 1985-01-25 |
US4573166A (en) | 1986-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4573166A (en) | Digital modem with plural microprocessors | |
CA1278061C (en) | Multipurpose digital integrated circuit for communication and control network | |
CA1244947A (en) | Control system | |
AU583285B2 (en) | Digital message format for two-way communication and control network | |
KR880700582A (en) | Ensemble Modem Structure for Incomplete Transmission Media | |
GB1505139A (en) | Ultrafast adaptive digital modem | |
GB2243269A (en) | Decoding binary-coded transmissions | |
NO811282L (en) | DIGITAL DATA-OVERFOERINGSSYSTEM. | |
CA1286410C (en) | Remote monitoring system receiver with dual baud rate selector | |
US4697265A (en) | Error monitor circuit | |
US5815534A (en) | Detector of carrier loss in a fax modem | |
US4794621A (en) | Apparatus for transmitting information by angle modulation | |
EP0119008A2 (en) | Improved coherent phase shift keyed demodulator for power line communication systems | |
JP2927220B2 (en) | Detector for the presence of a sequence of FSK modulated signals coming from a modem | |
US5175507A (en) | Method of and device for demodulating biphase modulated signal | |
EP0021544A1 (en) | System for the remote testing of a modem for a speed of transmission different from the speed of reception | |
US3943285A (en) | Multiplexed data modem | |
GB2148076A (en) | Microprocessor fsk data communications module | |
CA1047937A (en) | Arrangement for testing telecommunication repeaters | |
US5105440A (en) | Method and apparatus for adaptive equalization of pulse signals | |
US4780886A (en) | Device for detecting a data signal energy drop | |
US3801912A (en) | Frequency modulation communication system and digital carrier generator and demodulator for use therein | |
CA1134047A (en) | Device for measuring the quality of a digital radio link | |
CA1274293A (en) | Multipurpose digital ic for communication and control network | |
US4586023A (en) | Means and method for data transmission on wired channels |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Designated state(s): AU JP |
|
AL | Designated countries for regional patents |
Designated state(s): AT BE CH DE FR GB LU NL SE |