DSPRelated.com
Forums

PM demodulation

Started by Sam November 2, 2004
On Fri, 05 Nov 2004 17:55:04 +0100, Sam
<totalsam-n.o-s.p.a.m@hotmail.com> wrote:

>> Hi, >> is the signal you want to demodulate a >> real-only signal, or is it a complex >> (quadrature) signal with I & Q samples? >> >> [-Rick-] >> > >Hi ! > >It is a real-only signal... > >Sam
Hi, OK then. If your real-only time-domain signal is x(n), you must compute the Hilbert transform of x(n). If we call that Hilbert transform signal y(n), then you can create a complex (quadrature) signal defined as: c(n) = x(n) +j*y(n). Many people (including the MATLAB folk) like to call the c(n) sequence an "analytic signal". MATLAB will generate the c(n) sequence for you when you use their c = hilbert(x); command. Once you have your c(n) sequence (the variable "c" in the above command), next you compute the phase angle of your c(n) sequence using MATLAB's "angle()" command. That phase sequence is the phase demodulated signal you are seeking. (The phase sequence will be radians, not degrees.) So Sam, generate an x(n) test signal (real-only) that's phase modulated in some way, compute the c(n) sequence, and then compute the phase angle sequence of c(n). Then see if that phase angle sequence is similar to the phase modulation that you enduced in the original x(n) sequence. [It should be.] Good Luck, [-Rick-]
Randy Yates wrote:
> Jerry Avins <jya@ieee.org> writes: > > >>Randy Yates wrote: >> >> >>>Jerry Avins <jya@ieee.org> writes: >>> >>> >>>>[...] >>>>On the other hand, if you use quadrature modulation and orthogonally >>>>polarized signals, You can transmit 8 KHz worth of signal in 4 KHz >>>>of bandwidth. :-) >>> >>> >>>I'd say that we always have 8 kHz worth of bandwidth available - we >>>just don't always use it. >> >>True, but it's hard to take advantage of orthogonal polarization om a >>wire. That was my point. > > > You mean like vertical and horizontal?
Or 45 degrees left and right, like record grooves. Orientation doesn't matter, just orthogonality.
> You know, I think I'm still confused on this point after 25 freaking > years of engineering! For example, why is it that you can apparently > get a complex signal down a wire FOR THE SAME BANDWIDTH as a real > signal by using QPSK (looked at as two orthogonal bitstreams encoded > on a sin and cos carrier)?
I had to sleep on this for a good answer. Math wouldn't have done; there'd be no confusion if it would have. Like most magic tricks, it's simple when you look behind the curtain. It's just that the setup is designed to confuse. Quadrature demodulation doesn't work for baseband signals; there's nothing to demodulate. As far as I know, it only works with double- sideband signals. It's useful when there's a way to phase lock to the original carrier. In color TV, the color burst locks up the demodulation oscillator, which needs to be only stable enough to hold for a line. (The "tint" control adjusts the phase it locks to.) For newbies reading over Randy's shoulder: AM, whether or not the carrier is suppressed, requires a channel 2b wide to accommodate a signal with a bandwidth of b. Quadrature modulation is one way to use the full capacity of the channel. Two signals are sent on the same carrier. One is recovered by multiplying the received signal with a replica of the unmodulated carrier, and the other, by multiplying with a replica shifted 90 degrees. This works only with double-sideband signals. (I proved this as a class exercise with a horrible amount if trig. Complex exponentials would do it much more simply.) If the phase of the demodulating carrier doesn't exactly match the original, there will be crosstalk between the channels. Think about a TV's tint control. Another way to recover unused channel capacity is removing one of the sidebands. In theory, the channel bandwidth can be halved, and twice as many would occupy the same spectrum slice. In practice, the guard bands can't be halved, so there aren't twice as many channels that way. Using the original channels with different information on upper and lower sidebands is more efficient, but crosstalk needs to be avoided. Jerry -- Engineering is the art of making what you want from things you can get. &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;

Jerry Avins wrote:

> The transducers were selsyns.
Selsyns were still in use as late as 1985 when I was doing machine tool controller design. Aren't they still? Bob -- "Things should be described as simply as possible, but no simpler." A. Einstein
Rick Lyons wrote:

> On Fri, 05 Nov 2004 17:55:04 +0100, Sam > <totalsam-n.o-s.p.a.m@hotmail.com> wrote: > > >>>Hi, >>> is the signal you want to demodulate a >>>real-only signal, or is it a complex >>>(quadrature) signal with I & Q samples? >>> >>>[-Rick-] >>> >> >>Hi ! >> >>It is a real-only signal... >> >>Sam > > > Hi, > > OK then. If your real-only time-domain > signal is x(n), you must compute the Hilbert > transform of x(n). If we call that > Hilbert transform signal y(n), then you > can create a complex (quadrature) signal > defined as: > > c(n) = x(n) +j*y(n). > > Many people (including the MATLAB folk) like to > call the c(n) sequence an "analytic signal". > > MATLAB will generate the c(n) sequence for you > when you use their > > c = hilbert(x); > > command. Once you have your c(n) sequence > (the variable "c" in the above command), > next you compute the phase angle of your c(n) > sequence using MATLAB's "angle()" command. > > That phase sequence is the phase demodulated signal > you are seeking. (The phase sequence will be > radians, not degrees.) > > So Sam, generate an x(n) test signal (real-only) that's > phase modulated in some way, compute the c(n) sequence, > and then compute the phase angle sequence of c(n). > Then see if that phase angle sequence is similar > to the phase modulation that you enduced in the > original x(n) sequence. [It should be.] > > Good Luck, > [-Rick-] > > >
I doubt this would be the most computationally efficient way, however. See my post about resonant filters that'll be going up in about 10 minutes. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com
Bob Cain wrote:

> > > Jerry Avins wrote: > >> The transducers were selsyns. > > > Selsyns were still in use as late as 1985 when I was doing machine tool > controller design. Aren't they still? > > > Bob
Maybe, but they are bidirectional, and so can so apply a torque on the systems they are intended to measure. It's actually cheaper to make a high-resolution, two-phase optical encoder that has better resolution and accuracy than a bulkier, higher-inertia Selsyn. One advantage that Selsyns have is that they work simply by being connected together and powered. Another is that they are (were?) cheaply available as military surplus, rated 400 Hz 120 V. That makes them cheap, but being current operated, they are just right at 18 to 20 V. A $2.50 pair makes a dandy weather-vane indicator*, and the low voltage makes any wiring legal. Jerry ________________________________________ * When there's not much wind, you can drive the neighbor's kids crazy by twirling the indicator pointer. -- Engineering is the art of making what you want from things you can get. &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;
Ok Rick, thank you for your complete answer !

Well, I believe that, in this case, it is quite the same to delay a few 
samples by a quarter of a period of the center frequency, isn't it ?

This would be simpler to implement !

Sam
Sam wrote:

> Hello all ! > > I would like to know if there is a quite simple (but efficient) way to > demodulate a PM signal who is digitalized. > > I have seen some for FM demod, especially with CORDIC. Does something > exist for PM as well ? > > Many thanks ! > > Sam
Using FM demodulation and taking the derivative of the result has been mentioned, but I haven't seen a post about using resonant filters to do the FM demodulation. Since you've mentioned that you're not doing this with complex signals, you can approach this the way it's commonly done in analog: limit the signal, then it through a resonant high- or low-pass filter tuned to the carrier frequency, and mix the filter output with the signal. This will only work if you're sampling above the carrier frequency. Limiter Lowpass .---------. .-----------------. | .--- | | | | | | | N(z) | -------->| | |--o-->| --------------- |----->X-----> | | | | | z^2 + a z + b | ^ | ---' | | | | | '---------' | '-----------------' | | | '----------------------------' created by Andy&#4294967295;s ASCII-Circuit v1.24.140803 Beta www.tech-chat.de The incoming signal (which you have to bandlimit) is squared up, then it's run through a highly resonant filter -- you want a filter that has a peak that's 2-3 times as wide as your expected frequency swing, and has a 90 degrees phase shift at the carrier frequency. The output of the filter is simply multiplied by the limited signal (the 'X' in the diagram), and the output of _that_ is low-pass filtered (filter not shown). Of course you'll have to make sure that your signal is bandlimited before you run it through the limiter, and that you lowpass the result. You'll also have to pay careful attention to the lowpass filter, to make sure that it doesn't overflow or have numeric resolution issues. An alternative to that is the PLL already mentioned. Assuming that you have a phase detector that's linear over the expected phase swing of the signal you can just phase lock and take your PM output directly from the phase detector. Your signal will determine which approach is best. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com
Jerry Avins wrote:

> It's actually cheaper to make a > high-resolution, two-phase optical encoder that has better resolution > and accuracy than a bulkier, higher-inertia Selsyn.
I've found that for some very high accuracy measurements, resolvers (a close cousin of the Selsyn), are superior to optical encoders. This has happened when we need a "pancake" sensor that will go in the circumference of a fairly large hole, but I'll have resolvers on the list from now on. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com

Tim Wescott wrote:

> Jerry Avins wrote: > >> It's actually cheaper to make a >> high-resolution, two-phase optical encoder that has better resolution >> and accuracy than a bulkier, higher-inertia Selsyn. > > > I've found that for some very high accuracy measurements, resolvers (a > close cousin of the Selsyn), are superior to optical encoders. This has > happened when we need a "pancake" sensor that will go in the > circumference of a fairly large hole, but I'll have resolvers on the > list from now on.
Unless optical has come a long way, it couldn't compare to what you could get from a resolver back when I was doing his stuff and the Selsyn having so many poles was a super resolver used for the very highest resolution. That was necessasary for the rotary axes because there was no lead screw multiplying the resolver resolution as there is on a linear axis. I can't believe I still remember this stuff! No wonder new ideas don't come very often any more, there is way too much old clutter in the way of their getting out. :-)> Bob -- "Things should be described as simply as possible, but no simpler." A. Einstein
Bob Cain wrote:

> > > Tim Wescott wrote: > >> Jerry Avins wrote: >> >>> It's actually cheaper to make a >>> high-resolution, two-phase optical encoder that has better resolution >>> and accuracy than a bulkier, higher-inertia Selsyn. >> >> >> >> I've found that for some very high accuracy measurements, resolvers (a >> close cousin of the Selsyn), are superior to optical encoders. This >> has happened when we need a "pancake" sensor that will go in the >> circumference of a fairly large hole, but I'll have resolvers on the >> list from now on. > > > Unless optical has come a long way, it couldn't compare to what you > could get from a resolver back when I was doing his stuff and the Selsyn > having so many poles was a super resolver used for the very highest > resolution. That was necessasary for the rotary axes because there was > no lead screw multiplying the resolver resolution as there is on a > linear axis. > > I can't believe I still remember this stuff! No wonder new ideas don't > come very often any more, there is way too much old clutter in the way > of their getting out. :-)>
BEI has encoders -- not cheap -- of 18,000 lines that can quantize a turn into 72,000 parts. Centration errors arise from the disk's being slightly off center, so that there is "wow" when the disk rotates at constant speed. It can be resolved into a power series in which (as usual), the first term predominates when the error is small. A clever arrangement can double the effective number of lines, allow the use of only one track, and eliminate odd terms from the power series (including the first). An imaging system that consists od right-angle prisms (one of them with a roof) and a focusing lens projects an image of the track onto a part of the disk diametrically opposite. Rotating one of the prisms very slightly has the moire a quarter line out of phase from outside to inside. The image and wheel moving in opposite directions doubles the frequency, and if eccentricity makes the rim move faster, the image projected onto it moves more slowly, stabilizing the effective line spacing. The accuracy of an encoder is limited to how well the lines van be placed by a ruling engine guided by a laser interferometer. Selsyns, resolvers, and control transformers are limited by how well silicon steel can be fabricated. Errors are encountered twice: once in the sender, and once in the receiver. (The resolver output can go to ADCs, but the encoder's output just needs to be counted.) Jerry -- Engineering is the art of making what you want from things you can get. &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;