uriy 0 Posted December 24, 2020 · Report post Посоветуйте помехоустойчивый код. Имеется блок данных длиной 132 бита, его можно дополнить до 216 бит. Quote Ответить с цитированием Share this post Link to post Share on other sites
blackfin 0 Posted December 24, 2020 · Report post Можно отрезать 39 бит от кода BCH (255,171,23). Если нужен жесткий декодер. Quote Ответить с цитированием Share this post Link to post Share on other sites
gosha 0 Posted January 11 · Report post On 12/24/2020 at 9:58 AM, uriy said: Посоветуйте помехоустойчивый код. Имеется блок данных длиной 132 бита, его можно дополнить до 216 бит. Reed-solomon не подходит ? https://opencores.org/projects?expanded=Arithmetic%20core%2CECC%20core А Где в Ижевске работаете ? Quote Ответить с цитированием Share this post Link to post Share on other sites
des00 0 Posted January 11 · Report post On 12/24/2020 at 12:58 PM, uriy said: Посоветуйте помехоустойчивый код. Имеется блок данных длиной 132 бита, его можно дополнить до 216 бит. для начала определитесь с тем от чего вы хотите защищаться и для какой системы, а потом уже жесткий/мягкий код вам нужен, желаемый ЭВК/характерные точки по битовым ошибкам. ну а дальше кодов разных громадье) Quote Ответить с цитированием Share this post Link to post Share on other sites
uriy 0 Posted January 11 · Report post Да я никогда не имел дел с помехоустойчивым кодированием. Я передаю данные через радиоканал. Факт обнаружения ошибки для меня бесполезен, нужно уметь восстанавливать как можно больше бит. Работаю в частной шараге. Quote Ответить с цитированием Share this post Link to post Share on other sites
gosha 0 Posted January 11 · Report post 30 minutes ago, uriy said: Да я никогда не имел дел с помехоустойчивым кодированием. Я передаю данные через радиоканал. Факт обнаружения ошибки для меня бесполезен, нужно уметь восстанавливать как можно больше бит. Работаю в частной шараге. В Simulink не стоит по- экспериментировать с помехозащищенным кодированием ? https://www.ijltet.org/wp-content/uploads/2014/07/10.pdf https://uk.mathworks.com/help/comm/ug/transmit-and-receive-shortened-reed-solomon-codes.html https://fr.mathworks.com/matlabcentral/fileexchange/32127-reed-solomon-coding-_16-psk-using-simulink N = 63; % Codeword length K = 51; % Message length S = 39; % Shortened message length M = 64; % Modulation order numErrors = 200; numBits = 1e7; ebnoVec = (8:13)'; [ber0,ber1] = deal(zeros(size(ebnoVec))); errorRate = comm.ErrorRate; rsEncoder = comm.RSEncoder(N,K,'BitInput',true); rsDecoder = comm.RSDecoder(N,K,'BitInput',true); rate = K/N; for k = 1:length(ebnoVec) % Convert the coded Eb/No to an SNR. Initialize the error statistics % vector. snrdB = ebnoVec(k) + 10*log10(rate) + 10*log10(log2(M)); errorStats = zeros(3,1); while errorStats(2) < numErrors && errorStats(3) < numBits % Generate binary data. txData = randi([0 1],K*log2(M),1); % Encode the data. encData = rsEncoder(txData); % Apply 64-QAM modulation. txSig = qammod(encData,M, ... 'UnitAveragePower',true,'InputType','bit'); % Pass the signal through an AWGN channel. rxSig = awgn(txSig,snrdB); % Demodulated the noisy signal. demodSig = qamdemod(rxSig,M, ... 'UnitAveragePower',true,'OutputType','bit'); % Decode the data. rxData = rsDecoder(demodSig); % Compute the error statistics. errorStats = errorRate(txData,rxData); end % Save the BER data, and reset the errorRate counter. ber0(k) = errorStats(1); reset(errorRate) end gp = rsgenpoly(N,K,[],0); rsEncoder = comm.RSEncoder(N,K,gp,S,'BitInput',true); rsDecoder = comm.RSDecoder(N,K,gp,S,'BitInput',true); rate = S/(N-(K-S)); for k = 1:length(ebnoVec) % Convert the coded Eb/No to an SNR. Initialize the error statistics % vector. snrdB = ebnoVec(k) + 10*log10(rate) + 10*log10(log2(M)); errorStats = zeros(3,1); while errorStats(2) < numErrors && errorStats(3) < numBits % Generate binary data. txData = randi([0 1],S*log2(M),1); % Encode the data. encData = rsEncoder(txData); % Apply 64-QAM modulation. txSig = qammod(encData,M, ... 'UnitAveragePower',true,'InputType','bit'); % Pass the signal through an AWGN channel. rxSig = awgn(txSig,snrdB); % Demodulated the noisy signal. demodSig = qamdemod(rxSig,M, ... 'UnitAveragePower',true,'OutputType','bit'); % Decode the data. rxData = rsDecoder(demodSig); % Compute the error statistics. errorStats = errorRate(txData,rxData); end % Save the BER data, and reset the errorRate counter. ber1(k) = errorStats(1); reset(errorRate) end berapprox = bercoding(ebnoVec,'RS','hard',N,K,'qam',64); semilogy(ebnoVec,ber0,'o-',ebnoVec,ber1,'c^-',ebnoVec,berapprox,'k--') legend('RS(63,51)','RS(51,39)','Theory') xlabel('Eb/No (dB)') ylabel('Bit Error Rate') grid psk_16_awgn_rs_simulink_2018.slx Quote Ответить с цитированием Share this post Link to post Share on other sites
ViKo 0 Posted January 11 · Report post Я извиняюсь, но может специалисты-кодировщики подскажут, что может быть закодировано здесь: https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=159266&do=findComment&comment=1730325 Тоже думал в Anaconda (Python) поэкспериментировать с кодированием. Да что-то ничего толкового не приходит на ум. Есть числа с малой разницей в битах. То есть, непохоже на избыточное кодирование. Quote Ответить с цитированием Share this post Link to post Share on other sites
des00 0 Posted January 11 · Report post 19 hours ago, uriy said: Я передаю данные через радиоканал. Факт обнаружения ошибки для меня бесполезен, нужно уметь восстанавливать как можно больше бит. Определитесь мягкое или жесткое у вас решение, есть ли стирания, какова структура ошибок: пакетные или одиночные, какая вычислительная мощность в наличии, какая пропускная способность, требуемый остаточный коэффициент ошибок. Мягкое даст +2 дБ выигрыша по ЭВК, но плохо держит пакетную ошибку, рид-соломон наоборот. Если мягкое то как вариант неплохого кода Wimax DuoBinRCS, в варианте 18 байт данных, с кодом 2/3 получите ваши 27байт. В оставшиеся биты добавите CRC. ЭВК по 1е-6 составит порядка 5.5дБ 18 hours ago, gosha said: N = 63; % Codeword length K = 51; % Message length S = 39; % Shortened message length M = 64; % Modulation order Не хорошо ему пойдет такой. у ТС 216 бит, для этого кода максимальный блок 63*6=378бит, слишком большое усечение получится. Но тем не менее, получится данных 22 символа, длина блока 36. Сможет исправить 7 символов или от 7 до 42 бит. ЭВК по 1е-6 составит порядка 3.5дБ Quote Ответить с цитированием Share this post Link to post Share on other sites
Serhiy_UA 0 Posted January 11 · Report post 2 hours ago, uriy said: Факт обнаружения ошибки для меня бесполезен, нужно уметь восстанавливать как можно больше бит. Когда-то использовал коды Хемминга. Там просто и с обнаружением, и с восстановлением. Посмотрите в интернете, может Вам подойдет. Quote Ответить с цитированием Share this post Link to post Share on other sites
des00 0 Posted January 11 · Report post 16 hours ago, Serhiy_UA said: Когда-то использовал коды Хемминга. Там просто и с обнаружением, и с восстановлением. Посмотрите в интернете, может Вам подойдет. проиграет бчх и рс коду. на 216 битах там 8 контрольных бит, восстанавливает 3 бита на блок. но намного проще, да) Quote Ответить с цитированием Share this post Link to post Share on other sites