Сдвиньте биты или двоичную точку сигнала
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.