《可编程逻辑器件结构和工作原理》由会员分享,可在线阅读,更多相关《可编程逻辑器件结构和工作原理(24页珍藏版)》请在金锄头文库上搜索。
1、可编程逻辑器件结构和工作原理 温国忠 主要内容 CPLD结构和逻辑实现原理基于查找表的FPGA结构与逻辑实现原理 基于乘积项 Product Term 的PLD结构 采用这种结构的PLD芯片有 Altera的MAX7000 MAX3000系列 Xilinx的XC9500系列和Lattice的大部分产品 PLD的内部结构 PLD可分为三块结构宏单元 Marocell 可编程连线 PIA I O控制块 宏单元是PLD的基本结构 由它来实现基本的逻辑功能 图中兰色部分是多个宏单元的集合 可编程连线负责信号传递 连接所有的宏单元 I O控制块负责输入输出的电气特性控制 如可以设定集电极开路输出 三态输
2、出等 图中左上的INPUT GCLK1 INPUT GCLRn INPUT OE1 INPUT OE2是全局时钟 清零和输出使能信号 这几个信号有专用连线与PLD中每个宏单元相连 信号到每个宏单元的延时相同并且延时最短 宏单元结构 宏单元结构特点 左侧是乘积项阵列 实际就是一个与或阵列 每一个交叉点都是一个可编程熔丝 如果导通就是实现 与 逻辑 后面的乘积项选择矩阵是一个 或 阵列 两者一起完成组合逻辑 图右侧是一个可编程D触发器 它的时钟 清零输入都可以编程选择 可以使用专用的全局清零和全局时钟 也可以使用内部逻辑 乘积项阵列 产生的时钟和清零 如果不需要触发器 也可以将此触发器旁路 信号直
3、接输给PIA或输出到I O脚 PLD的逻辑实现原理 下面我们以一个简单的电路为例 具体说明PLD是如何利用以上结构实现逻辑的 电路如下图 假设组合逻辑的输出 AND3的输出 为f 则f A B C D A C D B C D 我们以 D表示D的 非 PLD将以下面的方式来实现组合逻辑f A B C D由PLD芯片的管脚输入后进入可编程连线阵列 PIA 在内部会产生A A反 B B反 C C反 D D反8个输出 图中每一个叉表示相连 可编程熔丝导通 所以得到 f f1 f2 A C D B C D 这样组合逻辑就实现了 图电路中D触发器的实现比较简单 直接利用宏单元中的可编程D触发器来实现 时钟
4、信号CLK由I O脚输入后进入芯片内部的全局时钟专用通道 直接连接到可编程触发器的时钟端 可编程触发器的输出与I O脚相连 把结果输出到芯片管脚 这样PLD就完成了图所示电路的功能 以上这些步骤都是由软件自动完成的 不需要人为干预 复杂逻辑的实现 对于一个复杂的电路 一个宏单元是不能实现的 这时就需要通过并联扩展项和共享扩展项将多个宏单元相连 宏单元的输出也可以连接到可编程连线阵列 再做为另一个宏单元的输入 这样PLD就可以实现更复杂逻辑 查找表 Look Up Table 的原理与结构 采用这种结构的PLD芯片我们也可以称之为FPGA 如altera的ACEX APEX系列 xilinx的S
5、partan Virtex系列等 查找表 Look Up Table 采用这种结构的PLD芯片我们也可以称之为FPGA 如altera的ACEX APEX系列 xilinx的Spartan Virtex系列等 查找表 Look Up Table 的原理 查找表 Look Up Table 简称为LUT LUT本质上就是一个RAM 目前FPGA中多使用4输入的LUT 所以每一个LUT可以看成一个有4位地址线的16x1的RAM 当用户通过原理图或HDL语言描述了一个逻辑电路以后 PLD FPGA开发软件会自动计算逻辑电路的所有可能的结果 并把结果事先写入RAM 这样 每输入一个信号进行逻辑运算就等
6、于输入一个地址进行查表 找出地址对应的内容 然后输出即可 LUT实现原理 下面是一个4输入与门的例子 基于LUT的FPGA的结构 我们看一看xilinxSpartan II的内部结构 如下图 Spartan II主要包括 CLB 包括两个Slice 可编程连线I O块RAM块 在spartan II中 一个CLB包括2个Slices 每个slices包括两个LUT 两个触发器和相关逻辑 Slices可以看成是SpartanII实现逻辑的最基本结构 Slices结构 查找表结构的FPGA逻辑实现原理 下面我们以一个简单的电路为例 具体说明FPGA是如何利用以上结构实现逻辑的 电路如下图 A B
7、C D由FPGA芯片的管脚输入后进入可编程连线 然后作为地址线连到到LUT LUT中已经事先写入了所有可能的逻辑结果 通过地址查找到相应的数据然后输出 这样组合逻辑就实现了 该电路中D触发器是直接利用LUT后面D触发器来实现 时钟信号CLK由I O脚输入后进入芯片内部的时钟专用通道 直接连接到触发器的时钟端 触发器的输出与I O脚相连 把结果输出到芯片管脚 这样FPGA就完成了图3所示电路的功能 以上这些步骤都是由软件自动完成的 不需要人为干预 复杂逻辑的实现 以上电路是一个很简单的例子 只需要一个LUT加上一个触发器就可以完成 对于一个LUT无法完成的的电路 就需要通过进位逻辑将多个单元相连 这样FPGA就可以实现复杂的逻辑