1. CPLD简介
CPLD是Complex Programmable Logic Device的简称,是一种较为复杂的PLD逻辑元件。对于可编程逻辑器件的名称,即使是相同名字,不同厂家还可能有自己不同含义。Xilinx公司把由自己发明的基于SRAM工艺和查找表结构,同时需要外挂配置用的EPROM的器件叫做FPGA (Field Programmable Gate Arry),也就是现场可编程门阵列;把基于Flash工艺(类似EEPROM工艺)和可编程互连阵列的器件叫CPLD。而Altera公司把自己的PLD产品:MAX系列(EEPROM工艺),FLEX/ACEX/APEX系列(SRAM工艺)都叫作CPLD。由于FLEX/ACEX/APEX系列是SRAM工艺,要外挂配置用的EPROM,用法和Xilinx的FPGA一样,所以很多人还是把Altera的FELX/ACEX/APEX系列产品叫做FPGA。可见,对于我们使用者来说,不要拘泥于器件的名称,而应该对器件的本质结构和应用构架充分了解。基于Flash工艺和可编程互连阵列的可编程器件,就称为CPLD器件。
2. CPLD的特点
大多数的CPLD是由逻辑阵列块(LAB)、可编程互连与阵列(Interconncect)和I/O模块组成。对于CPLD的可编程开发,具有如下特点:
(1) 时序延迟均匀和可预测
CPLD的内部结构相对与FPGA比较简单。可编程互连阵列一般位于芯片的中心,而逻辑阵列块位于芯片边缘。这样通过编程后形成的实际电路就是LAB-Interconncect-LAB的基本形式,这种统一的电路互连形式就决定了其延时的均匀性和可预测性。
(2) 调试和使用方便
基于Flash工艺的CPLD在断电之后,内部编程逻辑不会消失。而FPGA基于SRAM工艺,断电后内部逻辑就不再存在,需要外挂配置芯片用于启动时配置芯片逻辑。
(3) 速度较快
CPLD的基本结构是LAB,是一种粗粒结构。这种结构使得Interconnect可以实现逻辑布线的集结,从而延时都存在于粗颗粒之间,这样就提高速度。相比于此,FPGA是细粒结构,也就是其Interconnect的分布比较分散,分为行互连(Row Interconnect)、列互连(Column Interconnect)和局部互连(Local Interconnect)。如果只是有少量逻辑实现,互连不复杂,那么FPGA的速度相当快。然而,随著设计密度的增加,信号不得不通过许多互连资源,路由延迟也快速增加,从而削弱了整体性能。
(4) I/O数目较多
在给定的器件密度上可提供更多的I/O数。例如,MAX II EPM570T144的user I/O高达80%。丰富的I/O资源,也为CPLD作为系统控制芯片和接口操作芯片提供了诸多便利;
(5) 逻辑设计编译迅速
这个特点也是由于CPLD的粗粒结构决定的。粗粒决定了Interconnect路由选择的简化,从而节省了大量布局和布线的时间。
3. 常用的CPLD器件
目前我们常用的CPLD器件有以下几个系列:
(1) Altera的MAX 3000A;
(2) Altera的MAX II;
(3) Xilinx的CoolRunner XPLA3;
(4) Xilinx的CoolRunner II;
(5) Lattice的ispMACH4000V。
由于目前Altera和Xilinx的CPLD芯片在实际使用中占有相当大的比例。各个EDA产商的CPLD芯片在总体构架上都比较类似,而它们的区别一般都集中在内部逻辑阵列块(LAB)的结构和组成上。