Используя HDL Оптимизированные Блоки Библиотеки RS энкодера/декодера

Этот пример показывает, как реализовать энкодер и декодер для стандарта IEEE® 802.16 [1] использование блоков библиотеки HDL Optimized Reed-Solomon (RS) Encoder и Decoder.

Введение

Код RS является небинарным блочным кодом. Код RS, который сопоставляет информационные символы в кодовую комбинацию длины символа, обозначается как RS () код. Символы для кода являются целыми числами между и, которые представляют элементы конечного поля GF (). Широкополосный стандарт Беспроводного доступа IEEE 802.16 [1] использует сокращенную версию RS (255,239) код, сгенерированный на GF (256), т.е., и. Энкодер RS вводит символы четности, которые используются декодером RS, чтобы обнаружить и исправить ошибки символа. Код может исправить до ошибок символа в каждой кодовой комбинации.

Эта модель показывает, как использовать блоки библиотеки HDL Optimized RS Encoder и Decoder для симуляции и генерации HDL-кода. Это реализует кодирование и исправление ошибок для стандарта IEEE 802.16. Для получения дополнительной информации о поддержке HDL HDL Оптимизированные блоки Энкодера и Декодера RS, обратитесь к странице с описанием энкодера или странице с описанием декодера. Чтобы узнать больше об алгоритме, используемом в блоках, относятся к [2].

Чтобы открыть эту модель в качестве примера, запустите следующие команды:

modelname = 'commrshdl';
open_system(modelname);

Источник

Исходная подсистема генерирует информационные символы для Энкодера RS. Чтобы открыть Исходную подсистему, запустите следующие команды:

systemname = [modelname '/Source'];
open_system(systemname);

Одно из сообщений (информационные символы) используемый стандартом IEEE 802.16 содержит следующие 36 байтов (Рандомизированные данные, заданные на странице 827 [1]).

  message = [D4 BA A1 12 F2 74 96 30 27 D4 88 9C 96 E3 A9 52 B3 15 AB FD 92 53 07 32 C0 62 48 F0 19 22 E0 91 62 1A C1 00].

Источник неоднократно передает сообщение, сопровождаемое защитным интервалом. Модель имеет параметры messagelength для количества символов в сообщении, чтобы закодировать; и период, который включает messagelength и длину защитного интервала. Защитный интервал между сообщениями размещает задержку энкодера, добавляющего символы проверки четности в сообщение и декодер, выполняющий поиск Цзяня. В initFcn коллбэке модели messagelength установлен в 36, и период установлен в 236 (которые предполагают, что защитный интервал имеет длину 200 символов).

Обратите внимание на то, что значения messagelength и периода могут отличаться, как желаемый.

Подсистема RS верхнего уровня содержит HDL Оптимизированные блоки Энкодера и Декодера RS. Чтобы открыть подсистему RS, запустите следующие команды:

systemname = [modelname '/RS Subsystem'];
open_system(systemname);

Значения и установлены в коллбэке InitFcn модели и используются, чтобы сконфигурировать HDL Оптимизированные блоки Энкодера и Декодера RS. Значения и не могут быть изменены в этой модели.

Энкодер RS выводит сокращенный код, если длина сообщения является меньше, чем символы. В этом случае это заполнит входной сигнал нулями, кодирует заполненное сообщение и добавляет 16 символов проверки четности. Блок затем удаляет добавленные нулевые символы, создавая символ вывод.

Полевой полином генератора, используемый стандартом IEEE 802.16. Соответственно, и для энкодера RS и для декодера, Источник примитивного полинома установлен как Свойство, Примитивный полином установлен как [1 0 0 0 1 1 1 0 1], Источник B, который является стартовой степенью для корней примитивного полинома, установлен как Свойство, и значение B установлено как 0. Полином генератора кода, используемый стандартом IEEE 802.16, где.

Ограничения на и длина кодовой комбинации детализированы здесь. Подсистема ErrorGen добавляет, что шум к RS закодировал сообщение. Чтобы открыть подсистему ErrorGen, запустите следующие команды:

systemname = [modelname '/RS Subsystem/ErrorGen'];
open_system(systemname);

Подсистема ErrorGen реализует логику, чтобы добавить шум в кодовые комбинации в местоположениях, заданных в Шумовых постоянных Местоположениях. Местоположение может быть изменено, как желаемый. В этом примере шум будет добавлен к 5-м, 23-м, 34-м, и 12-м кодовым комбинациям, соответствуя символам F2, 07, 1 А, и 9C. Функциональный блок MATLAB® выходные параметры логическая истина только в этих четырех экземпляры времени для каждого пакета, и активирует поразрядную операцию "исключающее ИЛИ" между исходными символами и шумом.

Выходные сигналы

Запустите модель с помощью следующей команды:

sim(modelname);

Просмотр сигналов

Logic Analyzer может использоваться, чтобы просмотреть несколько сигналов в одном окне и просматривающих сигналов, этот путь облегчает наблюдать переходы. Сигналы в этой модели на различных этапах, а именно, перед кодированием, после кодирования, после добавления шума, и после декодирования передаются потоком. Синий значок в модели указывает на переданные потоком сигналы. Запустите Logic Analyzer от панели инструментов модели.

Анализ результатов

В Logic Analyzer вывод сигнал inputdata представляет вход блока энкодера RS, и это - 36-байтовое сообщение, данное в спецификации IEEE 802.16. Закодированные данные показывают вывод блока энкодера RS. Обратите внимание на то, что спецификация IEEE 802.16 выполняет прокалывание байт контроля четности и сохраняет только первые четыре байта 16 байтов. В этой демонстрации используются все 16 байтов четности, и первые четыре байта четности равняются 49, 31, 40, и BF, совпадая со спецификацией IEEE 802.16.

Сигнал errdata представляет закодированные данные с шумом, добавленным в заданных шумовых местоположениях. Эти шумовые местоположения отмечены 1 с в сигнале вставки.

Декодируемое и исправленное сообщение из блока декодера RS показывает сигнал outputdata. Обратите внимание на то, что блок декодера RS вводит приблизительно 3 длины периода задержки. Наблюдайте, что outputdata видит, что ошибки, вызванные шумом, исправляются.

Сгенерируйте HDL-код и испытательный стенд

Чтобы проверять и сгенерировать HDL-код для этого примера, у вас должна быть лицензия HDL Coder™.

Получите уникальное временное имя каталога для сгенерированных файлов,

    workingdir = tempname;

Чтобы проверять, существуют ли какие-либо проблемы с моделью для генерации HDL-кода, можно запустить следующую команду:

    checkhdl('commrshdl/RS Subsystem','TargetDirectory',workingdir);

Введите следующую команду, чтобы сгенерировать HDL-код:

    makehdl('commrshdl/RS Subsystem','TargetDirectory',workingdir);

Введите следующую команду, чтобы сгенерировать испытательный стенд:

    makehdltb('commrshdl/RS Subsystem','TargetDirectory',workingdir);

ModelSim® Output

Следующие данные показывают симулятор HDL ModelSim после выполнения сгенерированных .do скриптов файла для испытательного стенда. Сравните результат ModelSim с результатом Simulink®, как построено прежде.

Выбранные ссылки

1. IEEE 802.16: стандарт IEEE для воздушного интерфейса для широкополосных систем беспроводного доступа (Версия станд. IEEE 802.16-2009). IEEE-SA. 8 июня 2012.

2. Джордж К. Кларк младший, J. Затвор Каин, кодирование с коррекцией ошибок для цифровой связи, Нью-Йорка: Спрингер, 1981.