第3章 CHAPTER 3 可编程逻辑器件工艺和结构 可编程逻辑器件(programmable logic device,PLD)产生于20世纪70年代,是在专用集成电路(application specific integrated circuit, ASIC)基础上发展起来的一种新型逻辑器件,是当今数字系统设计的主要硬件平台,其主要特点就是由用户通过硬件描述语言和相关电子设计自动化软件对其进行配置和编程。 本章首先介绍可编程逻辑器件发展历史、可编程逻辑器件工艺; 在此基础上介绍可编程逻辑器件结构; 最后,对高云半导体的可编程逻辑器件进行介绍。 通过该章内容的学习,读者可初步掌握可编程逻辑器件的结构及功能,为学习后续章节的内容打下基础。 视频讲解 3.1可编程逻辑器件的发展历史 可编程逻辑器件伴随着半导体集成电路的发展而不断发展,其发展可以划分为以下4个阶段。 1. 第一阶段 20世纪70年代,可编程器件只有简单的可编程只读存储器(programmable read only memory,PROM)、紫外线可擦除只读存储器(electrical programmable read only memory,EPROM)和电可擦除只读存储器(electrical erasable programmable read only memory,EEPROM)3种,由于结构的限制,它们只能完成简单的数字逻辑功能。 2. 第二阶段 20世纪80年代,出现了结构上稍微复杂的可编程阵列逻辑(programmable array logic,PAL)和通用阵列逻辑(general array logic,GAL)器件,正式被称为PLD,它们能够完成各种逻辑运算功能。典型的PLD由“与”“非”阵列组成,用“与或”表达式来实现任意组合逻辑,所以PLD能以乘积和形式完成大量的逻辑组合。PAL器件只能实现可编程,在编程以后无法修改; 如需要修改,则需要更换新的PAL器件。但GAL器件不需要进行更换,只要在原器件上再次编程即可。 3. 第三阶段 20世纪90年代,众多可编程逻辑器件厂商推出了与标准门阵列类似的现场可编程门阵列(field programmable gate array,FPGA)和类似于PAL结构的扩展性复杂可编程逻辑器件(complex programmable logic device,CPLD),提高了逻辑运算的速度,具有体系结构和逻辑单元灵活、集成度高和适用范围宽等特点,兼容了PLD和通用门阵列的优点,能够实现超大规模的电路,编程方式也很灵活,成为产品原型设计和中小规模产品生产的首选。 4. 第四阶段 21世纪初,FPGA和CPU相融合,并且集成到单个FPGA器件中。典型地,高云半导体推出了两种基于FPGA的嵌入式解决方案。 (1) FPGA器件内嵌了ARM CortexM3硬核和RISCV AE350硬核。 (2) 提供了低成本的嵌入式软核处理器知识产权(Intellectual Property,IP)核,如ARM CortexM1、CortexM3和RISCV N25。 通过这些嵌入式解决方案,实现了软件和硬件在单个芯片内的完美结合,使FPGA的应用范围从传统的数字逻辑扩展到嵌入式系统领域。 视频讲解 3.2可编程逻辑器件典型工艺 本节将介绍可编程逻辑器件通常采用的几种不同的半导体工艺,以帮助读者理解器件工艺对可编程逻辑器件结构和性能的影响。 1. 反熔丝连接工艺 这是一项由美国斯坦福大学发明,并由Actel公司(被Microsemi公司收购,Microsemi公司后又被Microchip公司收购)开发的可编程逻辑器件工艺,如图3.1所示。该工艺主要用于ACT 1、ACT 2和ACT 3系列FPGA器件。Actel技术的基础是该公司新颖的编程元素,即可编程低阻抗电路元件(programmable lowimpedance circuit element,PLICE)和多专利FPGA架构所创造的独特协同作用。 图3.1反熔丝工艺的半导体结构描述 图3.2PLICE元素结构 如图3.2所示,PLICE反熔丝是一种非易失性双端元件,当编程后,其展示出具有低“导通”电阻特性,并提供了掩膜可编程门阵列中提供的“过孔”相同的线到线的互联功能,以及在传统可编程逻辑器件中基于晶体管的EPROM及RAM单元和金属熔丝。 PLICE反熔丝在尺寸和电气性能方面具有关键优势。反熔丝足够小,可以适应通道布线轨迹的宽度。这意味着反熔丝本身基本上不会产生芯片尺寸开销。PLICE反熔丝的小尺寸和低延迟特性的结合使得Actel能够在两个关键的架构上取得突破。 (1) 提供丰富的布线资源,同时提供非常小的芯片尺寸。 (2) 提供高度灵活、高度精细的架构(小的逻辑块)。 当采用这种工艺的PLD编程后,永久不能再改变其内部连接关系,因此其设计成本较高,这是因为它是一次性器件,一旦编程失败或者设计出现缺陷,整个器件将被报废,必须重新采购新的器件。但是,采用这种工艺的PLD具有优异的抗干扰性能和保密性能,这是因为整个设计已经被固化到芯片内,并且要想破解芯片内的设计结构异常困难。 2. SRAM工艺 典型地,高云半导体的晨熙(GWZA)系列FPGA采用SRAM工艺。在第2章提到, SRAM存储数据需要消耗大量的硅片面积,且断电后数据信息丢失。在采用SRAM工艺的FPGA中,SRAM单元主要实现以下3个任务。 (1) 作为查找表(lookup table,LUT)实现逻辑(用作真值表)。 (2) 用作嵌入式块存储器资源(例如缓冲区存储)。 (3) 用于控制布线和配置开关。 采用这种工艺的PLD优势主要体现在以下方面。 (1) 易于修改(甚至可以动态可重配置),设计者可以对PLD进行反复修改和编程。 (2) 较好的密度。 (3) 跟踪最新的SRAM技术(比逻辑技术更快)。 (4) 灵活,实现结构更好,不但适用于限自动状态机,同时也适用于算术电路。 采用这种工艺的PLD的劣势在于: (1) 采用这种工艺的PLD属于易失性器件。只要系统正常供电,器件配置信息就不会丢失; 一旦断电,保存在FPGA内的配置信息将丢失。因此,在使用SRAM工艺的FPGA进行数字系统设计时,需要在FPGA的外部连接一个存储器芯片来保存器件配置信息。 (2) 通常具有较大的功耗。 3. 掩膜工艺 典型地,只读存储器(read only memory,ROM)就采用掩膜工艺,它属于非易失性存储器。当系统断电后,信息仍然保留在ROM内的存储单元中。用户可以从掩膜器件中读取信息,但是不能往ROM中写入任何信息。 ROM单元保存了行和列数据,形成一个阵列,每一列有负载电阻使其保持逻辑“1”,每个行列的交叉处有一个关联晶体管与一个掩膜连接。 下面通过一个例子来帮助读者理解ROM实现逻辑功能的原理。从图3.3可知,ROM内部由“与”阵列和“或”阵列构成。相同列上二极管的串联形成逻辑“与”关系,相同行上二极管的并联形成逻辑“或”关系。原理分析很简单,就是当通过电阻给二极管两端施加的逻辑电平超过二极管的导通电压时,二极管导通; 否则,二极管处于截止状态。根据这个原理,很容易得到下面的逻辑表达式: W0=A0·A1 W1=A0·A1 W2=A0·A1 W3=A0·A1 图3.3采用掩膜工艺ROM的内部结构 从上面的逻辑表达式可知,地址译码器实现的是逻辑“与”关系。 D3=W1+W3 D2=W0+W2+W3 D1=W1+W3 D0=W0+W1 从上面的逻辑表达式可知,存储矩阵实现的是逻辑“或”关系。 4. PROM工艺 典型地,EPROM就采用了PROM工艺,它是非易失性器件。当系统断电时,信息仍然保留在存储单元中。PROM器件可编程一次,之后只能读取EPROM内的数据,但是不能向PROM写入新的数据。PROM单元保存了行和列数据,形成一个阵列,每一列有负载电阻使其保持逻辑“1”,每个行列的交叉有一个关联晶体管和一个掩膜连接,如图3.4所示。 图3.4PROM的内部结构 5. EPROM和EEPROM工艺 这种工艺常用于乘积项类型的PLD中。采用这种工艺的PLD是非易失性器件,并且可重新编程。 采用这种工艺的PLD更适合实现有限自动状态机,而不适合算术电路。这种工艺的晶体管级表示如图3.5所示。 图3.5EPROM和EEPROM工艺 图3.5(a)表示将一个高编程电压(>12V)VPP施加在漏极(drain),电子增益足够“跳跃”到浮栅上。 图3.5(b)表示附着在gate1上的电子抬高了阈值电压,这样使晶体管总是处于正常工作电压。 图3.5(c)表示紫外线为在gate1上附着的电子提供足够的能量,以“跃回”衬底,使晶体管正常工作。 6. Flash工艺 真正的基于Flash(闪存)工艺的FPGA 不应该和其他内部带有Flash存储器的FPGA类型混合。具有内部Flash存储器的基于SRAM的FPGA仅在启动期间使用Flash存储器将数据加载到SRAM配置单元。相反,真正基于Flash工艺的FPGA使用Flash作为配置存储的主要资源,并且不需要SRAM(类似技术用于CPLD,但是FPGA架构和CPLD架构不同)。该技术具有耗电少的优点。此外,基于Flash工艺的FPGA对辐射效应也更宽容。典型地,高云半导体的小蜜蜂(GW1N)系列FPGA就采用Flash工艺。 采用Flash工艺的PLD具有多次可重复编程的能力,以及非易失性的特点。在断电后,器件配置信息仍然保存在PLD内。 Flash可采用多种结构,与EPROM单元类似,具有一个浮置栅晶体管单元和EEPROM器件的薄氧化层特性,其原理详见第2章存储器部分的介绍。 思考与练习31高云半导体的小蜜蜂系列的FPGA采用工艺,并简述这种工艺的特点。 思考与练习32高云半导体的晨熙(GW2A)器件采用工艺,并简述这种工艺的特点。 3.3简单可编程逻辑器件结构 本节介绍简单可编程逻辑器件结构,包括PROM原理及结构、PAL原理及结构和PLA原理及结构。 3.3.1PROM原理及结构 PROM是一种可编程逻辑器件,如图3.6所示。从图中可以看出,PROM内部由固定的逻辑与阵列和可编程的逻辑或阵列构成。当使用PROM时,可以通过最小项求和的方式,实现布尔逻辑函数功能。 图3.6PROM的内部结构 从图中可知, 第一行实现I3·I2·I1·I0的逻辑关系, 第二行实现I3·I2·I1·0的逻辑关系, 第三行实现I3·I2·1·I0的逻辑关系, 以此类推, 最后一行实现3·2·1·0的逻辑关系。 3.3.2PAL原理及结构 PAL是一种可编程逻辑器件,其内部结构如图3.7所示。从图中可以看出,PAL内部由固定的逻辑或阵列和可编程的逻辑与阵列构成。 图3.7PAL的内部结构 可以对PAL内部每个逻辑与门编程,用于生成输入变量的一个乘积项。因此,当使用PAL时,可以通过SOP方式实现指定的布尔函数功能。 3.3.3PLA原理及结构 可编程逻辑阵列(programmable logic array,PLA)是一种可编程逻辑器件,如图3.8所示。从图中可以看出,PLA内部由可编程的逻辑或阵列和可编程的逻辑与阵列构成。很明显,PLA的灵活性要远远高于PROM和PAL。 图3.8PLA的内部结构 思考与练习33请使用PAL实现下面的逻辑表达式。 (1) W(A,B,C,D)=∑m(2,12,3) (2) Y(A,B,C,D)=∑m(0,2,3,4,5,6,7,8,10,11,15) 视频讲解 3.4CPLD原理及结构 CPLD由完全可编程的与/或阵列以及宏单元库构成。与/或阵列是可重新编程的,可以实现多种逻辑功能。宏单元则是可实现组合或时序逻辑的功能模块,同时还提供了真值或补码输出和以不同的路径反馈等额外的灵活性。Xilinx XC9500系列CPLD的内部结构,如图3.9所示,从图中可以看到XC9500 CPLD内的多个功能块(function block,FB)和I/O块(I/O Block, IOB)通过快速开关矩阵连接。IOB提供了缓冲区用于器件的输入和输出。每个FB提供了可编程逻辑的能力,共36个输入和18个输出。开关矩阵将所有FB的输出和输入信号以及FB的输入信号连接在一起。 3.4.1功能块 CPLD的功能块FB的内部结构,如图3.10所示。从图中可以看出,FB由18个独立的宏单元构成,每个宏单元可以实现一个组合逻辑或寄存器功能。FB也接收全局时钟,输出使能和置位/复位信号。FB产生18个输出用于驱动快速连接开关矩阵,18个输出和它们相对应的输出使能信号也可以驱动IOB。 图3.9XC9500 CPLD内部结构 图3.10FB块的内部结构 FB内部的逻辑使用积之和SOP描述,36个输入所提供的72个信号(包括36个真值和36个取反值)可以连接到可编程的逻辑与阵列,生成90个乘积项。通过乘积项分配器,可以将它们分配到每个宏单元。 每个宏单元也支持本地反馈路径,这样可以允许任何数量的FB输出来驱动它自己的逻辑与阵列。这些路径可用于创建快速的计数器和状态机,在状态机内的状态寄存器也在相同的FB内。 图3.11宏单元的内部结构 3.4.2宏单元 FB内宏单元的结构如图3.11所示。通过配置文件,可以单独配置每个宏单元,这样它们可实现组合逻辑 或者寄存器功能。来自逻辑与阵列的5个直接乘积项可用作基本的数据输入(到OR和XOR门),通过它们可以实现组合逻辑功能,或者作为控制输入,包括时钟、置位/复位和输出使能。与每个宏单元连接的乘积项分配器,用于从5个直接项中选择信号。 在宏单元内的寄存器可以配置成D型、T型触发器,或者也可以旁路掉它们用于组合逻辑操作。每个寄存器支持异步置位和复位操作。当上电时,所有的寄存器初始化为用户定义的预加载状态。 3.4.3快速连接矩阵 CPLD内部的快速连接开关矩阵结构如图3.12所示。快速连接矩阵将信号连接到FB输入,所有IOB输出以及FB输出均可用于驱动快速连接矩阵。通过用户的编程,可以选择它们中的任何一个以相同的延迟来驱动FB。快速连接矩阵能将多个内部的信号连接到一个逻辑线与输出,用于驱动目的FB。 图3.12快速连接开关矩阵的内部结构 3.4.4输入/输出块 I/O块是内部逻辑和用户I/O引脚之间的接口,如图3.13所示。每个I/O块包含一个输入缓冲区、输出驱动器、输出使能选择复用器和可编程的地控制。 图3.13I/O块内部逻辑 思考与练习34CPLD的基本原理是。 思考与练习35Xilinx XC9500 CPLD内结构由、和构成。 思考与练习36Xilinx XC9500 CPLD的最基本的逻辑单元称为。 思考与练习37Xilinx XC9500 CPLD内的快速连接矩阵的作用是。 3.5FPGA原理及结构 FPGA是在PAL、PLA、CPLD等可编程器件的基础上进一步发展起来的一种更复杂的可编程逻辑器件。它是作为ASIC领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路有限的缺点。 由于FPGA需要被反复烧写,它实现组合逻辑的基本结构不可能像ASIC那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构,查找表可以很好地满足这一要求。目前,主流FPGA都采用了基于SRAM工艺的查找表结构,也有一些军品和宇航级FPGA采用Flash/熔丝/反熔丝工艺的查找表结构。 视频讲解 3.5.1FPGA的基本原理 由布尔代数理论可知,对于一个n输入的逻辑运算,其最多产生2n个不同的组合。所以,如果预先将相应的结果保存在一个存储单元中,就相当于实现了与非门电路的功能。FPGA原理的实质,就是通过配置文件对查找表(LUT)进行配置,从而在相同的电路情况下实现不同的逻辑功能。 LUT本质上就是一个RAM。自FPGA诞生以来,它大多使用四输入的LUT结构。所以,每个LUT可以看成一个包含四位地址线的RAM。 当设计者通过原理图或HDL描述了一个逻辑电路后,FPGA厂商提供的开发软件集成开发工具就会自动计算逻辑电路的所有可能结果,并把真值表事先写入RAM中。这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。 下面用一个四输入逻辑与门电路的例子来说明LUT实现组合逻辑的原理。LUT描述四输入逻辑与关系如表3.1所示。 表3.1输入与门的真值表 实际逻辑电路LUT实现方式 a,b,c,d输入逻辑输出RAM地址RAM中存储内容 0000000000 0001000010 ………… 1111111111 从表3.1可以看到,LUT具有和逻辑电路相同的功能。但是,LUT具有更快的执行速 度和更大的规模。与传统化简真值表构造组合逻辑的方法相比,LUT具有明显的优势,主要表现在: (1) LUT实现组合逻辑的功能由输入决定,而不是由复杂度决定; (2) LUT实现组合逻辑有固定的传输延迟。 注: 目前,国际上一些FPGA厂商将LUT由四输入升级为六输入,这样在实现一个逻辑功能时会显著降低所使用的LUT的数量。 3.5.2高云FPGA的结构 本节以高云GW1N家族中的GW1N9系列FPGA为例,介绍FPGA内部的结构和主要的逻辑设计资源。GW1N9系列FPGA内部的结构如图3.14所示。 图3.14GW1N9系列FPGA的内部结构 注: 图中相同形状的“对象”(底层原语)只标注一次; 图中空白的区域为布线资源; 在高云FPGA中可配置单元分为CFU或CLU,它们的符号形状相同,但是功能上有所区别。 视频讲解 3.5.3可配置单元 从图3.14可知,在高云GW1N系列FPGA内部提供了大量的可配置功能单元(configurable function unit,CFU)和可配置逻辑单元(configurable logic unit,CLU)。CFU和CLU也是FPGA最基本的功能单元,它在FPGA内部按照行和列的形式整齐排列,不同规模的FPGA其内部CFU的个数也不相同。CLU和CFU的不同之处仅在于,CLU中的可配置逻辑块不能配置为静态随机存储器,在此将其统称为可配置单元。 CFU的内部结构如图3.15所示。CLU内部包含四个CLS,以及可配置的布线单元(configurable route unit,CRU)。每个CFU/CLU由四个CLS构成,编号为CLS0~CLS3。每个CLS包含两个LUT和两个REG,以及用于控制连线的MUX。 在CFU/CLU中的CRU主要实现下面功能。 (1) 输入选择功能。为CFU的输入信号提供输入选择源。 (2) 布线资源功能。为CFU的输入/输出信号提供连接关系,包括CFU内部连接、CFU之间连接以及CFU和FPGA其他功能模块之间的连接。 1. 查找表 CFU中可配置逻辑块(configurable logic slice,CLS)可配置为LUT、ALU、SRAM和ROM四种工作模式。 (1) 基本查找表模式。每个查找表可配置为一个四输入的LUT,通过CLS内的多路选择器的控制,可将多个LUT连接在一起,实现更多输入的查找表功能。 ① 将一个CLS内的两个LUT进行组合(通过CLS内部的MUX2_LUT5),构成五输入的LUT,如图3.16所示。 ② 将两个五输入的LUT进行组合(通过CLS外部MUX2_LUT6),可构成六输入的LUT,此时需要两个CLS。 图3.15CFU的内部结构 注: 仅GW1N2、GW1N1P5、GW1N2B、GW1N1P5B、GW1NR2、GW1NR2B器件支持CLS3的REG,对于GW1N家族的其他系列不支持CLS3的REG,在图3.2中用阴影区域标识。当存在CLS3时,CLS3与CLS2的CLK/CE/SR同源。 图3.16两个四输入LUT组合构成一个五输入的LUT ③ 将两个六输入的LUT进行组合(通过CLS外部的MUX2_LUT7),可构成七输入的LUT,此时需要四个CLS,即一个全部的CFU/CLU。 图3.17ALU的输入和输出端口 ④ 将两个七输入的LUT进行组合(通过CFU/CPU外部的MUX2_LUT8),可构成八输入的LUT,此时需要八个CLS,即两个CFU/CLU。 (2) 算术逻辑模式。结合进位Carry,查找表可配置为算术逻辑单元(arithmetic logic unit,ALU),其输入和输出端口如图3.17所示,端口实现的功能如表3.2所示。ALU的参数设置如表3.3所示。 表3.2ALU输入和输出端口的功能 端口名字方向功能 I0输入数据输入 I1输入数据输入 I3输入数据选择信号。用于加减选择或计数器的递增/递减选择 CIN输入数据进位输入信号 COUT输出数据进位输出信号 SUM输出数据输出信号 表3.3ALU的参数设置 参数取 值 范 围功能 ALU_MODE0(默认)、1、2、3、4、5、6、7、8或90: 加法; 1: 减法; 2: 加减法; 3: 不等于; 4: 大于或等于; 5: 小于或等于; 6: 计数器递增; 7: 计数器递减; 8: 计数器递增/递减; 9: 乘法 (3) 存储器模式。 存储器模式包含了SRAM和ROM两种模式,当使用CFU内的LUT构成SRAM或ROM时,称为分布式影子存储器(shadow SBRAM,SSRAM); 而使用图3.1内的专用BSRAM构成的存储器,称为块存储器。使用CFU内LUT可构成的SSRAM类型如表3.4所示。 表3.4CFU内LUT可构成的SSRAM类型 类型描述 RAM16S1地址深度16,数据宽度为1的单端口SSRAM RAM16S2地址深度16,数据宽度为2的单端口SSRAM RAM16S4地址深度16,数据宽度为4的单端口SSRAM RAM16SDP1地址深度16,数据宽度为1的伪双端口SSRAM RAM16SDP2地址深度16,数据宽度为2的伪双端口SSRAM RAM16SDP4地址深度16,数据宽度为4的伪双端口SSRAM ROM16地址深度16,数据宽度为1的ROM 图3.18寄存器的符号 2. 多路选择器 CLS中的多路选择器MUX,用于组合LUT的输出,以及控制CLS中的布线。 3. 寄存器 CLS中包含两个寄存器(REG),其符号如图3.18所示。寄存器的端口功能如表3.5所示。 表3.5寄存器端口的方向和功能 信号名字方向功能 D输入寄存器数据输入(1) CE输入CLK使能信号,可配置为逻辑“1”(高电平)/逻辑“0”(低电平)使能(2) CLK输入时钟信号,可配置为上升沿触发或下降沿触发 SR输入本地置位复位输入(set reset,SR),可配置为同步复位、同步置位、异步复位、异步置位以及无本地置位和复位(2) GSR(3)(4)输入全局置位复位,可配置为异步复位、异步置位以及无全局置位和复位(4) Q输出寄存器输出 (1) 信号D的来源可以是同一CLS中任一LUT的输出,也可以是来自CRU的输入。因此,在LUT被占用的情况下,仍可以单独使用寄存器。 (2) CFU中CLS的CE/CLK/SR均可以独立配置选择。 (3) 在高云FPGA内部,GSR通过直连线连接,不通过CRU。 (4) SR与GSR同时有效时,GSR有更高优先级。 3.5.4块静态随机访问存储器 GW1N系列FPGA内部提供了丰富的块静态随机访问存储器(block static random access memory,BSRAM)资源,其时钟频率可达190MHz。每个BSRAM可配置最高18432位(18Kb),每个BSRAM的工作模式包括单端口(single port,SP)模式、双端口(dual port,DP)模式、伪双端口模式(semi dual port,SDP)模式和只读存储器(read only memory,ROM)模式。此外,BSRAM还提供了下面的功能。 (1) 奇偶校验。 (2) 数组宽度范围为1~36位。 (3) 混合时钟操作模式(mixed clock mode,MCM)。 (4) 混合数据宽度模式(mixed data width mode,MDWM)。 (5) 当数据宽度大于8位时,支持多字节使能功能。 (6) 支持下面的读/写模式,包括正常读/写模式、先读后写模式以及直写模式。 1. 可配置的结构模式 BSRAM可配置的结构模式如表3.6所示。 表3.6BSRAM可配置的结构模式 单端口模式双端口模式伪双端口模式只读模式 16K×116K×116K×116K×1 8K×28K×28K×28K×2 4K×44K×44K×44K×4 2K×82K×82K×82K×8 1K×161K×161K×161K×16 512×32—512×32512×32 2K×92K×92K×92K×9 1K×181K×181K×181K×18 512×36—512×36512×36 注: GW1N1S FPGA不支持双端口模式,GW1N9K系列FPGA仅GW1N9C支持双端口模式。 2. 可配置的端口模式 GW1N家族FPGA可支持单端口模式、双端口模式和伪双端口模式。需要注意,GW1N家族FPGA中不同的系列对端口模式的支持也不同,详见“Gowin存储器(BSRAM & SSRAM)用户指南”。 1) 单端口模式 在单端口模式下,可以在一个时钟沿对BSRAM进行读或写操作。在写操作时,写入的数据会传递到BSRAM输出。在单端口模式下,支持正常读/写模式、先读后写模式以及只写模式。单端口模式下的BSRAM如图3.19所示,端口的功能如表3.7所示。 图3.19单端口模式下的BSRAM 表3.7单端口模式下BSRAM的引脚功能 端口名字方向功能 DO[31:0]/DO[35:0]输出数据输出 DI[31:0]/DI[35:0]输入数据输入 AD[13:0]输入地址输入 WRE输入写使能输入。当为逻辑“1”时,表示写入; 当为逻辑“0”时,表示读取 CE输入时钟使能输入,当为逻辑“1”时,允许时钟输入 CLK输入时钟输入信号 RESET输入复位输入信号,支持同步复位和异步复位,逻辑“1”有效。需要注意,RESET仅复位寄存器,并不复位存储器内的值 OCE输入输出时钟使能信号,用于流水线模式,对旁路模式无效 BLKSEL[2:0]输入BSRAM块选择信号,用于需要多个BSRAM存储单元级联实现容量扩展 2) 双端口模式 在双端口模式下,可对两个端口同时读取、同时写入,或任何一个端口的读和写。双端口模式下的BSRAM如图3.20所示。 图3.20双端口模式下的BSRAM 3) 伪双端口模式 在伪双端口模式下,支持同时的读和写操作。但是对同一个端口不能做读/写操作,只支持A端口写、B端口读。伪双端口模式下的BSRAM如图3.21所示。 图3.21伪双端口模式下的BSRAM 4) 只读模式 在只读模式下,开发人员可以通过存储器初始化文件,通过编程端口来初始化只读存储器,如图3.22所示。开发人员需要提供ROM中的内容,将其编码到初始化文件中。在对FPGA上电编程时完成初始化操作。每个BSRAM可配置为一个16Kb的ROM。 图3.22只读模式下的BSRAM 3. 读/写操作模式 BSRAM支持5种操作模式。其中,读模式包括流水线读模式和旁路模式,写模式包括正常写模式、写通过模式和先读后写模式。 1) 读操作模式 从BSRAM读出的数据通过输出寄存器(流水线模式)或不通过输出寄存器输出(旁路模式)。 (1) 流水线模式。在同步写入存储器时,使用输出寄存器。该模式可支持数据宽度最大为36位。 (2) 旁路模式。不使用输出寄存器,数据保留在存储器阵列的输出。 2) 写操作模式 (1) 正常写模式。对一个端口进行正常写操作,该端口的输出数据保持不变,即写入的数据不会出现在读端口中。 (2) 写通过模式。对一个端口进行写操作时,写入的数据会出现在该端口的输出。 (3) 先读后写模式。对一个端口进行写操作时,原来的数据会出现在该端口的输出,写入数据会保存到相应的单元。 视频讲解 3.5.5时钟资源 时钟资源即布线对FPGA在高性能方面的应用至关重要。GW1N家族提供了专用全局时钟(global clock,GCLK),可以直接连接到器件上的所有资源。除了GCLK外,还提供了高速时钟(highspeed clock,HCLK)。此外,还提供了相位锁相环(phase lock loop,PLL)。 1. GCLK GCLK在FPGA中按象限分布,1K、2K和4K系列FPGA中GCLK分为L和R两个象限,9K系列FPGA中GCLK分为BL、BR、TL和TR四个象限,如图3.23所示。每个象限提供八个GCLK网络。GCLK可选的时钟源包括专用的时钟输入引脚和普通布线资源,使用专用的时钟输入引脚具有更好的时钟性能。 每个象限的GCLK0~GCLK5 由DQCE 动态控制打开/关闭。关闭GCLK0~GCLK5 时钟,GCLK0~GCLK5 驱动的内部逻辑不再翻转,从而降低了器件的总体功耗。 每个象限的GCLK6~GCLK7 由DCS 控制,内部逻辑可以通过CRU 在四个时钟输入之间动态选择,输出不带毛刺的时钟。 2. PLL PLL内部是一个反馈电路,它利用外部输入的参考时钟信号控制环路内振荡信号的频率和相位。PLL提供可合成的频率,通过配置不同参数可以调整时钟的频率(包括分频和倍频)、调整相位和调整占空比等功能。 在第7章介绍串口通信模块设计时,将详细介绍通过调用IP核使用PLL的方法。 3. HCLK GW1N家族FPGA内的HCLK可以支持I/O完成高性能数据传输,是专门针对源时钟同步的数据传输接口。高速时钟HCLK中间有个HCLKMUX模块,HCLKMUX能将任何一个组中的HCLK时钟输入信号送到其他任何一个Bank中,这使得HCLK 的使用更加灵活,如图3.24所示。 图3.23GN1N9 FPGA内GCLK资源 图3.24HCLK的资源分布 视频讲解 3.5.6输入/输出块 GW1N系列FPGA的输入/输出块(input & output block,IOB)主要包括I/O缓冲区、I/O逻辑以及相应的布线资源三部分,如图3.25所示。 图3.25两个IOB的内部结构 1. I/O电平标准 GW1N家族FPGA每个组支持单独供电,有独立的电源VCCIO。为了支持SSTL、HSTL等I/O输入标准,每个组还提供一个独立的参考电压VREF,开发人员可以选择使用IOB内置的VREF源(等于0.5×VCCIO),也可选择外部的VREF输入(使用组中任意一个I/O引脚作为外部VREF输入)。 GW1N9系列FPGA的I/O组分布如图3.26所示。 GW1N系列FPGA分为LV及UL版本。LV版本的FPGA支持1.2V VCC供电电压,可满足低功耗的需求。VCCIO根据需要可在1.2V、1.5V、1.8V、2.5V和3.3V电压中灵活选择。 2. I/O逻辑 I/O逻辑的内部结构如图3.27所示。该结构的端口功能如表3.8所示。 图3.26GW1N9系列的I/O组分布 图3.27 I/O逻辑的内部结构 表3.8I/O逻辑的端口功能 端口名字方向功能 C输入GCLK输入信号(1) DI输入I/O口低速输入信号,直接输入到FPGA内部的逻辑结构 Q输出SDR模块中的IREG输出信号 Q0~Qn-1输出DDR模块中的IDES输出信号 (1) 当CI作为GCLK输入时,DI、Q及Q0~Qn-1不能作为I/O输入输出使用。 1) 延迟模块 I/O逻辑内部包含延迟模块,其内部结构如图3.28所示。该模块可以提供最多128(0~127)步的延迟,一步的延迟时间大约为30ps。可以采用静态或动态方式控制延迟。当采用动态延迟方式时,可与IEM模块一起使用来调节动态取样窗口,IODELAY不能同时用于输入和输出。 图3.28延迟模块的内部结构 2) I/O寄存器 I/O寄存器的引脚如图3.29所示。GW1N家族FPGA的每个I/O都提供可编程的输入寄存器(IREG)、输出寄存器(OREG)和高阻控制寄存器(TRIREG)。 3) 取样模块 取样模块(IEM)用于取样数据边沿,用于通用DDR模式,如图3.30所示。 图3.29I/O寄存器的引脚 图3.30取样模块的引脚 4) 解串行化器DES模块 每个输入的I/O逻辑提供了简单的解串行化器DES模块,它将外部的串行数据转换为用于FPGA内部逻辑结构的并行数据。 5) 串行化器SER模块 每个输出的I/O逻辑提供了简单的串行化器SER模块,它将FPGA内部逻辑结构的并行数据转换为要发送的串行数据。 3.5.7数字信号处理模块 GW1N家族FPGA内具有丰富的数字信号处理(digital signal processing,DSP)模块,以满足FPGA在DSP方面的任务需求,例如有限冲激响应(finite impulse response,FIR)滤波器和快速傅里叶变换(fast fourier transform,FFT)等。 在高云GW1N家族FPGA中,DSP模块以行的形式排列,如图3.14所示。每个DSP模块由两个宏单元构成,每个宏单元包含两个预加法器(Preadder),两个18位的乘法器(18×18)和三输入54位算术/逻辑运算单元(ALU54),宏单元的内部结构如图3.31所示。 图3.31DSP模块宏单元内部结构 该DSP模块提供的功能还包括: (1) 3种位宽(9位、18位和36位)的乘法器; (2) 多个乘法器级联可增加数据宽度; (3) 桶形移位器; (4) 通过反馈信号做自适应滤波; (5) 支持寄存器的流水线和旁路功能。 思考与练习38: FPGA最基本的原理是基于。 思考与练习39: 高云GW1N系列FPGA内基本的逻辑单元称为和,两者的主要区别是。 思考与练习310: 高云GW1N系列FPGA的CFU内的CLS可配置为四种工作模式,包括、、和。 思考与练习311: 高云GW1N系列FPGA的CLS中的多路选择器MUX,其功能包括和。 思考与练习312: 高云GW1N系列FPGA内的BSRAM的工作模式包括、、和。 思考与练习313: 简述高云GW1N系列FPGA内的GCLK的布局结构和功能。 思考与练习314: 高云GW1N系列FPGA内的输入输出块主要包括、和。 3.6高云FPGA产品类型和功能 本节介绍高云FPGA产品类型,以及不同类型FPGA的功能和特点。 3.6.1小蜜蜂家族FPGA产品 小蜜蜂(LittleBee)家族FPGA产品是采用55nm闪存工艺的低功耗、低成本、瞬时启动和高安全性的可编程逻辑器件。小蜜蜂家族FPGA的标识为: GW1NLV 9 PG256 C6/I5 ①②③④⑤ 其中: ①GW1N表示产品系列。 ②表示内核供电电压。当该字段标识为LV时,为1.2V; 当该字段标识为UV时,为1.8V/2.5V/3.3V。 ③逻辑密度。该字段标识器件的LUT的个数。 ④封装类型。 ⑤等级和速度。C表示商业级,I表示工业级; 数字表示速度,4指速度最慢,7指速度最快。 1. GW1N系列/GW1N系列(车规级) 它是小蜜蜂家族第一代产品。该系列FPGA的具体资源数量如表3.9所示。 表3.9GW1N系列FPGA的资源 资源GW1N1GW1N2GW1N4GW1N9GW1N1SGW1N1P5 逻辑单元(LUT4)115223044608864011521584 触发器(FF)8642016345664808641584 分布式存储器SSRAM/位018432017280012672 块存储器BSRAM /位72K72K180K468K72K72K 数量44102644 用户闪存/位96K96K256K608K96K96K 乘法器(18×18)00162000 相位锁相环(PLL)112211 I/O组(总数)464436 最多用户I/O12012521827644125 (LV版本)核电压/V1.21.21.21.21.21.2 (UV版本)核电压/V1.8/2.5/3.31.8/2.5/3.32.5/3.32.5/3.3—1.8/2.5/3.3 2. GW1NR系列 该系列在GW1N的基础上集成了丰富的SDRAM存储芯片。该系列FPGA的具体资源数量如表3.10所示。 表3.10GW1NR系列FPGA的资源 资源GW1NR1GW1NR2GW1NR4GW1NR9 逻辑单元(LUT4)1152230446088640 触发器(FF)8642304(FF+Latch) 其中,FF: 201634566480 分布式存储器SSRAM/位00017280 块存储器BSRAM /位72K72K180K468K 数量441026 用户闪存/位96K96K256K608K SDR SDRAM/位——64M64M PSRAM/位—32M/64M32M/64M64M/128M 乘法器(18×18)001620 相位锁相环(PLL)1122 I/O组(总数)4744 最多用户I/O120126218276 (LV版本)核电压/V1.21.21.21.2 (UV版本)核电压/V—1.8/2.5/3.32.5/3.32.5/3.3 3. GW1NS系列 高云半导体GW1NS系列包括SoC产品(封装前带“C”的器件)和非SoC产品(封装前不带“C”的器件)。SoC产品内嵌ARM CortexM3硬核处理器,而非SoC产品内部没有ARM CortexM3硬核处理器。此外, GW1NS系列产品内嵌用户闪存。该系列FPGA的具体资源数量如表3.11所示。 表3.11GW1NS系列FPGA的具体资源数量 资源GW1NS4GW1NS4C 逻辑单元(LUT4)46084608 触发器(FF)34563456 块存储器BSRAM /位180K180K 数量1010 乘法器(18×18)1616 用户闪存/位256K256K 相位锁相环(PLL)22 OSC1,精度±5%1,精度±5% 硬核处理器—CortexM3 USB PHY—— ADC—— I/O组(总数)44 最多用户I/O106106 核电压/V1.21.2 4. GW1N系列 该系列FPGA产品是小蜜蜂家族第一代低功耗产品。该系列FPGA的具体资源数量如表3.12所示。 表3.12GW1N系列FPGA的具体资源数量 资源GW1N1资源GW1N1 逻辑单元(LUT4)1152用户闪存/位64K 触发器(FF)864最多用户I/O48 分布式存储器SSRAM/位4K(LV版本)核电压/V1.2 块存储器BSRAM/位72K(ZV版本)核电压/V0.9 相位锁相环(PLL)1 5. GW1NSR系列 该系列FPGA是小蜜蜂家族第一代可编程逻辑器件产品,是一款系统级封装产品,型号为GW1NSR4和GW1NSR4C。该系列FPGA内部集成了GW1NS系列可编程逻辑器件产品(GW1NS4和GW1NSR4C)和PSRAM存储芯片(容量为64Mb)。此外,GW1NSR系列产品内嵌用户闪存。 6. GW1NSE系列 该系列提供嵌入式的安全组件,支持基于PUT技术的信任根,每个设备在出厂时都配有一个永远不会暴露在设备外部的唯一密钥。高安全性特性使得GW1NSE适合于各种消费和工业物联网、边缘和服务器管理应用,其产品型号为GW1NSE4C,其参数与GW1NS4C对应。 7. GW1NSER系列 该系列FPGA产品与GW1NSR系列产品具有相同的硬件组成单元,唯一的区别是在制造过程中,在GW1NSER系列安全芯片产品内部非易失性User Flash中提前存储了一次性编程(OTP)认证码,具有该认证码的器件可用于实现加密、解密、密钥/公钥生成、安全通信等应用。 8. GW1NRF 系列 该系列蓝牙FPGA产品是一款系统级封装芯片,是一款SoC芯片。器件以32位硬核微处理器为核心,支持蓝牙5.0低功耗射频功能,具有丰富的逻辑单元、内嵌BSRAM和DSP资源,I/O资源丰富,系统内部有电源管理模块和安全加密模块。具有高性能、低功耗、瞬时启动、低成本、非易失性、高安全性、封装类型丰富、使用方便灵活等特点。 3.6.2晨熙家族FPGA产品 晨熙家族FPGA产品是采用55nm SRAM工艺的可编程逻辑器件,具有高性能的DSP资源、高速低电压差分信号(low voltage differential signaling,LVDS)接口,以及丰富的片内存储器资源。 1. GW2A系列/GW2A系列(车规级) 它是晨熙家族第一代产品。该系列FPGA的具体资源数量如表3.13所示。 表3.13GW2A系列FPGA的具体资源数量 资源GW2A18GW2A55 逻辑单元(LUT4)2073654720 触发器(FF)1555241040 分布式SSRAM/位41472109440 块BSRAM /位828K2520K 数量46140 乘法器(18×18)4840 相位锁相环(PLL)46 I/O组88 最多用户I/O384608 核电压/V1.01.0 2. GW2AR系列 它是晨熙家族第一代产品,是一款系统级封装芯片,在GW2A系列基础上集成了大容量的SDRAM。该系列产品的具体型号为GW2AR18,在GW2A18的基础上,集成了64/128Mb容量的SDR/DDR SDRAM,以及64Mb容量的PSRAM。 3. GW2AN系列 它是晨熙家族第一代具有非易失性的FPGA产品,内部资源丰富,提供了高速LVDDS接口以及丰富的BSRAM和NOR闪存。该系列FPGA的具体资源数量如表3.14所示。 表3.14GW2AN系列FPGA的具体资源数量 资源GW2AN9XGW2A18X 逻辑单元(LUT4)1036820736 触发器/锁存器(FF/Latch)777615552 分布式SSRAM/位4147241472 块BSRAM /位540K540K 数量3030 NOR Flash/位16M16M 相位锁相环(PLL)22 全局时钟88 高速时钟88 LVDS/(Mb/s)12501250 MIPI/(Mb/s)12001200 I/O组99 最多用户I/OTBD384 (LV版本)核电压/V1.01.0 (EV版本)核电压/V1.21.2 (UV版本)核电压/V2.5/3.32.5/3.3 4. GW2ANR系列 它是晨熙家族第一代产品,是一款系统级封装、具有非易失性的FPGA产品,在GW2A基础上集成了丰富容量的SDRAM及NOR闪存,同时具有GW2A系列高性能的DSP资源、高速LVDS接口以及丰富的BSRAM资源。该系列FPGA的具体资源数量如表3.15所示。 表3.15GW2ANR系列FPGA的具体资源数量 资源GW2ANR18 逻辑单元(LUT4)20736 触发器(FF)7776 分布式SSRAM/位41472 块BSRAM /位828K 数量46 NOR Flash/位32M SDR SDRAM/位64M 乘法器(18×18)48 相位锁相环(PLL)4 I/O组8 最多用户I/O384 核电压/V1.0 3.6.3Arora V家族FPGA产品 Arora V是晨熙家族第五代FPGA产品,采用了22nm SRAM工艺。该家族FPGA内部资源丰富,具有全新架构并且支持AI运算的高性能DSP、高速LVDS接口以及丰富的BSRAM,同时集成了自主研发的DDR3,支持多协议12.5Gb/s SERDES,提供多种引脚封装形式。 1. GW5A系列 该系列FPGA的具体资源数量如表3.16所示。 表3.16GW5A系列FPGA的具体资源数量 资源GW5A25GW5A138 逻辑单元(LUT4)23040138240 触发器(FF)23040138240 分布式SSRAM/Kb1801080 块BSRAM /Kb10086120 数量56340 DSP28298 相位锁相环(PLL)612 全局时钟3232 高速时钟1624 LVDS/(Mb/s)12501250 DDR3/(Mb/s)10661333 MIPI DPHY硬核/(b/s)2.5G(RX/TX),4个数据通道,1个时钟通道2.5G(RX/TX),8个数据通道,2个时钟通道 ADC12 GPIO组86 最多用户I/O236376 核电压/V0.9/1.00.9/1.0 2. GW5AT系列 该系列FPGA的具体资源数量如表3.17所示。 表3.17GW5AT系列FPGA的具体资源数量 资源GW5AT60GW5AT138 逻辑单元(LUT4)59904138240 触发器(FF)59904138240 分布式SSRAM/Kb4681080 块BSRAM /Kb20706120 数量115340 DSP117298 相位锁相环(PLL)812 全局时钟3232 高速时钟2024 收发器48 收发器速率/(b/s)270M~12.5G270M~12.5G PCIe 2.0硬核1个 x1, x2, x41个 x1, x2, x4, x8 LVDS/(Mb/s)12501250 DDR3/(Mb/s)13331333 MIPI DPHY硬核/(b/s)2.5G(RX/TX),8个数据通道,2个时钟通道2.5G(RX/TX),8个数据通道,2个时钟通道 ADC12 GPIO组116 最多用户I/O320376 核电压/V0.9/1.00.9/1.0 3. GW5AST系列 该系列FPGA对应的具体型号为GW5AST138,它在GW5AT138的基础上又集成了RISCV的硬核。