可编程逻辑器件(Programmable Logic Device, PLD)最基本、最核心的电路单元是与或阵列(AND-OR Array)及其演进形式。这一结构直接源于数字逻辑的积之和(Sum of Products, SOP)表达式,能够通过编程实现任意组合逻辑功能。

其核心思想是:任何组合逻辑函数都可以表示为多个乘积项(Product Term)的逻辑和(或运算)。最基本的PLD电路结构包含一个可编程的“与”阵列和一个固定的或阵列。输入变量进入可编程的与阵列,通过编程决定哪些输入信号(原变量或反变量)参与哪个乘积项,生成所需的乘积项;这些乘积项再送入固定的或阵列进行求和,最终输出逻辑函数。
根据阵列的可编程性,早期PLD主要分为以下几类:
| 器件类型 | 与阵列 | 或阵列 | 输出结构 | 特点 |
|---|---|---|---|---|
| PROM (可编程只读存储器) | 固定(全译码器) | 可编程 | 三态、OC门 | 地址输入作为逻辑变量,适合实现真值表,但输入多时效率低。 |
| PLA (可编程逻辑阵列) | 可编程 | 可编程 | 组合/时序 | 两个阵列皆可编程,灵活性最高,但制造复杂、成本高。 |
| PAL (可编程阵列逻辑) | 可编程 | 固定 | 组合/时序(多样) | 结构简单、速度快,成为早期主流PLD结构。 |
| GAL (通用阵列逻辑) | 可编程 | 固定 | 输出逻辑宏单元(OLMC) | 在PAL基础上采用E²CMOS工艺和OLMC,可重复编程且输出配置灵活。 |
其中,PAL和GAL所采用的“与阵列可编程、或阵列固定”结构,是理解传统PLD最基本电路的典型代表。其基本电路单元由以下部分构成:
1. 输入缓冲电路:为每个输入信号提供原(True)和反(Complement)两个互补的信号,馈入与阵列。
2. 可编程与阵列:由众多可编程连接点构成的矩阵。每个水平线(与门)代表一个乘积项,垂直线代表输入信号。通过熔丝、浮栅晶体管等技术断开或连接交叉点,决定该输入变量是否参与此乘积项。
3. 固定或阵列:将分配给某个输出的多个乘积项进行或运算,形成SOP表达式。
4. 输出电路:早期为简单寄存器,在GAL中发展为关键的输出逻辑宏单元(OLMC)。OLMC可通过编程配置为组合输出、寄存器输出、高阻态或反馈回输入,极大地增强了灵活性。
这一基本电路结构后来发展成为更复杂的复杂可编程逻辑器件(CPLD)。CPLD本质上可以看作多个类似PAL/GAL的逻辑块通过一个可编程互连矩阵连接而成,其核心逻辑块(Logic Block)仍然是基于与或阵列(通常采用更高效的乘积项阵列)和宏单元结构。
而现代主流的现场可编程门阵列(FPGA)则采用了完全不同的基本电路结构。其最基本电路单元是可配置逻辑块(CLB),核心通常是基于查找表(LUT)和多路选择器(MUX)的,配合可编程寄存器与可编程互连网络。LUT本质上是一个小型静态存储器(SRAM),将真值表存储起来,通过输入地址选择输出值,从而实现逻辑函数。这与PLD的与或阵列物理实现原理有根本区别。
总结来说,与或阵列(特别是与阵列可编程、或阵列固定的结构)是传统PLD(如PAL、GAL、CPLD内核)最基本、最标志性的电路结构,它直接映射了布尔代数的SOP形式,是理解可编程逻辑硬件基础的关键。

查看详情

查看详情