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


10

可编程逻辑可以在您的窗口小部件中以多种不同的方式实现,从刻录几个门或使用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之间。我无法根据可靠的准则来缩小设计范围。请注意,我目前没有特定的应用程序,但经常想知道“我将用什么来做呢?”

我已经收到了极好的建议异地关于具体要求,但还是觉得这个问题可以从一些例子,说明了可编程逻辑器件的一个家庭偏好好处,当另一个可能出现同样适用或更为合适。


XC2064是一个古老的部分。我不知道CY7C341B和CY39100V484B是否仍在生产。在进行任何比较/决定时,您应该考虑到这一点。
Brian Carlton 2010年

2
仅供参考,使用这些部件中的任何一个,制造商在其文献中提供的产品种类与实际可以期望投入使用的门数/封装/速度和温度组合的更小分类之间都存在巨大差异交货期不到半年的少量产品。因此,在与他们进行设计时,请先检查实际可用性。即使我知道采购要从分销商那里获得它们,我还是更喜欢选择那些我知道面向原型供应商的设备实际上会在需要时到我家过夜。
克里斯·斯特拉顿

很好的建议,@ ChrisStratton。通常,这是我检查大部分零件的第一件事,但是仍然很高兴知道PLD尤其有问题。
tyblu

Answers:


7

您可以使用两个条件来评估数字项目,以帮助您确定最符合条件的部分。第一个是设计大小/复杂性-涉及多少逻辑。第二个是引脚数对输入和输出的要求。如果可以估计最慢的功能,则可以考虑速度。一旦找到合适的解决方案,供应商的工具(Altera Quartus II,Xilinx ISE等)将为您提供帮助。

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

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

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

  • 具有微处理器硬核的FPGA:我不熟悉这些,但是我可以想象您的设计将围绕微控制器编程,而FPGA将扩展微控制器。识别出的零件使您看起来像是从微控制器和FPGA开始设计,然后将两者组合成一个芯片/封装。

如何确定最适合您的方法:

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

使用哪一部分的另一个因素是易用性。与使用离散逻辑门(74HC *,4000等)构造功能相比,使用PAL / PLA / GAL逻辑可能要花更多的精力。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
  • I / O扩展器
  • CPU地址空间解码
  • 时钟(计时)
  • 显示多路复用器
  • 简单的DSP
  • 一些简单的程序可以转换为CPLD设计

业余爱好者FPGA应用示例:

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

对于大多数业余爱好者的工作,除非要焊接BGA封装,否则您将只能使用相对较小的FPGA。我会选择大型CPLD还是廉价的FPGA,而尺寸/速度要求将决定我需要哪一个。


稍微扩展一下您的答案,由于没有配置时间的即时启动,我倾向于将PAL / PLA / GAL与PLD / CPLD放在同一篮子中,并且供应商开始将CPLD推向PAL / PLA / GAL设备。例如,我正在使用某些晶格器件,它们的CPLD系列IC明显便宜,并且比PAL / GAL / PLA表亲提供更多的门。与前者相比,后者的成本对它们所提供的产品而言过于昂贵。
smashtastic 2010年

这条线肯定有点模糊。我不认为PAL / PLA / GAL具有存储元件,或者CLPD没有SRAM,直到我查找列出的tyblu零件。在设计中,PAL / PLA / GAL似乎更像鸭子磁带,而不是核心部分。
W5VO 2010年

3

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

  • PAL / PLA / GAL:代替PCB上的分立IC逻辑门
  • CPLD:用于需要复杂,非DSP以及可能是时间紧迫任务的场合(将启动代码从存储器,用于DAC的LUT正弦波发生器加载到FPGA上)
  • FPGA:当需要时间紧迫,乘法或DSP功能(FIR滤波器,FFT等)时使用
  • 具有硬MCU的FPGA:当需要FPGA功能且必须访问FPGA的外围设备(温度传感器)或为了简化起见而将时间敏感度较低的任务嵌入C语言而不是VHDL中时使用(UART /串行端口功能, PCB管家等)

由于便宜的CPLD数量很少,PAL / PLA / GAL几乎已死,除了旧版应用程序。
克里斯·斯特拉顿

我不会争辩。我只能想象低电量(电池)/小尺寸可能会受到限制,因为它们可能比CPDL更具优势,但我仍然会使用最小/省电的CPLD(如果是我的话)设计。
Joel B

2

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

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

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


2

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

在FPGA领域内,有便宜/低功耗的部件和昂贵/快速的部件。通常,微控制器仅在昂贵的一种中。对于FPGA上的解决方案,这使得与分立式MCU相比,成本交易更加糟糕。

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

最近5个?多年以来,CPLD就像FPGA一样,但具有将芯片配置保持在内部的存储器。由于FPGA现在为100兆赫兹,因此与10-15年前相比,速度不是将逻辑放入CPLD的理由。但是,FPGA仍然具有其他功能,例如乘法器,串行器和许多存储器,即使没有那么多的逻辑,它们也可能迫使设计成为一体。


1
保持CPLD的原因之一是,目前的低成本CPLD仍采用单电源电压技术制造,而大多数当前的FPGA需要多个电源电压。因此,如果您不需要花很多钱就可以在板上放置cpld,但是如果您谈论的是大型CPLD,则低端fpga可能会便宜一些,并为您将来的增强提供了更多空间,尤其是在您已经出于其他原因获得了核心电压电源。
克里斯·斯特拉顿

感谢您回答@BrianCarlton和评论@ChrisStratton。给出的示例和当前观点是非常有用的信息。
tyblu 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.