Adaptive Bit Loading
Adaptive Bit Loading
Channels
Submitted by:
ABSTRACT
My project involved the study and analysis of Adaptive Bit Loading Technique used in
Wireless Channels using Frequency Division Multiplexing (FDM). To understand this
technique I simulated the same on MatLab platform. The reason for using MatLab was
the ease in with which matrices can be manipulated. Hence I could store the parameters
for the Sub Channel as a matrice.
My simulation consisted of two parts.
a. Generate a random wireless channel. Divide it into Sub Channels and then
transform it into frequency domain using Fast Fourier Transform and Single
Value Decomposition
b. Do Adaptive Bit Loading. The parameter of the Sub Channel which indicates the
whether the Sub Channel is “Good” or “Bad” was the gain it provided.
The Algorithm which was used do Energy Allocation was Chow Algorithm and to do
optimized Bit Allocation was Campello.
1 INTRODUCTION
Wireless channels are inherently heterogeneous, i.e. that is amount of fading and noise
varies considerably from sub channel to sub channel. The reason for this is maybe
various: atmospheric conditions, frequency spectrum selected, selective fading or any
random phenomenon.
Frequency Division Multiplexing (FDM) has been a widely-used technique for signal
transmission in frequency selective channels. In essence, FDM divides the channel
bandwidth into sub channels and transmits multiple relatively low rate signals by carrying
each signal on a separate carrier frequency.
Hence, some sub channels may have good gain: that is, provide relatively less
attenuation, distortion and noise interference, while other sub channels may be bad
because the sub channel Signal to Noise Ratio (SNR) may be high.
2 EFFECTS OF SNR
While it is not really means that the bits traveling through sub channel that has low SNR
will not be received, the probability that such receptions being bad or corrupt is high.
Also, other factors which effects successful reception are
a. Frequency Selected
b. Guard Band
c. Power Allocated
d. Modulation Scheme
In FDM, the data packets are split into smaller packets, each of which is transmitted on a
particular sub channel. Hence if a particular sub channels fails, on the receiver side, it
might be required to retransmit the packet again. Hence there are lots of re-transmissions.
Another variation of FDM is known as OFDM, in which the sub channel frequencies are
selected such a way that they are orthogonal to each other. That is they have a phase
division of 900 between. Even though this reduces Inter Symbol Interference, the loss
because of the channel is still very much present.
Code:
H_int = 1/sqrt(2)*(randn(length(A), 1) + j*randn(length(A), 1));
Then the channel was transformed from Time Domain to Frequency Domain using Finite
Fourier Transform and Single Value Decomposition
Code:
H_f = zeros(1, (N));
h_f = fft(H_int2(1:1:(N-1)+1,1));
for k = 1:(N)
H_f(1,1+(k-1)) = h_f(k);
end
for i = 1:N
[Utmp Stmp Vtmp] = svd(H_f(:,(i-1)+1:i));
S=[S Stmp];
end
Now the parameter S will store the gain of the sub channel. Since S is a matrix, S(i) is the
gain of the ith sub channel.
Initially each sub channel was allocated energy using Chow Allocation and at the same
time it was allocated maximum number of bits allowable per sub channel. Then bit
allocation was done using Campello Algorithm.
Before running the algorithm, sub channels SNR was determined.
Code:
SNR = abs((subchan_gains.^2)./(noise));
From Chow’s Algorithm, compute the energy for the ith sub channel based on the
number of bits
ei(b(i)) = (2b(i) - 1)/SNR(i)
Code:
for i = 1:num_subc
bits_alloc(i) = M; %Allocating Maximum Number of
Bits allowable Sub Channel to each Sub Channel
energy_alloc(i) = (2^bits_alloc(i)-1)/SNR(i) ; %Allocating energy
to each Sub Channel
end
Then I compiled a matrix of energy increments. That is extra energy required by a sub
channel to transmitting n bits to transmit (n+1) bits. This was calculated using
∆ei(b) = ei(n) - ei(n - 1) = (2n-1)/SNR(i)
This was stored in a matrix so that it can be referenced while implementing Campello’s
Algorithm
Code:
energytable = abs((1./SNR)'*(2.^([1:M+1]-1)));
energytable(:,M+1) = Inf*ones(size(energytable(:,M+1)));
for i = 3:2:M
energytable(:,i) = (energytable(:,i) +energytable(:,i+1))/2;
energytable(:,i+1) = energytable(:,i);
end
Campello’s Algorithm
B’ = 0
for n (1 to N) where N = number of sub channels
while (B’ != B); where B = maximum bits allowable per sub channel
if (B > B)
n = arg max1<j<N ∆ej(bj )
B=B–1
b(n)=b(n) – 1
else
n = arg max1<j<N ∆ej(bj+1 )
B=B+1
b(n)=b(n) + 1
Code:
bt = M*num_subc;
while (bt ~= total_bits)
if (bt > total_bits)
max_val = 0;
max_ind = ceil(rand(1)*num_subc);
for i = 1:num_subc
if(bits_alloc(i) ~= 0)
temp = energytable(i,bits_alloc(i));
else
temp = 0;
end
if(temp > max_val)
max_val = temp;
max_ind = i;
end
end
if(bits_alloc(max_ind) > 0)
bits_alloc(max_ind) = bits_alloc(max_ind) -1;
energy_alloc(max_ind) = energy_alloc(max_ind) - max_val;
bt = bt-1;
end
else
min_val = Inf;
min_ind = ceil(rand(1)*num_subc);
for i = 1:num_subc
if(bits_alloc(i) ~=0 & bits_alloc(i) <9)
temp = energytable(i,bits_alloc(i) + 1);
else
temp = Inf;
end
if(temp < min_val)
min_val = temp;
min_ind = i;
end
end
if(bits_alloc(min_ind) < 8)
bits_alloc(min_ind) = bits_alloc(min_ind) + 1;
if (min_val == inf)
min_val = energytable(min_ind,bits_alloc(min_ind));
end
energy_alloc(min_ind) = energy_alloc(min_ind) +min_val;
bt = bt+1;
end
end
end
5 SIMULATION RESULTS
The following input parameters were used for the simulation
Code:
A = [1 1/exp(1) 1/exp(2) 1/exp(3)]; %Power Delay Profile
Nchannel = 64; %Number of Sub Channels
Noise = 1e-3 %Noise in the Channel
Bsub = 8; %Maximum Number of Bits per Sub
Channel
Bmax = Nchannel*Bsub; %Maximum Channel Capacity
Btotal = Bmax/2; %Total Number of Bits to be
Transmitted
10 COMMERCIAL APPLICATIONS
Commercially Adaptive Bit Loading is implemented in various wireless standards that
use OFDM or FDM to transmit in a wireless data network. It is been used in various
mobile networks.
CONCLUSION
While providing error free data transfer is the responsibility of Data Link and Network
Layer of the OSI Model, these layers have no control over the channel’s behavior. While
we can always use parity checks and error correcting codes, there is always a chance that
the bits maybe corrupted during transmission.
While this problem is not that apparent when the nodes are connected using physical
medium like cables, when we use wireless channel for connection this becomes very
apparent.
Wireless channels have unpredictable behavior and are very dynamic. They can be easily
influenced by external conditions.
What Adaptive Bit Loading does, is get channel information and use this information. It
tries to provide reliability into the channel.
Adaptive Bit Loading is very useful in wireless because wireless channels are time
varying and very dynamic. By adapting the transmission system to match the current
channel parameter, it tries to negate this dynamism.
There are some additional costs of implementation of this system but compared to
reliability that it can provide, it is an acceptable overhead.
Adaptive Bit Loading provides Low BER and High Data Rates while at the same time
reduces the energy requirement. Hence, it is very useful for wireless and mobile
networks, especially Ad- Hoc ones, where the channel is very dynamic and varying.
REFERENCES
[1]“A Practical Discrete Multitone Transceiver Loading Algorithm for Data
Transmission Over Spectrally Shaped Channels,"
PS Chow, JM Cioffi, JAC Bingham - IEEE Transactions on Communications, 1995
[2]“Discrete Bit Loading for Multicarrier Modulation Systems,"
J Campello - Information Theory IEEE Proceedings, 1998
“Third-Generation Systems and Intellignet Wireless Networking - Smart Antennas and
Adaptive Modulation”
JS Blogh, L Hanzo
“OFDM Wireless LANs: A Theoretical and Practical Guide”
J Heiskala, J Terry