Beruflich Dokumente
Kultur Dokumente
+
(
(1)
A common way to implement an inverse discrete Fourier transform is by using an inverse
Fast Fourier Transform (IFFT) algorithm. In the FFT [1], the logical frequency subcarriers
1 to 61 are mapped to the same numbered IFFT inputs, while the logical frequency
subcarriers 61 to 1 are mapped into IFFT inputs 67 to 127, respectively. The remaining
inputs, 62 to 66 and the 0 (DC) input, are set to zero. The subcarrier falling at DC (0th
subcarrier) is not used to avoid difficulties in DAC and ADC offsets and carrier feed
through in the RF chain.
Multi-band OFDM
The multi-band process is actually done after the OFDM process above is complete. OFDM
symbols are interleaved in time across multiple frequencies, based on TFCs. Figure 3
shows an example how this process works in reference to time and frequencies for the first
band group. As time progresses the OFDM symbols are transmitted on different bands:
symbol 1 is transmitted on band 1, symbol 2 on band 3 and symbol 3 on band 1.
Figure 3 Multi Band OFDM interleaving
Funded by:
10
MB-OFDM baseband processing
Figure 4 and Figure 5 present the block diagram of the baseband processing of a
transmitter and a receiver in a MB-OFDM system.
Figure 4 MB-OFDM transmitter diagram
Figure 5 MB-OFDM receiver diagram
s(n) r(n)
w(n)
Figure 6 Communication channel
2.1. Scrambler
The Hamming distance between two strings of bits, generated by the convolutional
encoder, is greater if the input sequences are uncorrelated. Therefore, a scrambler is used to
uniformly redistribute the zeros and ones bits over the data input. The scrambler scheme,
recommended by the ECMA standard [1] is presented on Figure 7.
Figure 7 Scrambler block diagram
The scrambled bit is given by equation (2) where [ ] s n is the unscrambled bit, the operator
denotes the modulo-2 addition, and [ ] x n is generated by equation (3).
[ ] [ ] [ ] 0,1, 2, v n s n x n n = = K (2)
Funded by:
11
[ ] [ ] [ ] 14 15 0,1, 2, x n x n x n n = = K (3)
Equation (4) defines the initialization vector
init
x , which is specified by the MB-OFDM
frame field Seed Identifier (Table 2.1.1):
[ ] [ ] [ ] [ ]
1 2 14 15
init i i i i
x x x x x ( =
K (4)
The term [ ]
i
x k represents the binary initial value at the output of the
th
k delay element.
Seed Identifier
init
x
00 0011 1111 1111 111
01 0111 1111 1111 111
10 1011 1111 1111 111
11 1111 1111 1111 111
Table 2 Seed Identifier
In uwb_ofdm_system.m the scrambler is implemented by the scramble.m function.
Convolutional encoder and Puncturer
The convolutional encoder defined by the ECMA [1] has a constraint length 7 L = , code
rate 1/ 3 R = and generator polynomials
0 8 1 8 2 8
133 , 165 , 171 g g g = = = . Additional code
rates are derived from the mother code rate 1/ 3 R = by employing puncturing. Puncturing
is a procedure for omitting some of the encoded bits at the transmitter and inserting
dummy zeros into the decoder at the receiver, in place of the omitted bits. In the
presented implementation, we only used the puncturing and depuncturing operations
described on Figure 8. At the transmitter, rate is changed from R =1/3 to R = 1/2,
suppressing bit B
0
at the receiver from R = 1/2 to R = 1/3, inserting bit B
0
= 0.
Figure 8 Puncturing and depuncturing operations for R=1/2 code
Funded by:
12
In uwb_ofdm_system.m the convolutional encoder and puncturer operations are both
implemented by the convenc.m Matlab function, which processes the following
parameters:
BitD_scr: the uncoded bit string
t: calculated by the poly2trellis.m function, taking into account the
convolutional encoder trellis structure, determined by the constraint length L and
the generator polynomials
n
g .
[1 0 1]: the puncturing pattern, which indicates that for each group of three bits
the 1
st
and the 3
rd
(corresponding to 1 positions) have to be sent, while the 2
nd
(corresponding to 0 position) has to be stolen.
Interleaver
Figure 9 Block diagram of the bit interleaver
The coded bit stream is interleaved (Figure 9), before sub-carriers modulation, in order to
provide robustness against burst errors. The interleaving operations are performed in three
distinct stages, depending on parameters presented on Table 3.
Data Rate (Mb/s) TDS Factor
(
TDS
N )
Coded Bits /
OFDM Symbol
(
CBPS
N )
Tone Interleaver
Block Size
(
int T
N )
Cyclic Interleaver
Shift
(
Cyc
N )
53.3 2 100 10 33
80 2 100 10 33
106.7 2 200 20 66
160 2 200 20 66
200 2 200 20 66
320 1 200 20 33
400 1 200 20 33
480 1 200 20 33
Table 3 Parameters for the interleaver
Symbol interleaving permutes the bits across 6 consecutive OFDM symbols. The symbol
interleaving operation is performed by grouping the coded bits into blocks of bits
corresponding to six OFDM symbols and then using a block interleaver whose size depends
on the number of coded bits per OFDM symbol and the value of the time domain spreading
factor to permute the coded bits. Intra-symbol tone interleaving permutes the bits across the
data subcarriers within an OFDM symbol. Intra-symbol cyclic shifts the bits in successive
OFDM symbols by deterministic amounts.
Funded by:
13
The uwb_ofdm_system.m script simulates situation of first row of on Table 3. The three
interleaver stages are implemented by the symbol_intrlv.m, tone_intrlv.m and
cyclic_shifter.m scripts that use the intrlv.m Matlab function. This function
permutes the positions of the elements of an input vector in accordance with a permutation
matrix.
Constellation Mapping
Sub-carriers modulation is performed after the interleaving process. We only implemented
QPSK modulation. The QPSK mapping operation is performed by first grouping the
interleaved bits into pairs and then associating to each pair a complex symbol (Figure 10).
Besides data, pilots and guards sub-carriers are also mapped, according to Figure 2.
01 11
00 10
1/ 2
1/ 2 -1/ 2
-1/ 2
Q
I
Figure 10 QPSK constellation
IFFT
The OFDM symbols are generated by an IFFT operation with 128 points. In the
uwb_ofdm_system.m script, the IFFT operation is implemented by the ifft.m Matlab
function.
Channel
The channel simulated by uwb_ofdm_system.m is an additive white gaussiaon noise
(AWGN) channel. In the uwb_ofdm_system.m script, the channel is implemented by the
Matlab function awgn.m. For a chosen SNR this function calculates the power of w(t).
FFT
A FFT process operates at the receiver to obtain the noisy symbols. In the
uwb_ofdm_system.m script, the FFT process is implemented by the Matlab function
fft.m.
Pilots and guard su-carriers remover
At the output of the FFT block, pilots and guards sub-carriers are removed to isolates the
data noisy symbols. In the uwb_ofdm_system.m, pilots and guard removal is
Funded by:
14
implemented by the Matlab code presented on Figure 11, according to Figure 2. The R2
vector represents modulated information on 100 data carriers. R1 vector includes data,
pilot, guard and null values modultinf all the 128 sub-carriers.
R2=zeros(1,100);
R2(1)=R1(9);
R2(2:10)=R1(11:19);
R2(11:19)=R1(21:29);
R2(20:28)=R1(31:39);
R2(29:37)=R1(41:49);
R2(38:46)=R1(51:59);
R2(47:50)=R1(61:64);
R2(51:54)=R1(65:68);
R2(55:63)=R1(70:78);
R2(64:72)=R1(80:88);
R2(73:81)=R1(90:98);
R2(82:90)=R1(100:108);
R2(100)=R1(120);
Figure 11 Pilots and guard sub-carriers removal
Quantifier and concatenator
We adopt soft decision with 4 bits for the Viterbi decoder. Therefore, to implement
quantization for soft decision we have 64 levels /Figure 12). For simplicity, Figure 13
presents the quantifier with 3 bits/8 levels.
3 7 2 7 1 7 0 7
3 6 2 6 1 6 0 6
3 5 2 5 1 5 0 5
3 4 2 4 1 4 0 4
7 7 6 7 5 7 4 7
6 7 6 6 5 6 4 6
7 5 6 5 5 5 4 5
7 4 6 4 5 4 4 4
3 3 2 3 1 3 0 3
3 2 2 2 1 2 0 2
3 1 2 1 1 1 0 1
3 0 2 0 1 0 0 0
7 3 6 3 5 3 4 3
7 2 6 2 5 2 4 2
7 1 6 1 5 1 4 1
7 0 6 0 5 0 4 0
Imaginary
Real
00
01 11
10
Figure 12 QPSK decision zones
Funded by:
15
0
1
2
3
4
5
6
7
Symbol real or
imaginary part
Probability
level
Figure 13 Quantifier (n=3)
Real and imaginary values received on sub-carriers, after pilot and guard removal,
represented by R2 are independently quantified in levels. At the output of the quantifier, the
concatenator block reorders real and imaginary quantified values, putting the real and
imaginary quantified values of the same complex in succession. In uwb_ofdm_system.m
script, the quantifier is implemented by the quantification_integer.m script forn =
4, and the concatenator by some lines of Matlab code.
Deinterleaver
The deinterleaver implements the reverse operations of the interleaver by rearranging the
quantified values at the output of the concatenator. In uwb_ofdm_system.m, the three
deinterleaver stages are implemented by the inv_ciclyc_shifter.m, tone_deintrlv.m and
symbol_deintrlv.m scripts. These scripts use the deintrlv.m Matlab function. By processing
the same permutation matrix used in intrlv.m, the deintrlv.m permutes the elements of the
input vector in the opposite way.
Depuncturer and Viterbi
The depuncturing is a procedure for inserting dummy bits in place of the punctured
(suppressed) bits. Then, the Viterbi decoder estimates the original data sequence by
determining the most likely through its trellis diagram. In the uwb_ofdm_system.m script,
puncturing and Viterbi decoding with soft decision operations are implemented by the
vitdec.m Matlab function. The input parameters of vitdec.m are are:
Vector_rx_deintrlv: the coded sequence.
t: calculated by the poly2trellis.m function, taking into account the
convolutional encoder trellis structure, determined by the constraint length L and
the generator polynomials.
tblen: a positive integer that specifies the traceback depth. We considered 5 times
the constraint length L.
trunc: to assumed the start at the all-zeros state.
Funded by:
16
soft: to assume soft decision.
[1 0 1]: the puncturer pattern
Descrambler
The descrambler scheme is equal to the scrambler scheme. In fact, if ( ) scramble a b = then
( ) scramble b a = . In uwb_ofdm_system.m script, the descrambler operation is
implemented by the scrambler.m script.
Simulation results
We simulated the complete script to verify the implementation, comparing sent bits with
received bits. The two compared systems were simulated under the same conditions. We
also compare the bit error rate with the AWGN channel with previous results presented in
[2]. The bit error rate is calculated using equation (5), where
H
d is the Hamming distance,
which counts the number of different bits in the two pattern. The denominator is the
number of transmitted data bits, considering 600 bits transmitted in each of the N
v
cycles
600 distinct bits are transmitted). In our experiment we fixed N
v
=10
6
.
(transmitted data bit sequence, received data bit sequence)
600
H
V
d
BER
N
=
(5)
The curves on Figure 14 show the bit error rate as a function of the energy per bit to the
noise ratio (
0
/
b
E N ). The red present results from the simulation of the the
uwb_ofdm_system.m script and the blue line results from 17
0.0001
0.001
0.01
0.1
1
0 2 4 6 8 10
B
E
R
Eb/No
Funded by:
17
Figure 14 BER as a function of
0
/
b
E N
Conclusions
We implement in Matlab the complete MB-OFMD system. The simulation confirmed the
correctness of this description. We have now the complete framework to implement the
receiver, using FPGAs. Simulink and Xilinx System Generator from Xilinx will be used to
implement the receiver in FPGA. The System Generator automatically generates the
Hardware Description Language (HDL) code by processing the Simulink and the Xilinx
blocksets which constitute the system. This HDL design can then be synthesized for
implementation in Virtex-5 FPGA ML506.
References
[1] Standard ECMA-368, High Rate Ultra Wideband PHY and MAC Standard,
December 2007
[2] Harry Viittala, Matti Hmlinen, Jari Iinatti: Comparative studies of MB-OFDM and
DS-UWB with co-existing systems in AWGN channel, IEEE International Symposium
on Personal, Indoor and Mobile Radio Communications (PIMRC06).
[3] Xilinx, System Generator for DSP User Guide, Release 10.1.1 April, 2008