Этот пример показывает, как проектировать межвыпускника блока и заблокировать блоки deinterleaver и перемежение орудия и deinterleaving в системе связи, используя эти блоки.
Приложения обработки звука и радиопередачи часто влияют из-за пакетного шума. Импульсный шум ухудшает эффективность кодов прямой коррекции ошибок (FEC). Это ухудшение эффективности приводит к ошибкам в декодированных данных. Перемежение является методом, который распространяет непрерывный всплеск ошибок и улучшает декодирование данных с помощью кодов. Перемежение является частью беспроводных стандартов, таких как цифровое видеовещание - спутниковая вторая генерация (DVB-S2), беспроводная локальная сеть (WLAN 802.11) и долгосрочная эволюция (LTE). Этот блок показывает обзор системы связи с перемежителем и перемежителем.
Перемежитель записывает входные данные в строковом формате в память и считывает выходные данные в столбцовом формате из памяти. Перемежитель действует обратным образом путем записи входных данных в столбцовом формате в память и считывания выходных данных в строчном формате из памяти. Количество строк и столбцов определяет степень перемежения. Этот рисунок показывает работу блочного перемежителя и блочного перемежителя с четырьмя строками и четырьмя столбцами.
В этом разделе представлен обзор системы связи, реализованной с использованием WHDLInterleaverModel.slx
модель, которая содержит блоки перемежителя и обратного перемежителя. Входные данные в модель, dataIn, сверточно кодируются с использованием блока Convolutional Encoder. Закодированные данные затем перемежаются Блоком Перемежителя, который находится в Подсистеме Перемежителя. Импульсный шум добавляется к перемеженным данным путем выполнения операции XOR данных с пакетным шумом. Поврежденные данные передаются как вход в подсистему Deinterleaver, где блок Deinterleaver распределяет ошибки пакета в данных. Блок Viterbi Decoder декодирует перемеженные данные и выводит окончательные декодированные данные. Модель содержит дополнительные подсистемы, которые используются для синхронизации блоков в модели. Постоянный блок с interleave
переменная предусмотрена в подсистемах Interleaver и Deinterleaver модели. Можно задать или сбросить interleave
переменная для включения или отключения перемежения.
В этом разделе описываются входные и выходные порты блока перемежителя, который находится в подсистеме перемежителя WHDLInterleaverModel.slx
модель.
Входные порты:
dataIn - Входные данные, которые будут перемежаться. Когда блок выполняет последовательную обработку, dataIn задается как скаляр. Блок поддерживает double
, single
, Boolean
, integer
, и fixed point
типы данных.
startIn - Сигнал запуска блока входных данных, заданный как логический скаляр.
endIn - сигнал End блока входных данных, заданный как логический скаляр.
validIn - Действительный сигнал блока входных данных, заданный как логический скаляр.
Выходные порты:
DataOut - перемеженные данные выходы, возвращенные в виде скаляра. Тип выходных данных совпадает с типом выходных данных порта dataIn.
startOut - Стартовый сигнал выходного блока данных, возвращаемый как логический скаляр.
endOut - сигнал End выходного блока данных, возвращаемый как логический скаляр.
validOut - Действительный сигнал выходного блока данных, возвращаемый как логический скаляр.
ready - Готовый выходной сигнал, используемый для внешнего взаимодействия, возвращаемый как логический скаляр. Перемежитель принимает один новый блок входных данных, все еще обрабатывая более ранний блок данных. Если в качестве входов при обработке предыдущего блока данных задано более одного блока данных, сигнал готовности отключается, указывая, что перемежитель не готов принять новые данные.
Входной и выходной порты блока Deinterleaver, который находится в подсистеме Deinterleaver WHDLInterleaverModel.slx
модели, те же, что и у Блока Перемежителя.
Этот рисунок показывает маску блока перемежителя. Можно использовать этот блок в качестве перемежителя или обратного перемежителя, изменив выбор параметра в маске блока.
Блок Interleaver поддерживает следующие параметры:
Перемежитель - параметр маски Nontunable. Выберите параметр «Перемежитель», чтобы использовать блок в качестве Перемежителя. Очистите этот параметр, чтобы использовать блок в качестве Deinterleaver.
Максимальный размер блока - Nontunable mask parameter. Этот параметр задает максимальный поддерживаемый размер блока. Это значение устанавливает размер ОЗУ, используемой внутри блока. Минимальное значение этого параметра - 4.
Количество столбцов - параметр Nontunable mask. Этот параметр определяет количество столбцов. Минимальное количество столбцов 2 и должно быть коэффициентом максимального размера блока.
Размер блока перемежителя настраивается, что означает, что он может быть скорректирован во время симуляции с помощью входных сигналов начала, конца и допустимых параметров управления. Размер блока является количеством входа допустимых выборок от начала до конца блока данных. Размер блока должен быть целым числом, кратным количеству столбцов. Минимальное значение размера блока - Количество столбцов x 2, и максимальное значение - Максимальный размер блока.
Для примера, если вы задаете параметр Maximum block size как 30, а параметр Number of столбцов как 5, возможные значения настраиваемого размера блока во время симуляции равны 10, 15, 20, 25 и 30. Блок автоматически вычисляет количество строк, которое изменяется с размером блока.
В этом разделе описывается архитектура блока перемежителя. Блок Перемежителя принимает входные данные в виде блоков данных вместе с управляющими сигналами. Блок перемежителя перемежает каждый блок данных независимо. Этот рисунок показывает архитектуру блока перемежителя.
Блок Interleaver содержит три подсистемы и два блока:
Логика записи - Эта подсистема принимает входные сигналы управления и генерирует соответствующие допустимые сигналы записи и записи адресов для записи данных в ОЗУ.
Длина блока хранения - это блок FIFO, который сохраняет длины блоков входных данных во время симуляции.
Логика чтения - Эта подсистема выполняет фактическую операцию перемежения и генерирует адрес чтения для считывания данных из ОЗУ.
Generate Ready - Эта подсистема генерирует готовый выходной сигнал для взаимодействия с другими блоками.
RAM - Этот блок хранит входные данные и выводит перемеженные данные на основе входного адреса чтения.
Только Подсистема Generate Read Address в Подсистеме Read Logic Блока Interleaver и Блока Deinterleaver отличается своей функциональностью, оставшиеся другие подсистемы одинаковы.
Запуск runWHDLInterleaverModel.m
скрипт, чтобы симулировать WHDLInterleaverModel.slx
модель. Скрипт инициализирует, моделирует и проверяет выходы модели. Для оптимальных результатов настройте параметры перемежения в скрипте на основе параметров пакетного шума.
Отключите перемежение, а затем запустите скрипт, чтобы симулировать модель, подтвердить выходы и отобразить ошибки.
errorRateWithoutInterleaving = 0.1354
Включите перемежение, а затем запустите скрипт, чтобы симулировать модель, подтвердить выходы и отобразить ошибки.
errorRateWithInterleaving = 0.0125
Когда вы активируете чередование, вероятность ошибок меньше, чем вероятность ошибки, когда вы отключаете перемежение. Этот результат возникает из-за того, что перемежение улучшает эффективность блока Viterbi Decoder путем распространения ошибок пакета.
Чтобы проверить и сгенерировать HDL-код, на который ссылаются в этом примере, необходимо иметь продукт HDL- Coder™. Чтобы сгенерировать HDL-код, введите эту команду в командной строке MATLAB.
>> makehdl('WHDLInterleaverModel/Deinterleaver/Deinterleaver Block')
Использование ресурсов и частота значений операций варьируются в зависимости от типа входных данных, максимального размера блока и количества столбцов. HDL-код синтезируется для платы оценки ZC706 Xilinx ® Zynq ® -7000 для блока Deinterleaver в подсистеме Deinterleaver с fixdt(1,16,14)
вход, максимальный размер блока 360 и 30 столбцов. В этой таблице приведены данные об использовании почтовых и маршрутных ресурсов. Максимальная частота операции - 292 МГц. Аналогичные результаты получены для Блока Перемежителя в Подсистеме Перемежителя.
Resources Usage _______________ _____ Slice Registers 293 Slice LUT 271 RAMB18 1