N位微控制器的特性是什么?

电器工程 微控制器 建筑学
2022-01-06 23:36:56

我听说过 8 位微控制器和 16 位微控制器。我什至听说过7 位微控制器和1 位微控制器。

这些组的一般属性是什么?如何选择用于项目的类型?

4个回答

还有 4 位和 32 位微控制器。64位微处理器用于PC。

数字是指寄存器宽度。寄存器是微控制器的核心。许多操作使用寄存器来移动数据或进行算术或逻辑操作。这些操作发生在ALU中,即算术和逻辑单元。

在此处输入图像描述

有些操作只需要 1 个参数,例如清除寄存器或递增它。然而,许多人将采用 2 个参数,这导致 ALU 的典型倒置裤子表示。\$A\$ 和 \$B\$ 是参数,ALU 将根据当前操作生成结果 \$C\$。两个参数的操作可以是“将 15 加到寄存器 R5 并将结果存储在内存地址 0x12AA”。这要求在常量“15”(来自程序存储器)、寄存器文件和数据存储器之间存在路由。该路由通过数据总线发生. 有一个内部数据总线连接寄存器、内部 RAM 和 ALU,对于微处理器和一些微控制器,有一个外部数据总线连接到外部 RAM。除了少数例外,数据总线与寄存器和 ALU 的宽度相同,它们共同决定了它是什么类型的微控制器。(8088 是个例外,它内部有 16 位总线,但外部只有 8 位。)

4位控制器有4位寄存器,只能表示16个不同的值,从0到十六进制的0xF。这并不多,但足以处理数字时钟中的数字,这是使用它们的领域。

几十年来,8 位控制器一直是该行业的主力军。在 8 位中,您可以存储 0 到 255 之间的数字。这些数字还可以表示字母和其他字符。因此,您可以使用文本。有时 2 个寄存器可以组合成一个 16 位寄存器,最多允许 65535 个数字。但在许多控制器中,大数字必须在软件中处理。在这种情况下,甚至 32 位数字也是可能的。
大多数 8 位控制器都有一个 16 位程序计数器。这意味着它可以处理最大 64kBytes 的内存。对于许多嵌入式应用程序来说就足够了,有些甚至只需要几 kBytes。
例如,一个停车场监视器,您必须计算汽车的数量并将其显示在 LCD 上,这是您通常使用 8 位控制器所做的事情。:-)

16 位是下一步。出于某种原因,他们从未获得过 8 比特或 32 比特的成功。我记得摩托罗拉 HC12 系列非常昂贵,无法与 32 位控制器竞争。

32 位是当时的流行词。使用 32 位程序计数器,您可以寻址 4GByte。ARM 是一种流行的 32 位控制器。有数十家制造商提供各种尺寸的 ARM。它们是功能强大的控制器,通常具有许多板载特殊功能,例如 USB 或完整的 LCD 显示驱动程序。
ARM 通常需要大封装,以适应具有大量闪存的大型芯片,或者因为不同的功能需要大量 I/O 引脚。但是这个包说明了 ARM 提供的可能性。

在此处输入图像描述

是一款 16 针 ARM,封装尺寸仅为 2.17 毫米 x 2.32 毫米。

简单的答案:N 位微控制器具有数据路径和ALU,可以处理 N 位块中的数据。

长答案:短答案在 95% 的情况下是正确的。冗长的答案令人困惑。一些 CPU/MPU 的部分主要是 N-Bits,但有些部分是 M-Bits。例如,它可能是一个带有整数乘法器的 8 位 CPU,它适用于 16 位数据。Intel 系列 CPU(8088 到当前的 i7)通常可以组合各种 8 位和 16 位寄存器以获得 16 位或 32 位。然后营销人员得到这些数字并决定在他们的营销材料中使用它们,最终得到 8 位 MPU,称为 16 位等。

它变得比这更奇怪。一些营销人员宣传 MPU 的指令大小。Microchip PIC 就是一个很好的例子。如果您不小心,您可能会将其与数据路径中的位数混淆。

“N 位”是什么意思?

对不起,如果这第一段有点太低级,但它是希望它可以帮助未来的读者:一个数字,由以 M 为底的 N 位表示,只能与 \$M^N\$ 一样大. 例如,对于 9 位十进制(以 10 为底)数字,您只能写下 10^9 以内的数字,或从 0 到 999,999,999。使用 8 个二进制(以 2 为基数)数字(“二进制数字”是一个“位”),您可以存储 2^8 = 256 个数字。

微控制器或处理器被称为“N 位”,因为控制器和处理器具有基本的数据宽度。每个寄存器可能是 N 位,每条指令可能是 N 位,数据总线可能是 N 位,存储器可能用 N 位寻址。尤其是在较低级别,这条规则也有例外:例如,一个 8 位控制器可能有一个 12 位内存总线,但您可能会猜到,当您的寄存器只包含 8 位时,这很难使用。但是,所有处理器都具有基本的本机数据类型宽度。考虑以下代码:

uint32_t x,y,z;  // Declare 3 32-bit variables
z=x + y;         // Add two of them to store in the third

如果只能添加 8 位数字,您将如何执行此操作?您需要将每个变量分解为 4 个 8 位数字,分别进行加法和进位,然后将它们合并以获得结果。这至少需要 16 条指令!但是,在 32 位处理器上,它是一条简单的指令,如mul r0, r1, r2. 从这个简单的例子可以看出,更大的处理器位宽可以更快地处理更多的数据。

历史笔记

整个历史的趋势是从较小的位宽到较大的位宽。早在 1970 年代初期,英特尔就发布了 4004,这是第一款单芯片控制器。它是一个 4 位处理器。由于晶体管体积大且耗电,而且设计具有革命性和复杂性,因此可以将其全部压缩到芯片上。此后不久,他们发布了 8008,一个 8 位处理器。很少有 4 位处理器仍在使用,但有许多 8 位控制器,PIC 和 AVR 是仍在使用的当代示例。比任何其他类型都制造了更多的 8 位处理器!对于小型、简单和成本敏感的任务,它们仍然是最受欢迎的控制器。下一个明显的过渡是到 16 位控制器,但这些还没有达到他们的 8 位或 32 位兄弟的范围。反而,32 位处理器出现了飞跃,例如由 ARM 设计并设计到几年前 PC CPU 中的处理器。据我所知,没有任何重要的 64 位微控制器,尽管它们现在在 PC 中很突出。

8 位与 32 位

到目前为止,最流行的类型是 8 位和 32 位处理器。32 位处理器正变得越来越流行。每年左右,一些行业杂志都会发表一篇题为“8位死了吗?”的文章。32 位处理器变得越来越流行、功能更强大、价格更便宜,选择 8 位处理器的理由只有三个:

  1. 惯性——如果你有 8 位处理器的代码和经验,你可能无法通过将所有东西都转换为 32 位架构来获得足够的投资回报率。
  2. 低功耗- 控制器中的每个晶体管都会消耗功率,虽然尺寸不再是问题,但 32 位处理器确实有更多的晶体管,因此在关闭状态下会消耗更多的电流。这只是极端的纽扣电池供电设计中的一个问题。
  3. 低成本——如果你只需要几十个汇编指令和 2 个 IO 引脚,那么即使是 8 位处理器也可能是多余的。在低端,最便宜的 8 位控制器批量不到 0.40 美元,但最便宜的 32 位处理器仍然在 0.80 美元左右,但比 8 位替代品强大得多。如果你想为下一个百万快乐餐制作一个带有单个闪烁 LED 的玩具,这是一个令人信服的价格突破,如果不是,它并没有真正产生影响。

32 位处理器正变得越来越普遍,但几乎没有迹象表明 8 位处理器会因为这三个原因而像老式的 4 位处理器一样消失。

以阿杜诺为例

考虑像Arduino这样的应用程序。

Arduino 使用一个 Atmel 控制器,一个 8 位ATmega32ATmega 以 20 MHz 运行,具有 4k 的 RAM,具有 SPI、I2C 和 UART 通信、一些硬件中断和 8 个 10 位 ADC。该芯片以 100 片为单位的价格为 3.90 美元。

类似的 32 位芯片可能是另一个 Atmel 部件,一个使用共享 ARM Cortex-M3 内核的 32 位AT-SAM3 。该芯片以 64 MHz 运行(快 3 倍,但请记住 ATmega 需要 16 条指令来执行单个 32 位加法)。它有 16k 的 RAM,是 ATmega 的 4 倍。它具有 I²C、MMC、SPI、SSC、UART 甚至 USB 外围设备。它具有 DMA(直接内存访问,也使其更快、更高效)、一组灵活、强大的中断、10 个 12 位 ADC 和 2 个 DAC。它在所有类别中都超越了 ATmega。我试图找到一个具有类似功能集的 32 位控制器,这是我能做的最好的。这个芯片要多少钱?100 件为 2.34 美元:您可以用更少的钱获得更多的性能。应该是一个容易的决定。

你的例子呢?

对于您的示例情况

必须统计进出停车场的车辆数量,并将数量显示在液晶显示屏上。最多允许十辆汽车进入停车场。

您有一些非常简单的数学运算,带有小数字和 LCD 上的简单显示(或者实际上,由 7 段 LED 发光数字制成的大标志会更明显且更便宜)。一个 8 位控制器可能完全适合这项任务。但是,如果您真的想要LCD 怎么办?8 位控制器甚至难以驱动低分辨率 VGA 显示器,而您可以轻松获得具有 HDMI 输出的 32 位控制器的开发板。如果您现在想将其显示在屏幕上,但稍后想将其连接到您企业 LAN 上的以太网电缆,并在公园办公室主管的计算机上显示结果怎么办?您可以通过板载以太网通信总线轻松获得 32 位控制器,而使用 8 位控制器则无法做到这一点。Xport,但其中包含一个 32 位处理器。

对于一次性项目,我建议每次都使用 32 位控制器。您的时间比 8 位和 32 位控制器之间的价格差异更有价值。


关于你提到的 7 位处理器,可能从来没有也永远不会有这样的机器。从架构的角度来看,使用 2 的幂的位宽更为明智。

CPU 的位大小与通常一起出现的几个特征有关:

  1. 大部分指令集可以操作的最大操作数大小
  2. 大多数通用寄存器的大小
  3. 可以在通用寄存器和内存之间移动数据的最大可用总线的大小
  4. 可以在通用寄存器之间移动数据的最大可用总线的大小
  5. 用于通用数据计算的 ALU 的大小

对于某些处理器,所有这些数量都具有相同的值。对于其他人,他们可能有不同的价值观。Z80 虽然包含一些 16 位寄存器,但其大部分指令集使用 8 位寄存器,并且几乎所有在 16 位数量上操作的指令都需要额外的周期(唯一的例外是 EX DE、HL);它是一个 8 位 CPU。然而,像 68008 这样的东西不能用一个来很好地描述N:它有一个指令集,大部分可以在 32 位数量上运行,它可以 IIRC 一次在寄存器之间移动 32 位数据,但它的主要 ALU 是只有16位,它的内存总线只有8位。根据测量的对象,它可以被视为 32 位、16 位或 8 位 CPU。