Децимируйте сигнал, используя каскадный интегрально-гребенчатый фильтр, оптимизированный для генерации 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 до 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
- В типе выходных данных используется размер слова, заданная в параметре Output word length. Когда вы выбираете эту опцию, блок применяет алгоритм обрезки. Для получения дополнительной информации об алгоритме обрезки см. [1]. Эта опция не поддерживается при выборе параметра Variable decimation.
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 тактов.
Для скалярного входа с переменным десятикратным уменьшением (выбран параметр 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 I является передаточной функцией интеграторной части CIC-фильтра.
H C является передаточной функцией гребенчатой части CIC-фильтра.
N - количество разделов. Количество секций в CIC-фильтре определяется как количество секций в гребенчатой части или интеграторной части фильтра. Это значение не представляет общее количество разделов на протяжении всего фильтра.
R - коэффициент десятикратного уменьшения.
M - дифференциальная задержка.
Блок CIC Decimation HDL Optimized имеет структуру CIC-фильтра, показанную на этом рисунке. Структура состоит из N секций каскадных интеграторов, коэффициента изменения скорости R и N секций каскадных гребенчатых фильтров [1].
Задержку модуля можно найти в интеграторной части CIC-фильтра либо в пути feedforward, либо в пути обратной связи. Эти два строений дают идентичную частотную характеристику фильтра. Однако числовые выходы этих двух строений отличаются из-за задержки блока. Поскольку это строение предпочтительно для реализации HDL, этот блок помещает модуль задержку в feedforward пути интегратора.
Блок понижает значение выходного сигнала каскада интегратора, используя R, либо фиксированную скорость децимирования, обеспечиваемую с использованием параметра Decimation factor (R), либо переменную скорость децимирования, обеспечиваемую с использованием входного порта decimFactor. На этапе понижающей дискретизации блок использует счетчик для подсчета допустимых входных выборок, которые зависят от скорости десятикратного уменьшения. Всякий раз, когда коэффициент десятикратного уменьшения изменяется, блок сбрасывается и начинает новое вычисление из следующей выборки. Этот механизм препятствует накоплению ложных значений блоком. Затем блок предоставляет децимированный выход гребенчатой части CIC-фильтра.
Усиление блока задается как , где:
R - Decimation factor (R) значение параметров.
M - Differential delay (M) значение параметров.
N - Number of sections (N) значение параметров.
Блок реализует коррекцию усиления в двух частях: грубый коэффициент усиления и мелкий коэффициент усиления. При грубой коррекции усиления блок вычисляет значение сдвига, добавляет значение сдвига к дробным битам, чтобы создать численный тип, и выполняет битовый сдвиг влево и повторную интерпретацию. При коррекции точного усиления блок делит оставшийся коэффициент с грубым коэффициентом усиления, если коэффициент усиления не является степенью 2. Затем блок умножает исправленное значение с поправкой на грубый коэффициент усиления на обратное значение точного коэффициента усиления. Прежде чем блок начнет обработку, все возможные значения сдвига и точного усиления предварительно вычисляются и сохраняются в массиве.
Вы можете изменить это уравнение как . В этом уравнении cGain является грубым усилением, а fGain - мелким усилением. Эти усиления заданы этими уравнениями.
Чтобы выполнить коррекцию усиления, когда выбран параметр Variable decimation, блок устанавливает тип выходных данных, сконфигурированный с максимальной частотой десятикратного уменьшения и битовыми сдвигами, оставшимися для всех значений при максимальной скорости десятикратного уменьшения. Значение битового сдвига равно .
То, как блок выводит данные, основано на выборе типа выходных данных. Рассмотрим блок с R, M и N значениями 8, 1 и 3 соответственно и вход шириной 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. В этом случае блок изменяет ширину битов на каждом этапе, основываясь на алгоритме Pruning.
Если значение параметров Output word length меньше, чем количество битов, требуемых на выходе блока, сокращаются наименее значимые биты (LSB) на более ранних стадиях. Алгоритм Хогенауэра [1] предоставляет количество LSB, которые нужно сбросить на каждом этапе. Этот алгоритм минимизирует потерю информации в выход данных.
В этом разделе показаны задержки блока для входного сигнала скаляра, когда блок работает с фиксированной и переменной скоростями десятикратного уменьшения, и для входного сигнала вектора, когда блок работает с фиксированной частотой десятикратного уменьшения.
В этом разделе показан выход блока для входных параметров скаляра с различными значениями 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®- 7000 ZC706 оценочного совета.
Входные данные | Тип десятикратного уменьшения | Срез LUTs | Регистры срезов | Максимальная частота в МГц |
---|---|---|---|---|
Скаляр | Фиксированная ставка | 101 | 166 | 711.74 |
Переменная скорость | 206 | 186 | 441.70 | |
Вектор | Фиксированная ставка | 218 | 627 | 624.61 |
Ресурсы и частоты варьируются в зависимости от типа входных данных, R, M и значений N и других значений параметров, выбранных в маске блока. Использование входного сигнала вектора может увеличить пропускную способность, однако эта опция также увеличивает количество оборудования ресурсов, которые использует блок.
[1] Hogenauer, E. «Economical Class of Цифровые Фильтры for Decimation and Interpolation». Транзакции IEEE по акустике, речи и обработке сигналов 29, № 2 (апрель 1981): 155-62. https://doi.org/10.1109/TASSP.1981.1163535.
Этот блок поддерживает генерацию кода C/C + + для Simulink® режимы Accelerator и Rapid Accelerator и для генерации компонентов DPI.
HDL Coder™ предоставляет дополнительные опции строения, которые влияют на реализацию HDL и синтезированную логику.
Этот блок имеет одну архитектуру HDL по умолчанию.
ConstrainedOutputPipeline | Количество регистров для размещения на выходах путем перемещения существующих задержек в рамках вашего проекта. Распределённая конвейеризация не перераспределяет эти регистры. Значение по умолчанию является |
InputPipeline | Количество входных этапов конвейера для вставки в сгенерированный код. Распределённая конвейеризация и ограниченная выходная конвейеризация могут перемещать эти регистры. Значение по умолчанию является |
OutputPipeline | Количество выходных этапов конвейера для вставки в сгенерированный код. Распределённая конвейеризация и ограниченная выходная конвейеризация могут перемещать эти регистры. Значение по умолчанию является |
dsp.CICCompensationDecimator
| dsp.CICCompensationInterpolator
| dsp.CICDecimator
| dsp.CICInterpolator
| dsp.HDLCICDecimation
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.