exponenta event banner

коммуникация. BCHEncoder

Кодирование данных с помощью кодера BCH

Описание

BCHEncoder объект создает код BCH с заданной длиной сообщения и кодового слова.

Для кодирования данных с использованием схемы кодирования BCH:

  1. Определите и настройте объект кодера BCH. См. раздел Строительство.

  2. Звонить step для создания кода BCH с заданными длинами сообщения и кодового слова в соответствии со свойствами comm.BCHEncoder. Поведение step относится к каждому объекту на панели инструментов.

Примечание

Начиная с R2016b, вместо использования step для выполнения операции, определенной системным object™, можно вызвать объект с аргументами, как если бы это была функция. Например, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.

Строительство

enc = comm.BCHEncoder создает системный объект кодировщика BCH, enc, которая выполняет кодирование BCH.

enc = comm.BCHEncoder(N,K) создает объект кодера BCH, enc, с CodewordLength свойство имеет значение N и MessageLength свойство имеет значение K.

enc = comm.BCHEncoder(N,K,GP) создает объект кодера BCH, enc, с CodewordLength свойство имеет значение N, MessageLength свойство имеет значение K и GeneratorPolynomial свойство имеет значение GP.

enc = comm.BCHEncoder(N,K,GP,S) создает объект кодера BCH, enc, с CodewordLength свойство имеет значение N, MessageLength свойство имеет значение K, GeneratorPolynomial свойство имеет значение GP и ShortMessageLength свойство имеет значение S.

enc = comm.BCHEncoder(N,K,GP,S,Name,Value) создает объект кодера BCH, enc, с CodewordLength свойство имеет значение N, MessageLength свойство имеет значение K, GeneratorPolynomial свойство имеет значение GP, ShortMessageLength свойство имеет значение S, и каждое указанное свойство Name установить в указанное значение Value.

enc = comm.BCHEncoder(Name,Value) создает объект кодера BCH, enc, каждое указанное свойство имеет заданное значение. Можно указать дополнительные аргументы пары имя-значение в любом порядке как (Name1,Value1,...,NameN,ValueN).

Свойства

Примечание

Длины входных и выходных сигналов перечислены в разделе «Длины входных и выходных сигналов в системных объектах BCH и RS» на comm.BCHDecoder справочная страница.

CodewordLength

Длина кодового слова

Укажите длину кодового слова кода BCH как положительный целочисленный скаляр с двойной точностью. Значение по умолчанию: 15. Значения CodewordLength и MessageLength свойства должны создавать допустимый код BCH с узким смыслом. Для полноразмерного кода BCH значение свойства должно использовать вид 2M 1, где M - целое число, такое что 3≤M≤16. Значение по умолчанию: 15.

MessageLength

Длина сообщения

Укажите длину сообщения как положительный целочисленный скаляр с двойной точностью. Значения CodewordLength и MessageLength свойства должны создавать допустимый код BCH с узким смыслом. Значение по умолчанию: 5.

ShortMessageLengthSource

Источник короткой длины сообщения

Укажите источник укороченного сообщения: Auto или Property. Если для этого свойства установлено значение Auto, код BCH определяется CodewordLength, MessageLength, GeneratorPolynomial, и PrimitivePolynomial свойства. Когда ShortMessageLengthSource имеет значение Property, необходимо указать ShortMessageLength свойство, используемое вместе с другими свойствами для определения кода RS. Значение по умолчанию: Auto.

ShortMessageLength

Укороченная длина сообщения

Укажите длину укороченного сообщения как положительный скаляр с двойной точностью, значение которого должно быть меньше или равно MessageLength. Когда ShortMessageLength < MessageLength, код BCH укорачивается. Значение по умолчанию: 5.

GeneratorPolynomialSource

Источник полинома генератора

Укажите источник полинома генератора как Auto или Property. Установить для этого свойства значение Auto для автоматического создания полинома генератора. Установить для него значение Property для задания полинома генератора с помощью GeneratorPolynomial  собственность. Значение по умолчанию: Auto.

GeneratorPolynomial

Полином генератора

Задайте полином генератора как двоичный вектор строки с двойной точностью, двоичный вектор строки Галуа, который представляет коэффициенты полинома генератора в порядке степени убывания, или как вектор символа многочлена. Длина полинома генератора требует значения CodewordLengthMessageLength-+1. Это свойство применяется при установке GeneratorPolynomialSource кому Property. Значение по умолчанию: 'X^10 + X^8 + X^5 + X^4 + X^2 + X + 1', что является результатом bchgenpoly(15,5,[],'double') и соответствует коду (15,5).

CheckGeneratorPolynomial

Включить проверку полинома генератора

Установить для этого свойства значение true для выполнения проверки полинома генератора при первом вызове step способ. Эта проверка проверяет правильность указанного полинома генератора. Для больших кодов отключение проверки сокращает время обработки. Рекомендуется выполнить проверку хотя бы один раз, прежде чем устанавливать для этого свойства значение false. Это свойство применяется при установке  GeneratorPolynomialSource  кому Property. Значение по умолчанию: true.

PrimitivePolynomialSource

Источник примитивного многочлена

Укажите источник полинома примитива как один из Auto или Property. Установить для этого свойства значение Auto для создания примитивного многочлена степени M =ceil(log2(CodewordLength+1)). Установить для него значение Property для задания многочлена с помощью PrimitivePolynomial собственность. Значение по умолчанию: Auto

PrimitivePolynomial

Примитивный многочлен

Укажите примитивный многочлен порядка M, который определяет конечное поле Галуа GF (2). Используйте двоичный вектор строки двойной точности с коэффициентами многочлена в порядке степеней убывания или в качестве вектора многочлена. Это свойство применяется при установке PrimitivePolynomialSource свойство для Property. Значение по умолчанию: 'X^4 + X + 1', что является результатом fliplr(de2bi(primpoly(4))).

PuncturePatternSource

Источник прокола

Укажите источник образца прокола как один из None или Property. Установить для этого свойства значение None для отключения прокалывания. Установить для него значение Property для декодирования проколотых кодовых слов. Это декодирование основано на векторе шаблона прокола, указанном в PuncturePattern собственность. Значение по умолчанию: None.

PuncturePattern

Вектор прокола

Укажите шаблон, используемый объектом для прокалывания закодированных данных. Используйте двоичный вектор-столбец двойной точности длиной CodewordLengthMessageLength-. Нули в векторе шаблона прокола указывают положение битов четности, которые объект прокалывает или исключает из каждого кодового слова. Это свойство применяется при установке PuncturePatternSource кому Property. Значение по умолчанию: [ones(8,1); zeros(2,1)].

Методы

шагКодирование данных с использованием кодера BCH
Общие для всех системных объектов
release

Разрешить изменение значения свойства объекта системы

Примеры

свернуть все

% The following code transmits a BCH-encoded, 8-DPSK-modulated bit stream
% through an AWGN channel.  Then, the example demodulates, decodes, and counts errors.

enc = comm.BCHEncoder;
mod = comm.DPSKModulator('BitInput',true);
chan = comm.AWGNChannel(...
         'NoiseMethod','Signal to noise ratio (SNR)','SNR',10);
demod = comm.DPSKDemodulator('BitOutput',true);                                  
dec = comm.BCHDecoder;
errorRate = comm.ErrorRate('ComputationDelay',3);

for counter = 1:20
  data = randi([0 1], 30, 1);
  encodedData = step(enc, data);
  modSignal = step(mod, encodedData);
  receivedSignal = step(chan, modSignal);
  demodSignal = step(demod, receivedSignal);
  receivedBits = step(dec, demodSignal);
  errorStats = step(errorRate, data, receivedBits);
end

fprintf('Error rate = %f\nNumber of errors = %d\n', ...
  errorStats(1), errorStats(2))
Error rate = 0.015075
Number of errors = 9

Передавать и принимать сигнал, модулированный BPSK, кодированный укороченным кодом BCH, затем подсчитывать ошибки.

Укажите кодовое слово, сообщение и укороченную длину сообщения.

N = 255;
K = 239;
S = 63;

Создайте полином генератора BCH (255 239). Используйте генераторный полином для создания пары кодера и декодера BCH. Код BCH основан на стандарте AMR.

gp = bchgenpoly(255,239);
bchEncoder = comm.BCHEncoder(N,K,gp,S);
bchDecoder = comm.BCHDecoder(N,K,gp,S);

Создание счетчика частоты ошибок.

errorRate = comm.ErrorRate('ComputationDelay',3);

Основной цикл обработки.

for counter = 1:20
  data = randi([0 1],630,1);                 % Generate binary data
  encodedData = bchEncoder(data);            % BCH encode data
  modSignal = pskmod(encodedData,2);         % BPSK modulate
  receivedSignal = awgn(modSignal,5);        % Pass through AWGN channel
  demodSignal = pskdemod(receivedSignal,2);  % BSPK demodulate
  receivedBits = bchDecoder(demodSignal);    % BCH decode data
  errorStats = errorRate(data,receivedBits); % Compute error statistics
end

Просмотрите статистику ошибок.

fprintf('Error rate = %f\nNumber of errors = %d\n', ...
  errorStats(1), errorStats(2))
Error rate = 0.000318
Number of errors = 4

Сократить (31,26) код ВСН до (11,6) кода ВСН и использовать его для кодирования и декодирования случайных двоичных данных.

Создайте пару BCH-кодера и декодера для (31,26) кода. Задайте полином генератора, x5 + x2 + 1 и укороченную длину сообщения, равную6.

enc = comm.BCHEncoder(31,26,'x5+x2+1',6);
dec = comm.BCHDecoder(31,26,'x5+x2+1',6);

Кодирование и декодирование случайных двоичных данных и проверка соответствия декодированного битового потока исходным данным.

x = randi([0 1],60,1);
y = step(enc,x);
z = step(dec,y);
isequal(x,z)
ans = logical
   1

Избранная библиография

[1] Кларк, Джордж К. Младший, и J. Затвор Каин, кодирование исправления ошибок для цифровой связи. Нью-Йорк, «Пленум пресс», 1981 год.

[2] Уикер, Стивен Б., Системы контроля ошибок для цифровой связи и хранения верхнего седла реки, Нью-Джерси, Прентис Холл, 1995.

Алгоритмы

Этот объект реализует алгоритм, входы и выходы, описанные в разделе Алгоритмы декодирования только ошибок BCH и RS.

Расширенные возможности

.