第二章 可编程逻辑器件
主要内容 可编程逻辑器件的发展进程和分类 复杂可编程逻辑器件(CPLD) 现场可编程门阵列(FPGA) 可编程逻辑器件的编程与配置 可编程逻辑器件应用选择原则
2.1 概述 2.1.1 PLD的发展进程 PLD(Programmable Logic Device)器件的 发展经历了以下四个发展阶段: 可编程只读存储器PROM和可编程逻辑阵列PLA; 可编程阵列逻辑PAL; 通用可编程阵列逻辑GAL; 复杂可编程逻辑器件CPLD和现场可编程门阵列 FPGA。
2.1.2 PLD的分类 1. 依据可编程逻辑器件的集成度分类
2.1.2 PLD的分类(续) 2. 依据互连结构分类 分为确定型和统计型 3. 依据可编程特性分类 分为一次可编程和重复可编程 4. 依据可编程器件的编程元件分类 熔丝型开关:一次可编程,需要较大的编程电流; 可编程低阻电路元件:多次编程,需中等编程电压; EPROM编程元件:需要有石英窗口,紫外线擦除; EEPROM编程元件:可多次编程,电擦除; SRAM编程元件:可在线无限次编程。
2.2复杂可编程逻辑器件(CPLD) CPLD大都采用各种分区阵列结构,每个区域内部相当于一个小规模的PLD,各区域之间通过可编程全局互连总线连接,构成较大规模的CPLD器件。
1.MAX7000系列器件的基本结构 MAX7000系列器件主要由2~16个逻辑阵列块LAB(Logic Array Block)、2~16个I/O控制模块和一个可编程互连阵列PIA(Programmable Interconnect Array)三部分构成。
2.MAX7000系列器件的逻辑宏单元结构 MAX7000系列器件中的逻辑宏单元是器件实现逻辑功能的主体,它主要由逻辑阵列、乘积项选择矩阵和可编程寄存器三个功能块组成,每一个宏单元可以被单独地配置为时序逻辑或组合逻辑工作方式。
2.MAX7000系列器件逻辑宏单元结构(续1) 逻辑阵列功能模块 每个LAB有16个共享扩展项,每一个共享乘积项可以被LAB内任何一个或全部宏单元使用和共享,以便实现复杂的逻辑函数。
2.MAX7000系列器件逻辑宏单元结构(续2) 逻辑阵列功能模块 除共享乘积项外可使用并联扩展乘积项实现复杂逻辑函数。此时,最多允许20个乘积项直接传送到逻辑宏单元的“或”逻辑中,其中5个乘积项是由宏单元本身提供的,15个并联扩展项是从同一个LAB中相邻宏单元借用的。
2.MAX7000系列器件逻辑宏单元结构(续3) 乘积项选择矩阵功能模块 可编程寄存器功能模块 该模块接收来自逻辑阵列传送给本逻辑宏单元的各个乘积项,经过选择后,一部分经或门形成组合逻辑函数的输出;一部分作为控制信号,传送到可编程寄存器功能块,作为寄存器的置位、复位、时钟和时钟使能信号。 可编程寄存器功能模块 由可编程配置寄存器和时钟选择多路选择器、快速输入选择多路选择器、复位选择多路选择器、寄存器旁路选择多路选择器等组成,对寄存器的工作方式进行灵活配置。
3.MAX7000系列器件的I/O控制模块 I/O控制块允许每个I/O引脚单独被配置为输入、输出或双向工作方式。所有I/O引脚都有一个三态缓冲器,三态缓冲器的使能控制信号来自一个4选1多路选择器,通过它可以选择使用两个全局的输出使能信号之一,或者是地(GND)电平,或者是电源(VCC)电平作为三态缓冲器的使能信号。
4.MAX7000系列器件的PIA 器件上的所有的LAB是通过在可编程互连阵列(PIA)上布线,以相互连接构成所需的逻辑。PIA这个全局总线是一种可编程的通道,它可以把器件中任何信号源连接到任何一个目的地。器件中的所有专用输入、I/O引脚和逻辑宏单元输出都连接到PIA,而由PIA将这些信号传送到器件的各个地方。只有每个LAB各自需要的信号才布置从PIA到LAB的连线。
2.3 现场可编程门阵列(FPGA) 2.3.1 FPGA的基本工作原理
2.3.2 FLEX10K系列器件的基本结构 FLEX10K系列器件是工业界第一个嵌入式PLD系列器件,它采用了SARM制造工艺和灵活逻辑单元阵列FLEX(Flexible Logic Element Matrix)结构。
2.3.2 FLEX10K系列器件的基本结构(续1) 1.逻辑阵列块LAB 每个逻辑阵列块LAB由8个相邻的逻辑单元LE,以及与相邻的LAB相连的进位链和级联链、LAB控制信号、LAB局部互连通道等组成。
2.3.2 FLEX10K系列器件的基本结构(续2) 2.逻辑单元LE 每个LE包含一个能快速产生4变量的任意逻辑函数输出的4输入查找表LUT,以及一个带同步使能的可编程触发器、与相邻LE相连的进位链和级联链。
2.3.2 FLEX10K系列器件的基本结构(续3) 2.逻辑单元LE
2.3.2 FLEX10K系列器件的基本结构(续4) 3.嵌入式阵列块EAB FLEX10K系列器件的嵌入式阵列块是输入和输出端带有寄存器的片内RAM阵列块,可用于实现通用阵列逻辑。EAB相当于一个大规模的查找表LUT,它可编程快速实现多位数字乘法器、数字滤波器和微控制器等复杂逻辑功能,比一般的外存储器有更大的灵活性。
2.3.2 FLEX10K系列器件的基本结构(续5) 4.快速互连通道 快速互连通道是由遍布于整个器件中的“行互连”和“列互连”组成的。每行的LAB有一个专用的“行互连”,“行互连”可以驱动I/O引脚,并将信号传送到同一行中的其他LAB中。“列互连”连接各行,同时也能够驱动I/O引脚。 。
2.3.2 FLEX10K系列器件的基本结构(续6) 5.输入输出单元IOE 器件的I/O引脚是由输入输出单元IOE驱动的。IOE位于快速互连通道行和列的末端,包含一个双向的I/O缓冲器和一个触发器,这个触发器可以用作需要快速建立时间的外部数据输入寄存器,也可以作为要求快速“时钟到输出”性能的数据输出寄存器。
2.3.3 CycloneⅡ器件介绍 CycloneⅡ是Altera公司在第一代Cyclone系列的基础上开发的一款低成本、高性价比的FPGA。采用了全铜层90nm低k绝缘工艺,1.2VSRAM工艺设计,在300nm园晶片上生产。提供了4608~68416个逻辑单元(LE),并具有一整套最佳的功能,包括18×18位乘法器、专用外部存储接口电路、4K位嵌入式存储块、锁相环(PLL)和高速差分I/O等功能。 表2.3 Cyclone Ⅱ 系列器件特性参数 器件 EP5 EP8 EP20 EP35 EP50 EP70 逻辑单元 4608 8256 18752 33216 30528 68416 M4K RAM块 (4KB+512校验比特) 26 36 52 105 129 250 总比特数 119808 165888 239616 483840 594432 1152000 嵌入18×18位乘法器 13 18 35 86 150 PLLs 2 4 最多用户管I/O脚 142 182 315 475 450 622 差分通道 55 75 125 200 192 275
表2.4 CycloneⅡ器件封装和最多用户I/O管脚数 封装尺寸/nm×nm EP5 EP8 EP20 EP35 EP50 EP70 144-pin TQFP/16×16 89 85 208-pin PQFP/30.6×30.6 142 138 256-pin FineLine BGA/17×17 182 152 484-pin FineLine BGA/23×23 315 322 294 672-pin FineLine BGA/27×27 475 450 422 896-pin FineLine BGA/31×31 622 表2.5 CycloneⅡ FPGA的专用配置器件 配置器件 支持CycloneⅡ器件 EP5 EP8 EP20 EP35 EP50 EP70 EPCS1 是 EPCS4 EPCS16 EPCS64
2.4 可编程逻辑器件的编程与配置 大规模可编程逻辑器件的编程和配置工艺: 基于EEPROM或Flash技术的编程工艺 这种工艺的优点是掉电后编程信息不会丢失,但编程次 数有限,编程速度不快。 基于SRAM LUT的编程工艺 信息是保持在SRAM中的,SRAM在掉电后编程信息立即丢 失,在下次上电后,需要重新载入编程信息。因此该类器件 中的编程一般称之为配置(Configure),可配制的次数几 乎是无限的,而且在线时可随时更改配置数据。 通常将编程数据下载到可编程逻辑芯片的过程,对于 CPLD来讲我们称之为编程,而对于FPGA来讲我们称之为配置。
2.4.1 CPLD的在系统编程 JTAG接口引脚功能表 ByteBlaster接口信号定义表 引脚 1 2 3 4 5 6 7 8 9 描述 功能 TDI 测试数据输入 测试指令和编程数据的串行输入引脚,数据在 TCK的上升沿移入。 TDO 测试数据输出 测试指令和编程数据的串行输出引脚,数据在 TCK的下降沿移出。如果没有数据移出,该引脚处于高阻状态。 TMS 测试模式选择 控制信号输入引脚,负责TAP控制器的状态转换。 TCK 测试时钟输入 BST电路的时钟信号。 TRST 测试复位输入 BST电路的异步复位信号,低电平有效,在IEEE规范中是可选的。 ByteBlaster接口信号定义表 引脚 1 2 3 4 5 6 7 8 9 10 JTAG模式 TCK GND TDO VCC TMS - TDI PS模式 DCK CONF_DONE nCONFIG nSTAUS DATAA0
2.4.1 CPLD的在系统编程(续1) JTAG模式对单片CPLD进行编程下载:
2.4.1 CPLD的在系统编程(续2) JTAG模式对多片CPLD进行编程下载:
2.4.2 FPGA的配置方式 通过两个模式选择引脚MSEL1和MSEL0上的电平 设定,FPGA可以使用6种配置模式: AS 主动串行配置模式 PS 被动串行模式 PPS 被动并行同步模式 PPA 被动并行异步模式 PSA 被动串行异步模式 JTAG模式
2.4.2 FPGA的配置方式(续1) 利用PC机的并行接口或者USB接口,通过ByteBlaster下 载电缆,对Altera的FPGA器件进行PS模式在线可重配置ICR 方式:
2.4.2 FPGA的配置方式(续2) 使用EPCS系列配置器件对Cyclone、CycloneⅡ系列的 FPGA进行AS模式配置方式:
2.5 可编程逻辑器件应用选择原则 按照器件的逻辑资源量进行选择 按照可编程逻辑器件的功耗进项选择 按照芯片的工作速度进行选择 按照芯片的封装形式进行选择 选择可编程逻辑器件的其它因素
本章小结 PLD的最大特点是采用软件编程的方法设置器件的逻辑功 能,目前已经成为数字系统设计的主要硬件基础之一。 已经开发的PLD产品有PROM、PLA、PAL、GAL、CPLD和 FPGA等几种类型。PROM、PLA、PAL、GAL属于低密度可 编程逻辑器件,而CPLD和FPGA属于高密度逻辑器件。 除FPGA外,其他可编程逻辑器件都是基于“与阵列”和“或 阵列”两级阵列结构,能够有效地实现“积之和”形式的逻辑 函数。而FPGA是基于查找表LUT结构的,查找表是FPGA 中的最小逻辑单位。 重点掌握CPLD的在系统编程和FPGA的配置方式。