I sampled a local DAB radio station at 225.648 MHz, decimation factor 32
with the USRP/tvrx.
DAB is using COFDM with pi/4-DPSK on 1536 subcarriers (see www.etsi.com,
standard
EN300401 for details). I wrote some Matlab code to demodulate the
signal. The data is resampled from 2 MHz (URSP) to 2.048 MHz (DAB
Standard).
A frequency offset is compensated manually.
It works so far, only one problem arises: The I/Q signal diagram jumps
and jitters randomly by up to pi/8. What could be the problem? I am
absolutely clueless - the frequency offset is compensated perfectly.
My ultimate goal is to implement OFDM de/modulation and a DAB receiver
in gnuradio.
After some thinking: Could this be phase noise? If it is, which
oscillator is at fault? The TVRX frontend? The max. phase jitter equals
roughly 100 Hz.
I would doubt that unless your USRP is defective. The phase noise should
only become a major factor at baud rates below about 10 kbaud.
What’s the actual bandwidth of the DAB signal? Did you try collecting at
4
MSPS and then downsampling to the FFT sample rate? Maybe the CIC or
compensation filter transition are distorting the final result.
I sampled a local DAB radio station at 225.648 MHz, decimation factor 32
with the USRP/tvrx.
DAB is using COFDM with pi/4-DPSK on 1536 subcarriers (see www.etsi.com, standard
EN300401 for details). I wrote some Matlab code to demodulate the
signal. The data is resampled from 2 MHz (URSP) to 2.048 MHz (DAB Standard).
A frequency offset is compensated manually.
Side issue - do I understand this correctly, that Europe uses an open
published DAB standard while those near me in the US are not
freely published (Ibiquity, IBOC, hdradio, etc) ??
On Fri, Mar 31, 2006 at 05:10:40PM -0500, Clark P. wrote:
DAB is using COFDM with pi/4-DPSK on 1536 subcarriers (see www.etsi.com,
standard
EN300401 for details). I wrote some Matlab code to demodulate the
signal. The data is resampled from 2 MHz (URSP) to 2.048 MHz (DAB
Standard).
A frequency offset is compensated manually.
Resample is okay, but beware of any other filter operations you are
doing on
the data in a block-wise manner, e.g. chunks. You have to remember to
save
the initial conditions:
[chunk_filt, z] = filter(b,a,chunk,z);
This would cause phase discontinuities at the edges of each block.
Well - you can download the standard at ETSI. It’s open and published.
I don’t know about the US.
Ok - last time I asked about the US hdradio standard I got the
impression that the lower levels of the stack were for licensee
eyes only.
If so, it’s poetic justice to see Ibiquity desperately trying to
promote it, ignoring the fact that the enthusiasm of hobbyists and
experimenters make great early adopters and promoters - but that’s
the business model they choose and will sink or swim by it.
I resampled all the data to do a proof-of-concept. The frames are only a
small part
of the “chunk” variable. What I am getting is a fairly nice pi/4 DPSK.
Only that
in between OFDM Symbols (there are 76 in a frame) there is some sort of
random
phase jitter. And I am clueless what it could be. Frequency offset is
compensated,
the channel doesnt vary that fast.
Forgot to answer your questions:
The subcarrier spacing is 1 KHz, 1536+DC Carrier (unused) = 1.537 MHz
I sampled 2 MHz (USRP, dec 32). Then I sampled up to 2.048 MHz since
1/2.048MHz is the basic timing unit in the standard.
I tried again without resampling - the random phase jitter is still
there. Plus the
timing problem - the standard requires 2.048 MHz to I get decimal offset
values.
For example at the 2.000 MHz the guard intervall has the length
492.1875.
Do you think downsampling will work better than upsampling? I’ll try
that
tomorrow.
Well - you can download the standard at ETSI. It’s open and published.
I don’t know about the US.
Ok - last time I asked about the US hdradio standard I got the
impression that the lower levels of the stack were for licensee
eyes only.
I’ve downloaded the iBOC standards (both AM and FM) and they seem to be
pretty detailed on the physical layer. They don’t mention the codec at
all, though. It would be interesting to demod it to the point of
getting the bitstream out, for 2 reasons: eventually there will be a
[probably non-free] software version of their codec, and there are data
portions of the stream which are not from the codec.
I resampled all the data to do a proof-of-concept. The frames are
only a small part of the “chunk” variable. What I am getting is a
fairly nice pi/4 DPSK. Only that in between OFDM Symbols (there are
76 in a frame) there is some sort of random phase jitter. And I am
clueless what it could be. Frequency offset is compensated, the
channel doesnt vary that fast.
I’m confused. Are you seeing:
good symbol – jitter – good symbol – jitter – good symbol
or
good symbol 76 times and then jitter
?
Are you accounting for the cyclic prefix? I assume that COFDM has one.
On Sat, Apr 01, 2006 at 01:59:09PM -0800, Matt E. wrote:
good symbol – jitter – good symbol – jitter – good symbol
or
good symbol 76 times and then jitter
?
Are you accounting for the cyclic prefix? I assume that COFDM has one.
I am seeing only good symbols, but with a random phase offset (up to
pi/8).
The prefix is accounted for. If I do not account for it correctly this
results in ISI. Looks like added noise, not like the effect I’m seeing.
Jens
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.