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...