文档

针对嵌入式处理器

介绍

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

大小的假设

嵌入式处理器的典型特征是具有特定的位大小。例如,术语“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金宝搏求和,并将最终和转换为基本数据类型。舍入误差只引入一个点,精度一般较好。使用累加器类型的数字进行加法或减法的成本稍微高一些,但如果有理由,通常是值得的。