State of HDTV 2


#1

On Wed, 2006-04-05 at 10:16 -0700, Eric B. wrote:

./configure
make && make check && make install

Ok, found it - If I understand correctly, it looks like the next block
to finsh is the convolutional interleaver, and it’s reverse the
convolutional de-interleaver.

Existing 2.0 layers:

Src (mpeg transport) Dst
v ^
Randomizer Derandomizer
v ^
Reed-Soloman Encoder -----> RS Decoder

Yet to be done:

   v                                     ^

Convolutional Interleaver -> De-Interleaver
v ^
Trellis Encoder -> Viterbi Decoder
v ^
Field Sync Multiplexor -> Field Sync Demux
v ^
Symbol Mapper Equalizer
v ^
Weaver Modulator Head Field Sync Checker
v ^
FIR Filter (lp root raised cosine) Bit Timing Loop3
v ^
Weaver Modulator Tail Remove DC
^
| FIR Filter, Image Remove
| ^
| FPLL Carrier Tracking PLL
| and down converter
| IF ^
±----------------> FIR Filter (lp root raised
cosine)

Actually the FIR filters already exist, as does the carrier tracking
PLL and mixer. Since we start with a complex source already (usrp
in place of the mc4020 ‘short’ data source) image removal won’t be
necessary (I guess). So really all we need is the logic from 6 blocks
repackaged for a receiver, and 6 for a transmitter to do stage-by-stage
testing. IIUC.

–Chuck


#2

On Wed, Apr 05, 2006 at 05:27:51PM -0400, Charles S. wrote:

./bootstrap
./configure
make && make check && make install

Ok, found it - If I understand correctly, it looks like the next block
to finsh is the convolutional interleaver, and it’s reverse the
convolutional de-interleaver.

That’s right!

When you loop the deinterleaver back, you’ll need to account for the
52 segment delay through it. Using gr.skiphead is probably the
easiest solution (thanks Martin!).

   v                                     ^
   |                              FPLL Carrier Tracking PLL 

repackaged for a receiver, and 6 for a transmitter to do stage-by-stage
testing. IIUC.

Yep, you’re on the right track!

Eric


#3

On Wed, 2006-04-05 at 14:51 -0700, Eric B. wrote:

   v                                     ^

Convolutional Interleaver -> De-Interleaver

Looking closer at the De/Interleaver - I see the implementation
code (atsci) for that already exists but is convolutional
interleaver == data interleaver ?

Old: GrAtscInterleaver.cc GrAtscDeinterleaver.cc

There’s: atsci_data_interleaver (which includes Deint-) and it’s test
qa_atsci_data_interleaver

but then there’s also: qa_convolutional_interleaver,
qa_interleaver_fifo as well as convolutional_interleaver.h and
interleaver_fifo.h.

–Chuck


#4

On Thu, 2006-04-06 at 15:23 -0400, Charles S. wrote:

Looking closer at the De/Interleaver - I see the implementation
code (atsci) for that already exists but is convolutional
interleaver == data interleaver ?

Ok, I see that atsci_data_interleaver.h includes
convolutional_interleaver.h includes
interleaver_fifo.h, so the answer is YES.

So, all we need to do is look at how atsc_rs_encode and
atsc_rs_decode both use atsci_reed_solomon and use
that as an example of how to create an atsc_interleaver
and atsc_deinterleaver from atsci_data_interleaver.

–Chuck


#5

On Thu, Apr 06, 2006 at 03:45:48PM -0400, Charles S. wrote:

So, all we need to do is look at how atsc_rs_encode and
atsc_rs_decode both use atsci_reed_solomon and use
that as an example of how to create an atsc_interleaver
and atsc_deinterleaver from atsci_data_interleaver.

Pretty much so.

Also be sure to look at GrAtscDeinterleaver.cc and
GrAtscInterleaver.cc, especially the comments about “pipeline info is
handled in the primitive”. Looks like that’s handled differently in
the RS encoder than in the interleaver.

for (unsigned int i = 0; i < output.size; i++){
// pipeline info is handled in the primitive
deinterleaver.deinterleave (out[i], in[i]);
}

Eric