当然以上只是CPLD和FPGA通常意义上的区别,技术是在不断发展中的,这些差异也不能一概而论。随着技术的发展,CPLD和FPGA也在不断的更新当中。
Altera在Stratix III 系列FPGA以后的产品中调整了LE的结构,如下图:
从原来的一个4输入查找表加D触发器变成了两个6输入查找表加两个D触发器。再进一步细化查找表的结构图如下:
一个6输入查找表又可以细分为一个4输入查找表和两个3输入查找表。无论结构怎么变,只是出于对资源优化利用考虑的改变,基本的LUT查找表方式没有变。但是新出的MAX II系列和MAX V 系列CPLD则从根本上模糊了CPLD和FPGA的区别。通过阅读芯片手册我们可以发现,两个系列的CPLD虽然名字没有变,但是架构已经完全是与FPGA相同的系统架构了,最小单元也变成了LUT查找表,宏单元已经消失不见了。也许和CPLD还能搭上关系的就是两个系列把配置电路集成到了芯片当中,在实际使用中和原有的CPLD保持了相同的使用习惯。可以说两个系列的产品已经是披着CPLD外衣的FPGA了。
从技术的延续性上来看,可编程器件技术大致经历了PROM-PLA-PAL-GAL-EPLD-CPLD和FPGA的发展过程,CPLD和FPGA是两个不同的发展分支。生产厂商似乎在模糊CPLD和FPGA之间的区别。也许以后只剩下名字的区别,两者会统一成一类器件,或者又会出现更新的技术作为替代。无论技术如何演进,作为工程师而言,我们要做的就是去把握每种器件的原理,优缺点和适用场景,然后在实际的项目中正确选择,灵活使用。