[Top][All Lists]
[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