我们先来看看CPLD,在此以Xilinx CoolRunner-II为例。下图是Xilinx CoolRunner-II的架构图。
![](http://xilinx.eetrend.com/files-eetrend-xilinx/article/201809/13348-39220-tu1xilinxcoolrunner-iidejiagoutu.png)
1.该CPLD具有从“功能块1”到“功能块n”开始的功能块很少(在CoolRunner-II CPLD的情况下,此编号范围为2到32)
2.每个功能块的16行输出进入AIM(高级互连矩阵),而40行信号从AIM输入功能块。
3.每个功能块都有16个MacroCell(MC1到MC16)。
4.每个MacroCell都可以访问来自I / O块的16个信号
5.MacroCell的结构如下所示。每个宏单元包含1个触发器和PLA阵列的产品和,用户可以利用它来创建组合或顺序逻辑。因此,CoolRunner-II CLPD(XC2C512)中可用的最大触发器数量为512!(记住这个数字,我们将它与FPGA中的触发器数量进行比较)
6.可以对AIM进行编程,以便根据需要互连信号。但正如我们在上面的第二个要点中看到的那样,每个功能块的信号数量都是有限的。
![](http://xilinx.eetrend.com/files-eetrend-xilinx/article/201809/13348-39221-tu2coolrunner-iiclpd.png)
总结一下,我们可以说,在CPLD中,有几百个功能块(或逻辑块),通常少于1000个,可由单个大型逻辑单元互连访问。
FPGA
虽然制造商没有公开发布确切的FPGA架构,但我们仍然可以获得更高级别的架构,这将有助于理解FPGA及其工作原理。让我们先来看一下Xilinx的的高级示例。
![](http://xilinx.eetrend.com/files-eetrend-xilinx/article/201809/13348-39222-tu3xilinxdedegaojishili.png)
![](http://xilinx.eetrend.com/files-eetrend-xilinx/article/201809/13348-39223-tu4luojimenshuliang.png)
如前文所述,FPGA基于LUT。当FPGA上电时,器件始终为空白。存在称为配置电路的特殊电路,其从外部ROM读取配置数据,并根据外部ROM中存在的用户设计来配置LUT。FPGA配置需要一些时间,FPGA将在配置加载完成后才开始工作。当然也有例外。一些制造商已经提出内置配置闪存的FPGA。即使在这种情况下,配置数据也没有嵌入到结构中,并且仍然适用一些对时间的设置与配置。
CPLD与FPGA比较汇总
总结了一个表格,可以概括一下两者的异同。
![](http://xilinx.eetrend.com/files-eetrend-xilinx/article/201809/13348-39224-tu5cpldyufpgabijiaohuizong.png)
CPLD和FPGA的用途区分
如果设计需要简单的组合逻辑电路,无需进行太多更改,或者需要瞬时接通电路,那么CPLD是不错的选择。否则,对于大多数其他应用,FPGA通常是首选。有时您可以在设计案例中看到CPLD + FPGA的组合设计。在这些案例中,CPLD通常用于实现前面提到的简单组合逻辑功能,并负责“引导”FPGA以及控制整个电路板的复位和引导顺序。因此,根据应用程序,您可能需要在设计中使用它们。
随着AI技术的发展,FPGA又一次站在了风口上——它以内置庞大的逻辑门电路,合理的功耗,在GPU、ASIC之后,为AI从业者提供了一种更为灵活的算法实现方案。在此业态下,FPGA的发展也会给它的传统应用领域——以高速通信为主的通信领域和以驱动组合逻辑芯片为主的LED显示行业注入新的发展契机。
本文转载自: 无线电杂志微信公众号