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
Параметры
Bits to shift
Source — источник количества битов для сдвига
Dialog (по умолчанию)
| Input port
Укажите, вводить ли количество битов для сдвига в диалоговом окне или наследовать значения от входного порта.
Параметр блока |
|
Значения |
|
По умолчанию |
|
Direction — направление сдвига битов
Bidirectional (по умолчанию)
| Right
| Left
Укажите направление сдвига битов: влево, вправо или двунаправленное.
Параметр блока |
|
Значения |
|
По умолчанию |
|
Number — количество битов для сдвига
8 (по умолчанию)
| скаляр
Задайте количество битов для сдвига.
Если параметр Direction имеет значение Bidirectional
, то положительное значение Number означает сдвиг вправо, а отрицательное — влево.
Зависимости
Этот параметр доступен, если для параметра Source установлено значение Dialog
.
Параметр блока |
|
Значения |
|
По умолчанию |
|
Типы данных: Int32
, Int64
Main
Binary points to shift — количество разрядов для сдвига двоичной точки
0 (по умолчанию)
| скаляр
Укажите целое число разрядов для сдвига двоичной точки входного сигнала. Положительное число означает сдвиг вправо, а отрицательное – влево.
Параметр блока |
|
Значения |
|
По умолчанию |
|
Типы данных: Int32
, Int64
Diagnostic for out of range shift value — диагностическое действие
None(по умолчанию)
| Error
Укажите, выводить ли ошибку во время моделирования, когда блок содержит значение сдвига вне диапазона. Варианты включают:
-
None
— система не предпринимает никаких действий. -
Error
— система завершает моделирование и отображает ошибку.
Параметр блока |
|
Значения |
|
По умолчанию |
|
Подробнее
Переменные значка блока
Значок блока Shift Arithmetic показывает поведение блока с использованием этих переменных:
Qy
— сохраненное целочисленное значение вывода.
Qu
— сохраненное целочисленное значение ввода.
Vy
— значение вывода.
Vu
— значение ввода.
Ey
— показатель степени вывода.
Eu
— показатель степени ввода.
Вывод блока для правых битовых сдвигов
В примере приведено сравнение результатов моделирования для сдвига битов вправо для разных значений параметра Source: Dialog
и Input port
.
Настройки параметров для верхнего блока Shift Arithmetic приведены в таблице.
Параметр | Значение |
---|---|
Входной порт u |
|
Source |
|
Direction |
|
Number |
|
Верхний блок Shift Arithmetic принимает на вход 124
, что соответствует 01111100
в двоичном формате. Сдвиг количества битов на два разряда вправо дает 00011111
в двоичном формате. Следовательно, блок выводит 31
.
Настройки параметров для нижнего блока Shift Arithmetic приведены в таблице.
Параметр | Значение |
---|---|
Входной порт u |
|
Входной порт s |
|
Source |
|
Direction |
|
Нижний блок Shift Arithmetic выполняет ту же операцию, что и верхний блок. Однако нижний блок получает значение битового сдвига через входной порт вместо значения параметра Number. Если значение битового сдвига подается через входной порт как входной сигнал, то смещение можно выполнять во время моделирования.
Вывод блока для сдвига двоичной точки
Следующая модель показывает моделирование сдвига бинарных точек.
Настройки параметров для верхнего блока Shift Arithmetic приведены в таблице.
Параметр | Значение |
---|---|
Входной порт u |
|
Source |
|
Direction |
|
Number |
|
Binary points to shift |
|
Верхний блок Shift Arithmetic принимает на вход 124.0
, что соответствует 01111100
в двоичном формате. Сдвиг двоичной точки на три позиции вправо дает 01111100000
в двоичном формате. Следовательно, верхний блок выводит 995.0
.
Настройки параметров для нижнего блока Shift Arithmetic приведены в таблице.
Параметр | Значение |
---|---|
Входной порт u |
|
Source |
|
Direction |
|
Number |
|
Binary points to shift |
|
Нижний блок Shift Arithmetic также принимает на вход 124.0
. Сдвиг двоичной точки на три позиции влево дает 01111.100
в двоичном формате. Следовательно, нижний блок выводит 15.5
.
Алгоритмы
Битовый сдвиг вне диапазона
Предположим, что WL
– это длина входного машинного слова. Заштрихованные области на следующей диаграмме показывают значения битового сдвига вне допустимого диапазона для сдвига влево и вправо.
Точно так же заштрихованные области на следующей диаграмме показывают значения битового сдвига вне допустимого диапазона для двунаправленных сдвигов.
В зависимости от значения параметра Diagnostic for out of range shift value диагностика битовых сдвигов за пределами допустимого диапазона реагирует следующим образом:
-
None
— система не предпринимает никаких действий. -
Error
— система завершает моделирование и отображает ошибку.
Результаты моделирования и режима ускорения для значений битового сдвига вне диапазона
Предположим, что U
— это входное значение, WL
— длина входного машинного слова и Y
— выходное значение. Вывод значения битового сдвига вне допустимого диапазона для сдвигов влево выглядит следующим образом:
Аналогично вывод для значения битового сдвига вне допустимого диапазона для сдвигов вправо выглядит следующим образом:
Для двунаправленных сдвигов вывод значения битового сдвига вне допустимого диапазона выглядит следующим образом: