AN2072 Freescale Semiconductor / Motorola, AN2072 Datasheet - Page 8

no-image

AN2072

Manufacturer Part Number
AN2072
Description
AN2072, Decision Feedback Equalizer for StarCore-Based DSPs
Manufacturer
Freescale Semiconductor / Motorola
Datasheet
Implementation of the Algorithm
8
1.
2.
Factor matrix A into LDL
When complete, column of L, corresponding to the highest diagonal element of D, gives the optimum
feedback filter taps (Matlab code for this is omitted here).
Compute the optimum feed forward taps. Because L is a monic matrix, back substitution is an easy
way to solve for the feed forward filter taps. Code Listing 2 shows how the back substitution routine is
implemented in Matlab.
The feedback and the feed forward taps are then used in the channel equalizer to equalize all the
received symbols within a frame of data (the channel is assumed to be quasi-static).
l=L; % Lower Triangular Monic Matrix
chan_mem=4;
h=channel_h;
%%%%%%%%%%%%% BSM%%%%%%%%%%%%%%
d_opt=d_opt*scale_factor^2;
sc=4;% scale factor used in DSP implementation
v = zeros(1,delay);
v(delay) = 1/sc;
temp_v=0;
l=l/sc;
%LOOP 1
for
for
end
end
w_opt = zeros(1,Nf);
%LOOP 2
for
end
end
kk = delay :-1 :2;
jj =
j = 1:Nf
Code Listing 1. Matlab Code to Compute the Cholesky Factorization
function [L,D,A,U]=outer_cholesky(A)
n=size(A,1);
for k=1:n-1
end
sum_w = 0;
w_opt(j) = ((1/d_opt)*sum_w*sc)
Decision Feedback Equalizer for StarCore™-Based DSPs, Rev. 1
kk : delay
Code Listing 2. Matlab Back Substitution Routine
A(k,k)=sqrt(A(k,k));
A(k+1:n,k)=A(k+1:n,k)/A(k,k);
for j=k+1:n
end
sum_v=0;
temp_v = -l(jj,kk-1)*v(jj);
sum_v = sc*sc*temp_v+ sum_v;
v(kk-1) = (sum_v)/sc;
disp('writing coeff
for
k = 1 : (min(chan_mem, delay-j) + 1)
*
, where L is a lower-triangular monic matrix and D is a diagonal matrix.
i=j:n;
A(i,j)=A(i,j)-A(i,k)*conj(A(j,k));
tw(k) = (v(k+j-1))*conj(h(k));
sum_w = sum_w + tw(k);
disp('Wrote the above
now')
coeff')
Freescale Semiconductor

Related parts for AN2072