RR Rated M For Mature
HOME   rrTV-PHOTO   GALLERIES   MY GALLERY   HELP-FAQ
myHOME PM pmRR MEMBERS 379 ONLINE 80 EVENTS SEARCH REGISTER  START HERE
 
9 pages [ <<    <     6      7     ( 8 )     9     NEXT    >> ]15917 viewsPOST REPLY
Heli-Max . Hobby Hut . Heli Wholesaler

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

My Posts This: Topic  Forum

Hi, Folks!

If you look closely at the transmitted waveform, there sure are places which appear to contain slope discontinuities, so I'm certainly not declaring success on the modulator yet. However, it's obviously not too far from getting there!

Have Fun!
MarkF
11-07-2003 Over year old.
PROFILE   PM   EMAIL   POSTS   BUDDY   IGNORE   HOMEPAGE  
 
 
MarkFSenior Heliman - Location: Palo Alto, CA - My Posts This: Topic  Forum
If Only This Were True...



That's a great looking FFT [Fast Fourier Transform - essentially a one-sided spectrum analyzer] frequency domain plot of the I_waveform file above, created by a signal analysis package called SigView (it shows power in dB on the Y-axis, and frequency on the X-axis). What I love about it is that it confirms that EFQPSK is indeed quite spectrally efficient, even though that's only one of the two components that are normally transmitted simultaneously in EFQPSK. Unfortunately, it's a lie!

To get that image, I had to cheat and tell SigView that the data was sampled at an 80 KHz sampling rate, instead of the 160 KHz sampling rate that the data really represents. What that means is that the bandwidth of this waveform is just about twice as wide as it should be, which I don't understand at all!

I don't think that there is a fault in the modulator, because if you zoom into the waveform, you don't see the discontinuous slope that I thought I'd seen earlier. Maybe I've somehow missed a power of 2 somewhere? Hmmm - this is a real mystery! Any thoughts?

Have Fun!
MarkF

P.S. Just for clarity, all of these are synthetic waveforms, created entirely in software - I haven't built any hardware yet!
11-07-2003 Over year old.
PROFILE   PM   EMAIL   POSTS   BUDDY   IGNORE   HOMEPAGE  
 
 
Phil Cole
Veteran
Location: Redwood City CA

My Posts This: Topic  Forum
How did you combine the I and Q signals to get a single data sequence?
11-07-2003 Over year old.
PROFILE   PM   EMAIL   POSTS   BUDDY   IGNORE  
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

My Posts This: Topic  Forum
Hi, Phil!

That's a GREAT question! In fact, I didn't! That's actually just an individual plot of the I waveform. I've been wanting to do a combined plot, but I don't believe that this will work at baseband - I think it's necessary to actually modulate a pair of out-of-phase carriers to represent both I & Q, which of course will make for some huge data files...

Once I can identify why the heck the bandwidth that I'm seeing is so high, then I may well step towards a reduced carrier frequency I+Q RF simulation (like perhaps a 100 KHz carrier, or something like that).

Again, great question!

Cheers!
MarkF
11-07-2003 Over year old.
PROFILE   PM   EMAIL   POSTS   BUDDY   IGNORE   HOMEPAGE  
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

My Posts This: Topic  Forum
Hi, Folks!

Ah-hah! I just found a smoking gun: it pays to read the fine print! I guess that I so strongly expected a symmetrical relationship between the I & Q channels that I never noticed until now that the feedback terms for I & Q are different in EFQPSK. As it turns out, the I channel relies on the last two bits that have been sent on the Q channel, but the Q channel relies on the most-recent I bit, and the next I bit! It'll take a bit of thought to try to keep it to 11 lines now!

Have Fun!
MarkF
11-07-2003 Over year old.
PROFILE   PM   EMAIL   POSTS   BUDDY   IGNORE   HOMEPAGE  
 
 
Angelos
Key Veteran
Location: nr Oxford, OX11, UK

My Posts This: Topic  Forum
Mark and all,
I am lost! These modulation techniques aren’t really my stuff and to be honest I am too busy to read about them and try to understand. So I’ll leave that to you. When you have a working hardware design please let us know and I will try to integrate the components you need on my PCB. As I previously mentioned by target is very advanced high level applications for the transmitter (model controller, USB comms, flight simulator, MP3 player ). So I am sticking with PCM1024Z for now until you come up with something better.

As an update to my progress, I have just configured a timer to generate interrupts at 150usec (PCM bit rate). The interrupt sends the next bit out when called. I haven’t written a routine yet to compose PCM frames but I manually composed a frame and it was transmitted via RF successfully. The receiver set all servos to the commanded positions. I am now confident that PCM generation via IRQs is possible with unnoticeable bit jitter thanks to a timer with auto-reload feature which guarantees interrupt generation with precise timing.

I have just now started writing some code for PPM generation. Another interesting feature here is the double buffering of the timer. Thus I can write a value in it which will only take effect once the timer reaches 0 (ie… it will reload to that value). That’s very handy for generating PPM.
11-07-2003 Over year old.
PROFILE   PM   EMAIL   POSTS   BUDDY   IGNORE  
 
 
Phil Cole
Veteran
Location: Redwood City CA

My Posts This: Topic  Forum
Mark,

I don't think you need to oversample the carrier waveform. Just let it alias then select the carrier region in the FFT.

Or, consider the I and Q pairs as complex numbers and perform a full FFT instead of just using magnitudes. This presumes your FFT package can deal with complex numbers, of couse. If not, you get to write your own. I did it once, about 25 years ago. Wasn't that hard once you found the book with the sample Fortran code in it

Did you use windowing when you ran the FFT? If you don't then you get funny things due to the ends of the finite sequence.
11-07-2003 Over year old.
PROFILE   PM   EMAIL   POSTS   BUDDY   IGNORE  
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

My Posts This: Topic  Forum
Howdy!

Phil: Yup, I used a Hanning window with zero-padding to do the FFT, so the spectrum was apparently accurate - not to say that something else isn't causing a factor of two error, but we'll see. If, indeed the subscript error I made in the code caused the problem, that'll be wild, since the error was only on the Q channel, and I was looking at the I channel. However, the whole idea of FQPSK/EFQPSK is that the two components interact, so that we wind up with errors in Q feeding back into the I channel again! I do think I've got a fix for the problem, but l can't test it until I get home. Interestingly enough, it's still just 11 lines of code, and it's more readable now, too! I'll post the results after I give it a try.

Good recommendation on the complex FFT - I've just finished purchasing a package that can handle complex inputs today, for that reason, as well as to help me debug any more I/Q cross-correlation issues like this one that might crop up, since it also has a vector/polar time display. The cool thing about FQPSK when you've got it right is that its polar diagram is essentially a perfect circle, and EFQPSK is a slightly thickened circle - completely different from most modulation types.

I like the idea of subsampling the RF version - that'll definitely make the data files smaller! Thanks for the excellent advice!

Have Fun!
MarkF
11-08-2003 Over year old.
PROFILE   PM   EMAIL   POSTS   BUDDY   IGNORE   HOMEPAGE  
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

My Posts This: Topic  Forum
Hi, Angelos!

Congratulations on the great progress! As far as the timer goes, I’d recommend using the code fragment that I wrote for you earlier: it’ll eliminate what will otherwise be up to about 40 cycles of jitter from the transmitter output.

All your apps sound cool! It does sound like our efforts are pretty complimentary, since I’m primarily interested in speed, RF throughput, robustness, and some really sophisticated mixers!

Once again, congratulations!

Cheers!
MarkF
11-08-2003 Over year old.
PROFILE   PM   EMAIL   POSTS   BUDDY   IGNORE   HOMEPAGE  
 
 
George You
Heliman
Location: West Pacific Island

My Posts This: Topic  Forum
talking about next gen radio

Hi Mark and Angelos and all-
having seen your progress on your projects, I would like to know one thing. what do you think most important for the next gen radio? To me, one feature would be much more important than all the others, which is fear-free for frequency collision! In my site, it is crowded and full of people who do not follow rules. It is always a night mare to me to worry about frequency collision. I've always wanted the radio stuff to be as
carefree as a cell-phone. But Futaba and JR don't have a solution even years after the debut of cell-phones. Some friends told me that this feature is not as important in US because they have such a big place to fly, they certainly don't have many people trying to turn on their radios at the same time in the same place. Is this true?????
what would be your solution to this?

regards
11-08-2003 Over year old.
PROFILE   PM   EMAIL   POSTS   BUDDY   IGNORE  
 
 
w.pasman
Elite Veteran
Location: Netherlands

My Posts This: Topic  Forum
Nice that sample, gives some concreteness to your project Sounds like bandpass noise.

BTW I posted a first report on the futaba pcm1024 format. In fact they DONT have a CRC at the far end. But I would say they DO have a bandwidth problem making your project much more relevant than I thought!
11-08-2003 Over year old.
PROFILE   PM   EMAIL   POSTS   BUDDY   IGNORE   HOMEPAGE   GALLERY
 
 
w.pasman
Elite Veteran
Location: Netherlands

My Posts This: Topic  Forum
George
They discussed this already, also in another thread I think.
Near-bottom-line was backwards compatibility. Somone suggested to have the transmitter search for frequencies when turned on. But guys with old radios would render this approach useless.
Bottom line is that no matter how fast you hop to a free frequency, you always risk coming down if everyone turns on his radio and no free frequency is left to hop to.
11-08-2003 Over year old.
PROFILE   PM   EMAIL   POSTS   BUDDY   IGNORE   HOMEPAGE   GALLERY
 
 
MarkFSenior Heliman - Location: Palo Alto, CA - My Posts This: Topic  Forum
It's Working, but...

Hi, Gang!

After swatting a few bugs, I'm now getting pretty confident that this really is EFQPSK! The modulation is incredibly cool, as the two waves "dance" together in quadrature. Check this out!



In addition, the circular polar chart definitely says that things are working (in a polar chart, the I & Q values are treated as X & Y coordinate values, and I & Q are plotted with respect to one another):



[You can ignore the vertical line: that's just a startup transient that has no measurable impact on the frequency spectrum. In fact, you can see the startup transient on the left side of the strip chart above the polar diagram.]

The spectrum of the FFT has been cleaned up, too, and now has the deep nulls that are characteristic of EFQPSK:



Unfortunately, even though the FFT looks identical in structure to that in the paper, it's still twice as wide! I just don't get it. Something is obviously wrong, yet I can't find the source of error. I've checked just about everything, including replacing the pseudo-random number generator at one point with a cryptographic-quality random number generator (just in case patterns in the random numbers were affecting the FFT; EFQPSK needs a randomizer for minimum bandwidth).

I'm at a loss at this stage, since I see multiple published reports that talk about the bandwidth efficiency of FQPSK, and EFQPSK is better. Any suggestions or recommendations would be greatly appreciated!

Thanks a bunch, gang, for the ongoing support!

Cheers!
MarkF
11-09-2003 Over year old.
PROFILE   PM   EMAIL   POSTS   BUDDY   IGNORE   HOMEPAGE  
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

My Posts This: Topic  Forum
Hi, Gang!

Just for fun, I created a stereo version of the EFQPSK waveform (it's 640KB, so don't bother if you're on a dial-up line). It does indeed sound richer with both carriers present. Once again, I don't have a tool that'll let me specify sampling rates higher than 48 KHz, so this is running about 1/4 speed:

Stereo EFQPSK Wave File

Have Fun!
MarkF
11-09-2003 Over year old.
PROFILE   PM   EMAIL   POSTS   BUDDY   IGNORE   HOMEPAGE  
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

My Posts This: Topic  Forum
Howdy!

I think I may have found the problem, and it's a loose nut at the end of the keyboard! The FFT diagram above is also known as a one-sided Power Spectral Density diagram, or PSD. It shows a bandwidth of about 4500 Hz at -25 dB, and about 9000 Hz for -45 dB. I kept thinking that when we used this in the real world, we'd see a reflection of this around the carrier frequency, or +/- 9000 Hz. However, if I'm now back on the right track, that isn't what will happen at all!

Instead, the bandwidth would remain the same on a two-sided PSD! It would look different, as the energy would be centered around the carrier frequency, but the outer envelope of the modulated signal would become +/- 4500 Hz, which is fine! This is just over the FCC's emissions limit of -45 dB at +/-4000 Hz, so I'll add simple low pass filters to the output of the D/A converters to bring the envelope down - not just to meet the spec, but also to provide plenty of margin for unit-to-unit frequency variation over temperature and power, etc.

I might be smoking something funny, but I do believe that this is actually going to work: delivering 10K bits/second in a channel that's delivering only about 1/3rd of that or less today!

Obviously, we'll make darn sure that the low pass filters do the job before we ever fire this thing up! By the way, the -25 dB point is where the vast majority of the signal energy is, and that's only ~+/-2250 Hz wide, or less than 1/2th of our channel spacing! As I'd mentioned earlier, this should actually generate less adjacent channel interference than existing systems, despite the higher data rate.

Hooray!

Have Fun!
MarkF
11-09-2003 Over year old.
PROFILE   PM   EMAIL   POSTS   BUDDY   IGNORE   HOMEPAGE  
 
 
Angelos
Key Veteran
Location: nr Oxford, OX11, UK

My Posts This: Topic  Forum
10KB can easily update 16 10bit channels at 50Hz. However Futaba PCM sends pulses to the servos every 14ms and it seems that servos are happy to receive 71Hz pulses . Since it is possible to do that, I am in favour of a higher possition update rate. But then the number of available channels is limited. We could however device channels to primary and secondary and thus having the secondary 9 to 16 receiving updates every other frame for example.

The primary channels can provide super smooth CCPM, while the secondary can be used for non so critical controls like gyro sensitivity, retracts, GV control, etc

Any thoughs about this?
11-09-2003 Over year old.
PROFILE   PM   EMAIL   POSTS   BUDDY   IGNORE  
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

My Posts This: Topic  Forum
Hi, Angelos!

That's not far from what I'm doing now with the 16 channel PCM-FSK receiver. While I do update every channel every cycle, I use differential coding to minimize the bandwidth that's required. Even with 16 channels, it's already capable of delivering a 68 Hz update rate using a 6,400 bps PCM-FSK link, and with a 10,000 bps PCM-EFQPSK link, it'll deliver a 106 Hz update rate! We're already going to have a servo problem - I guess I'm going to have to test with $$$9251s - Ouch!

Interestingly enough, it'd probably only take an hour or so to change the receiver code to deliver up to 29 R/C channels. The code was written with this in mind, and the CPU has enough pins to drive that many servos. Assuming you had 14 analog channels and 15 switched channels, using the same differential encoding would deliver an update rate of 47 Hz with EFQPSK. Now, if you had that many channels, I'd definitely consider adopting something like what you suggest!

Cheers!
MarkF
11-10-2003 Over year old.
PROFILE   PM   EMAIL   POSTS   BUDDY   IGNORE   HOMEPAGE  
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

My Posts This: Topic  Forum
Hi, Gang!

My thanks to those of you who've been patiently waiting for the receiver code. I apologize for the little detour, but it turned out to be a useful diversion. Now that I've got that out of my system for a while, I'll get back to testing and completing the core frame-based PCM-FSK receiver code for its first public release - hopefully this week!

Cheers!
MarkF
11-10-2003 Over year old.
PROFILE   PM   EMAIL   POSTS   BUDDY   IGNORE   HOMEPAGE  
 
 
w.pasman
Elite Veteran
Location: Netherlands

My Posts This: Topic  Forum
Hi MarkF

Looks great! But you will have to build both a receiver and transmitter now!

Quote 
This is just over the FCC's emissions limit of -45 dB at +/-4000 Hz, so I'll add simple low pass filters to the output of the D/A converters to bring the envelope down


Why don't you just make the bandwidth a bit smaller by changing the parameters of the coder? I would think low pass filters will harm the effectiveness of the coder because it effectively introduces unnecessary noise.
11-10-2003 Over year old.
PROFILE   PM   EMAIL   POSTS   BUDDY   IGNORE   HOMEPAGE   GALLERY
 
 
MarkF
Senior Heliman
Location: Palo Alto, CA

My Posts This: Topic  Forum
Hi, w.pasman!

Thank you! You're right, I definitely will need to build an EFQPSK transmitter and receiver! The sequence is shaping up to be something like this... After I get the PCM-FSK receiver V1.0 completed and published, I'll then need to tackle the software radio code to create a PCM-EFQPSK receiver. Since I'll need DMA to make that possible, we'll be moving to a different ARM chip for development, either the Atmel ARM7 or the Samsung ARM9.

Once we're on a new H/W platform with DMA and A/Ds, and the receiver code is well along, I'll then need an EFQPSK transmitter. However, it doesn't have to be overly complex for development. The EFQPSK code which produced the waveforms you saw is written in Visual C on a PC. Initially, I'll extend this source to directly drive a "96 KHz" (i.e. 192 KHz sampling) PC sound card, and will incorporate some built-in test data. For testing, the card's stereo audio outputs will become the link between the "transmitter" and the receiver!

Somewhere in parallel with all this, I'll try to learn more about R.F. design for EFQPSK, so that once the EFQPSK link is functional at baseband, we can then begin prototyping a real R.F. link.

Now, this all assumes that I don't get hit by a bus first , and that I don't die of old age before it all happens! Seriously, I won't even try to estimate a schedule, since this is obviously going to be a lot of work. On the other hand, I'm having a ball doing it!

As far as slowing the link down goes, that'd certainly be the easiest way to reduce the output bandwidth. On the other hand, that isn't exactly my style, and I see 10K bps as a nice magic number to be delivered. Does filtering affect performance? Sure. However, it doesn't have to affect it all that much. I mentioned earlier that FQPSK-B's secret is a proprietary filter that comes within something like 1/2 of a dB of FQPSK, while using much less bandwidth! Ergo, the same basic concept will be applicable to EFQPSK; I'll just have to come up with my own filter after seeing how different filter types degrade the signal, and choose a filter which gives minimal impact to the receiver's ability to recover the signal.

Have Fun!
MarkF
11-10-2003 Over year old.
PROFILE   PM   EMAIL   POSTS   BUDDY   IGNORE   HOMEPAGE  
 
 
9 pages [ <<    <     6      7     ( 8 )     9     NEXT    >> ]15917 viewsPOST REPLY
JR-Spektrum . E-flite . Fast Lad Performance

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

Subscribe to This Topic

Saturday, March 20 - 9:55 am - Copyright © 2000 - 2010 runryder.com | email | link to rr | START HERE | NF