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


Блок оптимизации децимации HDL CIC прореживает входной сигнал с использованием каскадного фильтра децимации интегратора-гребенки (CIC). Прореживающие фильтры CIC - класс линейных фазовых КИХ-фильтров, состоящий из гребенчатой части и части интегратора. Структура прореживающих фильтров CIC состоит из N секций каскадных интеграторов, коэффициента изменения скорости R и N секций каскадных гребенчатых фильтров. Дополнительные сведения о фильтрах прореживания CIC см. в разделе Алгоритмы.
Блок поддерживает скалярные и векторные входы. Для обоих типов входов блок обеспечивает скалярный выход. Блок поддерживает фиксированное и переменное прореживание для скалярных входов и только фиксированное прореживание для векторных входов.
Блок обеспечивает архитектуру, подходящую для генерации кода HDL и аппаратного развертывания.
data - Входные данныеУкажите входные данные как скаляр или вектор столбца длиной от 1 до 64. Входные данные должны быть целым числом со знаком или фиксированной точкой со знаком, длина слова должна быть меньше или равна 32. Параметр коэффициента прореживания (R) должен быть целым числом, кратным размеру входного кадра.
Типы данных: int8 | int16 | int32 | fixed point
Поддержка комплексного номера: Да
valid - Индикация действительных входных данныхЭтот порт является управляющим сигналом, указывающим, являются ли входные данные действительными. Когда это значение равно 1блок захватывает значения из порта ввода данных. Когда это значение равно 0, блок игнорирует значения из порта ввода данных.
Типы данных: Boolean
decimFactor - Переменная скорость прореживанияЭтот порт используется для динамического задания переменной скорости прореживания во время выполнения.
Это значение должно иметь тип данных ufix12 и целое число в диапазоне от 2 до значения параметра коэффициента прореживания (R).
Чтобы включить этот порт, выберите параметр Variable decimation.
Типы данных: fixdt(0,12,0)
reset - Очистить внутренние состоянияКогда это значение равно 1блок останавливает текущий расчет и очищает все внутренние состояния. Когда это значение равно 0 и входной допустимый порт: 1, блок начинает новую операцию фильтрации.
Чтобы включить этот порт, выберите параметр Enable reset input port.
Типы данных: Boolean
data - Выходные данные, прореженные CICТип данных этого вывода можно определить путем установки параметра Тип данных вывода.
Типы данных: int8 | int16 | int32 | fixed point
Поддержка комплексного номера: Да
valid - Индикация действительных выходных данныхЭтот порт является управляющим сигналом, указывающим, являются ли данные из порта вывода данных действительными. Когда это значение равно 1блок возвращает действительные данные на выходном порту данных. Когда это значение равно 0, недопустимые значения порта вывода данных.
Типы данных: Boolean
Variable decimation - Переменная скорость прореживанияoff (по умолчанию) | onВыберите этот параметр для работы блока с переменной скоростью прореживания, указанной из входного порта decimFactor.
Очистите этот параметр, чтобы использовать блок с фиксированной скоростью прореживания, указанной из параметра Коэффициент прореживания (R).
Примечание
Для векторных входов блок не поддерживает прореживание переменной.
Decimation factor (R) - Коэффициент прореживания2 (по умолчанию) | целое число от 2 до 2048Укажите коэффициент прореживания, с которым требуется прореживать входные данные.
При выборе параметра Variable decimation параметр Decimation factor (R) задает верхнюю границу диапазона допустимых значений для входного порта decimFactor.
Differential delay (M) - Дифференциальная задержка1 (по умолчанию) | 2Укажите дифференциальную задержку гребенчатой части блока.
Number of sections (N) - Количество интеграторных и гребенчатых секций2 (по умолчанию) | 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 - Тип выходных данных использует длину слова, указанную в параметре Длина выходного слова. При выборе этой опции блок применяет алгоритм сокращения. Для получения дополнительной информации об алгоритме сокращения см. [1]. Этот параметр не поддерживается при выборе параметра прореживания переменной.
Output word length - Длина вывода слова16 (по умолчанию) | целое число от 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 тактовых циклов.
Для скалярного ввода с прореживанием переменной (выбран параметр прореживания переменной):
При сбросе этого параметра задержка блока составляет 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Выберите этот параметр для активизации входного порта сброса.
Передаточной функцией прореживающего фильтра CIC является
− z − RM) N1 = HIN (z)· HcN (z),
где:
HI - передаточная функция интеграторной части фильтра CIC.
HC - передаточная функция гребенчатой части фильтра CIC.
N - количество секций. Количество секций в фильтре CIC определяется как количество секций в гребенчатой или интеграторной части фильтра. Это значение не представляет общее количество сечений во всем фильтре.
R - коэффициент прореживания.
M - дифференциальная задержка.
Блок оптимизации децимации HDL CIC имеет структуру фильтра CIC, показанную на этом рисунке. Структура состоит из N секций каскадных интеграторов, коэффициента изменения скорости R и N секций каскадных гребенчатых фильтров [1].

Задержку блока можно определить в интеграторной части фильтра CIC либо в прямом направлении, либо в канале обратной связи. Эти две конфигурации дают одинаковую частотную характеристику фильтра. Однако числовые выходные сигналы от этих двух конфигураций различны из-за задержки блока. Поскольку эта конфигурация является предпочтительной для реализации ЛПВП, этот блок помещает единичную задержку в прямой путь интегратора.
Блок понижает выборку выходного сигнала каскада интегратора, используя R, либо фиксированную скорость прореживания, предоставленную с использованием параметра коэффициента прореживания (R), либо переменную скорость прореживания, предоставленную с использованием входного порта фактора прореживания. На этапе понижающей дискретизации блок использует счетчик для подсчета действительных входных выборок, которые зависят от скорости прореживания. Всякий раз, когда скорость прореживания изменяется, блок сбрасывает и начинает новое вычисление из следующей выборки. Этот механизм предотвращает накопление ложных значений блоком. Затем блок выдает прореженный выходной сигнал в гребенчатую часть фильтра CIC.
Коэффициент усиления блока задается коэффициентом N, где:
R - значение параметра коэффициента прореживания (R).
M - значение параметра дифференциальной задержки (M).
N - значение параметра Количество секций (N).
Блок реализует коррекцию усиления в двух частях: грубое усиление и мелкое усиление. При грубой коррекции усиления блок вычисляет значение сдвига, добавляет значение сдвига к дробным битам для создания числового типа и выполняет битовый сдвиг влево и повторно интерпретирует. При точной коррекции усиления блок делит оставшееся усиление на грубое, если усиление не является степенью 2. Затем блок умножает скорректированное значение грубого усиления на обратное значение точного усиления. Прежде чем блок начнет обработку, все возможные значения сдвига и точного усиления предварительно вычисляются и сохраняются в массиве.
Это уравнение можно изменить как fУсиление. В этом уравнении cGain является грубым усилением, а fGain - мелким усилением. Эти коэффициенты усиления задаются этими уравнениями.
log2Gain)
cGain
Чтобы выполнить коррекцию усиления, когда выбран параметр переменной прореживания, блок устанавливает тип выходных данных, сконфигурированный с максимальной скоростью прореживания и сдвигами битов, оставшимися для всех значений при максимальной скорости прореживания. Значение битового сдвига равно ).
Способ вывода данных блоком основан на выборе типа выходных данных. Рассмотрим блок со значениями R, M и N 8, 1 и 3, соответственно, и входной шириной 16. Длина выходного слова вычисляется как )],
где:
N
BIN - длина входного слова.
BOUT - длина выходного слова.
Если для параметра 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 to 16блок выводит данные с длиной слова 16. В этом случае блок изменяет битовую ширину на каждом этапе, основываясь на алгоритме Pruning.
Если значение параметра длины выходного слова меньше, чем количество битов, требуемых на выходе блока, наименьшие значащие биты (LSB) на более ранних этапах сокращаются. Алгоритм Гогенауэра [1] обеспечивает количество LSB для отбрасывания на каждом этапе. Этот алгоритм минимизирует потерю информации в выходных данных.

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

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

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

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

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

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

