Оптимизируйте скорость или область сгенерированного HDL-кода
Со свойствами оптимизации HDL можно задать скорость по сравнению с компромиссами области в сгенерированном коде.
Задайте эти свойства как пары, разделенные запятой аргументов Name,Value
к функции generatehdl
. Name
является именем свойства, и 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
— Extra'on'
(значение по умолчанию) | 'off'
Дополнительный входной регистр, заданный как 'on'
или 'off'
. Когда это свойство установлено в 'on'
, кодер генерирует сигнал под названием input_register
и включает оператор процесса, который управляет регистром. Если понесенная задержка является беспокойством, или если фильтр включен в код, который имеет существующий входной регистр, установите это свойство на 'off'
. Для получения дополнительной информации смотрите Определение или Подавление Зарегистрированного Ввода и вывода.
AddOutputRegister
— Extra регистр вывода'on'
(значение по умолчанию) | 'off'
Дополнительный выходной регистр, заданный как 'on'
или 'off'
. Когда это свойство установлено в 'on'
, кодер генерирует сигнал под названием output_register
и включает оператор процесса, который управляет регистром. Если понесенная задержка является беспокойством, или если фильтр включен в код, который имеет существующий выходной регистр, установите это свойство на 'off'
. Для получения дополнительной информации смотрите Определение или Подавление Зарегистрированного Ввода и вывода.
MultiplierInputPipeline
— Количество настроек канала связи на входных параметрах множителя0
(значение по умолчанию) | неотрицательное целое числоКоличество настроек канала связи на входных параметрах множителя, заданных как неотрицательное целое число. Это свойство применяется только к КИХ-фильтрам. Конвейеризация множителя может значительно увеличить тактовые частоты. Для получения дополнительной информации смотрите, что Ввод и вывод Множителя Конвейерно обрабатывает для КИХ-Фильтров.
Чтобы включить это свойство, установите CoeffMultipliers
на 'multipliers'
.
MultiplierOutputPipeline
— Количество настроек канала связи на множителе выходные параметры0
(значение по умолчанию) | неотрицательное целое числоКоличество настроек канала связи на множителе выходные параметры, заданные как неотрицательное целое число. Это свойство применяется только к КИХ-фильтрам. Конвейеризация множителя может значительно увеличить тактовые частоты. Для получения дополнительной информации смотрите, что Ввод и вывод Множителя Конвейерно обрабатывает для КИХ-Фильтров.
Чтобы включить это свойство, установите 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
— Разделы для последовательной архитектуры фильтра-1
(значение по умолчанию) | эффективная длина фильтра | [p1 p2 ... pN]
| массив ячеек последовательных разделовРазделы для последовательной архитектуры фильтра, заданной как одно из следующего:
-1
— Кодер генерирует полностью параллельную архитектуру. Эта архитектура эквивалентна последовательному разделу, заданному как вектор из единиц размера эффективной длины фильтра.
Эффективная длина фильтра — кодер генерирует полностью последовательную архитектуру.
— Кодер генерирует частично последовательную архитектуру с разделами [p1 p2 ... pN]
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
— Разделы интерполяционной таблицы для распределенной арифметики-1
(значение по умолчанию) | эффективная длина фильтра | [p1 p2 ... pN]
| {p1 p2 ... pN; q1 q2 ... qN; ... }
| массив ячеек разделов DALUTИнтерполяционная таблица (LUT) разделы для распределенной арифметики (DA), заданной как одно из следующего:
-1
— Кодер генерирует полностью параллельную архитектуру.
Эффективная длина фильтра — кодер генерирует реализацию DA без разделения LUT.
— Кодер генерирует реализацию DA с разделами LUT [p1 p2 ... pN]
N
. Целые числа в векторе задают размер каждого раздела. Максимальный размер для отдельного раздела равняется 12. Сумма векторных элементов должна быть равна эффективной длине фильтра. Для многоскоростных фильтров каждый многофазный подфильтр использует те же разделы LUT. Для примера смотрите Распределенную Арифметику для Одного Фильтров Уровня.
— Кодер генерирует реализацию DA с {p1 p2 ... pN; 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
— Количество битов, обработанных одновременно в распределенной арифметике2
(значение по умолчанию) | 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
(значение по умолчанию) | положительное целое числоСворачивание фактора для БИХ-фильтра, заданного как 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.