就选择 32 位微控制器的成本和性能之间的权衡而言,真正的分界点是什么?
换句话说,随着 ARM 架构的兴起和统治,为什么我们仍然使用 8 位和 16 位微控制器?它们仍然便宜得多吗?
我知道非常低端的设备不需要更大、更复杂的架构提供的资源。但是,如果成本似乎趋于同一范围,那么仍然使用它们的真正动机是什么?
就选择 32 位微控制器的成本和性能之间的权衡而言,真正的分界点是什么?
换句话说,随着 ARM 架构的兴起和统治,为什么我们仍然使用 8 位和 16 位微控制器?它们仍然便宜得多吗?
我知道非常低端的设备不需要更大、更复杂的架构提供的资源。但是,如果成本似乎趋于同一范围,那么仍然使用它们的真正动机是什么?
也许一年前,低端 8 位微控制器和最便宜的 32 位微控制器之间存在显着差异。情况不再如此。
根据 Digi-Key 批量定价,您可以获得采用 SOT-23-6 封装的 8 位 PIC10F200,数量为 2500 片,价格为 35 埃。您可以获得采用 SOIC-8 封装的 32 位 CY8C4013SXI-400 (ARM Cortex-M0),数量为 2500 片,数量为 36 埃。(就制造商实际支付的价格而言,Digi-Key 批量定价是不现实的,这可能要少得多,但我认为它可以用于对类似数量的不同产品进行粗略的定价比较。)
所以 OP 是对的,他们正在趋同。
那么为什么没有更多地使用 32 位芯片呢?正如我在第一段中所说的那样,这个价格点和大小平价只发生在过去一年或 18 个月内。在有足够的筹码具有竞争力之前,他们还有很长的路要走。
在 Digi-Key 提供的6875 ARM 芯片中,仅有 4款现货供应,数量价格低于 1 美元。 四。与此同时,还有数百个价格低于 1 美元的 8 位芯片供工程师选择。
但是可以说至少有几十个低端 32 位微处理器可用。他们会自动选择超过 8 位的吗?
首先,您必须让工程师了解它们。改变总是有很多阻力。要学习的新东西——从硬件的角度来看,学习如何将新芯片集成到电路中。有新的工具,如在线编程器、新的编译器等。对于固件工程师来说,学习如何使用一套全新的外设和定时器(主要是寄存器布局和位含义)。
32 位很好,但除非需要进行大量繁重的计算,否则有什么意义呢?如果您只有四个 GPIO 引脚,则在内部将它们作为 32 位寄存器访问与使用 8 位寄存器相比没有任何优势。
我认为功耗总是有利于 8 位微控制器。
例如,PIC10F200 在 4 MHz 和 2v 下运行时消耗 175 µA,在睡眠模式下消耗 100 nA。CY8C4013SXI-400 在 4MHz 和 2v 下运行时消耗大约 800 µA,在睡眠模式下消耗 1 uA。(CY8C4013SXI 的数据表没有 4 MHz 或 2v 的数字,所以我不得不做一些估计——数据表说它在 6 MHz 和 3.3v 时绘制 2 ma。)
因此,ARM 在清醒时消耗 4.5 倍的电流,在睡眠时消耗 10 倍。看起来不多,但它在纽扣电池上运行 3 个月或一年之间的区别。(我假设两个微控制器主要是在做计时、更新端口等,而不是做真正的繁重计算。如果是后者,那么 8 位微控制器必须在很长一段时间内进行大量多字节运算随着时间的推移,它失去了一些优势。)
有趣的是,ARM 消耗的电流大约是 8 位的四倍,而它又具有四倍宽的内部寄存器和数据路径。我不认为这是巧合。对于 CMOS,功耗大致与被切换的晶体管数量成正比,而 ARM 显然在每条指令执行时会做更多的事情。
随着越来越多的 ARM 供应商推出低端芯片,如果像 Microchip 这样的供应商进一步降低价格,我不会感到惊讶。无论如何,由于价格或多或少相同,封装尺寸相似,但可供选择的 32 位芯片要少得多,我认为 8 位微控制器仍将存在一段时间——尤其是因为你已经让成千上万的工程师熟悉它们。
三个要点:
订购 10,000 个筹码时 50 美分是一笔不小的数目。当您订购 100,000 个筹码时,甚至更多。
您可以获得比 32 位芯片小得多的 8 位芯片,例如采用 SOT23-6 封装的 PIC10。
32 位芯片,因为它们的时钟通常更快,功能更多,比 8 位芯片消耗更多的功率。电池消耗得更快,电力系统必须提供更多电流(因此成本更高)等。
毕竟,你为什么要买一个主宰去隔壁喝杯糖?
我为商业产品开发的 uC 应用程序几乎从不处理大于 8 位的数据。因此,即使 32 位的价格与 8 位的价格相同,也没有任何好处。正如其他人所说,我们选择熟悉的东西,这样我们就可以更快地把它打出来。然而,我开发的最后一个结果却以各种方式将我使用的 PIC16 推向了极限——但这并不是因为数据大小。如果我再这样做,那么我真的应该学习ARM。
我希望 ARM 芯片将接管大多数类似于“计算机”的功能。另一方面,许多 8 位微控制器习惯于做一些事情,这些事情可以用相对简单的可编程逻辑器件或中等数量的门来完成,但实际上可以更便宜和/或使用更少的电流消耗来完成简单的 8 位微。在设计更复杂的应用程序时,使用 32 位微控制器通常比使用 8 位微控制器更容易,但如果芯片的全部目的是,例如监视和去抖动某个输入,如果它变高,则开始输出 200以 1 毫秒间隔在某个输出上脉冲,然后以 2 毫秒间隔 100 次,然后在 3 毫秒时 100 次,然后暂停 100 毫秒,并继续这样做直到输入变低,为此设计代码实际上可能更容易在 8 位微机上比在 32 位微机上。在许多情况下,8 位和 32 位微控制器之间的成本差异可能不再足以证明花费额外的工程精力来使项目“适合”8 位微控制器,但在 32 位部件不适合的情况下无需节省任何工程精力,没有理由多花一分钱。