📄 demodulator.m
字号:
function [SD] = Demodulator(RxIn, PN, MF, Walsh);
%
% DEMODULATOR This function performs demodulation of the forward
% Channel packet, based on RAKE Receiver
% Block Diagram
% Input Signal -> [Matched Filter] -> [Sampler] -> [RAKE Receiver] -> [Walsh] -> [DeSpreading]
%
% Inputs: RxIn - input signal (I/Q) analoge
% PN - PN sequence (used for De-spreading)
% MF - matched filter taps
% Walsh - Used row of Walsh matrix for recovering
%
% Outputs: SD - Soft Decisions of RAKE receiver
%
global R
N = length(RxIn)/R;
%--------------- Matched Rx Filter (Analog) --------------------
L = length(MF);
L_2 = floor(L/2);
rr = conv(flipud(conj(MF)), RxIn);
rr = rr(L_2+1: end - L_2);
%----------- Rx Symbols Sampling ------------
% R = 1.2288 Mcps
Rx = sign(real(rr(1:R:end))) + j*sign(imag(rr(1:R:end)));
%----------- RAKE Receiver ------------
Rx = reshape(Rx, 64, N/64); % -------- column oriented
%-------- Walsh recovering ---------
Walsh = ones(N/64, 1)*sign(Walsh'-1/2); %--- row oriented Walsh
PN = reshape(PN, 64, N/64)'; %--- conjugated row oriented PN sequence
PN = PN.*Walsh; %--- Walsh Orthogonalization
%---------- Despreading (Correlate and Sum)
% Input Rate = 1.2288 Mpbs, Output Rate = 19.2 KBps
SD= PN*Rx;
SD= real(diag(SD)); % Find Soft Decisions (on main diagonal)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -