Сдвиньте биты или двоичную точку сигнала
Simulink/Логические и битовые операции
HDL-кодер/логика и битовые операции
Блок Сдвиг Арифметики может сдвинуть биты или двоичную точку входного сигнала, или оба.
Для примера смещение двоичной точки на вход типа данных sfix(8)
на два места вправо и влево задает эти десятичные значения.
Операция сдвига | Двоичное значение | Десятичное значение |
---|---|---|
Нет сдвига (исходный номер) | 11001.011 | –6.625 |
Сдвиг двоичной точки вправо на два места | 1100101.1 | –26.5 |
Сдвиг двоичной точки влево на два места | 110.01011 | –1.65625 |
Этот блок выполняет арифметические сдвиги бит на знаковых числах. Поэтому блок рециркулирует самый значительный бит для каждого сдвига бита. Переключение бит на вход типа данных sfix(8)
на два места вправо и влево задает эти десятичные значения.
Операция сдвига | Двоичное значение | Десятичное значение |
---|---|---|
Нет сдвига (исходный номер) | 11001.011 | –6.625 |
Сдвиг бита вправо на два места | 11110.010 | –1.75 |
Сдвиг бита влево на два места | 00101.100 | 5.5 |
u
- Число для эксплуатацииЧисло, которое будет работать, заданное как скаляр, вектор или массив.
Типы данных: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
s
- Количество битов в сдвигеКоличество бит в сдвиге, заданное как скаляр.
Типы данных: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
Port_1
- Результат операцииРезультат операции, возвращенный в виде скаляра, вектора или массива.
Типы данных: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
Bits to shift: Source
- Источник битов для сдвигаDialog
(по умолчанию) | Input port
Задайте, вводить ли биты для сдвига в диалоговом окне или унаследовать значения от входа порта.
Настраиваемый: Нет
Параметры блоков: BitShiftNumberSource |
Тип: Вектор символов, строка |
Значения: 'Dialog' | 'Input port' |
По умолчанию: 'Dialog' |
Bits to shift: Number
- Биты в сменуЗадайте скаляр, вектор или массив значений битового сдвига. Этот параметр доступен, когда Bits to shift: Source Dialog
.
Если направление... | Тогда... |
---|---|
Left или Right
| Используйте положительные целые числа, чтобы задать битовые сдвиги. |
Bidirectional
| Используйте положительные целые числа для сдвигов вправо и отрицательные целые числа для сдвигов влево. |
Настраиваемый: Нет
Параметры блоков: BitShiftNumber |
Тип: Вектор символов, строка |
Значения: scalar |
По умолчанию: '9' |
Bits to shift: Direction
- Направление, в котором можно сдвинуть битыLeft
(по умолчанию) | Right
| Bidirectional
Задайте направление сдвига бит: левый, правый или двунаправленный.
Настраиваемый: Нет
Параметры блоков: BitShiftDirection |
Тип: Вектор символов, строка |
Значения: 'Left' | 'Right' | 'Bidrectional' |
По умолчанию: 'Bidrectional' |
Binary points to shift: Number
- Количество мест для сдвига двоичной точки0
(по умолчанию) | scalar
Задайте целое число мест, чтобы сдвинуть двоичную точку входного сигнала. Положительное значение указывает на сдвиг вправо, в то время как отрицательное значение указывает на сдвиг влево.
Настраиваемый: Нет
Параметры блоков: BinPtShiftNumber |
Тип: Вектор символов, строка |
Значения: 'Dialog' | 'Input port' |
По умолчанию: 'Dialog' |
Diagnostic for out of range shift value
- Диагностическое действиеNone
(по умолчанию) | Warning
| Error
Задайте, выдавать ли предупреждение или ошибку во время симуляции, когда блок содержит значение сдвига вне области допустимого. Опции включают:
None
- Simulink® не принимает никаких действий.
Warning
- Simulink отображает предупреждение и продолжает симуляцию.
Error
- Simulink завершает симуляцию и отображает ошибку.
Для получения дополнительной информации см. Simulation and Режим Accelerator Results for Out-of-Range Bit Shift Values.
Параметры блоков: DiagnosticForOORShift |
Тип: Вектор символов, строка |
Значения: 'None' | 'Warning' | 'Error' |
По умолчанию: 'None' |
Check for out-of-range 'Bits to shift' in generated code
- Проверяйте, что биты вне области допустимого, чтобы сдвинуть сгенерированный кодoff
(по умолчанию) | on
Установите этот флажок, чтобы включить условные операторы в сгенерированный код, которые защищают от значений битового сдвига вне области допустимого значения. Этот флажок доступен, когда Bits to shift: Source Input port
.
Для получения дополнительной информации смотрите Генерацию кода для значений Bit Shift вне области допустимого.
Параметры блоков: CheckOORBitShift |
Тип: Вектор символов, строка |
Значения: 'on' | 'off' |
По умолчанию: 'off' |
Типы данных |
|
Прямое сквозное соединение |
|
Многомерные сигналы |
|
Сигналы переменного размера |
|
Обнаружение пересечения нулем |
|
Значок Shift Arithmetic блока показывает поведение блоков с помощью следующих переменных:
Q
- Сохраненное целое значение
V
- Реальное значение
E
- Экспонента
Qy
- Сохраненное целое значение выхода
Qu
- Сохраненное целое значение входа
Vy
- Значение выхода
Vu
- Значение входа
Ey
- Экспонента выхода
Eu
- Экспонента входа
Следующая модель сравнивает поведение сдвигов правого бита с помощью диалогового окна и входного порта блока.
Ключевыми параметрами блоков настройками блоков Constant являются:
Блок | Параметр | Настройка |
---|---|---|
Constant и Constant1
| Constant value |
124
|
Output data type |
int8
| |
Dynamic bit shift
| Constant value |
2
|
Output data type |
Inherit: Inherit from 'Constant value'
|
Настройки параметров ключевых блоков арифметических блоков Shift:
Блок | Параметр | Настройка |
---|---|---|
Bit shift from dialog
| Bits to shift: Source |
Dialog
|
Bits to shift: Direction |
Right
| |
Bits to shift: Number |
2
| |
Bit shift from input
| Bits to shift: Source |
Input port
|
Bits to shift: Direction |
Right
|
Главный блок Арифметики Сдвига берет вход 124, который соответствует 01111100 в двоичном формате. Смещение количества бит на два места вправо создает 00011111 в двоичном формате. Поэтому блок выводит 31.
Нижний арифметический блок Shift выполняет ту же операцию, что и верхний блок. Однако нижний блок получает значение битового сдвига через порт входа вместо диалогового окна. Путем подачи этого значения в качестве входного сигнала, можно изменить количество бит, чтобы сдвинуть во время симуляции.
Следующая модель показывает эффект двоичных сдвигов точек.
Ключевыми параметрами блоков настройками блоков Constant являются:
Блок | Параметр | Настройка |
---|---|---|
Constant и Constant1
| Constant value |
124
|
Output data type |
int8
|
Настройки параметров ключевых блоков арифметических блоков Shift:
Блок | Параметр | Настройка |
---|---|---|
Shift binary point 3 places to the right
| Bits to shift: Source |
Dialog
|
Bits to shift: Direction |
Bidirectional
| |
Bits to shift: Number |
0
| |
Binary points to shift: Number |
3
| |
Shift binary point 3 places to the left
| Bits to shift: Source |
Dialog
|
Bits to shift: Direction |
Bidirectional
| |
Bits to shift: Number |
0
| |
Binary points to shift: Number | – 3
|
Главный блок Арифметики Сдвига берет вход 124, который соответствует 01111100 в двоичном формате. Перемена запятой в двоичном числе три места направо производит 01111100000 в двоичном формате. Поэтому верхний блок выводит 995.
Нижний арифметический блок Shift также принимает вход 124. Перемена запятой в двоичном числе три места налево производит 01111.100 в двоичном формате. Поэтому нижний блок выводит 15,5.
Предположим, что WL
является вход размера слова. Затененные области на следующей схеме показывают значения битового сдвига вне области допустимого для сдвигов влево и вправо.
Точно так же затененные области на следующей схеме показывают значения битового сдвига вне области допустимого для двунаправленных сдвигов.
Диагностика сдвигов бита вне области допустимого срабатывает следующим образом, в зависимости от режима операции:
Способ | Диагностика значения сдвига вне области допустимого | ||
---|---|---|---|
Ничего | Предупреждение | Ошибка | |
Режимы симуляции | Не сообщайте ни о каких предупреждениях или ошибках. | Сообщите о предупреждении, но продолжите симуляцию. | Сообщите об ошибке и остановите симуляцию. |
Генерация кода | Не имеет эффекта. |
Предположим, что U
является входом, WL
является входы размера слова и Y
- выход. Значение смещения бита вне области допустимого для левых сдвигов выхода следующим образом:
Точно так же выход для значения бита сдвига вне области допустимого для правых сдвигов следующий:
Для двунаправленных сдвигов выход для значения битового сдвига вне области допустимого является следующим:
Для сгенерированного кода способ обработки битовых сдвигов вне области допустимого зависит от настройки Check for out-of-range 'Bits to shift' in generated code.
Установка флажка | Сгенерированный код | Результаты симуляции по сравнению с сгенерированным кодом |
---|---|---|
Отобранный | Включает условные операторы для защиты от значений битового сдвига вне области допустимого. | Результаты симуляции и режима Accelerator совпадают с результатами генерации кода. |
Очищенный | Не защищает от значений битового сдвига вне области допустимого. |
|
Для правых сдвигов на отрицательных входах со знаком, большинство компиляторов C используют арифметический сдвиг вместо логического сдвига. Сгенерированный код для блока Сдвига Арифметики зависит от этого поведения компилятора.
HDL Coder™ предоставляет дополнительные опции строения, которые влияют на реализацию HDL и синтезированную логику.
Можно сгенерировать HDL-код, когда Bits to shift: Source Dialog или Input port.
Сгенерированный VHDL- кода использует shift_right
функции и sll
оператор.
Сгенерированный код Verilog использует >>>
и <<<
операторы сдвига.
ConstrainedOutputPipeline | Количество регистров для размещения на выходах путем перемещения существующих задержек в рамках вашего проекта. Распределённая конвейеризация не перераспределяет эти регистры. Значение по умолчанию является |
InputPipeline | Количество входных этапов конвейера для вставки в сгенерированный код. Распределённая конвейеризация и ограниченная выходная конвейеризация могут перемещать эти регистры. Значение по умолчанию является |
OutputPipeline | Количество выходных этапов конвейера для вставки в сгенерированный код. Распределённая конвейеризация и ограниченная выходная конвейеризация могут перемещать эти регистры. Значение по умолчанию является |
Этот блок поддерживает генерацию кода для сложных сигналов.
Когда Bits to shift: Source Input port, двоичная перемена точки не поддерживается.
Bitwise Operator | Compare To Constant | Compare To Zero | Logical Operator | Relational Operator
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.