Используя HDL оптимизированные блоки библиотеки CRC

Этот пример показывает, как использовать блоки библиотеки HDL Optimized CRC Generator и CRC Detector и затем сконфигурировать эти блоки, чтобы соответствовать стандарту IEEE® 802.11 [1].

Введение

Модель показывает, как использовать блоки библиотеки HDL Optimized CRC Generator и Detector для симуляции и генерации HDL-кода. 802,11 стандарта используются в качестве приложения. Чтобы узнать больше о поддержке HDL HDL Оптимизированные блоки CRC, обратитесь к документации. Чтобы узнать больше об алгоритме, используемом в блоках, обратитесь к бумаге в [2].

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

modelname = 'commcrchdl';
open_system(modelname);

В этой модели Подсистема CRC подсистемы верхнего уровня содержит HDL Оптимизированные блоки Генератора и Детектора CRC. Эта подсистема также имеет подсистему AddNoise, что можно принять решение добавить шум в сгенерированную контрольную сумму CRC. Чтобы открыть эту подсистему, запустите следующие команды:

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

Установки параметров

  • Полином

CRC-CCITT используется в стандарте IEEE® 802.11, чтобы защитить поля SERVICE и LENGTH СИГНАЛА. Вектор - строка [1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1] представляет полином:

  • Начальное состояние

Оптимизированный блок CRC Generator HDL в демонстрации использует Прямой метод, т.е. это подает сообщение в старший значащий бит (MSB) сдвигового регистра контрольной суммы и обрабатывает сообщение, не дополняя нули. Детали реализации CRC могут быть найдены в этой модели. Схема реализации CRC IEEE 802.11 проиллюстрирована в рисунке 15-2 802,11 стандартов. Начальное состояние установлено как 1.

  • Итоговое значение XOR

Итоговое значение XOR установлено как 0xFFFF, чтобы реализовать, те дополняют Контрольной суммы CRC.

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

Тестовый вектор в этой модели использует пример сигнал DBPSK, заданный в 802,11 стандартах. Тестовые данные, дополненные нулями CRC_length, обрабатываются на уровне 16 битов/выборок в потоковом режиме. Параметр dataIn_width, который является портом width входных данных входного порта Генератора CRC, задает скорость обработки данных. mlen задает период в запуске сигналов средств управления, окончании, и validIn. dlen задает ширину импульса сигнала validIn. Входные сигналы сконфигурированы в функции обратного вызова InitFcn в диалоговом окне Model Properties.

 %DBPSK data
 data = [0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0];
 crc_len = 16;
 % pad crc_len zero
 msg = [data zeros(1,crc_len)];
 dataIn_width = 16;
 mlen = length(msg)/dataIn_width;
 dlen = length(data)/dataIn_width;

Можно изменить dataIn_width к 8,4,2,1 битам (биту) в этом примере, чтобы соответствовать конструктивным требованиям. Например, если вы обрабатываете данные с длиной 56 кроме дополнения нулей на 8 битов и использования dataIn_with 16, можно выбрать dataIn_width, чтобы быть 8, чтобы гарантировать mlen, и dlen являются всеми целыми числами.

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

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

sim(modelname);

Несколько из ключевых сигналов регистрировались в рабочую область. Эти сигналы могут быть просмотрены в окне Logic Analyzer. Функция commcrchdl_plot показывает, как установить отображение Logic Analyzer. Для получения дополнительной информации о Системе Logic Analyzer object™, обратитесь к dsp.LogicAnalyzer.

h = commcrchdl_plot(dataIn,startIn,endIn,validIn,...
                dataOut_gen,startOut_gen,endOut_gen,validOut_gen,...
                dataIn_det,dataOut_det,startOut_det,endOut_det,validOut_det,err);

входные данные, запуск, окончание и validIn являются входными данными и управляющими сигналами к генератору CRC HDL. dataOut_gen (вывод генератора CRC) отображается, сообщение с контрольной суммой добавило каждый dataIn_width биты на выборку. Можно считать контрольную сумму, когда endOut_gen высок в выходной форме волны. Значение 0x5B57 совпадает с CRC-16 FCS, заданным в 802.11 стандартных Разделах 15.2.3.6. dataIn_det показывает сообщение с поврежденной контрольной суммой. dataOut_det отображает сообщение вывод детектора CRC. Ошибка обнаруживается, когда допускать ошибку сигнал высок. допустите ошибку допустимо, когда endOut_det активен.

Начальные задержки введены при выводе генератора CRC и детектора. Можно вычислить начальные задержки с помощью следующей команды:

 initial_delay_gen =  crc_len/dataIn_width + 2;
 initial_delay_det =  4*crc_len/dataIn_width + 4;

Проверяйте и сгенерируйте HDL-код

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

Можно использовать команды makehdl (subsystemname) и makehdltb (subsystemname), чтобы сгенерировать HDL-код и испытательный стенд для CRC HDL подсистем в Передатчике и CRC HDL в Получателе.

Задайте subsystemname как 'commcrchdl/CRC CRC Подсистемы/HDL в Передатчике' или 'commcrchdl/CRC CRC Подсистемы/HDL в Получателе'.

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

  1. IEEE 802.11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Спецификации. (2 007 версий). IEEE-SA. 12 июня 2007.

  1. Джузеппе Кампобелло, Джузеппе Патане, Марко Руссо. "Параллельная Реализация CRC", Транзакции IEEE на Компьютерах, издании 52, № 10, стр 1312-1319, октябрь 2003.