Арифметика сдвига

Переключите биты или двоичную точку сигнала

Библиотека

Логика и битовые операции

Описание

Поддерживаемые операции сдвига

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

Например, переключая двоичную точку на входном параметре типа данных 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
  • Плавающая точка

  • Встроенное целое число

  • Фиксированная точка

s
  • Плавающая точка

  • Встроенное целое число

  • Целое число фиксированной точки

Следующие правила определяют тип выходных данных:

Тип данных Входного параметра uТип выходных данных
Плавающая точкаТо же самое как входной параметр u
Встроенная целочисленная или фиксированная точка
  • Знак u

  • Размер слова u

  • Наклон u * 2^(max(binary points to shift))

  • Смещение u * 2^(max(binary points to shift – bits to shift)), для сдвигов разряда, где направление является двунаправленным или правильным

  • Смещение u * 2^(max(binary points to shift + bits to shift)), для сдвигов разряда, где направление оставляют

Блочные параметры поддерживают следующие типы данных:

ПараметрПоддерживаемые типы данных
Биты, чтобы переключить: Номер
  • Встроенное целое число

  • Целое число фиксированной точки

Двоичные точки, чтобы переключить
  • Встроенное целое число

  • Целое число фиксированной точки

Для получения дополнительной информации смотрите Типы данных, Поддержанные Simulink в документации Simulink®.

Параметры

Биты, чтобы переключить: Источник

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

Биты, чтобы переключить: Направление

Задайте направление, в котором можно переключить биты: левый, правильный, или двунаправленный.

Биты, чтобы переключить: Номер

Задайте скаляр, вектор или массив значений сдвига разряда. Этот параметр доступен когда Биты, чтобы переключить: Источником является Dialog.

Если направление...Затем...
Left или RightИспользуйте положительные целые числа, чтобы задать сдвиги разряда.
BidirectionalИспользуйте положительные целые числа для сдвигов вправо и отрицательные целые числа для сдвигов влево.
Двоичные точки, чтобы переключить

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

Диагностика для значения сдвига из области значений

Задайте, произвести ли предупреждение или ошибку во время моделирования, когда блок содержит значение сдвига из области значений. Опции включают:

  • Программное обеспечение None — Simulink не принимает мер.

  • Программное обеспечение Warning — Simulink отображает предупреждение и продолжает моделирование.

  • Программное обеспечение Error — Simulink отключает моделирование и отображает ошибку

Для получения дополнительной информации смотрите Результаты Моделирования и Режима Accelerator для Значений Сдвига разряда Из области значений.

Проверьте на 'Биты из области значений, чтобы переключить' в сгенерированном коде

Установите этот флажок, чтобы включать условные операторы в сгенерированный код, которые защищают от значений сдвига разряда из области значений. Этот флажок доступен когда Биты, чтобы переключить: Источником является Input port.

Для получения дополнительной информации смотрите Генерацию кода для Значений Сдвига разряда Из области значений.

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

Определение сдвига разряда из области значений

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

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

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

РежимДиагностика для значения сдвига из области значений
'none'ПредупреждениеОшибка
МоделированиеНе сообщайте ни о каком предупреждении или ошибке.Сообщите о предупреждении, но продолжите моделирование.Сообщите об ошибке и моделировании остановки.
Режимы Accelerator и генерация кодаНе имеет никакого эффекта.

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

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

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

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

Генерация кода для значений сдвига разряда из области значений

Для сгенерированного кода метод для обработки сдвигов разряда из области значений зависит от установки Проверки на 'Биты из области значений, чтобы переключить' в сгенерированном коде.

Установка флажкаСгенерированный кодРезультаты симуляции по сравнению со сгенерированным кодом

Выбранный

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

Моделирование и Режим Accelerator заканчиваются те соответствия из генерации кода.

Очищенный

Не защищает от значений сдвига разряда из области значений.

  • Для значений в области значений, моделирования и Режима Accelerator заканчивается те соответствия из генерации кода.

  • Для значений из области значений результатами генерации кода является конкретный компилятор.

Для сдвигов вправо на отрицательных входных параметрах со знаком большинство компиляторов C использует арифметический сдвиг вместо логического сдвига. Сгенерированный код для блока Shift Arithmetic зависит от этого поведения компилятора.

Примеры

Блок Вывод для правильных сдвигов разряда

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

Ключевые блочные установки параметров блоков Константа:

БлокПараметрУстановка
Constant и Constant1Постоянное значение124
Тип выходных данныхint8
Dynamic bit shiftПостоянное значение2
Тип выходных данныхInherit: Inherit from 'Constant value'

Ключевые блочные установки параметров блоков Арифметики Сдвига:

БлокПараметрУстановка
Bit shift from dialogБиты, чтобы переключить: ИсточникДиалоговое окно
Биты, чтобы переключить: НаправлениеRight
Биты, чтобы переключить: Номер2
Bit shift from inputБиты, чтобы переключить: ИсточникInput port
Биты, чтобы переключить: НаправлениеRight

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

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

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

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

Ключевые блочные установки параметров блоков Константа:

БлокПараметрУстановка
Constant и Constant1Постоянное значение124
Тип выходных данныхint8

Ключевые блочные установки параметров блоков Арифметики Сдвига:

БлокПараметрУстановка
Shift binary point 3 places to the rightБиты, чтобы переключить: ИсточникДиалоговое окно
Биты, чтобы переключить: НаправлениеBidirectional
Биты, чтобы переключить: Номер0
Двоичные точки, чтобы переключить: Номер3
Shift binary point 3 places to the leftБиты, чтобы переключить: ИсточникДиалоговое окно
Биты, чтобы переключить: НаправлениеBidirectional
Биты, чтобы переключить: Номер0
Двоичные точки, чтобы переключить: Номер3

Главный блок Shift Arithmetic берет входной параметр 124, который соответствует 01111100 в двоичном формате. Сдвиг двоичной точки три места направо производит 01111100000 в двоичном формате. Поэтому главный блок выходные параметры 995.

Нижний блок Shift Arithmetic также берет входной параметр 124. Сдвиг двоичной точки три места налево производит 01111.100 в двоичном формате. Поэтому нижний слой камня выходные параметры 15.5.

Характеристики

Типы данных

Дважды | единственный | основывают целое число | фиксированная точка

'SampleTime'

Наследованный от управления блоком

Прямое сквозное соединение

Да

Многомерные сигналы

Нет

Сигналы переменного размера

Нет

Обнаружение пересечения нулем

Нет

Генерация кода

Да

Представлено до R2006a

Была ли эта тема полезной?