39 lines
906 B
Matlab
39 lines
906 B
Matlab
|
|
% Setup PRBS parameters
|
|
O = 6;
|
|
M = 6;
|
|
N = 2^(O-1); % Length of PRBS
|
|
randkey = 1; % Random key for random stream
|
|
use_eth_mapping =1;
|
|
|
|
if M ~= 6
|
|
dimension = log2(M);
|
|
else
|
|
dimension = 5;
|
|
end
|
|
|
|
[~, seed] = prbs(O, 1); % Initialize first seed of PRBS
|
|
bitpattern = [];
|
|
|
|
s = RandStream('twister', 'Seed', randkey);
|
|
for i = 1:dimension
|
|
bitpattern(:, i) = randi(s, [0 1], N, 1);
|
|
end
|
|
if M == 6
|
|
bitpattern = reshape(bitpattern',[],1);
|
|
bitpattern = bitpattern(1:end-mod(length(bitpattern),5));
|
|
end
|
|
|
|
Tx_bits = Informationsignal(bitpattern);
|
|
|
|
Digi_Mod = PAMmapper(M, 0,"eth_style",use_eth_mapping);
|
|
|
|
% Map bits to symbols
|
|
Symbols = Digi_Mod.map(Tx_bits);
|
|
|
|
% Demap symbols back to bits
|
|
Rx_bits = Digi_Mod.demap(Symbols);
|
|
|
|
[~, error_num, ber, ~] = calc_ber(Tx_bits.signal(1:length(Rx_bits.signal)), Rx_bits.signal,"skip_front", 0, "skip_end", 0, "returnErrorLocation", 1);
|
|
|
|
fprintf('BER: %.1E \n',ber); |