Этот пример показов, как реализовать побитовые операции с помощью блоков Simulink, Stateflow Charts и Блоков MATLAB function.
Чтобы включить логическую операцию в вашу модель, используйте блок Bitwise Operator из библиотеки Logic и Bit Operations.
1. Откройте пример модели ex_bit_logic_SL.

Блоки Логического Оператора выполняют операцию И в модели. Чтобы изменить операцию, дважды кликните блок и установите в поле оператор значение любой из операций в меню.
2. Дважды кликните блок, чтобы открыть диалоговое окно Параметров блоков.
3. Чтобы выполнить побитовые операции с битовой маской, выберите Использовать битовую маску.
Если другой вход использует побитовые операции, очистите параметр Use bit mask и введите количество входных портов.
4. В поле Bit Mask введите десятичное число. Использование bin2dec или hex2dec для преобразования входов из двоичных или шестнадцатеричных. В этом примере введите hex2dec('D9').
5. Чтобы создать модель и сгенерировать код, нажмите Ctrl + B.
Код, реализующий побитовый оператор AND, находится в ex_bit_logic_SL_step функция в ex_bit_logic_SL.c:
/* Exported block signals */
uint8_T u1; /* '<Root>/u1' */
uint8_T y1; /* '<Root>/Bitwise Operator' */
/* Model step function */
void ex_bit_logic_SL_step(void)
{
/* S-Function (sfix_bitop): '<Root>/Bitwise Operator' incorporates:
* Inport: '<Root>/u1'
*/
y1 = (uint8_T)(u1 & 217);
}
1. Откройте пример модели ex_bit_logic_SF.

2. Щелкните правой кнопкой мыши диаграмму Stateflow, чтобы открыть график Свойства (Properties).
3. Убедитесь, что установлен флажок Включить операции С-битов. Для получения дополнительной информации смотрите Включить C-битные операции (Stateflow).
4. Чтобы создать модель и сгенерировать код, нажмите Ctrl + B.
Код, реализующий побитовый оператор AND, находится в ex_bit_logic_SF_step функция в ex_bit_logic_SF.c:
/* Exported block signals */
uint8_T u1; /* '<Root>/u1' */
uint8_T y1; /* '<Root>/Bit_Logic' */
/* Model step function */
void ex_bit_logic_SF_step(void)
{
/* Chart: '<Root>/Bit_Logic' incorporates:
* Inport: '<Root>/u1'
*/
y1 = (uint8_T)(u1 & 0xD9);
}
В этом примере, чтобы показать метод блока MATLAB Function для реализации побитовой логики в сгенерированный код, используйте побитовый OR, '|'.
1. Откройте пример модели ex_bit_logic_ML.

2. Этот Блок MATLAB function содержит следующую функцию:
function y1 = fcn(u1, u2) %#eml y1 = bitor(u1, u2); end
3. Чтобы создать модель и сгенерировать код, нажмите Ctrl + B.
Код, реализующий побитовый оператор OR, находится в ex_bit_logic_ML_step функция в ex_bit_logic_ML.c:
/* Exported block signals */
uint8_T u1; /* '<Root>/u1' */
uint8_T u2; /* '<Root>/u2' */
uint8_T y1; /* '<Root>/Bitwise OR' */
/* Model step function */
void ex_bit_logic_ML_step(void)
{
/* MATLAB Function: '<Root>/Bitwise OR' incorporates:
* Inport: '<Root>/u1'
* Inport: '<Root>/u2'
*/
y1 = (uint8_T)(u1 | u2);
}