主要内容

瞄准嵌入式处理器

介绍

接下来的部分将描述在嵌入式处理器上使用定点设计时经常出现的问题,例如关于整数大小和嵌入式处理器上可用操作的一些一般假设。这些假设会导致设计问题和设计规则,它们可能对特定的定点设计有用。

大小的假设

嵌入式处理器通常以特定的位大小为特征。例如,术语“8位微”、“32位微”或“16位DSP”是常见的。一般来说,可以假定处理器主要用于处理指定位大小的整数。指定位大小的整数称为基本数据类型.此外,处理器通常提供一些对整数的支持,这些整数的宽度是基本数据类型的两倍。金宝app由双位组成的整数称为蓄电池数据类型.例如,16位微处理器具有16位基本数据类型和32位累加器数据类型。

虽然嵌入式处理器可能支持其他数据类型,但本节只描述基数据类型和累加金宝app器数据类型。

操作的假设

本节讨论的嵌入式处理器操作仅限于基本仿真图的需要。基本的模拟使用乘法、加法、减法和延迟。定点模型也需要转换来进行缩放转换。对于所有这些操作,嵌入式处理器应该有允许基本数据类型作为输入的本地指令。对于累加器类型的输入,处理器通常支持加法、减法和延迟(存储/从内存中检索),但不支持乘法。金宝app

由于复杂性和大小问题,累加器类型的输入通常不支持乘法。金宝app乘法的一个困难是,要达到完全精度,输出需要是输入的两倍大。例如,两个16位数字相乘需要一个32位输出来实现全精度。处理乘法运算输出的需要是嵌入式处理器包含累加器类型支持的原因之一。金宝app但是,如果还支持累加器类型输入的乘法,那么就需要支持比累加器类型大两倍的数据类型。金宝app为了限制这种额外的复杂性,累加器类型的输入通常不支持乘法。金宝app

设计规则

当您使用定点数学建模动态系统时,您应该注意的重要设计规则是遵循的。

设计规则1:只乘基本数据类型

最好只对基本数据类型的输入进行乘法。嵌入式处理器通常为基类型输入的乘法提供指令,但不为累加器类型输入的乘法提供指令。如果需要,可以组合多条指令来处理累加器类型输入的乘法。然而,这可能会导致大量、缓慢的嵌入代码。

如果需要,可以插入块将输入从累加器类型转换为基本类型,然后再进行Product或Gain块。

设计规则2:延迟应该使用基本数据类型

为什么单位延迟应该只使用基类型的数字有两个一般的原因:

  • 单位延迟本质上是将一个变量的值存储到RAM中,并在一个时间步后从RAM中检索该值。因为值从一个时间步到下一个时间步都必须在内存中,所以RAM必须专门用于变量,不能被共享或用于其他目的。使用累加器类型的数字而不是基本数据类型将使RAM需求增加一倍,这将显著增加嵌入式系统的成本。

  • 单位延迟通常馈送到增益块。乘法设计规则要求输入(单位延时信号)使用基本数据类型。

设计规则3:临时变量可以使用累加器数据类型

除了单位延迟信号外,大多数信号从一个时间步到下一个时间步都不需要。这意味着信号值可以临时存储在共享和重用内存中。这个共享和重用的内存可以是RAM,也可以是CPU中的寄存器。在这两种情况下,将值存储为累加器数据类型的成本并不比将其存储为基础数据类型的成本高多少。

设计规则4:求和可以使用累加器数据类型

如果有对齐,加法和减法可以使用累加器数据类型。典型的调整是减少由于舍入或溢出造成的错误的累积。

例如,一个常见的过滤操作是几个变量的加权和。将变量乘以权重自然会产生累加器类型的乘积。在求和之前,可以将每个产品转换回基本数据类型。这种方法将舍入误差引入到总和的每个部分。

或者,可以使用累加器数据类型对产品求和下载188bet金宝搏,最终的和可以转换为基本数据类型。舍入误差只在一个点上引入,而且精度通常更好。使用累加器类型的数字做加法或减法的成本稍高一些,但如果有理由,这通常是值得的。