• No se han encontrado resultados

La concepción Realista O, del realismo en los tiempos de

3 El funcionamiento realista como plus de verdad

3.5 La concepción Realista O, del realismo en los tiempos de

To minimise memory use the frequency interleaver may be implemented with a single memory comprising of Nmax locations. Nmax is the maximum number of data cells in an OFDM symbol of the given FFT size. It is envisaged that practical implementations of DVB-T2 modulators should support all the FFT sizes included in [i.1]. In such

implementations, Nmax would be the memory capacity necessary to implement odd-even interleaving for 32 K. Thus,

Nmax = 27 404, this being the maximum number of data cells (Cdata) in 32 K mode using PP8 Scattered Pilot pattern, extended bandwidth and no tone reservation (see table 42 of [i.1]). The frequency interleaver for all modes can thus be implemented with one memory having Nmax locations. For a given system configuration with Cmax = max(Cdata) then, this memory would need Cmax locations (for 32 K) or 2Cmax locations (for all other modes).

The following describes one way of implementing the interleaver.

For odd-even interleaving as used in 32 K, the interleaver writes data cells from even symbols (symbol number of form 2n) into its memory in a permuted order, the permuted-order addresses H(p) being provided by the relevant

pseudo-random address generator from clause 8.5 of [i.1]. For odd symbols (symbol number of form 2n+1) the data cells are written into memory in a sequential order. As only one memory is used in the interleaver and in order to avoid losing data cells, one cell of the previous symbol should be read out from the memory location to which the cell of the current symbol is to be written. It therefore follows that the sequence of write addresses for symbol number 2n+1 should match the sequence of read addresses for symbol number 2n otherwise some data cells of symbol 2n will be overwritten. Suppose for the moment that all symbols contained Cmax = Cdata data cells. Then with symbol 2n at the input of the interleaver, the interleaver would follow the following steps:

1) p = 0.

2) Generate address H(p).

3) Read cell p of outgoing interleaved symbol 2n - 1 from location H(p) of the memory. 4) Write cell p of incoming un-interleaved symbol 2n into location H(p) of the memory. 5) Increment p.

6) if (p < Cmax) go to 2.

Then with symbol 2n + 1 at the input of the interleaver: 7) p = 0.

8) Read cell p of outgoing interleaved symbol 2n from location p of the memory. 9) Write cell p of incoming un-interleaved symbol 2n + 1 into location p of the memory. 10) Increment p.

11) if (p < Cmax) go to 8.

However, the T2-frame in DVB-T2 is composed of different types of symbol with correspondingly different numbers of data cells for each type of symbol. Thus for a given system configuration (FFT size, Scattered Pilot pattern, bandwidth extension and tone-reservation status), a P2 symbol typically carries fewer data cells than a data symbol which in turn carries more data cells than a frame-closing symbol. Imagine that the de-interleaver is about to process symbol 2n + 1 (a data symbol) for which the preceding symbol 2n was a P2 symbol. Then since data symbols have more data cells than P2 symbols, it follows that the number of generated addresses in the loop 7 - 11 above would exceed the number of data cells carried by the P2 symbol. Therefore, the pseudo-random address generator would produce some addresses that are valid for writing cells of symbol 2n+1 into memory but not valid for reading cells of symbol 2n. The case in which symbol 2n has more data cells than symbol 2n + 1 also occurs when going from a data symbol to a frame-closing symbol. For a given system configuration therefore Cmax = max(Cdata, CP2, CFC)=Cdata. The loops above should be changed as follows, where the function DataCells(n) returns the number of data cells in symbol n and HoldBuffer is a small amount of storage with write pointer wptr and read pointer rptr:

1) p = 0; wptr = rptr = 0; 2) generate address H(i);

3) rdEnable = (H(p) < DataCells(2n - 1)); 4) wrEnable = (H(p) < DataCells(2n));

5) if (rdEnable) Read cell p of output interleaved symbol 2n - 1 from location H(p) of the memory; 6) store cell p of incoming un-interleaved symbol 2n into location wptr of HoldBuffer and increment wptr; 7) if (wrEnable):

a) Write cell rptr of HoldBuffer into location H(p) of the memory and increment rptr.

8) increment p; 9) if (p < Cmax) goto 2.

Then with symbol 2n+1 at the input of the interleaver: 10) p = 0; wptr = rptr = 0;

11) rdEnable = (p < DataCells(2n)); 12) wrEnable = (p < DataCells(2n+1));

13) if (rdEnable) Read cell p of output interleaved symbol 2n from location p of the memory;

14) store cell p of incoming un-interleaved symbol 2n + 1 into location wptr of HoldBuffer and increment wptr; 15) if (wrEnable):

a) Write cell rptr of HoldBuffer into location p of the memory and increment rptr.

b) If (wptr == rptr) reset both rptr = wptr = 0. 16) Increment p;

17) if (p < Cmax) goto 11.

For modes other than 32 K that use odd-only interleaving, with symbol 2n at the input the interleaver steps are as follows:

1) p = 0;

2) Generate address H1(p);

3) rdEnable = (H1(p) < DataCells(2n - 1)); 4) wrEnable = (p < DataCells(2n));

5) if (rdEnable) Read cell p of output interleaved symbol 2n - 1 from location Cmax + H1(p) of the memory; 6) store cell p of incoming un-interleaved symbol 2n into location wptr of HoldBuffer and increment wptr; 7) if (wrEnable):

a) Write cell rptr of HoldBuffer into location p of the memory and increment rptr.

b) If (wptr == rptr) reset both rptr = wptr = 0. 8) Increment p;

9) if (p < Cmax) goto 2.

Then with symbol 2n + 1 at the input of the interleaver: 10) p = 0;

11) Generate address H0(p);

12) rdEnable = (H0(p) < DataCells(2n)); 13) wrEnable = (p < DataCells(2n + 1));

14) if (rdEnable) Read cell p of output interleaved symbol 2n from location H0(p) of the memory;

16) if (wrEnable):

a) Write cell rptr of HoldBuffer into location Cmax + p of the memory and increment rptr. b) If (wptr == rptr) reset both rptr = wptr = 0.

17) Increment p;

18) if (p < Cmax) goto 11.

The required width for each memory location depends on the resolution with which each cell is represented after QAM mapping and constellation rotation (if used).

Care should be taken to implement the interleaving function in the correct sense. As shown in the steps detailed above, the interleaver should work as follows:

• In 1 K, 2 K, 4 K, 8 K and 16 K, the interleaver should write to the memory in normal order and read in permuted order.

• In even symbols of 32 K, the interleaver should write to the memory in permuted order and read in normal order. The P2 symbol is an even symbol in 32 K, since numbering starts from zero.

• In odd symbols of 32 K, the interleaver should write to the memory in normal order and read in permuted order. The first normal symbol is an odd symbol in 32 K.