Документация Engee

Shift Arithmetic

Сдвиг битов или двоичной точки сигнала.

shift arithmetic

Описание

Блок Shift Arithmetic может сдвигать биты или двоичную точку входного сигнала или выполнять обе эти операции.

В таблице показан пример сдвига двоичной точки для входных данных типа fixed на два разряда вправо и влево.

Операция сдвига Двоичное значение Десятичное значение

Без сдвига (исходное число)

11001.011

–6.625

Сдвиг бинарной точки вправо на два разряда

1100101.1

–26.5

Сдвиг двоичной точки влево на два разряда

110.01011

–1.65625

Блок Shift Arithmetic выполняет операцию арифметического сдвига битов над числами со знаком. Поэтому блок повторно использует старший бит для каждого битового сдвига. В таблице показан пример сдвига битов для входных данных типа fixed на два разряда вправо и влево.

Операция сдвига Двоичное значение Десятичное значение

Без сдвига (исходное число)

11001.011

–6.625

Битовый сдвиг вправо на два разряда

11110.010

–1.75

Битовый сдвиг влево на два разряда

00101.100

5.5

Порты

Вход

u — преобразуемое число
скаляр | вектор | матрица

Число, над которым нужно выполнить операцию сдвига, заданное как скаляр, вектор или матрица.

Типы данных: Float32, Float64, Int32, Int64, Fixed

s — количество битов для сдвига
скаляр

Количество битов для сдвига, заданное как скаляр.

Зависимости

Чтобы включить этот порт, установите для параметра Source значение Input port.

Типы данных: Int32, Int64

Выход

Port_1 — результат
скаляр | вектор | матрица

Результат операции, возвращенный как скаляр, вектор или матрица.

Типы данных: Float32, Float64, Int32, Int64, Fixed

Параметры

Bits to shift

Source — источник количества битов для сдвига
Dialog (по умолчанию) | Input port

Укажите, вводить ли количество битов для сдвига в диалоговом окне или наследовать значения от входного порта.

Программное использование

Параметр блока

BitShiftNumberSource

Значения

Dialog | Input port

По умолчанию

Dialog

Direction — направление сдвига битов
Bidirectional (по умолчанию) | Right | Left

Укажите направление сдвига битов: влево, вправо или двунаправленное.

Программное использование

Параметр блока

BitShiftDirection

Значения

Left | Right | Bidirectional

По умолчанию

Bidirectional

Number — количество битов для сдвига
8 (по умолчанию) | скаляр

Задайте количество битов для сдвига.

Если параметр Direction имеет значение Bidirectional, то положительное значение Number означает сдвиг вправо, а отрицательное — влево.

Зависимости

Этот параметр доступен, если для параметра Source установлено значение Dialog.

Программное использование

Параметр блока

BitShiftNumber

Значения

скаляр

По умолчанию

8

Типы данных: Int32, Int64

Main

Binary points to shift — количество разрядов для сдвига двоичной точки
0 (по умолчанию) | скаляр

Укажите целое число разрядов для сдвига двоичной точки входного сигнала. Положительное число означает сдвиг вправо, а отрицательное – влево.

Программное использование

Параметр блока

BinPtShiftNumber

Значения

скаляр

По умолчанию

0

Типы данных: Int32, Int64

Diagnostic for out of range shift value — диагностическое действие
None(по умолчанию) | Error

Укажите, выводить ли ошибку во время моделирования, когда блок содержит значение сдвига вне диапазона. Варианты включают:

  • None — система не предпринимает никаких действий.

  • Error — система завершает моделирование и отображает ошибку.

Программное использование

Параметр блока

DiagnosticForOORShift

Значения

None | Error

По умолчанию

None

Подробнее

Переменные значка блока

Значок блока Shift Arithmetic показывает поведение блока с использованием этих переменных:

Qy — сохраненное целочисленное значение вывода.

Qu — сохраненное целочисленное значение ввода.

Vy — значение вывода.

Vu — значение ввода.

Ey — показатель степени вывода.

Eu — показатель степени ввода.

Вывод блока для правых битовых сдвигов

В примере приведено сравнение результатов моделирования для сдвига битов вправо для разных значений параметра Source: Dialog и Input port.

shift arithmetic 1

Настройки параметров для верхнего блока Shift Arithmetic приведены в таблице.

Параметр Значение

Входной порт u

124

Source

Dialog

Direction

Right

Number

2

Верхний блок Shift Arithmetic принимает на вход 124, что соответствует 01111100 в двоичном формате. Сдвиг количества битов на два разряда вправо дает 00011111 в двоичном формате. Следовательно, блок выводит 31.

Настройки параметров для нижнего блока Shift Arithmetic приведены в таблице.

Параметр Значение

Входной порт u

124

Входной порт s

2

Source

Input port

Direction

Right

Нижний блок Shift Arithmetic выполняет ту же операцию, что и верхний блок. Однако нижний блок получает значение битового сдвига через входной порт вместо значения параметра Number. Если значение битового сдвига подается через входной порт как входной сигнал, то смещение можно выполнять во время моделирования.

Вывод блока для сдвига двоичной точки

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

shift arithmetic 2

Настройки параметров для верхнего блока Shift Arithmetic приведены в таблице.

Параметр Значение

Входной порт u

124.0

Source

Dialog

Direction

Bidirectional

Number

0

Binary points to shift

3

Верхний блок Shift Arithmetic принимает на вход 124.0, что соответствует 01111100 в двоичном формате. Сдвиг двоичной точки на три позиции вправо дает 01111100000 в двоичном формате. Следовательно, верхний блок выводит 995.0.

Настройки параметров для нижнего блока Shift Arithmetic приведены в таблице.

Параметр Значение

Входной порт u

124.0

Source

Dialog

Direction

Bidirectional

Number

0

Binary points to shift

-3

Нижний блок Shift Arithmetic также принимает на вход 124.0. Сдвиг двоичной точки на три позиции влево дает 01111.100 в двоичном формате. Следовательно, нижний блок выводит 15.5.

Алгоритмы

Битовый сдвиг вне диапазона

Предположим, что WL – это длина входного машинного слова. Заштрихованные области на следующей диаграмме показывают значения битового сдвига вне допустимого диапазона для сдвига влево и вправо.

shift arithmetic 3

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

shift arithmetic 4

В зависимости от значения параметра Diagnostic for out of range shift value диагностика битовых сдвигов за пределами допустимого диапазона реагирует следующим образом:

  • None — система не предпринимает никаких действий.

  • Error — система завершает моделирование и отображает ошибку.

Результаты моделирования и режима ускорения для значений битового сдвига вне диапазона

Предположим, что U — это входное значение, WL — длина входного машинного слова и Y — выходное значение. Вывод значения битового сдвига вне допустимого диапазона для сдвигов влево выглядит следующим образом:

shift arithmetic 5

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

shift arithmetic 6

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

shift arithmetic 7