由前面的分析可知,FPGA和CPLD各有不能取代的优点,这也正是两种器件目前都得到广泛应用的原因。FPGA与CPLD在结构上的主要区别如下:
(1)逻辑块的粒度不同。
逻辑块指PLD芯片中按结构划分的功能模块,它有相对独立的组合逻辑阵列,块间靠互连系统联系。
FPGA中的CLB是逻辑块,其特点是粒度小,输入变量为4~8个,输出变量为1~2个,因此只是一个逻辑单元。每块芯片中有几十到近千个这样的单元。CPLD中逻辑块粒度较大,通常有数10个输入端和1~20个输出端,每块芯片只分成几块。有些集成度较低的(如ATV2500)则干脆不分块。显然,如此粗大的分块结构在使用时不如FPGA灵活。
(2)逻辑之间的互连结构不同。
逻辑系统通常可分为两大类型:一类是控制密集型;另一类是数据密集型。控制密集型也称为逻辑密集型,如高速缓存控制、DRAM控制和DMA控制等,它们仅需要很少的数据处理能力,但逻辑关系一般都复杂。数据密集型需要大量数据处理能力,其应用多见于通信领域。为了选择合适的PLD芯片,应从速度与性能、逻辑利用率、使用方便性、编程技术等方面进行考查。
① 速度与性能。数据密集型系统,如通信中对信号进行处理的二维卷积器,每个单元所需要的输入端较少,但需要很多这样的逻辑单元。这些要求与FPGA的结构吻合。因为FPGA的粒度小,其输入到输出的传输延迟时间很短,因此能获得高的单元速度。(www.xing528.com)
而控制密集型系统通常是输入密集型的,逻辑复杂,CLB的输入端往往不够用,需要把多个CLB串行级联使用,同时CLB之间的连接有可能通过多级通用PI或长线,导致速度急剧下降,因此实际的传输延迟时间大于CPLD。比如实现一个DRAM控制器,它由4个功能块组成:刷新状态机、刷新地址计数器、刷新定时器和地址选择开关,需要的输入端有几十个,显然用CPLD更合适。
② 逻辑利用率。逻辑利用率是指器件中资源被利用的程度。CPLD的逻辑寄存器少,FPGA的逻辑弱而寄存器多,这正好与控制密集型系统与数据密集型系统相对应。比如,规模同为6000PLD门的ispLSI1032有192个寄存器,而XC4005E有616个寄存器。因此从逻辑利用率的角度出发,对于组合电路类较复杂的设计,宜采用颗粒较粗的CPLD;对于时序电路中触发器较多的设计,宜采用颗粒较细的FPGA。
③ 使用方便性。对使用方便性,首先要考虑性能的可预测性,在这点上CPLD优于FPGA。因为对于CPLD,通常只要输入/输出端口数、内部门和触发器数目不超过芯片的资源并有一定裕量,总是可以实现的。而FPGA则很难预测,因为完成设计所需的CLB逻辑级数是无法事先确定的,只有靠多次试验才能得到满意的结果。
④ 编程技术:FPGA编程信息存放在外部存储器中,要附加存储器芯片,其保密性差,断电后数据易丢失。而CPLD采用最佳的E2CMOS技术。
⑤ 低功耗的器件如接负载重,不仅使器件工作频率降低,还可能损伤芯片。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。