dsPIC 能做什么,而不起眼的 PIC 单片机却做不到?

电器工程 图片 数字信号处理器
2022-01-29 22:21:49

到目前为止,我还没有使用过 DSP 芯片。我所知道的是,它们的架构使得它们可以非常快地执行计算,通常在一个时钟周期内,它们的指令集中有乘法累加指令,并且它们有 DMA,因此 CPU 不必浪费宝贵的时间来移动数据大约。我认为还有更多内容,但这些是一些基本点。

我可以看到 Microchip 有 dsPIC,这是他们的 DSP 芯片系列。难道我们不能只使用同样内置乘法器的 PIC18 或 PIC32 来执行 DSP 吗?dsPIC 与普通 PIC 有何不同?

我的主要问题是,为什么我们需要有一个单独的、不同的称为 DSP 芯片的东西,而不是在所有微控制器上集成高精度浮点单元计算能力?当然,使用我们现在拥有的工艺技术,这应该不会占用太多空间。

另外,我怎么知道我需要在我的项目中使用 DSP 芯片而不是普通的微控制器>

4个回答

与早期架构 PIC(如 PIC 16 和 18 系列)相比,dsPIC 的一些优势:

  1. 16 位宽数据路径和 ALU,与 8 相对。

  2. 能够直接寻址(两种架构的后续版本以各种笨拙的方式对此进行了扩展)更多的数据存储器。一个基本的 PIC 16 可以直接寻址 128 个字节,512 个字节。较新的 PIC 16F1xxx 扩展了存储区以允许寻址更多数据存储器。PIC 18 架构限制为 4k 字节。dsPIC 架构可以直接寻址 64k 字节或 32k 16 位字,尽管由于各种原因,在基本架构中只有一半可用于 RAM。后来一些模型中的银行计划扩展了这一点。

  3. 快点。最初的 30F 可以运行 30 个 MIP,现在 40 个 MIP 部件已成为常态。新的 E 系列最多可以运行 70 个 MIP,尽管与早期较慢的型号相比,它可能会因等待某些东西而停止等待的原因更多。平均而言,它们仍然明显更快。

  4. DSP能力。DSP 引擎有两个 40 位累加器和常用硬件,用于在每个指令周期一个 MAC 的阵列上执行一系列 MAC 操作(参见 Dave Tweed 的回答)。MAC 和相关指令将数组索引和循环终止与实际的乘法累加重叠。

  5. 15 个软件可用的 16 位“工作寄存器”,而不是 8 位 PIC 架构的单个 8 位 W 寄存器。

  6. 桶式移位器。

  7. 单周期 16x16 --> 32 位乘法。

  8. 硬件鸿沟。32 div 16 --> 16 位操作需要 18 个周期。

  9. 很多三操作数指令。例如,您可以将两个工作寄存器的内容相加,然后将结果放入第三个,所有这些都在一个周期内完成。这适用于大多数数学、逻辑和移位操作。

  10. 总体上更规则和对称的指令集。

  11. 向量中断。PIC 16 有一个中断向量,而 PIC 18 有两个。在 16 位部件(PIC 24、dsPIC 30 和 33)上,每个中断源都有自己的向量。这减少了中断例程中的延迟,因为它不必花费周期来确定要服务的中断。

    这也允许更好的软件架构。特定外设的中断例程可以与处理该外设的其他代码位于同一模块中,而不必具有一个全局中断例程。

  12. 从更广泛的架构中产生的各种其他优势。

通常,与通用 CPU 相比,DSP 的主要区别特征是 DSP 可以执行某些信号处理操作,而很少(如果有的话)浪费在不计算结果的指令上的 CPU 周期。

许多关键 DSP 算法中最基本的运算之一是 MAC(乘法累加)运算,它是矩阵点积和叉积、FIR 和 IIR 滤波器以及 FFT 中使用的基本步骤。DSP 通常具有寄存器和/或存储器组织以及数据路径,允许它对连续的唯一数据对执行至少 64 次 MAC 操作,而不会在循环开销或数据移动上浪费任何时钟。如果不使用额外的指令在寄存器和内存之间移动数据,通用 CPU 通常没有足够的寄存器来完成此任务。

一般来说,“DSP ...”是指“产品推出时更相关的马力和/或更相关的硬件。”
通用处理器往往会赶上旧的专业设备。
DSPIC 大约 10 岁以上 - 奥林会知道。

[括号中的项目与一些 DSPIC 示例有关——并非详尽无遗]。

在 DSP 产品中,期望混合:
期望诸如桶形移位器、
宽快速流水线和快速单周期执行时间、
宽单周期指令、
DMA [6 或 8 通道、双端口 RAM 缓冲区] 大线性存储器寻址范围 [4 Mword 程序, 64 kB 数据] 面向专业算法的功能
也许:
专业外围设备,例如电机控制,
用于几种不同 coms 标准的硬件 [CAN、IIC、UART、IIS、AC97,...] 比通常的 coms 缓冲区 [4 字节] 更快,更/ 或比通常的 ADC 更宽 [2 Msps,10 或 12 位]

您会在 DSPIC 系列中找到其中的大部分 - 并且在 gp 处理器系列中越来越多。
在极端情况下,您会获得用户微编码等。

dsPIC33 本质上是一个具有一些适度 DSP 功能的 PIC24 - 主要是双 MAC。它的目标是电机控制。将其称为 DSP 将是对它的延伸——Microchip 将其称为数字信号控制器,反映了其电机控制的目标应用。

我曾在适度的信号处理应用中使用它来对低速率 GMSK 进行基带解码,但该应用后来在 72MHz 的 ARM Cortex-M3 上成功实现和扩展。我不会选择使用任何类型的 PIC。除了相当小众的 PIC32 之外,它们在架构上很奇怪,并且在整个范围内都不一致。例如,ARM Cortex-M4 或 M7 拥有比 dsPIC 更广泛的 DSP 支持,具有更广泛的部件选择和性能范围。

您可以在不使用专用 DSP 的情况下进行信号处理。当前的 DSP 在处理多个信号或以非常高的采样率运行(例如软件定义无线电)时变得很有用。但是,您可能会越来越多地为此使用 FPGA。