Десятикратно уменьшите сигнал с помощью каскадного интегрально-гребенчатого фильтра, оптимизированного для генерации HDL-кода
Поддержка HDL DSP System Toolbox / фильтрация


Блок CIC Decimation HDL Optimized десятикратно уменьшает входной сигнал при помощи децимирующего фильтра каскадной расчески интегратора (CIC). Децимирующие фильтры CIC являются классом КИХ-фильтров линейной фазы, состоящих из части расчески и части интегратора. Структура децимирующего фильтра CIC состоит из разделов N каскадных интеграторов, фактора изменения уровня R и разделов N каскадных гребенчатых фильтров. Для получения дополнительной информации о децимирующих фильтрах CIC, см. Алгоритмы.
Блок поддерживает скалярные и векторные входные параметры. Для обоих типов входных параметров блок обеспечивает скалярный выход. Поддержки блока зафиксированная и переменная децимация для скалярных входных параметров и только зафиксированная децимация для векторных входных параметров.
Блок обеспечивает архитектуру, подходящую для аппаратного развертывания и генерации HDL-кода.
data — Входные данныеЗадайте входные данные как скаляр или вектор-столбец длины 1 - 64. Входные данные должны быть целым числом со знаком или подписанной фиксированной точкой с размером слова, меньше чем или равным 32. параметр Decimation factor (R) должен быть целочисленным кратным размер входного кадра.
Типы данных: int8 | int16 | int32 | fixed point
Поддержка комплексного числа: Да
valid — Индикация относительно допустимых входных данныхЭтот порт является управляющим сигналом, который указывает, допустимы ли входные данные. Когда этим значением является 1, блок получает значения от входного порта data. Когда этим значением является 0, блок игнорирует значения от входного порта data.
Типы данных: Boolean
decimFactor — Переменный уровень децимацииИспользуйте этот порт, чтобы динамически задать переменный уровень децимации в течение времени выполнения.
Это значение должно иметь тип данных ufix12 и целое число в диапазоне от 2 до значения параметров Decimation factor (R).
Чтобы включить этот порт, выберите параметр Variable decimation.
Типы данных: fixdt(0,12,0)
reset — Очистите внутренние состоянияКогда этим значением является 1, блок останавливает текущее вычисление и очищает все внутренние состояния. Когда этим значением является 0 и портом входа valid является 1, блок запускает новую операцию фильтрации.
Чтобы включить этот порт, выберите параметр Enable reset input port.
Типы данных: Boolean
data — CIC-подкошенные выходные данныеМожно задать тип данных этого выхода путем установки параметра Output data type.
Типы данных: int8 | int16 | int32 | fixed point
Поддержка комплексного числа: Да
valid — Индикация относительно допустимых выходных данныхЭтот порт является управляющим сигналом, который указывает, допустимы ли данные из выходного порта data. Когда этим значением является 1, блок возвращает допустимые данные по выходному порту data. Когда этим значением является 0, значения на выходном порте data не допустимы.
Типы данных: Boolean
Variable decimation — Переменный уровень децимацииoff (значение по умолчанию) | onВыберите этот параметр, чтобы управлять блоком с переменным уровнем децимации, заданным от входного порта decimFactor.
Очистите этот параметр, чтобы управлять блоком с фиксируемой ставкой децимации, заданной от параметра Decimation factor (R).
Примечание
Для векторных входных параметров блок не поддерживает переменную децимацию.
Decimation factor (R) — Фактор децимации (значение по умолчанию) | целое число от 2 до 2 048Задайте уровень фактора децимации, с которым вы хотите десятикратно уменьшить вход.
Когда вы выбираете параметр Variable decimation, наборы параметров Decimation factor (R) верхняя граница области значений допустимых значений для входного порта decimFactor.
Differential delay (M) — Дифференциальная задержка (значение по умолчанию) | 2Задайте дифференциальную задержку части расчески блока.
Number of sections (N) — Количество интегратора и разделов расчески (значение по умолчанию) | 1| 3 | 4 | 5 | 6 Задайте количество разделов или в части расчески или в части интегратора блока.
Output data type — Тип данных выходаFull precision (значение по умолчанию) | Same word length as input | Minimum section word lengthsВыберите тип данных для выходных данных.
Full precision — Тип выходных данных перебрасывается парой слов длина, равная входному размеру слова плюс биты усиления.
Same word length as input — Тип выходных данных перебрасывается парой слов длина, равная входному размеру слова.
Minimum section word lengths — Тип выходных данных использует размер слова, который вы задаете в параметре Output word length. Когда вы выбираете эту опцию, блок применяет алгоритм Сокращения. Для получения дополнительной информации об алгоритме Сокращения, см. [1]. Эта опция не поддерживается, когда вы выбираете параметр Variable decimation.
Output word length — Размер слова выхода (значение по умолчанию) | целое число от 2 до 104Задайте размер слова выхода.
Примечание
Когда этим значением является 2, 3, 4, 5, или 6, блок может переполнить выходных данных.
Чтобы включить этот параметр, установите параметр Output data type на Minimum section word lengths.
Gain correction — Выведите компенсацию усиленияoff (значение по умолчанию) | onВыберите этот параметр, чтобы компенсировать выходное усиление блока.
В зависимости от типа входа децимация вы задаете, и значение этого параметра, задержка изменений блока. Здесь, N означает количество разделов, и vecLen означает длину вектора.
Для скалярного входа с фиксированной децимацией (параметр Variable decimation очищен):
Когда вы очищаете этот параметр, задержка блока равняется 3 + такты N.
Когда вы выбираете этот параметр, задержка блока равняется 3 + N + 9 тактов.
Для скалярного входа с переменной децимацией (параметр Variable decimation выбран):
Когда вы очищаете этот параметр, задержка блока равняется 4 + такты N.
Когда вы выбираете этот параметр, задержка блока равняется 4 + N + 9 тактов.
Для векторного входа с фиксированной децимацией (параметр Variable decimation очищен):
Когда вы очищаете этот параметр, задержкой блока является floor((vecLen – 1) * (N/vecLen)) + 1 + N + (2 + (vecLen + 1) * такты N.
Когда вы выбираете этот параметр, задержкой блока является floor((vecLen – 1) * (N/vecLen)) + 1 + N + (2 + (vecLen + 1) * N) + 9 тактов.
Примечание
Для векторных входных параметров блок не поддерживает переменную децимацию.
Enable reset input port — Сбросьте сигналoff (значение по умолчанию) | onВыберите этот параметр, чтобы включить входной порт reset.
Передаточная функция децимирующего фильтра CIC
где:
H я - передаточная функция части интегратора CIC-фильтра.
H C является передаточной функцией части расчески CIC-фильтра.
N является количеством разделов. Количество разделов в CIC-фильтре задано как количество разделов или в части расчески или в части интегратора фильтра. Это значение не представляет общее количество разделов в целом фильтре.
R является фактором децимации.
M является дифференциальной задержкой.
Блоку CIC Decimation HDL Optimized показали структуру CIC-фильтра в этом рисунке. Структура состоит из разделов N каскадных интеграторов, фактора изменения уровня R и разделов N каскадных гребенчатых фильтров [1].

Можно определить местоположение единичной задержки в части интегратора CIC-фильтра или в feedforward или в пути к обратной связи. Эти две настройки дают к идентичной частотной характеристике фильтра. Однако числовые выходные параметры от этих двух настроек отличаются из-за задержки блока. Поскольку эта настройка предпочтена для реализации HDL, этот блок помещает единичную задержку в путь прямого распространения интегратора.
Блок прореживает этап интегратора выход с помощью R, или фиксируемая ставка децимации обеспечила, использование параметра Decimation factor (R) или переменного уровня децимации обеспечило использование входного порта decimFactor. На этапе downsampler блок использует в противоречии с количеством допустимые входные выборки, которые зависят от уровня децимации. Каждый раз, когда уровень децимации изменяется, блок сбрасывает и запускает новое вычисление со следующей выборки. Этот механизм препятствует тому, чтобы блок накопил ложные значения. Затем блок предоставляет подкошенный выход части расчески CIC-фильтра.
Усилением блока дают , где:
R является значением параметров Decimation factor (R).
M является значением параметров Differential delay (M).
N является значением параметров Number of sections (N).
Блок реализует коррекцию усиления в двух частях: крупное усиление и прекрасное усиление. В крупной коррекции усиления блок вычисляет значение сдвига, добавляет значение сдвига к дробным битам, чтобы создать числовой тип и выполняет оставленный сдвиг разряда и reinterpretcast. В прекрасной коррекции усиления блок делит остающееся усиление с крупным усилением, если усиление не является степенью 2. Затем блок умножается, откорректированное крупное усиление откорректировало значение обратным значением прекрасного усиления. Прежде чем блок начинает обрабатывать, весь возможный сдвиг и прекрасные значения усиления предварительно вычисляются первоначально и хранятся в массиве.
Можно изменить это уравнение как . В этом уравнении cGain является крупным усилением, и fGain является прекрасным усилением. Эти усиления даны этими уравнениями.
Чтобы выполнить коррекцию усиления, когда параметр Variable decimation выбран, блок устанавливает тип выходных данных, сконфигурированный с максимальным уровнем децимации, и сдвиги разряда уехали во все значения под максимальным уровнем децимации. Значение сдвига разряда равно .
Как блок выходные данные основан на выборе типа выходных данных. Рассмотрите блок с R, M и значениями N 8, 1, и 3, соответственно, и вход width 16. Выходной размер слова вычисляется как ,
где:
B IN является входным размером слова.
B OUT является выходным размером слова.
Когда вы устанавливаете параметр Output data type на Full precision, блок выходные данные с размером слова 25 путем добавления девяти битов усиления во входной размер слова 16.

Когда вы устанавливаете параметр Output data type на Same word length as input, выходные данные о блоке с размером слова 16, который является той же длиной как входной размер слова. Внутренний интегратор и этапы расчески используют тип данных полной точности с 25 битами.

Когда вы устанавливаете параметр Output data type на Minimum section word lengths и параметр Output word length к 16, блок выходные данные с размером слова 16. В этом случае блок изменяет битную ширину на каждом этапе, на основе алгоритма Сокращения.
Если значение параметров Output word length меньше количества битов, требуемых в блоке выход, младшие значащие биты (LSBs) в более ранних стадиях сокращены. Алгоритм Hogenauer [1] обеспечивает количество LSBs, чтобы отбросить на каждом этапе. Этот алгоритм минимизирует потерю информации в выходных данных.

Этот раздел показывает задержки блока для скалярного входа, когда блок управляется с фиксированными и переменными уровнями децимации и для векторного входа, когда блок управляется с фиксируемой ставкой децимации.
Этот раздел показывает выход блока для скалярного входа с различным R, M и значениями N.
Этот рисунок показывает выход блока для настройки по умолчанию (то есть, с фиксируемой ставкой децимации и R, M и значениями N 2, 1, и 2, соответственно). Блок возвращает допустимые выходные данные в каждом втором цикле на основе фиксированного значения параметров Decimation factor (R) 2. Задержка блока является 5 тактами и вычисляется как 3 + N, где N является количеством разделов.

Этот рисунок показывает выход блока с фиксируемой ставкой децимации, R, M и значениями N 8, 1, и 3, соответственно, и выбранный параметр Gain correction. Блок возвращает допустимые выходные данные в каждом восьмом цикле на основе фиксированного значения параметров Decimation factor (R) 8. Задержка блока является 15 тактами и вычисляется как 3 + N + 9, где N является количеством разделов.

Этот рисунок показывает выход блока с переменным уровнем децимации (входной порт decimFactor) значения 2, 4, и 8 и для M и значений N 1 и 3, соответственно. В этом случае параметр Gain correction очищен. Блок возвращает допустимые выходные данные во-вторых, в-четвертых, и восьмые циклы, соответствующие значениям порта decimFactor 2, 4, и 8, соответственно. Блок признает, что значение порта decimFactor изменяется только, когда входным портом valid является 1. Задержка блока является 7 тактами и вычисляется как 4 + N, где N является количеством разделов.

Задержка блока для векторного входа вычисляется с помощью этой формулы: floor((vecLen – 1) * (N/vecLen)) + 1 + N + 9 * Gain correction + (2 + (vecLen + 1) * N), где vecLen является длиной вектора и N, является количеством разделов.
Этот рисунок показывает выход блока для двухэлементного входа вектор-столбца с настройкой по умолчанию, (то есть, с фиксируемой ставкой децимации и R, M и значениями N 2, 1, и 2, соответственно). Задержка блока является 12 тактами.

Этот рисунок показывает выход блока для входа вектор-столбца с восемью элементами с фиксируемой ставкой децимации, R, M и значениями N 8, 1, и 3, соответственно, и выбранный параметр Gain correction. Задержка блока является 44 тактами.

Эффективность синтезируемого HDL-кода меняется в зависимости от вашей цели и опций синтеза. Эта таблица показывает результаты синтеза данных ресурсов и данных о производительности блока для скалярного входа с фиксированными и переменными уровнями децимации и для двухэлементного входа вектор-столбца с фиксируемой ставкой децимации, когда R, M и N равняются 2, 1, и 2, соответственно. Сгенерированный HDL предназначен к Xilinx® Zynq®- 7 000 оценочных плат ZC706.
| Входные данные | Тип децимации | Срез LUTs | Регистры среза | Максимальная частота в МГц |
|---|---|---|---|---|
| Скаляр | Фиксированная процентная ставка | 101 | 166 | 711.74 |
| Плавающий курс | 206 | 186 | 441.70 | |
| Вектор | Фиксированная процентная ставка | 218 | 627 | 624.61 |
Ресурсы и частоты варьируются на основе типа входных данных, R, M, и значений N и других значений параметров, выбранных в маске блока. Используя векторный вход может увеличить пропускную способность, однако эта опция также увеличивает число аппаратных ресурсов, которые использует блок.
[1] Hogenauer, E. “Экономичный Класс Цифровых фильтров для Децимации и Интерполяции”. Транзакции IEEE на Акустике, Речи и Обработке сигналов 29, № 2 (апрель 1981): 155–62. https://doi.org/10.1109/TASSP.1981.1163535.
Этот блок поддерживает генерацию кода C/C++ для Simulink® акселератор и быстрые режимы Accelerator и для генерации компонента DPI.
HDL Coder™ обеспечивает дополнительные параметры конфигурации, которые влияют на реализацию HDL и синтезируемую логику.
Этот блок имеет одну, архитектуру HDL по умолчанию.
| ConstrainedOutputPipeline | Количество регистров, чтобы поместить при выходных параметрах путем перемещения существующих задержек в рамках проекта. Распределенная конвейеризация не перераспределяет эти регистры. |
| InputPipeline | Количество входных настроек канала связи, чтобы вставить в сгенерированный код. Распределенная конвейеризация и ограниченная выходная конвейеризация могут переместить эти регистры. |
| OutputPipeline | Количество выходных настроек канала связи, чтобы вставить в сгенерированный код. Распределенная конвейеризация и ограниченная выходная конвейеризация могут переместить эти регистры. |
dsp.CICDecimator | dsp.CICInterpolator | dsp.CICCompensationDecimator | dsp.CICCompensationInterpolator | dsp.HDLCICDecimation1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.

