PLD(可编程逻辑器件)按照结构一般可分为以下几类:
PROM(可编程只读存储器):具有固定的与阵列和可编程的或阵列。与阵列实现对输入变量的全部最小项译码,或阵列用于实现逻辑函数,通过对或阵列的编程来实现不同的逻辑功能,常用于实现组合逻辑函数。
PAL(可编程阵列逻辑):由可编程的与阵列和固定的或阵列组成。与阵列可以根据用户需求进行编程,以产生所需的乘积项,或阵列将这些乘积项进行逻辑加,实现逻辑功能,结构简单、速度快,适用于实现简单的组合逻辑和时序逻辑。
GAL(通用阵列逻辑):在PAL的基础上发展而来,与阵列可编程,或阵列固定,但增加了输出逻辑宏单元(OLMC)。OLMC可以通过编程配置成不同的输出方式,如组合输出、寄存器输出等,还具有可重配置性,使GAL具有更强的灵活性和通用性。
CPLD(复杂可编程逻辑器件):由多个逻辑块(Logic Block)通过可编程互连矩阵(PIA)连接而成。每个逻辑块包含多个宏单元,宏单元由逻辑函数发生器、触发器等组成,可实现各种逻辑功能。CPLD具有较大的规模和较高的集成度,能够实现更复杂的逻辑功能,同时具有较高的速度和可靠性,适用于实现较大规模的数字系统。
FPGA(现场可编程门阵列):主要由可配置逻辑块(CLB)、输入输出块(IOB)和互连资源组成。CLB是实现逻辑功能的基本单元,可配置为各种逻辑电路;IOB用于实现与外部设备的连接;互连资源用于连接CLB和IOB,通过编程可灵活地实现各种逻辑功能和系统架构,具有高度的灵活性和可重构性,广泛应用于各种数字系统设计。
采用SRAM查找表的PLD:利用静态随机存取存储器(SRAM)来实现查找表(LUT)功能。每个LUT可以存储一个逻辑函数的真值表,通过对SRAM单元的编程来配置LUT的内容,从而实现不同的逻辑功能。这种结构的PLD具有较高的灵活性和可重构性,但掉电后配置信息会丢失,需要在每次上电时重新加载配置数据。
采用Flash查找表的PLD:使用闪存(Flash)来存储查找表信息。Flash具有非易失性,即掉电后数据不会丢失,因此无需在每次上电时重新加载配置数据。这种结构的PLD在一些对可靠性和掉电数据保存有要求的应用中具有优势,但Flash的写入速度相对较慢,可能会影响PLD的配置速度。
- 利用反熔丝元件来实现可编程功能。反熔丝在未编程时处于高阻状态,通过施加一定的电压脉冲,可以使反熔丝发生物理变化,形成低阻通路,从而实现编程。基于反熔丝技术的PLD具有一次性编程的特点,编程后不可更改,但其具有较高的可靠性、抗辐射性和保密性,常用于对安全性和稳定性要求极高的军事、航空航天等领域。