Оптимизируйте скорость или область сгенерированного HDL-кода
Со свойствами оптимизации HDL можно задать скорость по сравнению с компромиссами области в сгенерированном коде.
Задайте эти свойства в качестве аргументов значения имени к generatehdl
functionName
имя свойства и Value
соответствующее значение. Можно задать несколько аргументов значения имени в любом порядке как 'Name1',Value1,...,'NameN',ValueN
.
Например:
fir = dsp.FIRFilter('Structure','Direct form antisymmetric'); generatehdl(fir,'InputDataType',numerictype(1,16,15),'AddPipelineRegisters','on');
AddPipelineRegisters
— Оптимизируйте тактовую частоту с конвейерными регистрами'off'
(значение по умолчанию) | 'on'
Оптимизируйте тактовую частоту с конвейерными регистрами в виде 'off'
или 'on'
. Вы не можете использовать это свойство с полностью последовательным или расположить каскадом последовательные фильтры. Когда вы устанавливаете это свойство на 'on'
, кодер добавляет конвейерные регистры между этапами расчета фильтра. Несмотря на то, что регистры добавляют к полной задержке фильтра, они предоставляют существенные улучшения тактовой частоте.
Отфильтруйте тип | Местоположение добавленного конвейерного регистра |
---|---|
КИХ транспонирован | Между содействующими множителями и сумматорами |
Прямой КИХ формы, антисимметричный КИХ и симметричный КИХ |
Между уровнями основанного на дереве итогового сумматора Для альтернативного основанного на дереве метода суммирования см. также свойство |
БИХ | Между разделами |
CIC | Между разделами расчески |
Для получения дополнительной информации смотрите Оптимизацию Тактовой частоты с Конвейерными Регистрами.
FIRAdderStyle
— Оптимизируйте тактовую частоту с методом суммирования'linear'
(значение по умолчанию) | 'tree'
| 'pipelined'
Оптимизируйте тактовую частоту с методом суммирования в виде 'linear'
, 'tree'
, или 'pipelined'
. Это свойство применяется только к прямому КИХ формы, антисимметричному КИХ и симметричным КИХ-фильтрам. Вы не можете использовать это свойство с полностью последовательным или расположить каскадом последовательные фильтры. Когда вы устанавливаете это свойство на 'tree'
, кодер создает итоговый сумматор, который выполняет попарное сложение на последовательных продуктах, которые выполняются параллельно, а не последовательно. Когда вы устанавливаете это свойство на 'pipelined'
, кодер создает основанный на дереве итоговый сумматор с конвейерными регистрами между уровнями дерева.
Для получения дополнительной информации смотрите Оптимизирующее Итоговое Суммирование для КИХ-Фильтров.
Это свойство применяется только когда AddPipelineRegisters
свойство установлено в 'off'
.
AddInputRegister
— Дополнительный входной регистр'on'
(значение по умолчанию) | 'off'
Дополнительный входной регистр в виде 'on'
или 'off'
. Когда это свойство установлено в 'on'
, кодер генерирует сигнал под названием input_register
и включает оператор процесса, который управляет регистром. Если понесенная задержка является беспокойством, или если фильтр включен в код, который имеет существующий входной регистр, установите это свойство на 'off'
. Для получения дополнительной информации смотрите Определение или Подавление Зарегистрированного Ввода и вывода.
AddOutputRegister
— Дополнительный выходной регистр'on'
(значение по умолчанию) | 'off'
Дополнительный выходной регистр в виде 'on'
или 'off'
. Когда это свойство установлено в 'on'
, кодер генерирует сигнал под названием output_register
и включает оператор процесса, который управляет регистром. Если понесенная задержка является беспокойством, или если фильтр включен в код, который имеет существующий выходной регистр, установите это свойство на 'off'
. Для получения дополнительной информации смотрите Определение или Подавление Зарегистрированного Ввода и вывода.
MultiplierInputPipeline
— Количество настроек канала связи на входных параметрах множителя
(значение по умолчанию) | неотрицательное целое числоКоличество настроек канала связи на множителе вводит в виде неотрицательного целого числа. Это свойство применяется только к КИХ-фильтрам. Конвейеризация множителя может значительно увеличить тактовые частоты. Для получения дополнительной информации смотрите, что Ввод и вывод Множителя Конвейерно обрабатывает для КИХ-Фильтров.
Чтобы включить это свойство, установите CoeffMultipliers
к 'multipliers'
.
MultiplierOutputPipeline
— Количество настроек канала связи на множителе выходные параметры
(значение по умолчанию) | неотрицательное целое числоКоличество настроек канала связи на множителе выходные параметры в виде неотрицательного целого числа. Это свойство применяется только к КИХ-фильтрам. Конвейеризация множителя может значительно увеличить тактовые частоты. Для получения дополнительной информации смотрите, что Ввод и вывод Множителя Конвейерно обрабатывает для КИХ-Фильтров.
Чтобы включить это свойство, установите CoeffMultipliers
к 'multipliers'
.
OptimizeForHDL
— Оптимизация HDL-кода'off'
(значение по умолчанию) | 'on'
Оптимизация HDL-кода в виде 'off'
или 'on'
. По умолчанию кодер генерирует литеральную реализацию фильтра с числовым поведением, которое совпадает с объектом фильтра точно. Эта реализация является не обязательно оптимальной реализацией HDL. Когда это свойство установлено в 'on'
, кодер уменьшает область аппаратной реализации и оптимизирует эффекты квантования и типы данных. Для получения дополнительной информации о базовых компромиссах, смотрите, Оптимизируют для HDL.
CoeffMultipliers
— Реализация содействующего умножения'multiplier'
(значение по умолчанию) | 'csd'
| 'factored-csd'
Реализация содействующего умножения в виде 'multiplier'
, 'csd'
, или 'factored-csd'
. Вы не можете использовать это свойство с многоскоростными или последовательными фильтрами.
'multiplier'
— Кодер сохраняет логику множителя в сгенерированном HDL-коде.
'csd'
или 'factored-csd'
— Кодер реализует умножение с помощью логики канонической цифры со знаком (CSD). Метод CSD заменяет множители на сдвиг, и добавьте логику. Этот метод также минимизирует количество сумматоров, используемых для постоянного умножения путем представления двоичных чисел минимальным количеством ненулевых цифр. Эта оптимизация уменьшает область, используемую фильтром при поддержании или увеличении тактовой частоты.
'factored-csd'
— Кодер реализует умножение с помощью учтенной логики CSD. Учтенный CSD заменяет операции множителя на сдвиг, и добавьте операции на простых множителях коэффициентов. Эта опция достигает большего сокращения области, чем CSD, за счет уменьшения тактовой частоты.
Для получения дополнительной информации смотрите Оптимизацию CSD для Содействующих Множителей.
SerialPartition
— Разделы для последовательных архитектур фильтра
(значение по умолчанию) | эффективная длина фильтра | [p1 p2... pN
]
| массив ячеек последовательных разделовРазделы для последовательных архитектур фильтра в виде одного из следующего:
-1 — Кодер генерирует полностью параллельную архитектуру. Эта архитектура эквивалентна последовательному разделу, заданному как вектор из единиц размера эффективной длины фильтра.
Эффективная длина фильтра — кодер генерирует полностью последовательную архитектуру.
[p1 p2... p
— Кодер генерирует частично последовательную архитектуру с N
]N
разделы. Целые числа в векторе задают длину каждого раздела. Сумма векторных элементов должна быть равна эффективной длине фильтра. Чтобы уменьшать область далее, можно сгенерировать каскадно-последовательную архитектуру путем включения ReuseAccum
свойство. Для некоторых примеров смотрите, Генерируют Последовательные Разделы для КИХ-Фильтра.
Массив ячеек последовательных разделов — кодер генерирует разделы для каждого этапа фильтра в каскадном фильтре. Задайте разделы для каждого этапа фильтра как -1
, эффективная длина фильтра или вектор из целых чисел. Элементы каждого вектора должны суммировать к эффективной длине фильтра связанного, просачиваются каскад. Для примера смотрите, Генерируют Последовательные Разделы Каскадного Фильтра.
Когда последовательный раздел этапа фильтра установлен в -1
, можно задать раздел LUT для того этапа при помощи DALUTPartition
и DARadix
свойства. Для получения дополнительной информации см. Опции Архитектуры для Каскадных Фильтров.
Вы не можете использовать это свойство с БИХ-фильтрами SOS. Чтобы сгенерировать последовательные архитектуры для БИХ-фильтров SOS, используйте FoldingFactor
или NumMultipliers
свойства вместо этого.
Используйте эту таблицу в качестве руководства для вычисления эффективной длины фильтра. В качестве альтернативы можно использовать hdlfilterserialinfo
функционируйте, чтобы отобразить эффективную длину фильтра и возможные разделы для фильтра.
Отфильтруйте тип | Эффективный расчет длины фильтра |
---|---|
Прямая форма | FL = length(find(filt.Numerator~= 0)) |
Прямая симметричная форма | FL = ceil(length(find(filt.Numerator~= 0))/2) |
Прямая антисимметричная форма |
Для получения дополнительной информации смотрите Скорость Определения по сравнению с Компромиссами области через generatehdl Свойства.
Для обзора параллельных и последовательных архитектур и списка типов фильтра, поддержанных для каждой архитектуры, смотрите Скорость по сравнению с Компромиссами области.
ReuseAccum
— Повторное использование аккумулятора для каскадно-последовательной архитектуры'off'
(значение по умолчанию) | 'on'
Повторное использование аккумулятора для каскадно-последовательной архитектуры в виде 'off'
или 'on'
. Когда это свойство установлено в 'on'
, фильтр групп кодера наслаждается несколькими последовательными разделами. Накопленный выход каждого раздела располагается каскадом к аккумулятору предыдущего раздела. Выход разделов поэтому вычисляется в аккумуляторе первого раздела. Этот метод, названный accumulator reuse, сохраняет область чипа. Если свойство SerialPartition
не задан, кодер генерирует оптимальный раздел. Для получения дополнительной информации смотрите Скорость Определения по сравнению с Компромиссами области через generatehdl Свойства.
Для обзора параллельных и последовательных архитектур и списка типов фильтра, поддержанных для каждой архитектуры, смотрите Скорость по сравнению с Компромиссами области.
DALUTPartition
— Разделы интерполяционной таблицы для распределенной арифметики
(значение по умолчанию) | эффективная длина фильтра | [p1 p2... pN
]
| {p1 p2... pN
; q1 q2... qN
; ... }
| массив ячеек разделов DALUTИнтерполяционная таблица (LUT) разделы для распределенной арифметики (DA) в виде одного из следующего:
-1 — Кодер генерирует полностью параллельную архитектуру.
Эффективная длина фильтра — кодер генерирует реализацию DA без разделения LUT.
[p1 p2... p
— Кодер генерирует реализацию DA с N
]N
Разделы LUT. Целые числа в векторе задают размер каждого раздела. Максимальный размер для отдельного раздела равняется 12. Сумма векторных элементов должна быть равна эффективной длине фильтра. Для многоскоростных фильтров каждый многофазный подфильтр использует те же разделы LUT. Для примера смотрите Распределенную Арифметику для Одного Фильтров Уровня.
{p1 p2... p
— Кодер генерирует реализацию DA с N
; q1 q2... qN
; ... }N
уникальные разделы LUT для каждого многофазного подфильтра многоскоростного фильтра. Каждая строка матрицы задает разделы для одного подфильтра. Элементы в каждой строке должны суммировать к связанной длине подфильтра, FLi
. Для примера смотрите Распределенную Арифметику для Многоскоростных фильтров.
Массив ячеек разделов DALUT — кодер генерирует реализацию DA с различными разделами LUT для каждого этапа фильтра каскада. Задайте разделы LUT для каждого этапа фильтра как -1
, эффективная длина фильтра или вектор из целых чисел. Элементы каждого вектора должны суммировать к эффективной длине фильтра связанного, просачиваются каскад. Для примера смотрите Распределенную Арифметику для Каскадных Фильтров.
Когда раздел LUT этапа фильтра установлен в -1
, можно задать последовательный раздел для того этапа при помощи SerialPartition
свойство. Для получения дополнительной информации см. Опции Архитектуры для Каскадных Фильтров.
Используйте эту таблицу в качестве руководства для вычисления эффективной длины фильтра. В качестве альтернативы можно использовать hdlfilterdainfo
функционируйте, чтобы отобразить эффективную длину фильтра, опции разделения LUT и возможный DARadix
значения для фильтра.
Отфильтруйте тип | Эффективный расчет длины фильтра |
---|---|
Прямая форма | FL = length(find(filt.Numerator~= 0)) |
Прямая симметричная форма | FL = ceil(length(find(filt.Numerator~= 0))/2) |
Прямая антисимметричная форма | |
Многоскоростной с универсальными разделами LUT для каждого многофазного подфильтра | FL = size(polyphase(filt),2) |
Многоскоростной с уникальными разделами LUT для каждого многофазного подфильтра | p = многофазный (filt) , где i индекс к i строка th многофазной матрицы фильтра. i строка th матричного p представляет i подфильтр th. |
Для получения дополнительной информации смотрите Распределенную Арифметику для КИХ-Фильтров.
DARadix
— Количество битов, обработанных одновременно в распределенной арифметике
(значение по умолчанию) | 2N
| {2N,2M,...}
Количество битов, обработанных одновременно в распределенной арифметике (DA) в виде 2
, 2N
, или {2N,2M,...}
где:
N > 0
mod(W,N) = 0
, где W
входной размер слова фильтра
2N
<= 2W
Это свойство задает степень параллелизма в архитектуре DA, которая может улучшить тактовую частоту за счет области.
21 — Кодер реализует полностью последовательную архитектуру DA тот процессы 1 бит за один раз.
2N
— Кодер генерирует частично последовательную архитектуру DA когда 1 < N < W
.
2W
— Кодер генерирует полностью параллельную архитектуру DA.
{2N,2M,...}
— Кодер генерирует реализацию DA с различным DARadix
значения для каждого фильтра подготавливают в каскадном фильтре. Для примера смотрите Распределенную Арифметику для Каскадных Фильтров.
Когда DARadix
значение этапа фильтра установлено к 2, можно задать последовательную архитектуру для того этапа при помощи SerialPartition
свойство. Для получения дополнительной информации см. Опции Архитектуры для Каскадных Фильтров.
Для получения дополнительной информации смотрите Распределенную Арифметику для КИХ-Фильтров.
FoldingFactor
— Сворачивание фактора для БИХ-фильтра
(значение по умолчанию) | положительное целое числоСворачивание фактора для БИХ фильтрует в виде 1
или положительное целое число. Используйте это свойство задать последовательную архитектуру для прямой формы I или прямой формы II фильтров SOS. Чтобы уменьшать область в последовательной реализации архитектуры, можно совместно использовать множители за счет задержки. Складной фактор задает фактор, которым тактовая частота увеличивается в ответ на оптимизацию области.
Можно задать любого FoldingFactor
свойство или NumMultipliers
свойство, но не оба. Если вы не задаете ни одно свойство, кодер генерирует полностью параллельную архитектуру.
Для примера смотрите, Генерируют Последовательные Архитектуры для БИХ-Фильтра. Получить информацию о FoldingFactor
опции и соответствующий NumMultipliers
, вызовите hdlfilterserialinfo
функция.
NumMultipliers
— Количество разделяемых множителей для БИХ-фильтраКоличество разделяемых множителей для БИХ фильтрует в виде положительного целого числа. Используйте это свойство задать последовательную архитектуру для прямой формы I или прямой формы II фильтров SOS. Разделяемые множители уменьшают область за счет увеличенной тактовой частоты.
Можно задать любого NumMultipliers
свойство или FoldingFactor
свойство, но не оба. Если вы не задаете ни одно свойство, кодер генерирует полностью параллельную архитектуру.
Для примера смотрите, Генерируют Последовательные Архитектуры для БИХ-Фильтра. Получить информацию о NumMultipliers
опции и соответствующий FoldingFactor
, вызовите hdlfilterserialinfo
функция.
Если вы используете fdhdltool
функция, чтобы сгенерировать HDL-код, можно установить соответствующие свойства в диалоговом окне Generate HDL.
Свойство | Местоположение в диалоговом окне |
---|---|
Add input register | Вкладка Global Settings> вкладка Ports |
Add output register | |
Дополнительные свойства оптимизации | Вкладка Filter Architecture Смотрите также:
|
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.