不同复杂度的可编程逻辑 IC 有什么用途?

电器工程 FPGA 可编程逻辑
2022-01-22 04:10:20

可编程逻辑可以在您的小部件中以多种不同的方式实现,从烧几个门或使用 MUX 到具有内置微控制器和 IO 外设的最新 FPGA,更不用说 ARM 的PrimeCell GPIO其他更具体的示例不同级别的可编程逻辑器件复杂性用于哪些应用?尽管分组似乎在其定义的极端附近融合在一起,但我认为这是一个可以接受的列表:

  1. PAL/PLA / GAL:可编程逻辑阵列;似乎在 Digikey 被列为“嵌入式 - PLD”,涵盖异步 10/8 I/O (ATF16V8C) 至 50MHz、192 个宏单元 (CY7C341B),并且大部分是可重新编程的。
  2. CPLD:复杂可编程逻辑器件;Digikey 列出了它们,在 7.5ns 10 I/O (ATF750C) 到 233 MHz、428 I/O“FPGA 密度下的 CPLD”(CY39100V484B) 中可用。
  3. FPGA:现场可编程门阵列;可用于 58 I/O (XC2064) 到 1023 I/O BGA 野兽 (EP1S80F1508C7N)。
  4. 带有硬 MCU 的 FPGA:这是指 MCU 物理布局在 FPGA IC 中,而不是仿真。

维基百科引用:

FPGA 和 CPLD 之间的区别在于 FPGA 在内部基于查找表 (LUT),而 CPLD 则通过门海(例如乘积之和)形成逻辑功能。CPLD 用于更简单的设计,而 FPGA 用于更复杂的设计。一般来说,CPLD 是广泛组合逻辑应用的理想选择,而 FPGA 更适合大型状态机(即微处理器)。

这并不能解释使用233 MHz、400 I/O CPLD和可比较的 FPGA之间的区别或在192 个宏单元 PLD和可比较的 CPLD之间。我无法找到可靠的指导方针来缩小设计选项。请注意,我目前没有考虑特定的应用程序,但经常想知道,“我会用什么来做到这一点?”

我在场外收到了有关特定要求的出色建议,但仍然认为这个问题可以从一些示例中受益,这些示例显示了对一个 PLD 家族的偏好,而另一个 PLD 家族似乎同样或更合适。

4个回答

您可以使用两个标准来评估数字项目,帮助您确定哪个部分最符合您的标准。首先是设计规模/复杂性——涉及多少逻辑。二是在引脚数方面的输入和输出要求。如果您可以估计最慢的功能是什么,则可以考虑速度。一旦您进入正确的球场,供应商工具(Altera Quartus II、Xilinx ISE 等)将为您提供帮助。

  • PAL/PLA/GAL:这些旨在替换通常作为 LSI 逻辑芯片(7400、4000 系列)实现的中小型电路。由于 I/O 重新映射和许多简单的逻辑功能,这些可以提供更好的电路板布局。这些芯片包含非易失性存储器(或一次性可编程熔丝)并且不需要上电配置时间。它们可能不包含数据存储元素。

  • CPLD:这些是解放军的大表亲。这些设计可以是小型状态机,甚至可以是非常简单的微处理器内核。我见过的大多数 CPLD 芯片都没有任何片上 SRAM,尽管您链接的大型赛普拉斯 CPLD 有。CPLD 更有可能通过闪存重新编程,并且它们也不需要上电时的配置时间。

  • FPGA:与CPLD不同,逻辑块基于SRAM而不是闪存,逻辑运算速度更快。FPGA 的主要缺点是,由于配置存储在 SRAM 中,每次设备上电时,FPGA 都必须将其编程加载到该 SRAM 中。根据您的设计大小和非易失性存储的速度,这可能会导致从通电到完全运行的明显延迟。一些 FPGA 具有用于存储数据的片上闪存,但大多数使用单独的存储芯片。FPGA 通常具有硬连线乘法器、PLL 和其他逻辑功能,以提高计算速度。大块的片上 RAM 也可用。您还可以使用高性能 I/O 规范,例如 LVDS、PCI 和 PCI-Express。

  • 带有微处理器硬核的 FPGA:我不熟悉这些,但我想您的设计将围绕微控制器编程,而 FPGA 将增强微控制器。您确定的部件使您看起来像是从微控制器和 FPGA 开始设计,然后将两者组合到一个芯片/封装中。

如何决定哪个适合您:

最好的方法是完成您的代码(Verilog/VHDL),然后使用供应商的工具尝试将其安装到尽可能小的部分中。我知道 Altera 的工具让您可以相当轻松地更改编程目标,因此您可以继续选择更小的 FPGA,然后选择更小的 CPLD,直到您的设计使用率接近 75%。如果您需要性能,请尝试选择具有降低逻辑速度要求的功能(快速乘法器)的设备。同样,供应商工具将帮助您确定是否需要升级或是否可以降级。

使用哪个部件的另一个因素是易用性。使用 PAL/PLA/GAL 逻辑可能比使用离散逻辑门(74HC*、4000 等)构建函数更费力。CPLD 通常只需要一个电源电压,并且不需要额外的电路。它们实际上是独立的。FPGA 开始为 I/O 和逻辑内核使用多个电源、复杂的 I/O 标准、单独的程序存储器、多层 (>2) PCB 和 BGA 封装。

缩小设计要求的步骤包括:

  1. 识别 FPGA/CPLD 的所有输入和输出。这通常是设计阶段的一个简单部分。这样您就知道您正在查看的包裹,以及您可以将其切割到该边距的距离。

  2. 画出内部逻辑框图。如果您的模块看起来很简单(每个模块都有一堆逻辑门和寄存器),那么您可能可以使用 CPLD。但是,如果您的模块具有诸如“以太网收发器”、“PCI-Express x16 接口”、“DDR2 控制器”或“h264 编码/解码”之类的标签,那么您几乎可以肯定正在查看 FPGA 并使用 HDL。

  3. 查看您的接口是否有特殊的 I/O 要求,例如特殊电压、LVDS、DDR 或高速 SERDES。获得支持它的芯片比获得额外的翻译芯片更容易。

CPLD 应用示例:

  • 带 SPI 接口的多通道 PWM
  • 输入输出扩展器
  • CPU 地址空间解码
  • 时钟(计时)
  • 显示多路复用器
  • 简单的数字信号处理器
  • 一些简单的程序可以转换成CPLD设计

业余爱好者 FPGA 应用示例:

  • 小型片上系统 (SoC) 设计
  • 视频
  • 复杂的协议桥
  • 信号处理
  • 加密/解密
  • 旧系统仿真
  • 逻辑分析仪/模式生成器

对于大多数业余爱好者的工作,除非您想焊接 BGA 封装,否则您将受限于相对较小的 FPGA。我会在大型 CPLD 或廉价 FPGA 之间进行选择,尺寸/速度要求将决定我需要哪一个。

一个好的“经验法则”列表应该是这样的:

  • PAL/PLA/GAL:用于代替 PCB 上的分立 IC 逻辑门
  • CPLD:用于需要复杂、非 DSP 和可能对时间要求严格的任务(将引导代码从存储器加载到 FPGA、用于 DAC 的 LUT 正弦波发生器等)
  • FPGA:在需要时间关键、乘法或 DSP 功能(FIR 滤波器、FFT 等)时使用
  • 带硬核 MCU 的 FPGA:当需要 FPGA 功能并且必须访问 FPGA 上的外围设备(温度传感器)或为了简单起见允许在 C 而不是 VHDL 中实现对时间敏感度较低的任务时使用(UART/串行端口功能, PCB管家等)

一个简单的答案可能是有两种方法:

1. 您首先在高抽象级别(例如 HDL 或原理图)上设计您的系统。然后您尝试将其放入 PAL/CPLD/FPGA 中并选择满足您要求的那些(门/逻辑元件的数量、性能等),然后根据您定义的最便宜的(开发成本与. 生产成本等)。

2. 但通常在开始任何 HDL 编码或原理图开发之前,您已经可以估计系统的复杂性(如果看起来您需要 8 位 MCU 或 32 位 MCU,或者没有微控制器,您需要多少门)全部)。基于此,您也可以选择您的可编程设备。这将不太精确,但允许设计非可编程模拟和数字硬件与可编程硬件和软件(如果有的话)并行。

使用具有硬核的 FPGA 是因为它比单独的微控制器面积更小,并且比软核微处理器更快。然而,价格通常比 FPGA 和单独的微控制器更差。在一般软件中,因此微控制器更适合(相对)缓慢和罕见的情况,例如参数配置和错误处理;逻辑更适合连续过程。例如在数据包处理中,写入内存应该是逻辑的;处理生存时间超时应保留在软件中。

在 FPGA 空间内,有便宜/低功耗的部件和昂贵/快速的部件。一般来说,微控制器只在昂贵的一个;这使得 FPGA 解决方案与分立 MCU 的成本交易更加糟糕。

至少 10 多年没有人在新设计中使用 PAL。CPLD 已经占据了这个利基市场。

在最后5个?CPLD 内部类似于 FPGA,但带有用于保存片上配置的存储器。由于 FPGA 现在是 100 兆赫兹,与 10 到 15 年前相比,速度已不再是将逻辑放入 CPLD 的理由。然而,FPGA 仍然具有其他功能,例如乘法器、串行器和许多存储器,即使它没有那么多逻辑,它们也可能迫使设计合二为一。