Биты сдвига или двоичная точка сигнала
Операции Simulink/Logic и Bit
Кодер 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 is 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 завершает моделирование и отображает ошибку.
Дополнительные сведения см. в разделе Результаты моделирования и режима ускорителя для значений смещения битов за пределами диапазона.
Параметр блока: DiagnosticForOORShift |
| Тип: символьный вектор, строка |
Значения: 'None' | 'Warning' | 'Error' |
По умолчанию: 'None' |
Check for out-of-range 'Bits to shift' in generated code - Проверьте наличие битов вне диапазона для сдвига в сгенерированном кодеoff (по умолчанию) | onУстановите этот флажок, чтобы включить условные операторы в создаваемый код, защищающие от смещения битов за пределами диапазона. Этот флажок доступен, если Bits to shift: Source is Input port.
Дополнительные сведения см. в разделе Создание кода для значений битового сдвига за пределами диапазона.
Параметр блока: CheckOORBitShift |
| Тип: символьный вектор, строка |
Значения: 'on' | 'off' |
По умолчанию: 'off' |
Типы данных |
|
Прямой проход |
|
Многомерные сигналы |
|
Сигналы переменного размера |
|
Обнаружение пересечения нулей |
|
Значок арифметического блока Shift показывает поведение блока с использованием следующих переменных:
Q - Сохраненное целое значение
V - Реальная стоимость
E - Экспонента
Qy - Сохраненное целое значение выходного сигнала
Qu - Сохраненное целое значение ввода
Vy - Значение выходного сигнала
Vu - Значение входного сигнала
Ey - Экспонента вывода
Eu - Экспонента ввода
Следующая модель сравнивает поведение правых битовых сдвигов с помощью диалогового окна с портом ввода блока.

Параметры ключевых блоков блоков Constant:
| Блок | Параметр | Настройка |
|---|---|---|
Constant и Constant1
| Постоянное значение |
124
|
| Тип выходных данных |
int8
| |
Dynamic bit shift
| Постоянное значение |
2
|
| Тип выходных данных |
Inherit: Inherit from 'Constant value'
|
Параметры ключевых блоков арифметических блоков Shift:
| Блок | Параметр | Настройка |
|---|---|---|
Bit shift from dialog
| Биты для сдвига: Источник |
Dialog
|
| Биты для сдвига: Направление |
Right
| |
| Биты для сдвига: Число |
2
| |
Bit shift from input
| Биты для сдвига: Источник |
Input port
|
| Биты для сдвига: Направление |
Right
|
Главный блок Арифметики Изменения берет вход 124, который соответствует 01111100 в двоичном формате. Смещение числа битов на два места вправо приводит к 00011111 в двоичном формате. Следовательно, блочные выходы 31.
Нижний арифметический блок сдвига выполняет ту же операцию, что и верхний блок. Однако нижний блок получает значение битового сдвига через входной порт вместо диалогового окна. Введя это значение в качестве входного сигнала, можно изменить количество битов для сдвига во время моделирования.
Следующая модель показывает эффект двоичных сдвигов точек.

Параметры ключевых блоков блоков Constant:
| Блок | Параметр | Настройка |
|---|---|---|
Constant и Constant1
| Постоянное значение |
124
|
| Тип выходных данных |
int8
|
Параметры ключевых блоков арифметических блоков Shift:
| Блок | Параметр | Настройка |
|---|---|---|
Shift binary point 3 places to the right
| Биты для сдвига: Источник |
Dialog
|
| Биты для сдвига: Направление |
Bidirectional
| |
| Биты для сдвига: Число |
0
| |
| Двоичные точки для сдвига: Число |
3
| |
Shift binary point 3 places to the left
| Биты для сдвига: Источник |
Dialog
|
| Биты для сдвига: Направление |
Bidirectional
| |
| Биты для сдвига: Число |
0
| |
| Двоичные точки для сдвига: Число | – 3
|
Главный блок Арифметики Изменения берет вход 124, который соответствует 01111100 в двоичном формате. Изменение запятой в двоичном числе три места направо производит 01111100000 в двоичном формате. Следовательно, верхний блок выводит 995.
Нижний арифметический блок сдвига также принимает вход 124. Изменение запятой в двоичном числе три места налево производит 01111.100 в двоичном формате. Поэтому нижний блок выводит 15.5.
Предположим, что WL - длина входного слова. Закрашенные области на следующей диаграмме показывают значения битового сдвига вне диапазона для левого и правого сдвигов.

Аналогично, затененные области на следующей диаграмме показывают значения битового сдвига вне диапазона для двунаправленных сдвигов.

Диагностика битовых сдвигов вне диапазона осуществляется следующим образом, в зависимости от режима работы:
| Способ | Диагностика значения смещения вне диапазона | ||
|---|---|---|---|
| Ничего | Предупреждение | Ошибка | |
| Режимы моделирования | Не сообщайте о каких-либо предупреждениях или ошибках. | Сообщите предупреждение, но продолжите моделирование. | Сообщение об ошибке и остановка моделирования. |
| Создание кода | Не имеет эффекта. | ||
Предположим, что U - вход, WL - длина входного слова, и Y - выходной сигнал. Выходной сигнал для значения битового сдвига вне диапазона для сдвигов влево выглядит следующим образом:

Аналогично, выходной сигнал для значения битового сдвига вне диапазона для правых сдвигов выглядит следующим образом:

Для двунаправленных сдвигов выходной сигнал для значения битового сдвига вне диапазона выглядит следующим образом:

Для сгенерированного кода способ обработки смещений битов вне диапазона зависит от установки Check for-of-range 'Bits to shift' в сгенерированном коде.
| Установка флажка | Сгенерированный код | Результаты моделирования по сравнению с сгенерированным кодом |
|---|---|---|
Отобранный | Включает условные операторы для защиты от смещения битов за пределами диапазона. | Результаты моделирования и режима ускорителя соответствуют результатам создания кода. |
Очищенный | Не защищает от смещения битов вне диапазона. |
|
Для правых сдвигов на подписанных отрицательных входах большинство компиляторов C используют арифметический сдвиг вместо логического сдвига. Созданный код для арифметического блока Shift зависит от этого поведения компилятора.
HDL Coder™ предоставляет дополнительные опции конфигурации, которые влияют на реализацию HDL и синтезированную логику.
Код HDL можно генерировать, когда Bits to shift: Source является диалоговым или входным портом.
Сгенерированный код VHDL использует shift_right функции и sll оператор.
Созданный код Verilog использует >>> и <<< операторы смены.
| ConstrainedOutputPipeline | Количество регистров для размещения на выходах путем перемещения существующих задержек в рамках проекта. Распределенная конвейерная обработка не перераспределяет эти регистры. Значение по умолчанию: |
| InputPipeline | Количество входных ступеней трубопровода для вставки в сформированный код. Распределенная конвейерная обработка и конвейерная обработка с ограниченным выходом могут перемещать эти регистры. Значение по умолчанию: |
| OutputPipeline | Количество выходных ступеней трубопровода для вставки в сформированный код. Распределенная конвейерная обработка и конвейерная обработка с ограниченным выходом могут перемещать эти регистры. Значение по умолчанию: |
Этот блок поддерживает генерацию кода для сложных сигналов.
Когда Bits to shift: Source - входной порт, смещение двоичных точек не поддерживается.
Побитовый оператор | Сравнить с константой | Сравнить с нулем | Логический оператор | Реляционный оператор
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.