Смещение битов или двоичная точка сигнала
Simulink / Логика и Битовые операции
HDL Coder / Логика и Битовые операции
Блок 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
— Номер, чтобы управлятьсяНомер, чтобы управляться в виде скаляра, вектора или массива.
Типы данных: 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
— Количество мест, чтобы переключить двоичную точку
(значение по умолчанию) | scalar
Задайте целое число мест, чтобы переключить двоичную точку входного сигнала. Положительное значение указывает на сдвиг вправо, в то время как отрицательная величина указывает на сдвиг влево.
Настраиваемый: нет
Параметры блоков: BinPtShiftNumber |
Ввод: вектор символов, строка |
Значения: 'Dialog' | 'Input port' |
Значение по умолчанию: 'Dialog' |
Diagnostic for out of range shift value
— Диагностическое действиеNone
(значение по умолчанию) | Warning
| Error
Задайте, произвести ли предупреждение или ошибку в процессе моделирования, когда блок содержит значение сдвига из области значений. Опции включают:
None
— Simulink® не принимает мер.
Warning
— Simulink выводит предупреждение и продолжает симуляцию.
Error
— Simulink отключает симуляцию и отображает ошибку.
Для получения дополнительной информации смотрите Результаты Симуляции и Режима Accelerator для Значений Сдвига разряда Из области значений.
Параметры блоков: DiagnosticForOORShift |
Ввод: вектор символов, строка |
Значения: 'None' | 'Warning' | 'Error' |
Значение по умолчанию: 'None' |
Check for out-of-range 'Bits to shift' in generated code
— Проверяйте на биты из области значений, чтобы переключить сгенерированный код на нижний регистрoff
(значение по умолчанию) | on
Установите этот флажок, чтобы включать условные операторы в сгенерированный код, которые защищают от значений сдвига разряда из области значений. Этот флажок доступен, когда Bits to shift: Source является Input port
.
Для получения дополнительной информации смотрите Генерацию кода для Значений Сдвига разряда Из области значений.
Параметры блоков: CheckOORBitShift |
Ввод: вектор символов, строка |
Значения: 'on' | 'off' |
Значение по умолчанию: 'off' |
Типы данных |
|
Прямое сквозное соединение |
|
Многомерные сигналы |
|
Сигналы переменного размера |
|
Обнаружение пересечения нулем |
|
Значок блока Shift Arithmetic показывает поведение блока с помощью этих переменных:
Q
— Сохраненное целочисленное значение
V
— Значение реального мира
E
— Экспонента
Qy
— Сохраненное целочисленное значение выхода
Qu
— Сохраненное целочисленное значение входа
Vy
— Значение выхода
Vu
— Значение входа
Ey
— Экспонента выхода
Eu
— Экспонента входа
Следующая модель сравнивает поведение правильных сдвигов разряда с помощью диалогового окна по сравнению с входным портом блока.
Ключевые настройки параметров блоков блоков Константа:
Блок | Параметр | Установка |
---|---|---|
Constant и Constant1
| Constant value | 124
|
Output data type |
int8
| |
Dynamic bit shift
| Constant value | 2
|
Output data type |
Inherit: Inherit from 'Constant value'
|
Ключевые настройки параметров блоков блоков Арифметики Сдвига:
Блок | Параметр | Установка |
---|---|---|
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
|
Главный блок Shift Arithmetic берет вход 124, который соответствует 01111100 в двоичном формате. Сдвиг количества битов два места направо производит 00011111 в двоичном формате. Поэтому блок выходные параметры 31.
Нижний блок Shift Arithmetic выполняет ту же операцию как главный блок. Однако нижний слой камня получает значение сдвига разряда через входной порт вместо диалогового окна. Путем предоставления этого значения как входного сигнала можно изменить количество битов, чтобы переключить в процессе моделирования.
Следующая модель показывает эффект сдвигов двоичной точки.
Ключевые настройки параметров блоков блоков Константа:
Блок | Параметр | Установка |
---|---|---|
Constant и Constant1
| Constant value | 124
|
Output data type |
int8
|
Ключевые настройки параметров блоков блоков Арифметики Сдвига:
Блок | Параметр | Установка |
---|---|---|
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
|
Главный блок Shift Arithmetic берет вход 124, который соответствует 01111100 в двоичном формате. Сдвиг двоичной точки три места направо производит 01111100000 в двоичном формате. Поэтому главный блок выходные параметры 995.
Нижний блок Shift Arithmetic также берет вход 124. Сдвиг двоичной точки три места налево производит 01111.100 в двоичном формате. Поэтому нижний слой камня выходные параметры 15.5.
Предположим тот WL
входной размер слова. Теневые области в следующей схеме показывают значения сдвига разряда из области значений для левых и правых сдвигов.
Точно так же теневые области в следующей схеме показывают значения сдвига разряда из области значений для двунаправленных сдвигов.
Диагностика для сдвигов разряда из области значений отвечает можно следующим образом, в зависимости от режима работы:
Режим | Диагностика для значения сдвига из области значений | ||
---|---|---|---|
'none' | Предупреждение | Ошибка | |
Режимы симуляции | Не сообщайте ни о каком предупреждении или ошибке. | Сообщите о предупреждении, но продолжите симуляцию. | Сообщите об ошибке и симуляции остановки. |
Генерация кода | Не оказывает влияния. |
Предположим тот U
вход, WL
входной размер слова и Y
выход. Выход для значения сдвига разряда из области значений для сдвигов влево следующие:
Точно так же выход для значения сдвига разряда из области значений для сдвигов вправо следующие:
Для двунаправленных сдвигов выход для значения сдвига разряда из области значений следующие:
Для сгенерированного кода метод для обработки сдвигов разряда из области значений зависит от установки Check for out-of-range 'Bits to shift' in generated code.
Установка флажка | Сгенерированный код | Результаты симуляции по сравнению со сгенерированным кодом |
---|---|---|
Выбранный | Включает условные операторы, чтобы защитить от значений сдвига разряда из области значений. | Симуляция и Режим Accelerator заканчиваются те соответствия из генерации кода. |
Очищенный | Не защищает от значений сдвига разряда из области значений. |
|
Для сдвигов вправо на отрицательных входных параметрах со знаком большинство компиляторов C использует арифметический сдвиг вместо логического сдвига. Сгенерированный код для блока Shift Arithmetic зависит от этого поведения компилятора.
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.