CPLD 简介CPLD(Complex Programmable Logic Device)复杂可编程逻辑器件,是从PAL 和 GAL(通用逻辑阵列)器件发展出来的器件,相对而言规模大,结构复杂,属于大规模集成电路范围,是一种用户根据各自需要而自行构造逻辑功能的数字集成电路其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统CPLD 主要是由可编程逻辑宏单元(MC,Macro Cell)围绕中心的可编程互连矩阵单元组成其中 MC 结构较复杂,并具有复杂的 I/O 单元互连结构,可由用户根据需要生成特定的电路结构,完成一定的功能由于 CPLD 内部采用固定长度的金属线进行各逻辑块的互连,所以设计的逻辑电路具有时间可预测性,避免了分段式互连结构时序不完全预测的缺点发展历史及应用领域20 世纪 70 年代,最早的可编程逻辑器件--PLD 诞生了其输出结构是可编程的逻辑宏单元,因为它的硬件结构设计可由软件完成(相当于房子盖好后人工设计局部室内结构) ,因而它的设计比纯硬件的数字电路具有很强的灵活性,但其过于简单的结构也使它们只能实现规模较小的电路。
为弥补 PLD 只能设计小规模电路这一缺陷,20 世纪 80 年代中期,推出了复杂可编程逻辑器件--CPLD此应用已深入网络、仪器仪表、汽车电子、数控机床、航天测控设备等方面器件特点它具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、对设计者的硬件经验要求低、标准产品无需测试、保密性强、价格大众化等特点,可实现较大规模的电路设计,因此被广泛应用于产品的原型设计和产品生产(一般在 10,000 件以下)之中几乎所有应用中小规模通用数字集成电路的场合均可应用 CPLD 器件CPLD 器件已成为电子产品不可缺少的组成部分,它的设计和应用成为电子工程师必备的一种技能如何使用CPLD 是一种用户根据各自需要而自行构造逻辑功能的数字集成电路其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统这里以抢答器为例讲一下它的设计(装修)过程,即芯片的设计流程CPLD 的工作大部分是在电脑上完成的打开集成开发软件( Altera 公司Max+pluxII)→画原理图、写硬件描述语言(VHDL,Verilog)→编译→给出逻辑电路的输入激励信号,进行仿真,查看逻辑输出结果是否正确→进行管脚输入、输出锁定(7128 的 64 个输入、输出管脚可根据需要设定)→生成代码→通过下载电缆将代码传送并存储在 CPLD 芯片中。
7128 这块芯片各管脚已引出,将数码管、抢答开关、指示灯、蜂鸣器通过导线分别接到芯片板上,通电测试,当抢答开关按下,对应位的指示灯应当亮,答对以后,裁判给加分后,看此时数码显示加分结果是否正确,如发现有问题,可重新修改原理图或硬件描述语言,完善设计设计好后,如批量生产,可直接复制其他 CPLD 芯片,即写入代码即可如果要对芯片进行其它设计,比如进行交通灯设计,要重新画原理图、或写硬件描述语言,重复以上工作过程,完成设计这种修改设计相当于将房屋进行了重新装修,这种装修对 CPLD 来说可进行上万次家庭成员经过几十年的发展,许多公司都开发出了 CPLD 可编程逻辑器件比较典型的就是 Altera、Lattice、Xilinx 世界三大权威公司的产品,这里给出常用芯片: Altera EPM7128S (PLCC84)Lattice LC4128V (TQFP100)Xilinx XC95108 (PLCC84)2 辨别和分类编辑FPGA 与 CPLD 的辨别和分类主要是根据其结构特点和工作原理通常的分类方法是:将以乘积项结构方式构成逻辑行为的器件称为 CPLD,如 Lattice 的 ispLSI系列、Xilinx 的 XC9500 系列、Altera 的 MAX7000S 系列和 Lattice(原 Vantis)的 Mach 系列等。
将以查表法结构方式构成逻辑行为的器件称为 FPGA,如 Xilinx 的 SPARTAN系列、Altera 的 FLEX10K 或 ACEX1K 系列等尽管 FPGA 和 CPLD 都是可编程 ASIC(专用集成电路)器件,有很多共同特点,但由于 CPLD 和 FPGA 结构上的差异,具有各自的特点:①CPLD 更适合完成各种算法和组合逻辑,FPGA 更适合于完成时序逻辑换句话说,FPGA 更适合于触发器丰富的结构,而 CPLD 更适合于触发器有限而乘积项丰富的结构②CPLD 的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而FPGA 的分段式布线结构决定了其延迟的不可预测性③在编程上 FPGA 比 CPLD 具有更大的灵活性CPLD 通过修改具有固定内连电路的逻辑功能来编程,FPGA 主要通过改变内部连线的布线来编程;FP GA 可在逻辑门下编程,而 CPLD 是在逻辑块下编程④FPGA 的集成度比 CPLD 高,具有更复杂的布线结构和逻辑实现⑤CPLD 比 FPGA 使用起来更方便CPLD 的编程采用 E2PROM 或 FASTFLASH 技术,无需外部存储器芯片,使用简单而 FPGA 的编程信息需存放在外部存储器上,使用方法复杂。
⑥CPLD 的速度比 FPGA 快,并且具有较大的时间可预测性这是由于 FPGA是门级编程,并且 CLB 之间采用分布式互联,而 CPLD 是逻辑块级编程,并且其逻辑块之间的互联是集总式的⑦在编程方式上,CPLD 主要是基于 E2PROM 或 FLASH 存储器编程,编程次数可达 1 万次,优点是系统断电时编程信息也不丢失cpld 又可分为在编程器上编程和在系统编程两类FPGA 大部分是基于 SRAM 编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入 SRAM 中其优点是可以编程任意次,可在工作中快速编程,从而实现板级和系统级的动态配置⑧CPLD 保密性好,FPGA 保密性差⑨一般情况下,CPLD 的功耗要比 FPGA 大,且集成度越高越明显3 编程语言编辑CPLD 可以用梯形图来编辑逻辑功能,也可以用硬件描述语言来编写,常用的语言有 Verilog HDL 和 VHDL相关文献基于 CPLD 的炮口磁信息采集控制系统-自动化技术与应用-2011 年 第 1 期基于 DSP 和 CPLD 的运动控制器简化设计与应用-自动化与仪表-2011 年 第1 期 (26)CPLD 在无人机发动机转速检测中的应用-信息技术-2011 年 第 1 期。