В этом примере показано, как использовать HDL Оптимизированный Генератор CRC и библиотечные блоки Детектора CRC и затем сконфигурировать эти блоки, чтобы соответствовать стандарту IEEE® 802.11 [1].
Модель показывает, как использовать HDL Оптимизированные библиотечные блоки Генератора и Детектора CRC для симуляции и генерации 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 в демонстрации использует Прямой метод, i.e. это подает сообщение в старший значащий бит (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 dataIn, задает скорость обработки данных. 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 битам (биту) в этом примере, чтобы выполнить проекту requirements.For пример, если вы обрабатываете данные с длиной 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);
dataIn, запуск, заканчиваясь, и 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 Coder™.
Можно использовать команды makehdl (subsystemname) и makehdltb (subsystemname), чтобы сгенерировать HDL-код и испытательный стенд для CRC HDL подсистем в Передатчике и CRC HDL в Приемнике.
Задайте subsystemname как 'commcrchdl/CRC CRC Подсистемы/HDL в Передатчике' или 'commcrchdl/CRC CRC Подсистемы/HDL в Приемнике'.
IEEE 802.11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Технические требования. (2 007 версий). IEEE-SA. 12 июня 2007.
Джузеппе Кампобелло, Джузеппе Патане, Марко Руссо. "Параллельная Реализация CRC", Транзакции IEEE на Компьютерах, издании 52, № 10, стр 1312-1319, октябрь 2003.