rrTV-PHOTO   New HD TV
HOME   rrTV-PHOTO   GALLERIES   MY GALLERY   HELP-FAQ
myHOME PM pmRR MEMBERS 402 ONLINE 19 EVENTS SEARCH REGISTER  START HERE
 
9 pages [ <<    <     5      6     ( 7 )     8      9     NEXT    >> ]14399 viewsPOST REPLY
Revolution Models . CarbonXtreme . Midland Helicopters

.
.
Radio - Servo - Gyro - Gov - Batt > Starting a Home-Brewed PCM Receiver Project
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

Hi, Angelos!

Just for fun, if you wanted to exactly duplicate the timings of the Futaba system with my current code, you’d want to use a 9.956193 MHz crystal. Without it, the PCM step size would be 1.16667 uS, for a minimum pulse width of 920 uS, and a maximum pulse width of 2113.5 uS. This would mean that the full-ON channels would have a servo position error of about 0.23 degrees. With the replacement crystal, it’d be “perfect”.

As far as the requirements go for the transmitter, you can simply transmit PCM-FSK at the normal bit rate – there’s no particular benefit to oversampling (though it is possible to simplify the H/W transmit filter if you want to get more sophisticated in the transmitting code). For the FQPSK solution, it definitely is necessary to significantly oversample the transmit waveform. FQPSK uses complex synthesized transmit wavelets for both the I & Q components of the waveform, so you’d need a stereo D/A converter, then after that, there’s a proprietary filter that is used to reduce the signal bandwidth - in fact, for FQPSK-B, you have to buy a license to get the actual filter coefficients! Having said that/because of that, I’m seriously thinking about instead implementing the enhanced version of FQPSK (rev. A) that was described earlier in this thread. This would have a fairly traditional band-pass filter following it, and it might even be possible to use a simple Nyquist low-pass filter if the synthesis tables are accurate enough.

I’ve been planning on using standard I2S PC audio codecs from Crystal, which are 24 bit converters that deliver more than 20 bits of accuracy, and they’re very inexpensive. Assuming that 16X oversampling is sufficient for the transmit waveform for FQPSK (which I hope is enough), the converter would only be running at about 30K samples/second, which is well within the capabilities of these standard audio parts.

For power, a 3.3V part would be preferred, at least with the CPU I’ve been using so far. By the way, I forgot to mention the voltage regulators that the Philips chip uses: the I/O pads run at 3.3V, and the core runs at 1.8V.

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

Hi, Angelos!

Oops – I forgot to mention that the I and Q channels each need a square-root raised cosine filter with an alpha of 0.25 following the Nyquist filter – this bandwidth-limits the individual I & Q components, and will have to be pretty sharp to match the symbol rates I’m targeting. I’m hoping that it might be possible to simplify this filter by massaging the synthesis tables, but for now, we have to assume that it’s required.

Sorry about that!

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

Hi, Gang!

Now this is getting serious. I’d mentioned before that I was really impressed with the Enhanced FQPSK paper that NASA had published, and in re-reading it, I was even more impressed with the unusual combination of seminal science and great writing! So much so that I sent off a quick email to the authors – both Principal Scientists at NASA - just to thank them for such a great paper. To my absolute amazement, I received a response from one of the authors an hour later offering his assistance with any problems I might have translating the paper, and asking to be kept up to date on the progress on this project!

Someone from NASA is curious about this goofy little project! WoW!

Cheers!
MarkF
11-05-2003 Over year old.
HOMEPAGE  
 
 
Andy Williamson
Heliman
Location: Pahoa, Hi

Now that is cool.
11-05-2003 Over year old.
 
 
sharam
Elite Veteran
Location: Northern California

Oh, Oh!

" I am from the government and I am here to help you."

11-05-2003 Over year old.
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

Hi, Gang!

As it turns out, the EFQPSK transmitter isn't that complicated at all, once you dive into the math. While I haven't even run the code yet, here's my initial cut at creating an EFQPSK Modulator! Check it out, and you'll see how simple it can be - this routine is actually only 11 lines of active C code!!!

Sharam: LOL! Actually, I'm quite impressed with how nice the author is - he's not just a scientist who writes well, he's also seems to be a neat guy!

Andy: Thanks! Now, I've really got to deliver!

Cheers!
MarkF
11-06-2003 Over year old.
HOMEPAGE  
 
 
w.pasman
Elite Veteran
Location: Netherlands

Hi MarkF

SAMPLE efqpsk_waveform[EFQPSK_WAVEFORMS][WAVEFORM_SAMPLES]; /* Assumes s-sub-n ordering from paper, 32X sampling */


What does this waveform look like?

Paper looks pretty hard, don't know if I will make it to the end

BTW this paper is about EVALUATING EFQPSK etc. Do you know where's the original paper (the 'inventors')? Is the description better in this paper, that you recommend it?

Another thought crossed my mind, how does this coder compare with the current modem (phone line) protocols? I know they have been working to the very limits of the bandwidth with phone line technology, and it's quite a mass market so that should be pretty good. Maybe phone line tech could be transferred into our domain?
11-06-2003 Over year old.
HOMEPAGE  
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

Hi, W.Pasman!

As I made quite clear in the link and in the code I posted, this is the invention paper! The authors are extremely modest with their title (i.e. ... Evaluating ... FQPSK), but this is, in fact, a seminal research paper that reports on the invention of EFQPSK! The waveform diagrams are shown in the paper?!?

Now, if you want to learn more about Feher's original FQPSK (which is more complex to implement, and is less efficient to code, while requiring greater signal bandwidth in its unfiltered form), you can pick up a copy of one of his books, like Wireless Digital Communications: Modulation and Spread Spectrum Applications, or his Advanced Digital Communications: Systems and Signal Processing.

If you want to learn about FQPSK-B, the link I gave earlier to the IRIG spec is the best that I've seen - the only way to learn more is to actually buy a (no-doubt very expensive) license from Feher (I emailed Feher about getting an individual/research license for FQPSK-B, but he never responded). When I asked the technology transfer folks at NASA (independent from my communication with the authors of the paper) about a MATLAB implementation of an FQPSK-B receiver they've developed (i.e. code which is ultra-slow, but is used for reference purposes), it was more than $50,000, and that still didn't include Feher's license! Yipes! So, that's why I'm using EFQPSK.

As far as telephone modems go, I've shipped something like twenty different custom modems at three different firms (including at one point the modems in every machine Apple was shipping), so I'm pretty familiar with how they work. The problem is that these modems are block-coded, so almost all the techniques they use are "frame-based", if you will. You can't emphasize enough the importance of these block-level coding schemes. In one of M.K. Simon's follow-up papers on EFQPSK, he reports a six dB gain for the same bit error rate by using block-level error coding (which is an astonishing improvement). By the way, one of the key benefits of these codes is that they aren't just frame-based, they are multi-frame based. In modems, after the block-level codes have been added to each block/frame, an interleaver is then used to scramble up the bits between multiple blocks, so that sequential symbols originate from many different blocks. As a result, a single error burst will trash bits that originally came from multiple blocks, but only a few bits from any individual block, thus preventing the errors from exceeding the ability of the block-level error coding from correcting the errors.

That's why I mentioned that if you choose not to go with frame-based communication, you lose most of the advances that have been made in data communications in the last two decades! Fortunately, EFQPSK is one very notable exception, where it's inherently just a better modulation type! The only other non block-level technique used by modems that is of potential interest is so-called Viterbi, or trellis decoding, also known as iterative decoding. In this technique, the receiver has a multi-symbol history that it uses (typically four or more symbols long). Instead of making decisions on a symbol-by-symbol basis, it uses statistical probability to determine which of the possible decodings is most likely for the symbol history (meaning that it would be examining 16 possible data sequences in parallel in the case of a four symbol decode history). While methods like this can significantly improve the bit error rate, they also significantly increase latency.

That's one reason why I'm continuing with the frame-based solution - I intend to experiment with some of these techniques.

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

Hi, Angelos!

I woke up in the middle of the night and realized that I'm definitely juggling too many projects at the same time, because I'm generating a higher personal bit error rate! The PC audio codes are indeed just fine for the receiver, but I somehow multiplied 5,000 (the symbol rate) by the oversampling (16X) and came up with 30,000?!? The transmitter will need faster D/A converters than most standard PC audio codecs can handle, since the sampling rate will probably be 80 KHz, or possibly even 160 KHz. Sorry about that!

Best Regards,
MarkF
11-06-2003 Over year old.
HOMEPAGE  
 
 
Angelos
Key Veteran
Location: nr Oxford, OX11, UK

Mark,
Although the ARM chip can handle that, it is certainly a significant overhead for the software. I will check tonight if it can be done with memory mapped DACs and DMA. The Samsung CPU that I am using has a DMA controller but I never looked into it.
Cheers,
Angelos
11-06-2003 Over year old.
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

Hi, w.pasman!

For the very highest bandwidth density communications, the basic technology used is the multicarrier modem. This technology is used by ADSL [Asymmetric Digital Subscriber Line] modems. While there are a couple of variants, the principle is the same: send out many different carriers, each of which takes up a narrow slice of bandwidth. Line impairments will affect some frequencies more than others, so you wind up with each of the carriers carrying a varying amount of data. Another communications scheme based on this approach is an RF transmission method known as OFDM, or Orthogonal Frequency Division Multiplexing. Note that these multi-carrier approaches are most effective when you can close the loop: i.e. when the receiver can communicate information about the channel to the transmitter, changing how it transmits information.

The problem with this approach is that it is extremely expensive computationally, adds high latency compared to what we're targeting, and is a poor candidate when you have rapidly changing channel characteristics, like when Alan is in the middle of a Pirouetting Tumble! For this reason, it's not appropriate for R/C helis.

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

Hi, Angelos!

Cool! Can you relay the part number for that CPU sometime? Thanks!

Cheers!
MarkF
11-06-2003 Over year old.
HOMEPAGE  
 
 
Angelos
Key Veteran
Location: nr Oxford, OX11, UK

Mark,
Samsung s3c2400. I think it may have been discontinued recently as I can’t find the datasheet online any more but I have a copy and I can email that to you if you want to have a look. In any case the s3c2410 is now available which is very similar and much more powerful. One of my targets it to be able to run a flight simulator on the TX by booting different firmware from the Smartmedia. This can easily be done by holding down a button on power on and selecting the appropriate file from the card.

Cheers,
Angelos
11-06-2003 Over year old.
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

Hi, Angelos!

Thanks - I'll check into the Samsung chip. Since we're probably going to have to stray away from PC audio codecs in the transmitter, we'll want to reduce the bit precision that's required. I'm certain that 12-bit D/As will be sufficient, and is what I'll be prototyping with, but it is possible that 8 bit converters might do the job. Regardless, these do have to be good D/As, not the crappy little on-chip PWMs that microcontrollers use!

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

Hi, Gang!

I've created a simple MATLAB program that uses the formulas from the paper to build the 16 different waveform segments that are used in EFQPSK transmission. If anyone's interested, I'd be happy to post it.

Cheers!
MarkF
11-06-2003 Over year old.
HOMEPAGE  
 
 
Greg McFadden
Key Veteran
Location: Spokane Valley, WA

I'd be interested in seeing the matlab program

thanks
Greg
11-06-2003 Over year old.
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

Hi, Gang!

Here's a pointer to the MATLAB code. It isn't particularly pretty, fast, or efficient, but it doesn't need to be. This is just run to determine the waveforms once, then you're done. Eventually, when I get around to needing it, I'l modify this routine to directly generate a C file that holds the waveform constants.

By the way, I also updated a few misleading/incorrect comments in the EFQPSK transmitter, too. FYI!

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

Hi, Folks!

Minor update. I've just realized that I'd missed a subtle point in the paper which shows a "Fs/2" delay block in the overall description of FQPSK. After thinking about what this meant for a while, I realized that this has the consequence of ensuring that the I & Q channels are modulated sequentially, rather than in parallel. This changes the modulator slightly, leading to the need for a bit of code rearrangement. Fortunately, it's still just 11 active lines of C code! It's available at the link above if you're interested.

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

Hi, Angelos!

I’ve got some good news, and some bad news. The first bit of good news is that EFQPSK doesn’t, in fact, require the square-root raised cosine filter, unlike other forms of QPSK! In addition, it’s been too long since I looked at PC CODECs: they are readily available now at up to 192 KHz sampling rates! By simply using a lower frequency crystal, the architecture of these parts should provide excellent performance at the 160 KHz rate used for 32X oversampling of a 5K symbols/second EFQPSK signal..

Now the bad news. What EFQPSK does require is extremely careful layout and shielding between the D/A and the dual RF modulators used for I & Q. The I signal is modulated unto a 0 degree version of the carrier, and the Q signal is modulated onto a 90 degree shifted version of the carrier. In other words, you are already into serious RF design when you do the DAC. As a result, this can’t be a nice generic module for a later EFQPSK software release: it’s very much custom RF design. So, I’d recommend holding off on any attempts to do the DAC until I’ve made things work here, which is going to take quite a while.

Anyway, that’s the latest. Sorry about that!

Best Regards,
MarkF
11-07-2003 Over year old.
HOMEPAGE  
 
 
MarkFSenior Heliman - Location: Palo Alto, CA -
Hi, Gang!



Guess what? While I certainly can't guarantee that it's right, that looks like it isn't too far from being an EFQPSK I-channel waveform! I created this by building another waveform generation program in C under Linux (because I couldn't figure out how to export the waveforms I'd generated in MATLAB), then I wrote a program that would modulate a pseudo-random signal to a file using the EFQPSK code I'd published earlier. I then published both of the raw waveform files on my Linux FTP server, including the I waveform and the Q Waveform (each RAW file contains the I or Q component of 1,000 10-bit EFQPSK-modulated data words, with 32X oversampling of the 5,000 symbol/second data, stored as16 bit/sample integers). I then read the files from FTP into a Windows box, converted them into WAV files using the Alive MP3 WAV converter, loaded the WAV file into Windows Media Player 9, turned on the scope option, did a screen capture into Paint to build a JPEG image, and finally played the WAV file!

If you want to hear what it sounds like, you'll have to unzip it! If you do, turn on the Scope to watch the data pattern. In Windows Media Player 9, click on View, Visualizations, Bars and Waves, Scope - it's quite a complex pattern, as you'll see. You also might want to set the clip to repeat, since it's only about 1.8 seconds long*.

Cheers!
MarkF

P.S. If anyone does the math, the clip is too long for the amount of data involved. This is because it's playing too slowly, thanks to the fact that the wave file converter used here doesn't let you specify 160 KHz sampling.
11-07-2003 Over year old.
HOMEPAGE  
 
 
9 pages [ <<    <     5      6     ( 7 )     8      9     NEXT    >> ]14399 viewsPOST REPLY
HeliProz . ZoomsHobbies . HeliHobby

.
.
Radio - Servo - Gyro - Gov - Batt > Starting a Home-Brewed PCM Receiver Project
 PRINT TOPIC Advertisers 

Subscribe to This Topic

Friday, November 21 - 12:07 pm - Copyright © 2000 - 2008 runryder.com | email | link to rr | runryder needs cookie