stuff from 400G analysis (project deliv 01)
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
useprbs = 1;
|
||||
M = 6;
|
||||
M = 2;
|
||||
randkey = 1;
|
||||
datarate = 448e9;
|
||||
fsym = round(datarate / log2(M)) ;
|
||||
|
||||
%%%%% PRBS Generation in correct shape for Modulation Format %%%%%%
|
||||
O = 15; %O of prbs
|
||||
O = 16; %O of prbs
|
||||
N = 2^(O); %length of prbs
|
||||
[~,seed] = prbs(O,1); %initialize first seed of prbs
|
||||
bitpattern=[];
|
||||
@@ -47,28 +47,79 @@ Tx_bits = Informationsignal(bitpattern);
|
||||
|
||||
%%%%% Duobinary %%%%%%
|
||||
|
||||
precode = 1;
|
||||
db_encode = 0;
|
||||
|
||||
close all
|
||||
Symbols_tx = PAMmapper(M,0).map(Tx_bits);
|
||||
Symbols_tx.fs = fsym;
|
||||
|
||||
Symbols1 = Duobinary().precode(Symbols_tx);
|
||||
figure;histogram(Symbols1.signal);
|
||||
%%% precode
|
||||
if precode
|
||||
Symbols0 = Duobinary().precode(Symbols_tx);
|
||||
else
|
||||
Symbols0 = Symbols_tx;
|
||||
end
|
||||
|
||||
Symbols2 = Duobinary().encode(Symbols1);
|
||||
figure;histogram(Symbols2.signal);
|
||||
figure;histogram(Symbols0.signal);
|
||||
|
||||
Symbols3 = Duobinary().decode(Symbols2);
|
||||
figure;histogram(Symbols3.signal);
|
||||
autoArrangeFigures;
|
||||
for n = 0:200
|
||||
|
||||
Rx_bits = PAMmapper(M,0).demap(Symbols3);
|
||||
if db_encode
|
||||
Symbols1 = Duobinary().encode(Symbols0);
|
||||
else
|
||||
Symbols1 = Symbols0;
|
||||
end
|
||||
|
||||
%%%%% Check BER of Bit Sequence %%%%%%
|
||||
Symbols2 = Symbols1;
|
||||
pos = 1;
|
||||
if n~=0
|
||||
for pos = 1:n
|
||||
po = randi(100);
|
||||
a = Symbols2.signal(100+pos) == Symbols1.signal(100+po);
|
||||
while a == 1
|
||||
po = po+1;
|
||||
po = randi(100);
|
||||
a = Symbols2.signal(100+pos) == Symbols1.signal(100+po);
|
||||
end
|
||||
Symbols2.signal(100+pos) = Symbols1.signal(100+po);
|
||||
end
|
||||
end
|
||||
|
||||
[~,error_num,ber,error_pos] = calc_ber(Tx_bits.signal,Rx_bits.signal,"skip_front",0,"skip_end",0,"returnErrorLocation",1);
|
||||
% disp(Symbols2.signal(100:100+pos)==Symbols1.signal(100:100+pos))
|
||||
|
||||
%%% encode
|
||||
|
||||
if db_encode
|
||||
|
||||
% figure;histogram(Symbols2.signal);
|
||||
|
||||
Symbols3 = Duobinary().decode(Symbols2);
|
||||
% figure;histogram(Symbols3.signal);
|
||||
% autoArrangeFigures;
|
||||
elseif precode
|
||||
Symbols3 = Duobinary().encode(Symbols2);
|
||||
Symbols3 = Duobinary().decode(Symbols3);
|
||||
% figure;histogram(Symbols3.signal);
|
||||
else
|
||||
Symbols3 = Symbols2;
|
||||
end
|
||||
|
||||
Rx_bits = PAMmapper(M,0).demap(Symbols3);
|
||||
|
||||
%%%%% Check BER of Bit Sequence %%%%%%
|
||||
|
||||
[~,error_num(n+1),ber,error_pos] = calc_ber(Tx_bits.signal,Rx_bits.signal,"skip_front",10,"skip_end",10,"returnErrorLocation",1);
|
||||
|
||||
% disp(['BER: ',sprintf('%.1E',ber),sprintf(' - Num. Err: %.1d',error_num(n+1)-2),' - - PAM-',num2str(M)]);
|
||||
fprintf('n: %d - Num. Err: %.1d \n',n,error_num(n+1));
|
||||
end
|
||||
|
||||
disp(['BER: ',sprintf('%.1E',ber),' - - PAM-',num2str(M)]);
|
||||
%
|
||||
|
||||
figure()
|
||||
hold on
|
||||
scatter(1:length(Symbols3),Symbols3.signal,1,'.');
|
||||
scatter(error_pos,Symbols3.signal(error_pos),14,'o');
|
||||
|
||||
|
||||
figure(3);
|
||||
|
||||
Reference in New Issue
Block a user