- CPLD:Complex Programmable Logic Device,复杂可编程逻辑器件
CPLD由可编程逻辑的功能围绕一个可编程互连矩阵构成,由固定长度的金属线实现逻辑单元之间的互连,并增加了I/O控制模块的数量和功能。CPLD的基本结构可看成由可编程逻辑阵列(LAB),可编程I/O控制模块和可编程内部连线(PIA)等三部分组成。
可编程逻辑阵列(LAB):由若干个可编程逻辑宏单元(Logic Macro Cell,LMC)组成,LMC主要包括与阵列、或阵列、可编程触发器和多路选择器等电路,能独立地配置为时序或组合工作方式。
扩展乘积项:在CPLD宏单元中,如果输出表达式的与项较多,对应的活门输入端不够用时,可以借助可编程开关将同一单元或其他单元的其他或门与之联合起来使用,或者在每个宏单元中提供未使用的乘积项给其他宏单元使用。
2. FPGA:Field Programmable Gate Array,现场可编程门阵列
FPGA由可编程逻辑块(CLB),输入/输出模块(IOB)及可编程互连资源(PIR)等三种可编程电路和一个SRAM结构的配置存储单元组成。
CLB是实现逻辑功能的基本单元,他们通常规则排列成一个阵列,散布于整个芯片中。
可编程输入/输出模块(IOB)主要完成芯片上的逻辑与外部引脚的接口,它通常排列在芯片的四周。
可编程互连资源(PIR)包括各种长度的连线线段和一些可编程链接开关,他们将各个CLB之间或CLB与IOB之间以及IOB之间连接起来,构成特定功能的电路。
CLB主要由逻辑函数发生器,触发器,数据选择器等电路组成。逻辑函数发生器主要由查找表(Look Up Table)构成。
查找表LUT实质上是一个RAM,当用户描述了一个逻辑电路后,软件会计算所有可能的结果,并写入RAM。每一个信号进行逻辑运算,就等于输入一个地址进行查表,找出地址对应的内容,输出结果。
一个N输入查找表LUT可以实现N个输入变量的任何逻辑功能,如N输入“与”, N输入“异或”。输入多与N个的函数,方程必须分开用几个查找表实现。
3. FPGA与CPLD区别
(1) FPGA采用SRAM进行功能配置,可重复编程,但系统掉电后,SRAM中的数据丢失,因此,需要在FPGA外加EPROM,将配置数据写入其中,系统每次上电自动将数据引入SRAM中。
CPLD器件一般采用EEPROM存储技术,可重复编程,并且系统掉电后,EEPROM中的数据不会丢失,适用于数据的保密。
(2)FPGA器件含有丰富的触发器资源,易于实现时序逻辑,如果要求实现较复杂的组合电路,则需要几个CLB结合起来实现。
CPLD的与或阵列结构,更适用于实现大规模组合功能,但触发器资源相对较少。
(3)FPGA是细颗粒度结构,CPLD是粗粒度结构。FPGA内部有丰富连线资源,CLB分块较小,芯片利用率高。
CPLD宏单元的与或阵列较大,通常不能完全被应用,且宏单元之间的主要通过高速数据通道连接,其容量有限,限制了器件的灵活布线,因此,CPLD利用率较FPGA器件低。
(4)FPGA为非连续式布线,CPLD为连续式布线。FPGA器件每次编程时实现的逻辑功能一样,但走的路线不同,因此延时不易控制,即时序延迟不可预测。
CPLD每次布线路径一样,消除了分段式互连结构在定时上的差异,并在逻辑单元之间提供快速且具有固定延时的通路,CPLD的延时小,且时序延迟可预测。CPLD比FPGA可工作在更高的频率。