discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] SSB demodulation


From: cswiger
Subject: Re: [Discuss-gnuradio] SSB demodulation
Date: Wed, 8 Sep 2004 13:53:51 -0400 (EDT)

On Wed, 8 Sep 2004, Johnathan Corgan wrote:
> cswiger wrote:
>
> > Hi All - I'm making wild stabs are writing modules to demod SSB
> > with REAL+IMAG or REAL-IMAG for upper and lower sideband, simply
> > by cloning David Carr's gr_complex_mag module:
>
> You have to phase delay the IMAG (Q) symbol stream by 90 degrees
> (Hilbert transform all-pass filter) prior to the addition or subtraction
> with the REAL (I) symbol stream.  (And don't forget to keep them in time
> sync; that is, whatever the sample propagation delay through the Hilbert
> filter is for the Q stream must be accounted for in the I stream prior
> to addition or subtraction.)
>
>

John - that's for the comments, always appreciated.  I'm simply
working with the fm radio code, replacing gr.quadrature_demod_cf
with gr.complex_sum - so in the big picture there is a
gr.freq_xlating_fir_filter_scf upstream which should provide the
90 deg phase shift. I thought there might be something wrong with
the code - this works smoothly for AM:

  for (int i = 0; i < noutput_items; i++){
    float ans = std::abs (in[i]);
    out[i] = ans;

this returns a broken up signal for sideband:

  for (int i = 0; i < noutput_items; i++){
    gr_complex in_c = in[i];
    float ans = in_c.real() + in_c.imag();
    out[i] = ans;


maybe an issue with the intermediary variable in_c - I couldn't
see how to separate real & imag directly from gr_complex *in[]
or I don't understand how the pointers work.


--Chuck






reply via email to

[Prev in Thread] Current Thread [Next in Thread]