Выполните умножение - накапливают операцию на входных параметрах
HDL Coder / Операции HDL
Блок Multiply-Accumulate выполняет эту операцию на входных параметрах a
B
, и сместите c
вычислить результат dataOut
.
dataOut = sum(a.* b) + c
По умолчанию блок действует в векторном режиме. Входные параметры a
и b
могут быть скаляры, векторы или 2D матрицы. По умолчанию, значение смещения c
равен нулю. Блок вычисляет скалярное произведение входных параметров a
и b
. Можно задать ненулевое значение для c
при помощи Dialog
или Input port
как Source. Блок добавляет это смещение в скалярное произведение a
и b
. Операция умножения является полной точностью независимо от установки Output data type. Настройки Output data type и Integer rounding mode применяются к операции сложения.
При помощи установки Operation Mode можно задать потоковые режимы операции для блока Multiply-Accumulate. Для генерации HDL-кода, когда вы используете режим работы потоковой передачи, необходимо ввести скалярные значения с блоком. Блок имеет два потоковых режима: Streaming - using Start and End ports
и Streaming - using Number of Samples
. Когда вы выбираете эти потоковые режимы, можно задать управляющие сигналы использовать с режимом. Управляющие сигналы задают, когда к накоплению начала и конца и когда выход допустим.
Скалярные входные параметры не поддерживаются для генерации HDL-кода. Чтобы сгенерировать код для блока, используйте векторные входные параметры. Для скалярных входных параметров используйте блок Multiply-Add.
Матричные типы данных не поддерживаются в интерфейсах порта блока. Если у вас есть матричные сигналы типа, используйте блок Product в режиме умножения матриц.
Потоковые режимы операции для блока не поддерживаются в блоке Resettable Subsystem для генерации HDL-кода.
a
— Входной сигналvector
| matrix
| array
| bus
Порт, чтобы предоставить вход блоку.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| fixed point
b
— Входной сигналscalar
| vector
| matrix
| array
| bus
Порт, чтобы предоставить вход блоку.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| Boolean
| fixed point
| enumerated
| bus
c
— Сигнал смещенияscalar
| vector
| matrix
| array
| bus
Порт, чтобы обеспечить смещение сигнализирует с блоком. Блок добавляет это смещение во входные параметры. Убедитесь, что данные сигнала смещения вводят соответствия то из скалярного произведения входных параметров.
Чтобы включить этот порт, установите Source на Input port
.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| fixed point
startIn
— Запустите управляющего сигнала накопленияscalar
| vector
| matrix
| array
| bus
Порт, чтобы обеспечить управляющий сигнал запустить накопление. Рекомендуется, чтобы вы использовали boolean
сигнал типа данных, как введено к порту. Чтобы начать получать накопленное выходное значение из сигнала dataOut, и startIn и сигналы validIn должны быть высокими. Сигнал dataOut производит накопленный результат следующего такта.
Чтобы включить этот порт, установите Operation Mode на Streaming - using Start and End Ports
.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| fixed point
validIn
— Допустимый сигнал элемента управления вводомscalar
| vector
| matrix
| array
| bus
Порт, чтобы обеспечить управляющий сигнал указать, что входной сигнал допустим для накопления. Рекомендуется, чтобы вы использовали boolean
сигнал типа данных, как введено к порту. Чтобы начать получать накопленное выходное значение из сигнала dataOut, и validIn и сигналы startIn должны быть высокими. Сигнал dataOut производит накопленный результат следующего такта. Сигнал validIn имеет более высокий приоритет, чем сигналы endIn и startIn.
Чтобы включить этот порт, установите Operation Mode на Streaming - using Start and End Ports
или Streaming - using Number of Samples
.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| fixed point
endIn
— Конец управляющего сигнала накопленияscalar
| vector
| matrix
| array
| bus
Порт, чтобы обеспечить управляющий сигнал указать на конец накопления. Можно использовать startIn и сигналы endIn с сигналом validIn указать на систему координат, которая содержит накопленный выход.
Чтобы включить этот порт, установите Operation Mode на Streaming - using Start and End Ports
и затем выберите End input and output ports.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| fixed point
dataOut
— Выходной сигналscalar
| vector
| matrix
| array
| bus
Порт, который генерирует выходные данные от умножения - накапливает операцию. По умолчанию блок использует Vector
режим работы и вычисляет скалярное произведение входных сигналов и добавляет смещение, чтобы привести к результату. Если вы задаете потоковый режим операции как Operation Mode, значение сигнала dataOut зависит от управляющих сигналов, что вы обеспечиваете. Тип данных выходного сигнала - то же самое как тот из аккумулятора.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| fixed point
startOut
— Запустите сигнала элемента управления выводом накопленияscalar
| vector
| matrix
| array
| bus
Порт, который генерирует сигнал элемента управления выводом указать на запуск накопления. Когда и validIn и startIn высоки, сигнал startOut становится высоким за следующий такт. Такт, в котором startOut становится высоким, указывает на запуск системы координат и что сигнал dataOut начал производить допустимый накопленный выход.
Чтобы включить этот порт, установите Operation Mode на Streaming - using Start and End Ports
и затем выберите Start output port.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| fixed point
validOut
— Допустимый сигнал элемента управления выводомscalar
| vector
| matrix
| array
| bus
Порт, который генерирует сигнал элемента управления выводом указать, что сигнал dataOut допустим. Когда сигнал validIn становится высоким, сигнал validOut становится высоким за следующий такт и указывает, что dataOut допустим.
Чтобы включить этот порт, установите Operation Mode на Streaming - using Start and End Ports
и затем выберите Valid output port.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| fixed point
endOut
— Конец сигнала элемента управления выводом накопленияscalar
| vector
| matrix
| array
| bus
Порт, который генерирует сигнал элемента управления выводом указать на конец накопления. Можно использовать такты между тем, когда сигнал startOut становится высоким и когда сигнал endOut становится высоким, чтобы указать на допустимую систему координат, которая содержит накопленный выход.
Чтобы включить этот порт, установите Operation Mode на Streaming - using Start and End Ports
и затем выберите End input and output ports.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| fixed point
countOut
— Считайте сигнал элемента управления выводомscalar
| vector
| matrix
| array
| bus
Порт, который генерирует сигнал элемента управления выводом указать на количество отсчетов, чтобы накопиться. Значение этого сигнала увеличивается с 1
к значению, которое вы задаете для Number of Samples. Пока сигнал validIn высок, шаг countOut 1
каждый такт.
Чтобы включить этот порт, установите Operation Mode на Streaming - using Number of Samples
и затем выберите Count output port.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| fixed point
Operation Mode
— Режим накопления входных параметров'Vector'
(значение по умолчанию) | 'Streaming - using Start and End Ports'
| 'Streaming - using Number of Samples'
Можно задать Operation Mode как:
Vector
: Можно использовать скаляры или векторы как входные параметры. Блок выполняет скалярное произведение входных параметров u1
и u2
и добавляет, смещают k
приводить к результату.
Streaming - using Start and End Ports
: Используйте скалярные входные параметры для генерации HDL-кода. В этом режиме можно использовать startIn и управляющие сигналы endIn определить, когда запустить и остановить накопление. Выходные данные допустимы, когда validIn высок.
Streaming - using Number of Samples
: Используйте скалярные входные параметры для генерации HDL-кода. В этом режиме можно задать Number of Samples и использовать управляющий сигнал countIn определить, когда запустить и остановить накопление. Выходные данные допустимы, когда validIn высок.
Параметры блоков:
opMode |
Ввод: символьный вектор |
Значение:
'Vector' | 'Streaming - using Start and End Ports' | 'Streaming - using Number of Samples' |
Значение по умолчанию:
'Vector' |
Bias
— Возместите, чтобы добавить к входному скалярному произведению
(значение по умолчанию)Можно задать смещение с:
Source как Dialog
. Затем задайте Value.
Source как Input port
. Эта установка создает внешний входной порт c
чтобы ввести смещение сигнализируют с блоком.
Параметры блоков:
initValueSetting |
Ввод: символьный вектор |
Значение:
'Dialog' | 'Input port' |
Значение по умолчанию:
'Dialog' |
Если вы устанавливаете Source как Dialog
, можно задать начальное значение при помощи initValue2
установка.
Параметры блоков:
initValue2 |
Ввод: символьный вектор |
Значение: целое число, больше, чем или равный нулю |
Значение по умолчанию:
'0.0' |
Number of Samples
— Количество отсчетов допустимого накопленного выходного сигнала
(значение по умолчанию)Можно задать Number of Samples, чтобы задать систему координат, содержащую количество отсчетов допустимого накопленного выхода dataOut.
Чтобы включить этот порт, установите Operation Mode на Streaming - using Number of Samples
.
Параметры блоков:
num_samples |
Ввод: символьный вектор |
Значение: целое число, больше, чем или равный нулю |
Значение по умолчанию:
'2' |
Output data type
— Тип данных блока выводитсяInherit: Inherit via back propagation
(значение по умолчанию)Установите тип выходных данных на:
Правило, которое наследовало тип данных, такой как Inherit: Same as first input
.
Встроенный тип данных, такой как single
или int16
.
Имя объекта типа данных. например, Simulink.NumericType
объект.
Выражение, которое оценивает к допустимому типу данных, например, fixdt(1,16,0)
Потоковые режимы не поддерживают Inherit: Inherit via internal rule
. Когда вы устанавливаете Output data type, можно использовать Data Type Assistant. Чтобы отобразить ассистент, нажмите Show data type assistant
.
Параметры блоков:
OutDataTypeStr |
Ввод: символьный вектор |
Значение по умолчанию:
{'Inherit: Inherit via internal rule'} |
Чтобы видеть возможные значения, которые можно задать для этого параметра, смотрите Специфичные для блока Параметры.
Integer rounding mode
— Режим Rounding для операций фиксированной точкиFloor
(значение по умолчанию) | Ceiling
| Convergent
| Nearest
| Round
| Simplest
| Zero
Задайте округляющееся действие как:
Ceiling
Округляет положительные и отрицательные числа к положительной бесконечности. Эквивалентный MATLAB®
ceil
функция.
Convergent
Номер раундов к самому близкому представимому значению. Если связь происходит, раунды к самому близкому даже целое число. Эквивалентный Fixed-Point Designer™ convergent
функция.
Floor
Округляет положительные и отрицательные числа к отрицательной бесконечности. Эквивалентный MATLAB floor
функция.
Nearest
Округляет номер до самого близкого представимого значения. Если связь происходит, раунды к положительной бесконечности. Эквивалентный Fixed-Point Designer nearest
функция.
Round
Номер раундов к самому близкому представимому значению. Если связь происходит, округляет положительные числа к положительной бесконечности и округляет отрицательные числа к отрицательной бесконечности. Эквивалентный Fixed-Point Designer round
функция.
Simplest
Принимает решение между округлением к полу и округлением к нулю сгенерировать округление кода, который максимально эффективен.
Zero
Номер раундов к нулю. Эквивалентный MATLAB fix
функция.
Параметры блоков:
RndMeth |
Ввод: символьный вектор |
Значение по умолчанию:
{'Floor'} |
Чтобы видеть возможные значения, которые можно задать для этого параметра, смотрите Специфичные для блока Параметры.
Valid output port
— Управляйте генерацией validOut выходного портаУправляйте генерацией выходного порта validOut. Этот порт указывает, допустим ли dataOut.
Не отображает выходной порт validOut.
Отобразите выходной порт validOut.
Чтобы включить этот порт, установите Operation Mode на Streaming - using Number of Samples
или Streaming - using Start and End Ports
.
Параметры блоков:
validOut |
Ввод: символьный вектор |
Значения:
'off' | 'on' |
Значение по умолчанию:
'off' |
End input and output ports
— Управляйте генерацией окончания входного порта и endOut выходного портаУправляйте генерацией входного порта endIn и выходного порта endOut. Порты указывают на конец системы координат, содержащей допустимое накопление выход.
Не отображает входной порт endIn и выходной порт endOut.
Отобразите входной порт endIn и выходной порт endOut.
Чтобы включить этот порт, установите Operation Mode на Streaming - using Start and End Ports
.
Параметры блоков:
endInandOut |
Ввод: символьный вектор |
Значения:
'off' | 'on' |
Значение по умолчанию:
'off' |
Start output port
— Управляйте генерацией startOut выходного портаУправляйте генерацией выходного порта startOut. Этот порт генерирует сигнал startOut, который указывает на запуск системы координат, содержащей допустимый накопленный выход.
Не отображает выходной порт startOut.
Отобразите выходной порт startOut.
Чтобы включить этот порт, установите Operation Mode на Streaming - using Start and End Ports
.
Параметры блоков:
startOut |
Ввод: символьный вектор |
Значения:
'off' | 'on' |
Значение по умолчанию:
'off' |
Count output port
— Управляйте генерацией countOut выходного портаУправляйте генерацией выходного порта countOut. Этот порт генерирует счетчик, который указывает на систему координат, содержащую допустимые выборки.
Не отображает выходной порт countOut.
Отобразите выходной порт countOut.
Чтобы включить этот порт, установите Operation Mode на Streaming - using Number of Samples
.
Параметры блоков:
countOut |
Ввод: символьный вектор |
Значения:
'off' | 'on' |
Значение по умолчанию:
'off' |
С блоком Multiply-Accumulate вы можете:
Выполните операции умножения матриц. Например, если у вас есть два матричных входных параметров с размерностями N-by-M
и M-by-P
, можно вычислить результат при помощи N-by-P
умножьтесь - накапливают операции параллельно.
Замените последовательность умножения и операций сложения, такой как в блоках фильтра, и улучшайте производительность на оборудовании путем отображения со срезами DSP на FPGA. Этот рисунок показывает, как можно использовать блок Multiply-Accumulate с sfir_fixed
модель.
Можно использовать установку Operation Mode для блока, чтобы задать потоковый режим операции. Когда вы выбираете Streaming - using Start and End Ports
, вы видите, что три дополнительных настройки включили по умолчанию. Настройки включают:
Valid output port
End input and output ports
Start output port
Рекомендуется, чтобы вы уехали, эти настройки включили. Когда вы применяете настройки, три дополнительных входных порта и три дополнительных выходных порта появляются:
Input port | Выходные порты |
---|---|
startIn | startOut |
validIn | validOut |
endIn | endOut |
Этот рисунок иллюстрирует потоковый режим операции с помощью портов начала и конца. В этом примере значением смещения является 8
.
Первоначально, когда validIn является низким, dataOut является нулем. Во время 1s
, и startIn и validIn становятся высокими. Поэтому validOut становится высоким за следующий такт, и dataOut начинает производить допустимое накопление выход. Во время накопления dataOut принимает значения a и b от предыдущего такта. Например, во время t = 2s
, dataOut = 1*1 + 8 = 9.
Чтобы продолжить накопление, сделайте startIn низко в следующем такте и поддержите на высоком уровне validIn. dataOut продолжает накапливать входные параметры, пока validIn не становится низким. На каждом временном шаге dataOut вычисляет продукт входных параметров от предыдущего такта и суммирует результат со значением dataOut от предыдущего такта. Например, во время t = 3 с, dataOut = 2*2 + 9 = 13.
Когда validIn становится низким, dataOut содержит выходное значение, как замечено во время t = 5 с. В t = 5 с, endIn и validIn высоки. Поэтому endOut становится высоким за следующий такт, который указывает на конец системы координат. Поэтому система координат между t = 2 с (когда startOut высок) и t = 6 с (когда endOut высок) указывает на систему координат, содержащую допустимый выход.
Если startIn, validIn и endIn оба высоки одновременно, только dataOut, соответствующий тем входным параметрам, накапливается, как замечено в t = 8 с. Если startIn высок для нескольких тактов, и если validIn высок, аккумулятор сбрасывается в каждом такте, как замечено в t = 10-е и t = 11. Накопление продолжается в t = 12.
Можно использовать установку Operation Mode для блока, чтобы задать потоковый режим операции. Когда вы выбираете Streaming - using Number of Samples
, вы видите, что две дополнительных настройки включили по умолчанию. Настройки включают:
Valid output port
Count output port
Рекомендуется, чтобы вы уехали, эти настройки включили. Когда вы применяете настройки, у вас есть дополнительный входной порт, validIn и три дополнительных выходных порта появляются:
endOut
validOut
countOut
Этот рисунок иллюстрирует потоковый режим операции с помощью количества отсчетов. В этом примере значением смещения является 8
и Number of Samples является 5
.
Первоначально, когда validIn является низким, dataOut является 0
и countOut является 1
. Во время 1s
, validIn становится высоким. Поэтому validOut становится высоким за следующий такт, и dataOut начинает производить допустимое накопление выход. Во время накопления dataOut принимает значения a и b от предыдущего такта. Например, во время t = 2s
, dataOut = 1*1 = 1
. countOut постепенно увеличивается 1
в следующем такте, то есть, в t = 3s
, countOut становится 2
.
Чтобы продолжить накопление, поддержите на высоком уровне validIn. dataOut продолжает накапливать входные параметры, пока validIn не становится низким. Когда пять допустимых выходных параметров получены из dataOut, countOut становится 5
и endOut становится высоким, который указывает на конец системы координат. Поэтому время между тем, когда countOut является 1
и то, когда countOut равняется пяти, указывает на систему координат, содержащую допустимый выход.
Счетчик аккумулятора теперь сбрасывается, и countOut начинает с 1
. Когда validIn становится высоким снова, dataOut начинает накапливать новое множество значений, и countOut начинает постепенно увеличиваться для каждого допустимого dataOut.
HDL Coder™ обеспечивает дополнительные параметры конфигурации, которые влияют на реализацию HDL и синтезируемую логику.
Установка архитектуры HDL | Описание |
---|---|
| Этот режим выбирает |
Parallel | Для входных векторов размера |
Serial | Для входных векторов размера
Когда вы синтезируете свой проект, в зависимости от входных ширин бита, эта архитектура сопоставляет с одним срезом DSP на FPGA. |
Общий | |
---|---|
ConstrainedOutputPipeline | Количество регистров, чтобы поместить при выходных параметрах путем перемещения существующих задержек в рамках проекта. Распределенная конвейеризация не перераспределяет эти регистры. |
InputPipeline | Количество входных настроек канала связи, чтобы вставить в сгенерированный код. Распределенная конвейеризация и ограниченная выходная конвейеризация могут переместить эти регистры. |
OutputPipeline | Количество выходных настроек канала связи, чтобы вставить в сгенерированный код. Распределенная конвейеризация и ограниченная выходная конвейеризация могут переместить эти регистры. |
Когда вы используете комплексные сигналы, этот блок может сгенерировать HDL-код, но не сопоставляет со срезами DSP.
Для точного отображения блока Multiply-Accumulate к срезам DSP используйте эти настройки типа сброса,
Для Xilinx® Платы FPGA, набор Reset type к Synchronous
.
Для Altera® Платы FPGA, набор Reset type к Asynchronous
.
Чтобы установить тип сброса, выберите HDL Code Generation> Global settings> Clock settings > Reset type.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.