0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于C代码中的特殊运算按位操作的介绍和应用

MATLAB 来源:djl 作者:柚籽 2019-09-17 14:57 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

C代码中有一种特殊的运算,即按位操作。那么,

Simulink模型里可以实现按位来操作吗?

能继而生成按位操作的代码吗?

位操作

要得到:

y1 = (uint8_T)(u1 & 217)

或者

y1 = (uint8_T)(u1 & 0xD9)

怎么做:

Simulink框图模型里使用Bitwise Operator系列的模块;

在Stateflow里则直接使用按位操作符,比如&,|;

MATLAB Function的m脚本里则使用bitor (bitxx)系列的命令。

实例四

1. 新建一个简单的Simulink模型

这三个模块都只实现了一个简单的运算:对输入u1执行按位运算。

关于C代码中的特殊运算按位操作的介绍和应用

双击上图中Bitwise Operator模块,设置如下图:

关于C代码中的特殊运算按位操作的介绍和应用

Chart 里则直接写单个 & 符号表示 “按位与”,同时需要注意 Enable C-bit operations 勾选,不然会计算出错。它默认是勾选上的。

关于C代码中的特殊运算按位操作的介绍和应用

MATLAB Function 里的语句,直接使用 bitxx 系列的命令。点击 Edit Data,也可以手动设置输入输出口的数据类型。

关于C代码中的特殊运算按位操作的介绍和应用

2. 代码生成基本配置

求解器:定步长—离散求解器

系统目标文件:ert.tlc

3. 新建数据对象

打开Model Explorer,点击菜单的Add,在Base Workspace里定义输入输出信号的数据对象,数据对象类型为Simulink.Signal,并如图设置输入输出均为uint8类型,StorageClass设置为ExportedGlobal:

关于C代码中的特殊运算按位操作的介绍和应用

4. 信号关联

在信号线上右键,将信号与Base Workspace的数据对象关联在一起。鼠标操作的方式,可以参考之前的帖子里的菜单截图。因为这里的信号略多,所以可以使用命令的方式来实现:

关于C代码中的特殊运算按位操作的介绍和应用

此时,第一张模型截图中信号名前方的蓝色小叉子就会出现。

5. 生成代码

Ctrl+B,生成代码。

如前面所设置的,得到这三个按位操作的代码:

关于C代码中的特殊运算按位操作的介绍和应用

所以说,在Simulink建模也可以实现按位运算:

在Simulink框图模型里使用Bitwise Operator模块;

在Stateflow里则直接使用按位操作符,比如&,|;

在脚本里则使用bitor (bitxx)系列的命令。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C代码
    +关注

    关注

    1

    文章

    90

    浏览量

    15237
  • 数据类型
    +关注

    关注

    0

    文章

    238

    浏览量

    14233
  • 脚本
    +关注

    关注

    1

    文章

    411

    浏览量

    29277
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    单片机位操作指令

    传送指令 MOV C,BIT MOV BIT,C 这组指令的功能是实现累加器(CY)和其它地址之间的数据传递。 例:MOV P1.
    发表于 01-05 06:48

    cw32f030c8实现点灯

    << 1); 这行代码使用运算符( )对GPIOA的ODR寄存器的第1进行操作
    发表于 12-10 08:07

    arm单片机位带操作的原理

    的序号。 bit_number:目标所在位置(0-31)。 3、操作的优势 提高了代码的可读性和执行效率,尤其是对GPIO端口和寄
    发表于 11-25 08:24

    操作的常见错误与应对策略

    着要操作的目标,通过与目标数据进行与、或或
    发表于 11-24 07:50

    C语言操作

    C 语言操作符包括与( )、或(|)、
    发表于 11-21 07:52

    操作的分析

    的值置1: 五、操作编程实现 在C编译器并没有直接支持操作,比如,
    发表于 11-18 07:01

    蜂鸟内核模块浮点指令运算数据的获取

    是如何获取所需的两个操作数。 我们以浮点加法运算为例。 首先,经过分析我们发现整型指令寄存器的例化是通过循环完成的,所以我们可以用相同的方式例化32个32浮点寄存器,相关
    发表于 10-24 13:39

    CSR读写控制模块

    值,表示RISC-V指令集中的XLEN(数据宽),csr_op1为从rs1寄存器或立即数获取的操作数。 对于CSRRS指令,需要读取CSR的值,并将原来的值与rs1寄存器的值进行
    发表于 10-24 10:01

    如何获取蜂鸟内核执行模块浮点指令的运算数据

    是如何获取所需的两个操作数。 我们以浮点加法运算为例。 首先,经过分析我们发现整型指令寄存器的例化是通过循环完成的,所以我们可以用相同的方式例化32个32浮点寄存器,相关
    发表于 10-24 07:10

    CSR读写控制模块详解

    中的XLEN(数据宽),csr_op1为从rs1寄存器或立即数获取的操作数。 对于CSRRS指令,需要读取CSR的值,并将原来的值与rs1寄存器的值进行
    发表于 10-24 06:08

    使用Simulink自动生成浮点运算HDL代码(Part 1)

    ,生成的HDL代码与目标无关。可以在任何通用FPGA或ASIC上部署该设计。 下面介绍如何在Simulink创建单精度浮点乘法 直接使用乘法模块即可,并将输入口改为单精度浮点 使用Ctrl + g
    发表于 10-22 06:48

    NTT设计介绍

    去乘以另一个数据的每一,其算法时间复杂度为。NTT可以看作是定义在有限域上的快速傅里叶变换,算法时间复杂度为它基于某个质数的单位原根的幂次方根进行运算,所有的操作都在有限域内进行,避免了频繁的浮点数
    发表于 10-22 06:05

    CSR读写控制模块的详解

    (数据宽),csr_op1为从rs1寄存器或立即数获取的操作数。 对于CSRRS指令,需要读取CSR的值,并将原来的值与rs1寄存器的值进行
    发表于 10-21 15:17

    基于LockAI视觉识别模块:C++图像的基本运算

    在图像处理,理解图像的基本操作是掌握计算机视觉技术的关键。本文章将介绍 基于LockAI视觉识别模块下OpenCV 图像的基本运算方法,
    发表于 05-06 16:56

    基于LockAI视觉识别模块:C++图像的基本运算

    在图像处理,理解图像的基本操作是掌握计算机视觉技术的关键。本文章将介绍基于LockAI视觉识别模块下OpenCV图像的基本运算方法,包括
    的头像 发表于 05-06 16:20 824次阅读
    基于LockAI视觉识别模块:<b class='flag-5'>C</b>++图像的基本<b class='flag-5'>运算</b>