尽管FPGA和CPLD都是可编程ASIC器件,有很多共同特点,但由于CPLD和FPGA结构上的差异,具有各自的特点:
① CPLD更适合完成各种组合逻辑,FPGA更适合于完成时序逻辑。换句话说,FPGA更适合于触发器丰富的结构,而CPLD更适合于触发器有限而乘积项丰富的结构。
② CPLD的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而FPGA的分段式布线结构决定了其延迟的不可预测性。
③ 在编程上FPGA比CPLD具有更大的灵活性。CPLD通过修改具有固定内连电路的逻辑功能来编程,FPGA主要通过改变内部连线的布线来编程;FPGA可在逻辑门下编程,而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可以实现的功能比较单一,适合纯组合逻辑。因此在进行IC设计的原型验证或者设计中包含了复杂的协议处理,或者设计中使用大量的时序元件时一般选用FPGA器件。也就是说FPGA可以适应当前技术发展中高密度集成的各种设计。
所以选择开发板尽量选择最新器件以及主流器件,同时在资金允许的情况下,尽可能选择系统等效门较大的器件。因为这个行业发展太快,几年以前的芯片也就在学校可以找到而一般公司绝对不会使用也不会采购的,所以过时的器件意味着过时的知识。