I need to do a DFE for QPSK simulation in MATLAB. The system consists of a QPSK signal transmitted with power = 1 which is then pulse shaped with a square raised-cosine filter. Add AWGN and a filter receptor with ISI = [0.25 1 0.25].
Summarizing and clarifying, the sequence is:
QPSK signal -> Upsample -> Rcosine -> AWGN -> ISI [0.25 1 0.25] -> Downsample -> DFE -> BER counting.
I have coded the algorithm, with guidance from Dig. Comm. Lee-M.
, but I am thinking about problems with the Feed-Forward filter. The objetive is to obtain a signal with NO ISI, and the correct BER for a given SNR.
The code is:
% DFE.
tapsffe=7;
tapsdfe=8;
% Gain
betaf=0.0001;
betab=0.0001;
% Coefficients init. Ck for FFE and Dk for DFE
ck=zeros(1,tapsffe);
ck(7)=1; % Last tap for FFE=1
dk=zeros(1,tapsdfe);
% Signal to filtering
rk=zeros(1,tapsffe); % Signal to filter in FFE
ak=zeros(1,tapsdfe); % Signal to filter in DFE
% Filtered signal, and correspondings error
n=length(s6);
s7=zeros(1,n);
e7=zeros(1,n);
for k=1:n
rk = [s6(k), rk(1:tapsffe-1)]; % FILTERING in FFE
% Output from Feed-Forward and FeedBack
ykf = sum(rk.*ck);
ykd = sum(ak.*dk);
yk = ykf-ykd;
% Slicer for QPSK. sqrt(2) for POWER = 1.
dec = (-1*(real(yk)<0)+1*(real(yk)>=0) + 1i*(-1*(imag(yk)<0)+1*(imag(yk)>=0)))/sqrt(2);
% Obtained value for filter ecualized signal
s7(k) = dec;
% Error:
error = dec-yk;
e7(k) = error;
% Coefficient adaptation
ck = ck - betaf*error*conj(rk);
dk = dk + betab*error*conj(ak);
% FILTERING for Feedback filter with SLICER decisions
ak = [dec, ak(1:tapsdfe-1)];
end
Apparently I have problems with the FFE, because I do not see ck taps to accommodate to the inverse of the channel response with ISI. I have little doubt of its coefficients adaptation. Signal for BETA, and adaptation for ck with the corresponding rk, or the fliplr coefficient...