您的位置:首页 > 编程语言 > MATLAB

matlab simulink 中 gateway 参数设置

2015-04-22 10:08 225 查看
一、Overflow: 当数据发生溢出时,开发人员有三种处理方法:

当选择 saturate(饱和)模式时,将数据饱和在正的最大值或负的最小值,也就是当我们数据发生溢出时候,我们只得到我们在极限时候的数据,而对溢出无视。有符号四位数据: +7(0111) ~ -8(1000)

当选择 wrap 模式时, 做绕回处理,即最大值加1结果是最小值,最小值减1得到最大值;也就是溢出时候直接给上一位进位。有符号四位数据:本来最大是 0111(+7),发生溢出变为 1000(-8)

当选择 Flag as error 模式时,将数据溢出标记到 simulink 的错误报告中。

二、Quantization: 当出现量化误差时,开发人员有两种处理方式:

当选择 Round(四舍五入) 模式时,将数据四舍五入到最接近的开发人员定义精度可表示的数值上;

当选择 Truncate(截短) 模式时,直接将开发人员定义精度无法表示部分数值丢弃。



For Example

EX1

二进制 十进制

4 bits in / 4 bits out 6 + 3 0110 -7

Wrap + 0011

1001

Wrap : 最大值加1,变为最小值,也就是当我们是四位有符号数时,我们的最大值就是4‘b0111 = 7, 当我们超过这个最大值时候,数据发生溢出,变为4’b1000,其为补码形式,这时候就是有符号数的最小值,为 -8

我们定义为有符号数,所以数据有效位只有三位,最高位为符号标志位, 当我们定义为 4 bits, 其最大值为 4‘b0111 = +7, 然后加1,就变为 4’b1000 = -8

我们无符号的实际结果为9,所以我们要加2,也就是 4‘b1001 , 补码就是 -7

二进制 十进制

4 bits in / 4 bits out 6 + 3 0110 7

Saturate + 0011

0001

Saturate:饱和,我们将数据卡在一个饱和区间,对于四位有符号数,其数据为区间为: +7(0111) ~ -8(1000),超过该区间的数,也就是溢出时候的数据,都被饱和为该区间的极限数据

二进制 十进制

4 bits in / 5 bits out 6 + 3 0110 9

Saturate + 0011

1001

数据没有发生溢出的结果为 9

Ex2

当我们设置如下图的流程时,我们将采样时候设置为 0.01s, sine 函数 的频率为 1Hs,幅值为140,停止仿真时间设置为 2s



当我们将 Gateway In 参数设置为 wrap时候,其仿真图如下:



当我们将 Gateway In 参数设置为 saturate 时候,其仿真图如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: