我怎么能使用部分数据类型时,值超出了区间[1,+ 1)?

12个视图(30天)
许多引用描述使用部分实现定点设计数据类型。这些签署了部分数据类型代表值从1 + 1。
作为一个例子,考虑finitie-impulse-response过滤器(杉木)所示的图像。我想转换为定点使用推荐的部分类型在许多参考资料。
但是,coefficiencts超出了区间[- 1,+ 1),所以我是如何实现这一设计使用部分类型?

接受的答案

安迪·巴特利特
安迪·巴特利特 2021年5月6日
编辑:安迪·巴特利特 2021年5月6日
我建议不要试图强迫使用部分类型的设计。使用通用定点扩展而不是限制只对部分提供了一个重要的优势。通过使用通用定点缩放、常量和变量的作用域将显示他们的价值观,显示器,等,使用相同的工程单位,优先在原始浮点设计。这使得测试和调试更容易并且更不容易错误。
在这个答案,我将展示三个模型的设计方法。首先,使用一般的定点缩放。第二,使用原始整数建模(也不推荐)。第三,试图使用部分类型。所有的设计假设的输入,在最初的工程单位,范围在区间[8 8)。在所有的三个设计,输入和最终输出将8位。
一般定点扩展
一般的定点设计显示在这里。
注意,冷杉的系数具有相同的实际值与原始浮点设计(量子化水平内)。第二个显示块存储整数的值表明,将观察到的低水平从这个模型生成C代码。冷杉是使用全为中级水平的计算精度的常见模式。例如,产品块8位输入和一个16位输出。还要注意,输入扩展2 ^ 4和2 ^ 2,而输出这两个落下的石块2 ^ 6的产物。减少和阻止喜欢它的输入6位二进制的右边点,所以不损失精度。也和块蓄电池类型和输出类型是32位,因此,减少添加三个输入不能溢出。演员从32位累加器类型最后8比特的输出并失去精度。最后输出类型fixdt(1 8 2)覆盖范围(-512、508)这是大到足以防止任何溢出。
在下面的范围中,第一行和第二行显示浮点基线和一般定点设计。注意,响应的形状都是相同的。还要注意,值具有相同的工程单位和范围从约-380 + 380。
生整数扩展
背景的人在C或HDL编码通常定点数学模型使用原始整数。这需要格外小心,但可以做如下图所示。
提示:注意左边的铸块显示图标(SI)。在这种模式下,铸块忽略输入扩展和重新解读只是作为原始输入整数。这允许相同的测试模型被用于所有的设计。
注意所有的细节需要原始的整数设计需要由用户处理。例如,常数块举行了冷杉系数需要原始参数的整数值。使用原始的整数系数时,没有自动化的方式,其意义同意原来的真实世界的价值观。
在上面的范围中,第一和第三行显示浮点基线和原始整数设计。注意,响应的形状都是相同的。但单位是明显不一样的。原占地-380 + 380,但原始整数-90 + 90左右。进行测试和调试,用户需要照顾比较之前将这些常见的单位。
签署了部分设计
第三种方法尝试部分使用签署了部分类型如下所示。
签署了8位输入被重新解释为签署了分数。还冷杉系数值按比例缩小了32 X签署了部分类型。这个比例的系数需要做手工(研究附加脚本)。因为冷杉是线性的,规范的输入和1 + 1的系数范围可以独立完成。由于线性,这只会改变最终的输出恒定增益系数。如果设计非线性元素,然后尝试正常化任何信号需要仔细协调与其他相关的信号和操作。非线性设计,需要非常小心正确协调比例的变化。
产品和操作和冷杉不改变分数类型,因为它们不是自然而然产生的数学。签署了8位部分的自然产品类型与分数签署了16位长度14 (15)。立即迫使签署的产品输出16位分数可能导致溢出(输入1 * 1 = + 1),将最低有效位是无用地总是零。使用相同的扩展和提供额外的范围的金额可以从3 + 3为任意系数。显然,3 + 3不适合的部分类型。最坏的情况下输出冷杉大约是-1.3 + 1.3这部分不能处理没有溢出。因此最终的输出类型范围(2,2)。如果我们想呈现部分类型模型的下一个阶段,我们可以插入另一个(SI)引入另一个比例重新解释。
在上面的范围中,第一和第四行显示浮点基线和部分部分的设计。注意,响应的形状都是相同的。但单位是明显不一样的。原占地-380 + 380,但原始整数约-1.3 + 1.3。进行测试和调试,用户需要照顾比较之前将这些常见的单位。
嵌入式实现是相同的
生成的一般C代码的手臂皮层M目标这三个设计是相同的,下图所示。
他们都用相同的原始整数输入的整数常量来产生三个签署了16位产品。下载188bet金宝搏他们都添加他们三个在一个32位16位产品蓄电池。下载188bet金宝搏所有积累8位转向右边,然后投8位。
最后的建议
三种方法模型最初的冷杉在定点。他们都产生相同的最终生成的C代码。一般定点缩放方法需要从用户最少的工作。一般扩展保留用户的优先工程从最初的设计单位。留住用户的优先单元测试和调试是一个主要的优势。原始的整数和小数类型方法可以做,但需要更多的从用户和护理工作。给出相同的生成的代码和一个有利的工作流程,我建议使用一般的定点缩放方法。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!