||
本文研究Data Type Conversion模块的用法和该模块生成的代码。
文章目录
1 Simulink中的Data Type Conversion模块
2 Data Type Conversion模块建模
3 取整方式配置
4 整型转换溢出处理
5 总结
1 Simulink中的Data Type Conversion模块
Data Type Conversion模块可以转换Simulink信号线的数据类型。在建模的过程中,这是一个简单而常用的模块。
在使用该模块的时候,也有一些地方需要注意。
2 Data Type Conversion模块建模
通过建模可以直观地感受到Data Type Conversion模块的用法。
1)新建一个Simulink模型,拖入一个constant模块,一个Data Type Conversion模块,一个Disp模块;
2)将constant模块配置为uint16类型,将Data Type Conversion模块的Output配置为uint8类型;
3)运行仿真后,可以看到disp模块中的结果,但是类型转换不够直观;可以通过Display -->Signals & Ports --> Port Data Types来显示信号线上的类型;
3 取整方式配置
当Data Type Conversion模块输入的是浮点数,输出的是整数时,就涉及到了转换的过程中采用哪一种取整方式。双击模块后,其中的Integer rounding mode就是用来配置取整方式。
选择不同的取整方式,生成的代码是不同的,有的会非常复杂。通常保持默认的floor即可,也就是向负无穷大舍入。
4 整型转换溢出处理如图中所示,会将超出的部分重新从零开始往上计算。生成代码的强制类型转换的效果,会随着使用的编译器不同,而做出不同的溢出处理方式,也就是说不一定和仿真的一样。这一点很重要,要进行充分的验证。
2)另外,可以通过勾选Saturate on integer overflow配置,对溢出的情况做一个饱和处理;
这样的话,输出的信号就会被限值在uint8类型的边界之处,也就是最大值255;
代码中也会有不同的实现方式:
5 总结
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-25 02:13
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社