В этом примере показано, как использовать блок RS Decoder, чтобы декодировать и восстановить сообщение с кодовой комбинации Тростника-Solomon (RS). В этом примере набор случайных входных параметров сгенерирован и предоставлен comm.RSEncoder
функционируйте и его выход предоставляется блоку RS Decoder. Выход блока RS Decoder по сравнению с входом comm.RSEncoder
функционируйте, чтобы проверять, сталкиваются ли с какими-либо ошибками. Модель в качестве примера поддерживает генерацию HDL-кода для RS Decoder
подсистема.
Specify the input variables.
n = 255; k = 239; primPoly = [1 0 0 0 1 1 1 0 1]; B = 1; nMessages = 4; data = zeros(k,nMessages); inputMsg = (zeros(n,nMessages)); startSig = []; endSig = [];
Сгенерируйте случайные выборки на основе n, k, и m значения и предоставьте их, как введено comm.RSEncoder
функция. Здесь, n является длиной кодовой комбинации, k является длиной сообщения, и m является разрывом между системами координат.
hRSEnc = comm.RSEncoder; hRSEnc.CodewordLength = n; hRSEnc.MessageLength = k; m=0; for ii = 1:nMessages data(:,ii) = randi([0 n],k,1); [inputMsg(1:n,ii)] = hRSEnc(data(:,ii)); inputMsg1(1:n,ii) = inputMsg(1:n,ii); [inputMsg(n+1:n+m,ii)] = zeros(m,1); validIn(1:n,ii) = true; validIn(n+1:n+m) = false; endSig = [endSig [false(n-1,1); true;false(m,1);]]; startSig = [startSig [true;false(n+m-1,1)]]; end refOutput = data(:);
Обеспечьте выход comm.RSEncoder
функционируйте как вход к модели Simulink.
simDataIn = inputMsg(:); simStartIn = startSig(:); simEndIn = endSig(:); simValidIn = validIn(:);
Запустите модель Simulink, чтобы экспортировать декодируемые выборки блока Simulink к рабочей области MATLAB®.
modelname = 'RSDecoder';
open_system(modelname);
out = sim(modelname);
simOutput = out.dataOut(out.validOut);
Сравните выход блока Simulink с входом, предоставленным comm.RSEncoder
функция.
fprintf('\nHDL RS Decoder\n'); difference = double(simOutput) - double(refOutput); fprintf('\nTotal number of samples differed between Simulink block output and MATLAB function output is: %d \n',sum(difference));
HDL RS Decoder Total number of samples differed between Simulink block output and MATLAB function output is: 0