67 lines
1.6 KiB
Matlab
67 lines
1.6 KiB
Matlab
|
|
function [el_sig,bits,symbol_seq] = tx_model(fsym,Pmap,Pform,Awg,options)
|
|
|
|
arguments
|
|
fsym
|
|
Pmap
|
|
Pform
|
|
Awg
|
|
options.clipfactor
|
|
end
|
|
|
|
%%%%% Local Parameter %%%%%%%%
|
|
|
|
|
|
%%%%% PRBS Generation in correct shape for Modulation Format %%%%%%
|
|
O = 17; %order of prbs
|
|
N = 2^(O-1); %length of prbs
|
|
[~,seed] = prbs(O,1); %initialize first seed of prbs
|
|
bitpattern=[];
|
|
for i = 1:log2(Pmap.M)
|
|
[bitpattern(:,i),seed] = prbs(O,N,seed);
|
|
end
|
|
|
|
if Pmap.M == 6
|
|
bitpattern = reshape(bitpattern,[],1);
|
|
bitpattern = bitpattern(1:end-mod(length(bitpattern),5));
|
|
end
|
|
|
|
bits = Informationsignal(bitpattern);
|
|
|
|
%%%%% Map to PAM %%%%%%
|
|
symbol_seq = Pmap.map(bits);
|
|
symbol_seq.fs = fsym;
|
|
|
|
|
|
|
|
%%%%% Pulseforming %%%%%%
|
|
if 1
|
|
X = Pform.process(symbol_seq);
|
|
else
|
|
X = symbol_seq;
|
|
end
|
|
|
|
%%%%% Resample to f DAC %%%%%%
|
|
X = X.resample("fs_in",X.fs,"fs_out",Awg.fdac,"n",10,"beta",5);
|
|
|
|
%%%%% Clip to PAM range %%%%%%
|
|
if 1
|
|
min_ = min(symbol_seq.signal) * options.clipfactor ;
|
|
max_ = max(symbol_seq.signal) * options.clipfactor ;
|
|
X.signal = clip(X.signal,min_,max_);
|
|
end
|
|
|
|
%%%%%Info about AWG input %%%%%%
|
|
pwr_ = X.power; % in dbm into 50 ohm
|
|
papr_ = papr(X.signal);
|
|
vpk_ = max(abs(X.signal));
|
|
vswing_ = max(X.signal)-min(X.signal);
|
|
awg_string = ['Digital AWG Input: Pout: ',num2str(round(pwr_,2)),' dBm; PAPR: ',num2str(round(papr_,2)),'; Vpk: ',num2str(round(vpk_,2)),'; Vswing: ',num2str(round(vswing_,2)),''];
|
|
% isp(awg_string);
|
|
|
|
%%%%% AWG %%%%%%
|
|
el_sig = Awg.process(X);
|
|
el_sig= el_sig.*0.7222;
|
|
|
|
end
|