Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[SOLVED] Need help with my Simulink QAM-OFDM Upsample to RF conversion

Status
Not open for further replies.

niccoh

Junior Member level 1
Joined
Dec 3, 2014
Messages
16
Helped
3
Reputation
6
Reaction score
3
Trophy points
3
Activity points
171
I have a simulink model (using Comm. Toolbox / DSP blocks) I have built that will do QAM modulation just fine with pulse-shaping (using Root-Raised Cosine Filter). I'm trying to get a Baseband signal to RF for time-domain analysis for a RF PA.

I need an LTE like signal with a high PAPR. So I am using an OFDM modulation on 16-QAM coding. 18MHz symbol rate, with 1200 data carries for ~150kHz OFDM carrier spacing. Then I have some guard bands. My problem is I can't seem to up-sample and down-sample the OFDM output (which I need to if I want to do a conversion to 800MHz or 2GHz).

Here's my block diagram in simulink and other parameters... OFDM_Sim_BD.PNGmixer.PNGRNG.PNGOFDM_mod_demod.PNG


Here you can see the output spectrum and the constellation mapping. The OFDM demodulated outputted is forming rings or something and I'm not understanding why. I've introduced no RF impairments, just up/down sampling using FIR interpolate/decimators. Upsample of 25 and then downsample of 25 at output of DC mixer.

Everything was working with my QAM16 setup and RRC filtering without the interpolate/decimator. But again I need a time domain / RF spectrum at 800MHz - 2GHz.

SA.PNGconst.PNG

Thanks for any help!
 

Sorry to reply to this, can't seem to edit my post but I wanted to mark this as "Solved" and say what fixed it so if anyone else uses simulink for something like this.

Answer: I'm using simulink in "Frame Based" mode. So Simulink will break data up into "arrays" of data MxN long where M is the frame size per time step. Problem is every filter that is used causes some amount of group delay (FIR are easiest to use since their in samples is GD = 1/2*filter order. So when a filter is used or some sort of delay part of Frame1 will be delayed into Frame2. When the demodulator goes to decode this incoming data at the receiver end the frames that are being demodulated get messed up. Then you get results like I have. So you need to add delay equal to the frame size minus the total group delay from the modulator to demodulator.

For Example, say frame size is 100 samples long per simulink time step and you use an Interpolation filter and then a decimator filter with and order of 20 each. The total group delay from the modulator to demodulator is going to be 1/2*20 + 1/2*20 = 20 samples. So to "synchronize" the data in correct frames again you will need to add enough delay equal to FrameSize - 20 sample. So you need to place a 80 sample delay block to get the all the correct frame data in the same frames as was modulated.

Hopefully this makes sense and I explained it well. It's working beautifully now after figuring this out!!!
 
Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top