DSPRelated.com
Forums

Complex baseband

Started by morpheus March 30, 2007
Howdy,
For FM/AM demod, you require a complex baseband. I am downconverting
the IF from 1MHz to baseband by multiplying the input stream (12 bits)
from the ADC with Sin and Cosine outputs of a DDS and therefore,
generating I, Q
I am using standard 18x18 signed multipliers in Xilinx to do the
mixing. Is this right or should I use a complex multiplier?
The reason why I am asking this question is because, I had implemented
the whole datapath (Downconversion, Rate decimation, Compensating FIR)
and verified it on the bench and then implemented CORDIC for getting
FM, which never worked.
So instead I tried to do AM demod by not using CORDIC but (Sq(I) +
Sq(Q)) using standard 18x18 signed multipliers and still no AM demod
which is supposed to be simple.
Then I took the CIC and CFIR filters out and tried to do demod
straight after the mixing, still nothing.
So I'm kinda stuck here, any help will be appreciated
Thanks
-M
p.s. I don't have access to Matlab and System generator, but I'm
buying them next week. I figured, doing digital radio design without
modeling tools is like digging your own grave!!!

morpheus wrote:
> Howdy, > For FM/AM demod, you require a complex baseband. I am downconverting > the IF from 1MHz to baseband by multiplying the input stream (12 bits) > from the ADC with Sin and Cosine outputs of a DDS and therefore, > generating I, Q > I am using standard 18x18 signed multipliers in Xilinx to do the > mixing. Is this right or should I use a complex multiplier?
Does Xilinx pawn something called a "complex multiplier"? For what you're doing, a pair of plain old signed multipliers is appropriate.
> The reason why I am asking this question is because, I had implemented > the whole datapath (Downconversion, Rate decimation, Compensating FIR) > and verified it on the bench and then implemented CORDIC for getting > FM, which never worked. > So instead I tried to do AM demod by not using CORDIC but (Sq(I) + > Sq(Q)) using standard 18x18 signed multipliers and still no AM demod > which is supposed to be simple. > Then I took the CIC and CFIR filters out and tried to do demod > straight after the mixing, still nothing. > So I'm kinda stuck here, any help will be appreciated > Thanks > -M
You should be able to put a pure tone into your IF around 1MHz and have it show up as a complex number of constant amplitude that's rotating at the correct rate (i.e. 1MHz in should be DC out, 1.001MHz in should be +1kHz, 0.999MHz should be -1kHz). If you're not getting that, you're doing something wrong.
> p.s. I don't have access to Matlab and System generator, but I'm > buying them next week. I figured, doing digital radio design without > modeling tools is like digging your own grave!!! >
You may want to check out SciLab. It's free, and while it has fewer bells and whistles it does the basics at least as well as MatLab. -- Tim Wescott http://www.wescottdesign.com
"morpheus" <saurster@gmail.com> writes:

> p.s. I don't have access to Matlab and System generator, but I'm > buying them next week. I figured, doing digital radio design without > modeling tools is like digging your own grave!!!
Check out the open-source project GNU Octave: http://www.gnu.org/software/octave/ It's kinda like a free Matlab. -- % Randy Yates % "Rollin' and riding and slippin' and %% Fuquay-Varina, NC % sliding, it's magic." %%% 919-577-9882 % %%%% <yates@ieee.org> % 'Living' Thing', *A New World Record*, ELO http://home.earthlink.net/~yatescr

morpheus wrote:

> Howdy, > For FM/AM demod, you require a complex baseband.
Not necessarily. Complex baseband is just one of the possible ways.
> I am downconverting > the IF from 1MHz to baseband by multiplying the input stream (12 bits) > from the ADC with Sin and Cosine outputs of a DDS and therefore, > generating I, Q > I am using standard 18x18 signed multipliers in Xilinx to do the > mixing. Is this right or should I use a complex multiplier?
???? Generating I and Q by mutiplying by sin and cos *is* a complex multiplier.
> The reason why I am asking this question is because, I had implemented > the whole datapath (Downconversion, Rate decimation, Compensating FIR) > and verified it on the bench and then implemented CORDIC for getting > FM, which never worked. > So instead I tried to do AM demod by not using CORDIC but (Sq(I) + > Sq(Q)) using standard 18x18 signed multipliers and still no AM demod > which is supposed to be simple. > Then I took the CIC and CFIR filters out and tried to do demod > straight after the mixing, still nothing. > So I'm kinda stuck here, any help will be appreciated
Look for bugs.
> p.s. I don't have access to Matlab and System generator, but I'm > buying them next week. I figured, doing digital radio design without > modeling tools is like digging your own grave!!!
Matlab is a glitter toy for students with many useless bells and whistles. A model of the system can be easily built in any programming language that you are using. Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com
Vladimir Vassilevsky wrote:
> > > morpheus wrote: > >> Howdy, >> For FM/AM demod, you require a complex baseband. > > Not necessarily. Complex baseband is just one of the possible ways. > >> I am downconverting >> the IF from 1MHz to baseband by multiplying the input stream (12 bits) >> from the ADC with Sin and Cosine outputs of a DDS and therefore, >> generating I, Q >> I am using standard 18x18 signed multipliers in Xilinx to do the >> mixing. Is this right or should I use a complex multiplier? > > ???? > Generating I and Q by mutiplying by sin and cos *is* a complex multiplier. > >> The reason why I am asking this question is because, I had implemented >> the whole datapath (Downconversion, Rate decimation, Compensating FIR) >> and verified it on the bench and then implemented CORDIC for getting >> FM, which never worked. >> So instead I tried to do AM demod by not using CORDIC but (Sq(I) + >> Sq(Q)) using standard 18x18 signed multipliers and still no AM demod >> which is supposed to be simple. >> Then I took the CIC and CFIR filters out and tried to do demod >> straight after the mixing, still nothing. >> So I'm kinda stuck here, any help will be appreciated > > Look for bugs. > >> p.s. I don't have access to Matlab and System generator, but I'm >> buying them next week. I figured, doing digital radio design without >> modeling tools is like digging your own grave!!! > > Matlab is a glitter toy for students with many useless bells and > whistles. A model of the system can be easily built in any programming > language that you are using. >
If you stick to the basic programming language of MatLab it can significantly speed up algorithmic development. It's inherently matrix-oriented structure will let you do things at about a 1:10 ratio of lines-of-code compared to C or C++, and it's interpreted nature makes it easy to do things like hit a breakpoint then graph the intermediate results. Of course, SciLab will do all of the above for free, and with a more solidly object-oriented programming language. If you just know you'll die without the bells and whistles it isn't for you, however. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com Posting from Google? See http://cfaj.freeshell.org/google/ Do you need to implement control loops in software? "Applied Control Theory for Embedded Systems" gives you just what it says. See details at http://www.wescottdesign.com/actfes/actfes.html