第 三
章
CPLD/FPGA
简介
22
CPLD/FPGA 的主要特点
CPLD/FPGA是一种半定制的ASIC,属LSI或VLSI逻辑器件;
其主要特性是:
1、采用LSI/VLSI技术制造,高集成度(最高已达千万门级);
2、支持各种组合逻辑和时序逻辑电路设计,甚至实现“片上系统”
(SOC);
3、可编程改变芯片的逻辑功能,芯片可重复使用,具有ISP或ICR特
性。(ISP:In System Programming,在系统编程)
(ICR:In Circuit Reconfigable,在电路重构)
3、有很高的逻辑布线能力,可以预测信号延迟,便于使用计算机进
行逻辑功能仿真与时序仿真。
4、有良好的设计加密功能,便于保护知识产权(IP)。
5、有强大的EDA开发工具(软件)支持,与ASIC设计相比,易学易用。
6、研制、开发时间较短,费用相对少。
7、必须借助CPLD开发系统,才能设计、开发CPLD/FPGA系统。
33
CPLD/FPGA 与 SPLD
一般认为,复杂可编程逻辑器件CPLD/FPGA
的单片集成度大于1000门,而简单可编程逻辑
器 件 SPLD( Simple Programable Logic
Device)的单片集成度小于1000门。
目前FPGA的单片集成度已超过1千万门,达
到Intel公司最新奔腾Ⅳ CPU的集成度。可以
在这种高集成度的FPGA芯片上设计CPU/DSP,实
现SOPC。
GAL/PAL芯片属于SPLD,但目前它们已较少
使用。
44
ALTERA公司的新一代千万门级的
可编程逻辑器件Stratix
▲ 该系列芯片采用内核,微米全铜工艺。
▲ 开发系统是QuartusII 版本。
▲ 该系列中型号为EP1S120的芯片,内含114,140 个
LE(约个门电路),芯片中包含的元件数量已超
过10M个。
55
ALTERA的新一代低成本高密度FPGA:
Cyclone(飓风)
该FPGA芯片集成度达330万门,
可用于SOPC设计
66
一块SOPC板
77
一块SOPC板的应用:用作电视解码器
88
经过了最近20年的发展,许多IC设计公司都
开发出了CPLD/FPGA。
Altera 公司的 CPLD 系列和Xilinx 公司的
FPGA 系列,全球知名度高、应用面广,开发系
统成熟,占据了世界PLD市场的较大分额。
全球 CPLD/FPGA产品 60%以上是由 Altera和
Xilinx提供的。可以讲Altera和Xilinx共同决
定了CPLD技术的发展方向。
99
CPLD/FPGA的叫法
不同的厂家,对自己生产的可编程逻辑器件叫法不尽相同。
PLD(Programmable Logic Device)是可编程逻辑器件的总
称。 PAL、GAL等是早期的SPLD芯片。
FPGA (Field Programmable Gate Arry,现场可编程门阵
列)是Xilinx公司发明的。Xilinx公司把基于查找表技术、
SRAM存储工艺的可编程逻辑器件叫FPGA;把基于乘积项技
术、 E2PROM(或Flash MEM)存储工艺的可编程逻辑器件
叫CPLD;
Altera公司把自己生产的可编程逻辑器件都叫作CPLD,即复
杂PLD(Complex PLD),但分为 MAX系列CPLD(乘积项技术、
E2PROM存储工艺)和FLEX/ACEX/APEX系列CPLD(查找表技
术、SRAM存储工艺)。
由于FLEX等系列是基于查找表技术、采用SRAM存储工艺的
器件,其使用方法和Xilinx的FPGA一样,所以人们也把
FLEX/ACEX/APEX系列的CPLD产品叫做FPGA。
1010
如何使用CPLD/FPGA ?
开发、使用CPLD需要掌握三部分的知识:
1、熟悉、了解CPLD/FPGA芯片;
2、掌握CPLD/FPGA开发系统(软件);
3、能对CPLD/FPGA芯片进行编程配置(加载设计代码)。
由于CPLD/FPGA开发系统已发展得相当完善,用户甚至可以不用详细
了解CPLD/FPGA的内部结构,就可以用自己熟悉的方法(如原理图输
入法/HDL语言输入法/波形输入法)来完成要求的CPLD /FPGA设计。
但是若要很好的掌握CPLD/FPGA设计与应用技术,懂得必要的
CPLD/FPGA结构组成、特性参数与基本工作原理还是必要的。另外,
能熟练操作、使用一种CPLD /FPGA开发系统、至少掌握一种HDL语言
也是必要的,这将有助于提高设计的效率和可行性。
目前主要的CPLD/FPGA生产商都提供适合自己产品开发、应用的EDA
开发软件。也有许多第三方EDA软件公司提供CPLD/FPGA开发系统,
且性能优良。如CANDENCE公司的SPW系统、 Altec公司的Active CAD
系统。
1111
CPLD/FPGA设计流程
用户输入
开发系统利
用计算机进
行处理
用户测试
1212
主要的CPLD/FPGA生产厂商
目前世界上有多家公司生产CPLD/FPGA,主要
的CPLD/FPGA生产厂商有:
1、Altera 公司,主要的CPLD生产厂商
2、Xilinx 公司,主要的FPGA生产厂商
3、Lattice公司,著名的CPLD生产厂商
4、ACTEL公司, 著名的CPLD生产厂商
5、Cypress公司,著名的CPLD生产厂商
6、Atemal公司,著名的IC/MCU公司,也设计生产PLD产品.
7、Luccent公司,著名的通讯企业,也设计生产PLD产品.
1313
国外主要的CPLD/FPGA开发系统有:
Altera: MAX+PlusII、QuartusII
Xilinx: Foundation、ISE、Alliance
Lattice: Synario、ispDesignEXPERT、Vantis
Altec: Active CAD
CPRESS WRAP
OrCAD: OrCAD/2000
1414
CPLD/FPGA的结构分类
对于CPLD产品,按结构一般可分为:基于乘积项
(Product-Term)技术、EEPROM(或Flash
Memory)存储工艺的CPLD,和基于查找表(Look-Up
table)技术、SRAM存储工艺的FPGA。
基于EEPROM存储工艺的CPLD集成度相对小一点,多
用于2万门规模以下的设计,适合实现较复杂的组合
逻辑,如编、译码设计。
基于SRAM工艺的FPGA,集成度较高,内部触发器多,
多用于1万门以上的大规模系统设计,适合做复杂的
时序逻辑设计,如数字信号处理和各种算法。
已有基于FPGA的SOPC器件问世,并得到广泛关注。
1515
采用这种结构的PLD芯片有:
Altera的MAX7000,MAX9000,MAX3000系列
(E2PROM工艺),Xilinx的XC9500系列(Flash
工艺)和Lattice,Cypress的大部分产品
(E2PROM/ Flash工艺)
这种CPLD的基本结构如下所示:
(以MAX7000结构组成为例,其他型号CPLD的
结构与此非常相似)。
基于乘积项(Product-Term)的CPLD结构
1616
CPLD内部结构(Altera的MAX7000S系列)
逻辑阵列块中包含多个宏单元
逻辑阵列块
(LAB)
可编程I/O
控制块
可编程
连线资源
1717
逻辑宏单元的基本结构
逻辑宏单元是 PLD 的基本结构,由它来实
现基本的逻辑功能。一般8个逻辑宏单元构
成一个逻辑阵列块LAB。
上图中的兰色部分就是LAB。
可编程连线PIA负责信号传递,连接所有的
逻辑宏单元。
I/O 控制块(IOB)负责输入输出引脚的电气
特性控制,比如可以设定集电极开路输出,
摆率控制,三态输出等。
逻辑宏单元的具体结构见下图:
1818
宏单元的内部结构
乘积项逻辑阵列
乘积项选择矩阵
可编程
触发器
1919
上图的左侧是乘积项阵列,实际就是一个与阵
列,每个交叉点都是一个可编程点。通过“与
阵列”产生乘积项(最小项)。后面的或门把
按要求产生的乘积项“加”起来,得到需要的
输出组合逻辑函数。
图右侧是一个可编程D触发器,它的时钟,清
零输入都可以编程选择,可以使用专用的全局
清零和全局时钟。
图中的异或门用来控制组合逻辑函数的极性。
由图可见,CPLD的宏单元(也可称为逻辑单元
LE)与GAL的OLMC结构非常类似。
2020
开发系统对MAX7064SLAB的描述
2121
可编程的I/O控制块
使引脚能兼容TTL和CMOS多种接口和电压标准;
可将引脚配置为输入、输出、双向、集电极开路和
三态等形式;
能提供适当的驱动电流;
降低引脚接口功耗,防止脉冲过冲和减少电源噪声
支持多种接口电压(降低芯片功耗)
● ~,5V
● ,
● ,internal ,I/
● ,internal ,I/ and
2222
可编程连线阵列PIA
在各个逻辑宏单元之间以及逻辑宏单元与
I/O单元之间提供可编程的信号连接网络;
CPLD中一般采用固定长度的线段来进行连接,
因此信号传输的延时是固定的,使得信号传
输时时间延时能够预测。
2323
FPGA的结构与工作原理
FPGA都采用查找表
(Look-Up-Table,LUT)
来实现逻辑函数。
如Altera的FLEX/ACEX
/APEX系列器件和
Xilinx的多数器件。
FPGA的编程配置元
件都是SRAM。
由于SRAM较易制造,
且其可重复编程使用
的次数几乎无限,所
以目前高集成度的可
编程逻辑器件几乎都
是FPGA。
2424
FPGA基本结构组成图
FPGA的内部结构
称为LCA(Logic
Cell Array),由
三个基本部分组成
1、可编程逻辑块
(CLB)
2、可编程输入输
出块(IOB)
3、可编程连线资
源(PIR)
CLB中包含1个或2
个逻辑单元(LE)
CLB包含1个或2
个逻辑单元
IOB 可编程连线
资源(PIR)
2525
FPGA的基本组成
可编程逻辑块CLB组成了FPGA的核心门阵列,能完成用户指定
的逻辑功能;每个CLB中包含1个或2个逻辑单元(LE)。LE主
要由一个组合逻辑函数发生器、几个触发器、若干个多路选选
择器及控制电路组成。
可编程的输入/输出块IOB位于芯片内部四周,在内部逻辑阵列
与外部芯片封装引脚之间提供一个可编程接口,它主要由逻辑
门、触发器和控制单元组成。
可编程连线资源PIR位于芯片内部的逻辑块之间,经编程后形
成连线网络,用于芯片内部逻辑间的相互连接,并在它们之间
传递逻辑信息。
2626
2727
CLB基本结构图
2828
LE内部结构
2929
什么是查找表(Look-Up-Table,LUT)?
▲查找表(LUT)就是一个有N根(一般是4根)地址线的16x1
的RAM存储器。
▲当用户通过原理图或 HDL 语言描述了一个4输入的逻辑电
路后,CPLD/FPGA 开发软件就会按设计要求自动计算逻辑
电路的所有可能的结果,并把该结果事先写入这个RAM存储
器。这样,当输入变量作为RAM的地址信号输入时,预期的
结果(输出逻辑函数)就作为RAM的存储数据输出了。
▲利用这种查表的方法实现逻辑函数输出是一种简单、高效
的方法。这就是存储器可用作逻辑函数发生器的原理。
▲ N个输入的逻辑函数,需要2的N次方的容量的SRAM来实现
3030
查找表(LUT)的工作原理与组成
3131
查找表(LUT)的工作原理与组成
3232
查找表结构的FPGA逻辑实现原理
以这个电路为例:
▲ A,B,C,D由FPGA芯片的管脚输入后进入可编程连线,然后作为
地址线连到到LUT,LUT中由于已经事先写入了所有可能的逻辑
结果,通过地址查找到相应的数据然后输出,这样组合逻辑就
实现了。
▲ 该电路中D触发器是直接利用LUT后面D触发器来实现。时钟信
号CLK由I/O脚输入后进入芯片内部的时钟专用通道,直接连接
到触发器的时钟端。触发器的输出与I/O脚相连,把结果输出到
芯片管脚。这样PLD就完成了上图所示电路的功能。
▲这个电路是一个简单范例,只需要一个LUT加上一个触发器就
可以完成。对于一个LUT无法完成的的电路,就需要通过进位逻
辑将多个单元相连,这样FPGA就可以实现复杂的逻辑。
3333
查找表的工作原理
▲N个输入的逻辑函数需要2的N次方的容量的SRAM来实现。
▲一个LUT无法完成的N>4的多输入电路,就需要通过进位逻辑
和级连的方法将多个LUT单元相连,这样FPGA就可以实现复杂的
逻辑。
3434
XC4000系列FPGA的CLB基本结构
CLB主要由组合逻辑函数发生器、触发器、数据选
择器等电路组成。
3535
在CLB中有三个组合逻辑函数发生器,它们分别是G、F和H,对应的
输出是G’、F’和H’。G有四个输入变量G1、G2、G3和G4,F也有四
个输入变量F1、F2、F3和F4
G和F这两个逻辑函数发生器是完全独立的,均可实现4输入变量的任
意组合逻辑函数。
组合逻辑函数发生器H有三个输入信号,分别来自前两个函数发生器
的输出G’、F’和信号变换电路的输出H1。
组合逻辑函数发生器H能实现3输入变量的各种组合函数。利用三个
组合逻辑函数发生器,可以实现多达9个变量的组合逻辑函数。
XC4000的CLB中有两个边沿触发的D触发器,它们共有一个公共的时
钟,共有一个时钟使能输入端,允许选择时钟信号高或低电平有效。
可以看出,只要对CLB内部的数据选择器进行编程,逻辑函数发生器
G、F和H的输出就可以触发器连接,实现所需要的时序逻辑输出。
在CLB中的不同规格的数据选择器,分别用来选择触发器激励输入信
号、时钟有效边沿、时钟使能信号以及输出信号等。
3636
XC4000系列的I/OB 基本结构
3737
XC4000系列的I/OB主要由输入触发器、输入缓冲器和
输出触发/锁存器、输出缓冲器组成,它保证了器件
引脚和内部逻辑阵列之间的连接。
其中输入通道分为寄存器输入和直接输人两种方式。
输入信号允许有选择地编程延时。输入寄存器的时钟
极性、置位、复位端及输人上拉或下拉电阻均可由程
序控制。
在输出通道中,每个输出端都有一个三态输出缓冲器。
通过程序控制可选择寄存器输出或直接输出方式。
因此,每个I/OB控制一个引脚,通过程序设置它们可
被配置为输入、输出或双向I/O功能。
3838
XC4000系列的可编程连线资源PIR
(单长线、双长线和长线)
3939
可编程互连资源PIR通常将FPGA内部的CLB和CLB之间、CLB和I/OB之
间连接起来,组成各种具有复杂功能的系统。
PIR主要由许多金属线段构成,这些金属线段带有可编程开关,通过
自动布线实现各种电路的连接。
XC4000系列采用分段互连资源结构,如果以线段的相对长度来划分,
可分为单长线、双长线和长线三种。
单长线是指可编程开关矩阵和CLB之间的连线,是贯穿于CLB之间的
八条垂直和水平金属线段,可编程开关矩阵位于这些金属线段的交
叉点。通过编制程序,可控制开关矩阵将某个CLB与其它CLB或I/OB
连在一起。
双长线包括夹在CLB之间的四条垂直和水平金属线段。双长线双倍于
单长线,其长度通过两个CLB。穿过两个CLB之后,这些金属线段才
与可编程的开关矩阵相连。因此,利用双长线可以实现使两个相隔
(非相邻)的CLB连接。
长线是通过特殊缓冲器驱动、贯穿全局的金属连线,用来连接时钟
和其它高扇出信号。由长线网构成的金属网络,布满了阵列的全部
长和宽。CLB的输入可以由邻近的任一长线驱动,输出可以通过三态
缓冲器驱动长线。长线通常用于高扇出、关键信号的传播。
4040
Altera的FLEX/ACEX等芯片的结构
4141
Altera FLEX/ACEX 芯片的内部结构
4242
ALTERA 10K10器件的内部结构图
内含72×8=576个LE
4343
FPGA中的嵌入式阵列(EAB)
可灵活配置的RAM块,典型大小是4KB。
用途
●实现比较复杂的函数的查找表,如正弦、余
弦表等。
●可实现多种存储器功能,如RAM,ROM,双口
RAM,FIFO,Stack等
●灵活配置方法:可配置成256×16、512×8
、1024×4、2048×2、 4096×1。
4444
内部晶振电路
高速反向放大器用
于和外部晶体相接,
形成内部晶体振荡
器。
提供将振荡波形二
分频成对称方波的
功能。
4545
CPLD与FPGA的类似之处
CPLD与FPGA在很大程度上具有类似之处,概括起
来,可以认为它们都是由以下三部分共同组成:
(1)输入/输出单元。
(2)二维逻辑块阵列,是PLD器件的逻辑组成的核心
(3)用于连接逻辑块的互连资源,其中可以是各种
长度的连线线段,也可以是一些可编程的连接开关,
通常用来连接逻辑块之间、逻辑块与输入/输出块
之间的连线。
对用户而言,CPLD与FPGA的内部结构虽有不同,
但使用方法基本一样。所以在多数情况下无需加
以区分。
4646
CPLD与FPGA的区别
CPLD FPGA
内部结构 Product-term Look-up Table
程序存储 内部EEPROM SRAM,外挂EEPROM
资源类型 组合电路资源丰富 触发器资源丰富
集成度 低 高
使用场合 完成控制逻辑 能完成比较复杂的算法
速度 慢 快
其他资源 - EAB,锁相环
保密性 可加密 一般不能保密
4747
FPGA与CPLD的区别
FPGA采用SRAM进行功能配置,可重复编程,但系统掉电后,
SRAM中的数据丢失。因此需在FPGA外加EPROM,将配置数据写
入其中,系统每次上电自动将数据引入SRAM中。
CPLD器件一般采用EEPROM存储技术,可重复编程,并且系统
掉电后,EEPROM中的数据不会丢失,适于数据的保密。
FPGA器件含有丰富的触发器资源,易于实现时序逻辑,如果
要求实现较复杂的组合电路则需要几个CLB结合起来实现。
FPGA的逻辑功能由于是利用LUT来实现,且SRAM编程结构相当
较简单,故易于大规模集成。目前2万门以上规模集成的PLD
,都是FPGA。
CPLD的与或阵列结构,使其适宜实现较大规模的组合逻辑功
能,但触发器资源相对较少,实现较大规模的时序逻辑功能
有一定的难度。
CPLD的“与或阵列”结构和非易失性编程特性也不适宜超大
规模集成。一般其集成度不超过2万门。
4848
FPGA与CPLD的区别
FPGA内部有丰富连线资源,CLB分块较小,芯片的利用率较
高。
CPLD的宏单元的与或阵列较大,通常不能完全被应用,且
宏单元之间主要通过高速数据通道连接,其容量有限,限
制了器件的灵活布线,因此CPLD的利用率较FPGA器件低。
FPGA为非连续式布线,CPLD为连续式布线。FPGA器件在每
次编程时实现的逻辑功能一样,但走的路线不同,因此延
时不易控制,要求开发软件允许工程师对关键的路线给予
限制。
CPLD每次布线路径一样,CPLD的连续式互连结构利用具有
同样长度的一些金属线实现逻辑单元之间的互连。连续式
互连结构消除了分段式互连结构在定时上的差异,并在逻
辑单元之间提供快速且具有固定延时的通路。因此CPLD的
延时较小,工作频率较高。
4949
CPLD器件的命名与选型
EPM7 128 S L C 84-10
● EPM7:产品系列为EPM7000系列
● 128:有128个逻辑宏单元
● S:电压为5V,AE为,B为
● L:封装为PLCC,Q代表PQFP等
● C:商业级(Commercial)0~70度,
I:工业级(Industry),-40~85度
M:军品级(Military),-55~125度
● 84:管脚数目
● 10:速度级别
5050
CPLD/FPGA管脚的定义
特殊功能的管脚
●电源脚VCC和GND。VCC一般分为VCCINT和VCCIO两种
● JTAG管脚:实现在线编程和边界扫描;
●配置管脚(FPGA):用于连接EEPROM配置芯片;
信号管脚
●专用输入管脚:全局时钟、复位、置位;
●可随意配置其功能为:输入、输出、双向、三态
5151
习 题
1、什么是基于乘积项的可编程逻辑结构?
2、什么是基于查找表的可编程逻辑结构?
3、简述Altera CPLD的特性,说明其各组成部分的主要功
能。
4、FPGA器件在结构上有那些特点?说明其各组成部分的主
要功能
5、市场上主要的CPLD/FPGA厂商有那些?
6、市场上有哪些主流的CPLD开发系统?它们有哪些基本特
性?
7、简述CPLD/FPGA的开发与设计过程。