第1章 FPGA与CPLD简介

1.1 可编程逻辑设计技术简介

1.1.1 可编程逻辑器件发展简史

数字集成电路从电子管、晶体管、中小规模集成电路、超大规模集成电路(VLSIC)逐步发展到今天的专用集成电路(ASIC)。

从早期的只能存储少量数据,完成简单逻辑功能的可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(EEPROM),发展到能完成中大规模的数字逻辑功能的可编程阵列逻辑(PAL)和通用阵列逻辑(GAL),今天已经发展成为可以完成超大规模的复杂组合逻辑与时序逻辑的复杂可编程逻辑器件(CPLD)和现场可编程逻辑器件(FPGA)。

1.1.2 可编程逻辑器件分类

主要有简单的逻辑阵列(PAL/GAL)、复杂可编程逻辑器件(CPLD)和现场可编程逻辑阵列(FPGA)等3大类。

PAL/GAL:PAL是Programmable Array Logic的缩写,即可编程逻辑阵列。GAL是Generic Array Logic的缩写,即通用可编程阵列逻辑。特点是大多基于EECOMS工艺,结构较为简单,低功耗、低成本、高可靠性、软件可编程和可重复更改,可编程逻辑单元多为与阵列和或阵列,可编程单元密度较低。

CPLD:CPLD是Complex Programmable Logic Device的缩写,即复杂可编程逻辑器件。一般采用EECMOS工艺,也有少数采用Flash工艺。一般可以完成设计中较为复杂、较高速度的逻辑功能。

FPGA:FPGA是Filed Programmable Gate Array的缩写,即现场可编程逻辑阵列。一般采用SRAM工艺,也有一些专用器件采用Flash工艺和反熔丝(Anti-Fuse)工艺等。FPGA的集成度很高,其器件密度从数万系统门到数千万系统门不等,可以完成极其复杂的时序与组合逻辑电路功能,适用于高速、高密度的高端数字逻辑电路设计领域。

1.3 FPGA/CPLD的基本结构

1.3.1 FPGA的基本结构

简化的FPGA基本由6部分组成,分别为可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等。

FPGA与CPLD基础设计 - 图1

(1) 可编程输入输出单元

输入输出(Input/Output)单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配需求。

(2) 基本可编程逻辑单元

FPGA一般采用SRAM工艺,其基本可编程逻辑单元几乎都是由查找表(LUT,Look Up Table)和寄存器(Register)组成的。

(3) 嵌入式块RAM

大多数FPGA都有内嵌的块RAM(Block RAM),FPGA内嵌的块RAM一般可以灵活配置为单端口RAM(SPRAM,Single Port RAM)、双端口RAM(DPRAM,Double Ports RAM)、伪双端口RAM(Pseudo DPRAM)、CAM(Content Addressable Memory)、FIFO(First In First Out)等常用存储结构。FPGA可以灵活地将LUT配置成RAM、ROM、FIFO等存储结构。

(4) 丰富的布线资源

布线资源连通FPGA内部所有单元,连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。

(5) 底层嵌入功能单元

通用程度较高的嵌入式功能模块,比如PLL(Phase Locked Loop)、DLL(Delay Locked Loop)、DSP、CPU等。

(6) 内嵌专用硬核

1.3.2 CPLD的基本结构

CPLD一般都是基于乘积项结构的,CPLD的结构相对简单,主要由可编程I/O单元、基本逻辑单元、布线池和其他辅助功能模块构成。

FPGA与CPLD基础设计 - 图2

(1) 可编程IO单元

CPLD的可编程I/O单元完成不同电气特性下对输入/输出信号的驱动与匹配。

(2) 基本逻辑单元

宏单元本质是由一些与、或阵列加上触发器构成的,其中“与或”阵列完成组合逻辑功能,触发器用以完成时序逻辑。

(3) 布线池和布线矩阵

一般采用集中式布线池结构,布线池其本质就是一个开关矩阵,通过打结点可以完成不同MC的输入与输出项之间的连接。