ISI 通道中的迫零均衡器

信息处理 数字通信 均衡器
2022-02-15 02:17:17

我正在研究设计 9 抽头强制零均衡器以消除通道中的 ISI。我假设通道响应是h[n]=[0.41,0.815,0.41]我试图计算误码率。当我选择h[n]=[0.21,0.815,0.21]例如,我得到了很好的结果。对于高 SNR 值,BER 达到 1e-4。但是当信道响应为时,下面的代码给出的误码率为 0.5[0.41,0.815,0.41]. 有人可以帮我解决这个问题吗?我做错了什么,但我找不到。

N  = 10^4; % number of bits or symbols
Eb_N0_dB = [0:2:10]; % multiple Eb/N0 values

for ii = 1:length(Eb_N0_dB)
    
    % Transmitter
    ip = rand(1,N)>0.5; % generating 0,1 with equal probability
    s = 2*ip-1; % BPSK modulation 0 -> -1; 1 -> 1
    
    % Channel model, multipath channel
    ht = [0.41 0.815 0.41]
    
    chanOut = conv(s,ht);
    n = 1/sqrt(2)*[randn(1,N+length(ht)-1) + j*randn(1,N+length(ht)-1)]; % white gaussian noise, 0dB variance
    
    % Noise addition
    y = chanOut + 10^(-Eb_N0_dB(ii)/20)*n; % additive white gaussian noise
    
    kk=4; % 9-tap filter
    L  = length(ht);
    hM = toeplitz([ht([2:end]) zeros(1,2*kk+1-L+1)], [ ht([2:-1:1]) zeros(1,2*kk+1-L+1) ]);
    d  = zeros(1,2*kk+1);
    d(kk+1) = 1;
    c  = [inv(hM)*d.'].';
    
    % matched filter
    yFilt = conv(y,c);
    yFilt = yFilt(kk+2:end);
    yFilt = conv(yFilt,ones(1,1)); % convolution
    ySamp = yFilt(1:1:N);  % sampling at time T
    
    % receiver - hard decision decoding
    ipHat = real(ySamp)>0;
    
    %     % counting the errors
    nErr(1,ii) = size(find([ip-ipHat]),2);
end

simBer = nErr/N; % simulated ber
1个回答

您的通道有 3 个抽头,您的 EQ 有 9 个抽头,这意味着您的级联响应有 11 个抽头。您只需将响应的中间 9 个抽头强制为单位脉冲。如果您将通道与您的 EQ 进行卷积,您会看到中间确实是一个单位脉冲,但第一个和最后一个样本非常非零。

您的频道的实际反转将是 IIR 滤波器。要使用 FIR 滤波器来近似此值,您需要有一个性能良好的通道并花费相当多的 FIR 抽头。您的通道表现不佳,因为它在单位圆上为零,这意味着它不可逆。