rrTV-PHOTO   New HD TV
HOME   rrTV-PHOTO   GALLERIES   MY GALLERY   HELP-FAQ
myHOME PM pmRR MEMBERS 569 ONLINE 19 EVENTS SEARCH REGISTER  START HERE
 
12 pages [ <<    <    ( 1 )     2      3     NEXT    >> ]19271 viewsPOST REPLY
Futaba-RC . A Main Hobbies . Boca Bearings

.
.
Radio - Servo - Gyro - Gov - Batt > Homebrew PCM Receiver: QPSK/RF Design
 
 
MarkFSenior Heliman - Location: Palo Alto, CA -
Hi, Gang!

As documented in the thread Starting a Home-Brew PCM Receiver Project, one of the goals of this home-brewed receiver project is to speed up the data communications rate between the transmitter and the receiver, making it possible for you to have more precise control over your helicopter. This thread is an off-shoot from the original thread that will concentrate on the specific issues of modulation and RF design - for the majority of folks that aren't into these issues, you'll probably want to stop reading right about here! Seriously, I know that this can get a bit esoteric, so I'm creating another thread so we don't waste folks' time on the gory details.

[UPDATE: Note that this receiver was initially targeted to use "EFQPSK" modulation, but it has since been retooled to use standard QPSK, due to the nature of the FCC's spectral mask for radio control channels. In this application, QPSK is more bandwidth-efficient than EFQPSK, with the capability of delivering 12K bps in an R/C channel's -25dB bandwidth of 8 KHz. A block diagram of the new QPSK receiver's processing architecture may be found in the second page of this thread.]

After initially looking at a few different modulation formats, I'm now concentrating solely on "Enhanced Feher-Patented Quadrature-Phase-Shift Keying", or EFQPSK, as invented in a paper by M.K. Simon and T.-Y. Yan. This is a bandwidth-efficient modulation technique that lets us stuff more bits into our existing R/C channels, with the same or better range, and fewer adjacent-channel interference problems.

When I first started generating EFQPSK waveforms, I wasn't sure exactly what the resulting bandwidth of the signal would be: there were so many unknown issues that I just wasn't sure what we'd wind up with. After playing around with a variety of different signal processing utilities, I finally modified my EFQPSK modulator to write Windows .WAV files directly, thereby eliminating buggy audio conversion packages, etc. As a result, I'm starting to get a pretty good handle on what EFQPSK actually does. Further, these results have been verified by the high accuracy (and highly recommended!) Real-Time Analyzer Lite audio spectrum analyzer. By letting RAL perform spectrum analysis in real-time while playing the .WAV files that the EFQPSK modulator created, we've finally reached the stage where theoretical predictions match real-world performance.

The bottom line is that EFQPSK does indeed need more bandwidth than I'd originally thought. Rather than verbally talking about spectral masks, etc, again, here's a picture that shows exactly where we are:



This image shows the bandwidth of a 10K bps EFQPSK signal, as plotted against the FCC's standard emissions limits for our 10 KHz 72 MHz R/C channels. As you'll note, the signal is just a bit too wide, and needs to be narrowed up. Using a pair of packages called ScopeFIR (that does filter design), and ScopeDSP (that performs signal analysis), I've experimented with different filter designs to see what happens as we try to filter the signal to match the spec. As it turns out, the issue isn't any of the frequencies below about -30 dB - these are easily removed, with virtually no change to the resulting waveforms. However, the region of the signal that exceeds the -25 dB threshhold is far more sensitive to filtering - when I've filtered the signal to meet the FCC limit, the resulting I & Q signals were virtually unrecognizable, and RF performance would have been quite poor. I've ordered some very high-performance filters from Linear Technology, just to see if they can overcome this limitation, but physics may well prevent us from building a 10K bps solution with satisfactory RF performance.

Just in case we can't filter the 10K bps waveform successfully, here's what an 8K bps EFQPSK signal looks like, as compared to the FCC limit:



As you can see, this signal would be vastly easier to filter, and would nearly pass FCC certification with no filter at all, other than a very simple passive filter. So, at worst case, this will be the backup plan. I won't know whether this backup plan will be necessary until we do the hardware experiments with the Linear Tech filters (they're phase-compensated, DC-accurate, 10-pole elliptic filters, which is a lot of gobbledie-gook for a "magic" filter that will work when most filters won't), but it's quite possible that we'll have to stick with "just" 8K bps. I'll let you know how things go!

Have Fun!
MarkF
11-18-2003 Over year old.
HOMEPAGE  
 
 
MarkFSenior Heliman - Location: Palo Alto, CA -
Hi, Gang!

Just to let you know the problem with heavily filtering the EFQPSK waveform, here's the best results I've been able to achieve so far at 10K bps:



Not bad, eh? Unfortunately, here's what happens to the polar chart. In place of that beautiful circular chart we had before, it now looks like this:



That signal variation, once applied to a standard non-linear transmitter amplifier, will cause the spectrum to get wider again, possibly undoing the efforts to narrow the signal. In addition, these distorted I & Q waveforms are harder to recognize, which will lead to reduced RF performance.

As I stated earlier, I won't easily give up on the goal of delivering 10K bps. On the other hand, if we run into a brick wall, I'm certainly willing to bow to physics!

Cheers!
MarkF
11-18-2003 Over year old.
HOMEPAGE  
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

Hi, Folks!

I just had an interesting thought. For those who have actually been following all this, I'd previously mentioned that a "hard limiter" could further improve RF performance. If we were to apply a complex-valued/dual-input hard limiter to the above polar chart, we'd be back to a nearly-perfect circle again! That would prevent the first problem of "spectral regrowth" making the signal wider again, but it wouldn't solve the problem of the I & Q pulse shapes being quite different. This may be a good case for simulation, where it would be possible to estimate how much the RF performance would be impacted by the distorted pulse shapes... This is at least worth thinking about a bit - we'll see!

Have Fun!
MarkF
11-18-2003 Over year old.
HOMEPAGE  
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

Hi, Gang!

Well, it was a good day! I've managed to morph the file-based EFQPSK code into a continuous EFQPSK (audio) transmitter by linking the EFQPSK code to the BASS audio driver system. The result is an EFQPSK modulator which generates the "reference" data string (from the paper) to the output, and then it generates continuous random numbers in EFQPSK until you hit a key.

IMPORTANT NOTE: Before you run this code, PLEASE open the audio volume controls on your machine, and set the WAVE file device volume to very close to zero - otherwise, you'll see so much distortion that the results won't make sense.

You can download EFQPSK from www.talix.com/RX/efqpsk.zip, which contains the source plus an .EXE file. You'll also need to download BASS from the location above, and move the BASS.DLL file to \WINDOWS\SYSTEM32. If you want to rebuild EFQPSK, you'll also want to copy BASS.H to your EFQPSK directory - then you can rebuild EFQPSK in Microsoft Visual C++. For those who just want to see the sources, check them out at efqpsk.c. I strongly suggest that if you run this code, that you also download Realtime Analyzer Lite beforehand, so that's it's possible to view the actual modulated signal as it's generated in real-time.

Enjoy! This code is released to the public domain, without restrictions...

Cheers!
MarkF
11-19-2003 Over year old.
HOMEPAGE  
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

I'm Back...

Hi, Folks!

Please accept my apologies for disappearing for so long. To make a long story short, the situation at work required that I personally develop all of the front-end RF software for a 160 channel 256K bps QPSK receiver, and it completely absorbed my life for seven months (and I do mean completely, I haven't worked on any hobby projects the entire time). The good news is that it's finally done, is performing very well, and has taught me a quite a bit about RF.

To those who may have tried to contact me in the interim, I'll further apologize, since my old email address became so horribly spam-clogged that I had to stop using it (I've just updated my profile with my new email address).

Anyway, now that I finally have a bit of time, I'm once again starting to look at the EFQPSK receiver project. What I've reconfirmed is that, indeed, it's a challenge pumping more than about 9,000 bits/second into one of our channels using EFQPSK. As mentioned above, the filtering process pretty effectively trashes the waveform fidelity.

However, there's always an alternative. While I initially had ignored standard QPSK due to its power inefficiency, I'm beginning to seriously reconsider it. While the downside of using QPSK would be somewhat shorter transmitter battery life, it is definitely possible to cram 12K bps into a single R/C channel using QPSK with an alpha of 0.35 [alpha is just a number from 0 to 1 that defines the "excess bandwidth" that a signal will require beyond the symbol rate].

I still don't have any idea what kind of timeframe this project will take, but at least I'm finally able to start playing around with it once in a while! Thanks very much to those of you who've taken the time to email me and have encouraged me to keep going on this project!

Have Fun!
MarkF
06-24-2004 Over year old.
HOMEPAGE  
 
 
MarkFSenior Heliman - Location: Palo Alto, CA -
Howdy!

Just to show you that 12K bps really is an achievable target, here's the spectrum analyzer output of a QPSK transmit simulator running at 12K bps.



It really does fit, and in fact, easily surpasses the FCC's spectral limits. Now we're starting to talk about real speed!

Cheers!
MarkF
06-24-2004 Over year old.
HOMEPAGE  
 
 
Inspector Fuzz
Veteran
Location: Austin, TX. Where fat chicks succeed.

Nice work..

Mark,
Very interesting stuff.. I get the feeling that some part of the structure of your eyeglasses must be held together by tape.. Just kidding..
JEFF
06-24-2004 Over year old.
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

Hey, Jeff!

After seven non-stop months of 16-18 hour days on my work project, I feel like all of me's being held together by a bit 'o tape, some spit, and some bailing wire. It is really nice to finally get the chance to start playing again! Ummm, let's see... finish one QPSK receiver: hard work; start another QPSK receiver: fun?!? Perhaps you're right, after all! Seriously, though, thank you!

Have Fun!
MarkF
06-24-2004 Over year old.
HOMEPAGE  
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

Howdy, Folks!

I've been taking a closer look at what these bit rates will really mean, and thought you might be interested in a comparison to existing equipment. Since it's so common, I'll make a few comparisons to rigs that use Futaba's PCM1024 protocol.

With the 16-channel, 94-bit frame transmission format I've defined, the 12,000 Hz bit-rate will deliver an actual servo position update rate of 127.66 Hz; twice as fast as any other radio I'm aware of. Further, this means fast control responses. As W.Pasman notes in his very good analysis of Futaba's R/C latency, their maximum latency between command changes and servo inputs is between 32.1ms (for PPM) and 70.1 mS (for PCM). With the setup defined here, worst-case latencies for PCM should be less than ~20 mS: more than a 35% improvement over Futaba's PPM system. and more than a 60% improvement over Futaba's PCM system (i.e. less than 1/3 the worst-case latency of Futaba's PCM).

What makes this really interesting is if we imagine that we "only" deliver eight channels (four analog plus four switch channels) instead of 16 (eight analog + eight switch channels). In that case, the frame format becomes 64 bits long (the CRC could and should be shortened in this case, but let's ignore that for now), for a servo position update rate of 187.5 Hz. In this case, the worst-case latency would be about 12.7 mS, a 60% improvement over Futaba's PPM, and more than an 80% improvement over Futaba's PCM (i.e. about 1/5.5X that of Futaba's PCM)!

While all this esoteric RF stuff may seem a bit strange, there really is an important real-world goal to this project: making your controls work faster and better! Now, if we could only find high-torque servos that'll accept these frame rates...

Cheers!
MarkF
06-25-2004 Over year old.
HOMEPAGE  
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

Hello!

Well, we're making a bit of progress. While it's currently just a quick hack, I now have a dual-mode transmitter simulator running on my PC that supports both FSK and QPSK transmissions at "baseband" [indicating that no carrier is yet applied to the FSK/QPSK waveforms]. For QPSK, it transmits at 12,000 bps, and for FSK, it transmits at 6,000 bps.

What this transmit simulator does is to send audio instead of R.F.. This is a great way to do R.F. development, since you can use simple tools like RAL to generate spectrum diagrams (the "FFT Analyzer" plot shown above was generated by RAL observing this transmit simulator in real time), and oscilloscope plots (vital for getting filter designs and modulation code correct). In addition, RAL can also inject noise and a variety of kinds of interference, making it possible to perform Signal/Noise Ratio testing, check how the code handles real-world interference, etc.

I recommend this audio-based approach highly: you can be far more productive than you can with traditional "blind" R.F. code development (meaning that little normally gets tested until the code is plugged into the real R.F. hardware, and then debugging is a real P.I.T.A.). And to think that the tool that makes it all possible is less than $25! As far as projects like this go, RAL is by far the best investment you can make! Sweet!

Looking forward, I've got a few important decisions to make. As background info, the process of moving a signal from baseband to R.F. doesn't normally occur in a single step. Instead, at least one Intermediate Frequency is normally chosen - this refers to using carrier-based modulation, but at a lower frequency than the final R.F. output. Then, hardware "mixes" the Intermediate Frequency carrier with higher oscillator frequencies to yield the final output frequency. For this system, I'll need to decide what the I.F. frequencies should be for FSK and QPSK. Complicating this decision is the desire to make the system dual-mode, so that the exact same hardware can apply to either FSK or QPSK transmissions. Further complicating things is that higher I.F.s make life easier for hardware (making it simpler to filter out "by-products" of the mixing process), but much harder for software (cranking through the data at high speed takes lots of horsepower).

There's no easy way around this decision, so I'll have to think about this for a while, and will let you know what I come up with. In the mean time, it'll actually be possible to begin testing the "Omega 16" receiver code with this transmit simulator running in FSK mode relatively soon. The only hardware required beyond the existing Philips evaluation board for FSK testing is a simple "data slicer" that would turn the transmitted audio signal from the PC into a digital signal for the ARM chip at the core of the receiver [essentially just a very high-gain amplifier, a "data slicer" outputs the sign of the input signal; i.e. High or Low].

End-to-end QPSK testing is much further in the future, since we'll not only need completely new hardware for the receiver that incorporates on-board A/D converters with DMA, but we'll also need a largely new codebase for the receiver. While the difference between transmitting FSK and QPSK isn't all that significant, the process of receiving FSK and QPSK is dramatically different (at least it is if we use the traditional R/C approach of receiving FSK signals in digital form rather than analog form, which the Omega 16 code currently does).

So, it's time to do some thinking, and with that, I'd love your feedback. My assumption is that we'll want the transmitter to be pure dual mode. That is, it should be able to switch between FSK and QPSK transmissions with no hardware changes. For the receiver, I'm assuming that separate receivers would be required for FSK and QPSK, just as current R/C systems use different receivers for PCM and PPM. However, the receiver decision isn't an absolute - it's certainly possible to create a pure dual-mode receiver, but I'm not sure it's worth it. The reason is simple: if you have the hardware to run QPSK, why not take advantage of the higher data rate and lower latency that QPSK makes possible? In that context, having a separate FSK receiver makes sense, since it's possible to make an FSK receiver for less money than a QPSK receiver.

On the other hand, should I spend time developing FSK at all? While I'll still proceed with it in some form as a convenient intermediate testing platform, is there enough benefit to keeping it around to make the extra development effort for two forms of modulation, and dual-mode support, worthwhile? I'd very much appreciate your thoughts and comments about this, or about any other aspects of this project. What would you suggest?

Cheers!
MarkF
06-26-2004 Over year old.
HOMEPAGE  
 
 
TMoore
rrProfessor
Location: Cookeville, TN

Mark,

Something that has been pointed out in the past is whether or not the servo is going to benefit from a faster data rate (QPSK) with it's higher frame rate. What is the impact with your latest RX model vis a vis our current state of the art servos?

I have a feeling that Futaba is getting ready to launch a similar system that is probably at twice the present PCM resolution with servos that work beyond the 300 Hz digital rate we presently have available.

It would essentially obsolete the technology that came before it.

Terry
06-26-2004 Over year old.
HOMEPAGE  
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

Hi, Terry!

I'm very intrigued about your comment on a potential new Futaba "super system"! The primary reason I embarked upon this project was that the R/C manufacturers have been so darned conservative. With the exception of computer transmitters, the pace of change has been glacially slow, with RF performance improving only gradually over time. I must admit that I'm a bit skeptical that Futaba would make the leap to these kinds of frame rates, but I'll be absolutely delighted if they do! Please, bring it on!!!

You're right on about the servos. We do need to keep in mind that most systems only drive the servos at about 50 Hz today, with fast tail rotor servos being the primary exception. At the frame rates we're talking about for the Omega 16, I suspect that the only servos that will work without changes are the "super servo" tail rotor servos. These are fine for response time, but will lack the torque necessary for 60-size and up helis. In fact, your post has just about convinced me to add support for slower frame rate servos. What the code would offer would be the ability to select for 1/2 frame rate outputs, or possibly even 1/3rd frame rate outputs. In this case, the transmitter and receiver would maintain the RF link exactly as currently conceived, but the receiver would have the ability to skip alternating servo update cycles for slower servos - possibly even on a servo-by-servo basis.

The apparent downside of offering this feature is that it obviously seems to negate the point of fast frame rates to begin with! However, even with 1/2X or 1/3X servo outputs, the architecture of this receiver will still deliver lower worst-case latencies than today's systems. The 16-channel QPSK system, when configured for 1/2X outputs, would yield a worst-case latency of about 28 mS, and using 1/3X outputs would deliver worst-case latencies of about 36 mS - still almost 1/2 that of today's Futaba systems (the 8-channel version would be much faster). In addition, you'd also benefit from a more reliable control link, thanks to improved RF performance (there is a higher probability that at least one good frame will be received during 2-3 cycle/frame times than a conventional frame will be received properly during its slower cycle). More importantly, by making this a programmable option, as faster servos become available/affordable, you can replace the slower servos with faster ones, and gain the full benefits of the QPSK system.

Thank you very much for the helpful post! Not only are you making this project better, you've definitely got me keeping my eyes open for the Next Big Thing from Futaba!

Have Fun!
MarkF
06-26-2004 Over year old.
HOMEPAGE  
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

Hi, Terry!

Thanks again for forcing me to do something about this problem, which I've been worrying about all along. As it turns out, the fix was a rather involved one, but I at least have a first pass at the modifications written that are necessary to support individually-programmable 1X versus 1/2X speed servo outputs.

While this wasn't too complex for normal operation, it got hairy when RF errors occurred and frames were dropped, and/or when failsafe was being received or activated. Fortunately, I came up with an efficient solution that should work fine (though the code's just written so far, not debugged! ).

As was already the case in this receiver, no servo outputs are driven active until the receiver properly receives and decodes its first valid RF frame. The way the new speed feature works is that the receiver powers-up with all servo outputs set to Slow speed (i.e. 1/2 frame rate outputs, or in this case, about 64 Hz). So, upon arrival of the first frame, all servo outputs will be driven at a rate of ~64 Hz. This default slow speed will protect any older servos that might be plugged into the receiver.

Periodically, the transmitter will send out failsafe frames (perhaps every 10 seconds or so). I've managed to augment the failsafe frame data with speed settings for each of the 16 servo outputs. As a result, you will be able to configure the servo speed for each output channel at the transmitter. As soon as the receiver sees a valid failsafe frame, it will then drive the outputs that you specify as high speed at the full ~128 Hz output rate.

I really want to thank you again for bringing this up, for you prompted a solution that will make this receiver far more useful in today's real world, while still offering a smooth growth path to the future. Beers to you!

Have Fun!
MarkF
06-26-2004 Over year old.
HOMEPAGE  
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

Hi, Gang!

No sooner was this done, than I discovered that it may not be necessary! According to Model Avionics' Paul Beard, as quoted by HelicopterJohn in this thread, (Thanks, HJ!)...
Quote 
"You can run any digital servo in super servo mode. The system will benefit from the higher frame rate"

Now that's a very interesting bit of news that I hadn't known about, and Paul's an extremely credible source. That's terrific, for asking folks to use digital servos with a high-end system such as this seems to me to be a very reasonable requirement. Yippee!

Having said that, I'll probably keep the feature, since it may yet come in handy with third-party add-on gear, or for those strange critters who insist on running $15 servos with their $3,000 heli setups.

Cheers!
MarkF
06-26-2004 Over year old.
HOMEPAGE  
 
 
TMoore
rrProfessor
Location: Cookeville, TN

Mark,

Digital and Super Servo are one and the same. You still have the analog servos to contend with. Digital is a very poor name for what is essentially a Super Servo with the faster frame rate.

Terry
06-26-2004 Over year old.
HOMEPAGE  
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

Hi, Terry!

Cool! It definitely makes sense to me, considering how I'd go about writing servo code, if I were doing so. I just hadn't realized that other folks had done the same thing!

Well, at this point we've got the best of both worlds, and it should run with just about anything but truly antique servos (at least with the 16 channel format; with the 8-channel's 188 Hz/94 Hz refresh, we'll definitely need to stick with digital servos). The best news from my perspective is that I already have some unused digital servos sitting around the house, so I'll have to get my butt in gear soon and whip up the interface that'll let me start testing the FSK version with the PC audio transmitter, and soon thereafter, start hooking up real servos.

Thanks again!
MarkF
06-26-2004 Over year old.
HOMEPAGE  
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

Hi, Gang!

Sorry that the thread got off-topic; I should have placed my last few posts into the "Omega 16" thread. To talk a bit more about QPSK issues, let me briefly discuss the general approach we're taking to modulation and demodulation, with an eye on the Intermediate Frequency topic I raised earlier.

In traditional QPSK communications, software usually stops at the baseband level, where the TX/RX signal is comprised of two separate waveforms, called 'I' and 'Q' for historical reasons (in the language of complex math, you can think of I as the 'real' waveform component, and Q as the 'imaginary' waveform component). What the hardware in the transmitter does is to modulate both the I & Q components onto a single carrier frequency (or an Intermediate Frequency). Normally, combining two signals would just make a mess, but by shifting the Q waveform by exactly 90 degrees at the I.F., it is possible to transmit two independent waveforms on one carrier. That's the magic of QPSK: two signals in one, with essentially no RF penalty to pay. With apologies to Robert Heinlein, TISATAAFL! Well, almost.

The disadvantage of the traditional approach is that the hardware is more complex and expensive than handling just a single waveform component, needing two D/A converters, two filters, two oscillator outputs, a quadrature mixer, etc. In particular, the requirements to carefully balance the power levels on I & Q, and the need for a very precise phase delay between them is not only demanding, but is a source for many problems that can deteriorate RF performance.

Enter the digital era. Current systems are increasingly moving towards more digital processing, where I & Q become visible only in software. To make this work, it's necessary to perform filtering, modulation and combining completely in software, so just a single signal is presented to the hardware in the transmitter: that signal is what I call a "digital I.F.". As it turns out, an Intermediate Frequency of four times the symbol rate is quite efficient to perform in software. Given the fact that we're working with 12,000 bps, the symbol rate is 6,000 symbols/second. A 4X I.F. would therefore be 24,000 Hz. Since we need to delay Q by 90 degrees before modulating it onto this carrier, that's most easily performed if the signal is sampled at 4X the I.F. frequency, or 96,000 samples/second. That's quite a bit faster than today's R/C gear, which is sending about 4K samples/second to the transmitter.

Moreover, with QPSK these are analog samples, not a simple serial bit stream. Earlier, I briefly mentioned performing filtering in software. In the old world, I & Q filtering was fairly simple, and H/W filters in the transmitter were used to clean up the output signal. Here, we're trying to do much more. If we apply more software horsepower to the problem, it is possible to generate a signal in S/W that is clean enough to be transmitted directly, if it is the right output frequency. In fact, if you look at the spectrum analyzer plot above, you'll see a signal that's extremely clean, thanks to some heavy-duty software processing before the signal was sent directly to the D/A converters.

Since there's no way we're going to generate a 72 MHz signal in software, we'll have to stick with some digital I.F., and I'm hoping that 24 KHz will be acceptable. At 24 KHz, we're already generating 96000 * 16 = 1.5 megabits/second - 384 times more information than today's FSK transmitters! What's even tougher is the filtering that I mentioned. For every single one of those 96,000 output samples per second, currently, 128 multiplications and 127 additions are required just to apply the "square root raised cosine" filter that shapes the I & Q pulses for minimum bandwidth. Before we move the transmitter simulator code off of the PC and onto a real ARM CPU, I'm hoping to be able to recode the filter operation to use a so-called "polyphase" filter approach that could reduce the number of multiplications that are required, but it'll still be a lot of work - particularly on a chip without floating point math.

Even more important is that the receiver has to do exactly the same thing. Using the same 96 KHz sampling rate, it has to perform the exact same filtering operation, despite the fact that it's a particularly power-sensitive device.

All that is background to help explain the current decision point regarding the I.F.. You see, 24 KHz is still a fairly low frequency, and hardware has to convert that into a higher transmit frequency. In order to do so, the transmitter has to mix the base frequency with what's called an L.O. (for local oscillator), and the output of a mixer isn't just A+B, it's actually two frequencies: A+B and A-B. Following the mixer, a filter is then used to filter out either A+B or A-B, as needed, leaving a single output frequency. Now, if we tried to make a conversion to 72.024 MHz in a single step, the transmitter would be faced with the challenge of trying to filter out 71.976 MHz from 72.024 MHz. It's possible, but expensive.

A better way to go will be to use a second I.F., probably at 455 KHz or 10.7 MHz (arbitrary, I know, but since these are commonly-used I.F.s, that's where you can buy R.F. filter components). I'll need to do a bit of discovery and hardware design to figure out what'll be best. Fortunately, this 10 KHz output bandwidth signal, centered at 24 KHz, should be relatively simple to filter at these common I.F.s.

The first step will be to see what the common I.F. is for today's transmitters, which I could always do by a bit of snooping around with a spectrum analyzer inside a transmitter. Another way would be to measure the actual frequency of a transmit crystal (rather than what is printed on it, which ignores the I.F.). If you happen to know what Futaba or J.R. uses for their transmit (and/or receive) I.F.s, I'd greatly appreciate it if you would post it here! I'd definitely prefer to use off-the-shelf TX/RX crystals!

I'm sorry that this took so long, but such is the nature of much of this project; it's surprising how many variables interact in software-defined radio systems! On the other hand, I'm sure enjoying the process of working through them!

Cheers!
MarkF
06-27-2004 Over year old.
HOMEPAGE  
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

Hi, Gang!

Well, I tried converting the square-root raised cosine filter (also known as a "matched filter") to a polyphase filter approach. The good news is that it definitely does work, letting the processor get away with 1/16th of the multiplies used by a non-polyphase approach. The bad news is that the spectral purity isn't as good, meaning that we'd have to reduce the output bandwidth by reducing the number of bits/second that we transmit. While the polyphase filter approach is incredibly cool, it isn't perfect. For now, we'll stick with the existing (non-polyphase) SRRC filter, and set aside the question of the compute/bandwidth tradeoff needed for a polyphase filter until we're closer to having real code on the ARM CPUs (i.e. we'll see if we need to make that tradeoff due to limited CPU cycles).

Update: I see why the spectrum isn't as good; the polyphase SRRC filter's QPSK constellation diagram doesn't look very good, either. In other words, it definitely would result in reduced Signal/Noise ratio performance. Since bandwidth and good R.F. performance are top priorities on this project, I'm going to try hard to stick with the conventional filter approach, unless perhaps you can suggest how I might improve the performance of the polyphase filter?

Anyway, more to learn, more to play with...

Best Regards!
MarkF
06-27-2004 Over year old.
HOMEPAGE  
 
 
MarkFSenior Heliman - Location: Palo Alto, CA -
Howdy!

Just so that folks can help understand what I'm talking about when I refer to baseband versus carrier-based modulation, here's a few interesting pix. Note that all three of these pictures were taken at 6K bps, rather than 12K bps; this was changed only so that the output spectrum is within the display range of RAL's spectrum analyzer. First up, here's what baseband QPSK looks like - note that you can see both the I & Q carriers:



Once we move to a digital I.F., here's what the output signal from the CPU looks like. Note that this is the same time scale as the prior picture (though the data being sent is different).



Finally, you've already seen the baseband QPSK spectrum earlier. Now here's what a carrier-based QPSK spectrum looks like. Since it's running at half-speed for the picture, notice that everything is divided by 2. The real carrier will be centered at 24 KHz, and will be 10 KHz wide, while this one is at 12 KHz, and is 5 KHz wide. [By the way, the garbage at DC/0 Hz, and the spike at 21.6 KHz are both artifacts of the PC sound card that this is running on; they are not created by this transmitter.]



Hopefully, that'll help explain what's going on much better than I can with words!

Update: Sorry if I confused folks the first time; I'd uploaded pix with an over-filtered signal. The pix are now corrected!

Have Fun!
MarkF
06-27-2004 Over year old.
HOMEPAGE  
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

QPSK Architecture, Part I

Hello, RFers!

I'm impressed that you've made it so far down into this thread! Thanks for taking the time to hang in there with me, as I learn about all this cool stuff on-the-fly. It's probably appropriate at this stage to sketch out the overall software architecture for the PCM-QPSK version of the Omega 16 receiver. In this part I, I'll discuss the general steps that'll need to be accomplished in the QPSK receiver. In part II, we'll dive into a bit more detail and describe how the QPSK code will be integrated into the structure of the Omega 16.

Overall, there are eight major steps to receiving a QPSK signal:
  1. Signal acquisition: This includes digitizing the analog signal and converting it from the digital Intermediate Frequency to the baseband I & Q form.
  2. Filtering: Square root raised cosine filtering of the baseband I & Q signals. Central to nearly all receiver projects, this filtering operation is used to focus solely on the desired signal, discarding noise and interference that aren't in the precise frequency range of interest.
  3. Symbol timing recovery: This is the process of determining the optimum point in time where the RX signal should be sampled for best RF performance. If you think of the received signal as a sine wave, then symbol timing recovery is the mechanism by which the receiver finds the point in time where the peak amplitude of the sine wave occurs. Once this point in time has been identified, the signal is \"resampled\" (or \"retimed\") at this \"phase offset\".
  4. Carrier frequency & phase tracking: Inevitably, the receiver and transmitter will be running at slightly different frequencies, and the consequence of this is that the usual 4-point QPSK constellation will be slowly rotating in a circle, from the receiver's point of view. One way of solving this is to use a method known as differential detection, which essentially ignores the frequency error. However, the downside of this approach is that it loses about 2.5 dB of RF performance. To deliver the best possible RF link, this receiver will instead include a mechanism to \"derotate\" the constellation prior to demodulation. This more complex approach is known as \"coherent\" detection.
  5. Demodulation: Once symbol timing recovery and carrier & phase tracking are completed, then demodulation is the process of translating the received signal into actual received data.
  6. Preamble Detection: Before the receiver can start to make sense of the incoming data, it needs to synchronize itself with the incoming serial data stream. This receiver uses a short two-symbol data pattern, that inverts every frame, to identify the start of each new frame. Once that synchronization is accomplished the receiver knows where words start and end, so it becomes possible to understand the contents of each word in the received frame.
  7. Error detection: Since errors are a fact of life in RF transmission, it's very important to identify whether or not each new received frame is valid before taking action upon it. Here, a 20-bit Cyclic Redundancy Code (CRC) is used to efficiently accomplish this task.
  8. Command processing: Finally! Once all of the above is done, then the receiver can get to its real job, which is to drive the servos. As part of this task, there are some additional data processing steps required, such as manipulating \"failsafe\" frames, which tell the receiver what to do when loss of signal occurs.

That's it! Interestingly enough, the first five steps in this process are either unique to QPSK, as compared to FSK, or are drastically simplified in the FSK version. In other words, receiving QPSK is much more complex than receiving FSK, and needs much more CPU horsepower, to boot. In part II, we'll start planning how to pull this off!

By the way, please don't hesitate to ask questions about anything I've posted! This thread is intended as a way to learn about RF & QPSK. So, whether your questions are basic or advanced, just dive in and ask!

Fly Happy!
MarkF
06-28-2004 Over year old.
HOMEPAGE  
 
 
12 pages [ <<    <    ( 1 )     2      3     NEXT    >> ]19271 viewsPOST REPLY
Modefo's RC Helicopters . XHELI.COM . Autography FlightPower

.
.
Radio - Servo - Gyro - Gov - Batt > Homebrew PCM Receiver: QPSK/RF Design
 PRINT TOPIC Advertisers 

Subscribe to This Topic

Tuesday, December 2 - 5:21 am - Copyright © 2000 - 2008 runryder.com | email | link to rr | runryder needs cookie