1.1.1 Cyclone IV E扩展资源介绍 接下来我们总结Cyclone IV E在经典FPGA架构上增加的资源的用处。 1.1.1.1 锁相环PLLPLL的英文全称为Phase Locked Loop,中文名叫锁相环,属于模拟电路。该电路的一个特性就是能够将输入的周期信号进行分频和倍频,并最终输出一个或多个稳定的,与输入信号频率和相位相关的信号。例如,我们将一个50MHz的有源晶振产生的时钟信号接到PLL的输入端,然后设置PLL的一路输出的倍频和分频系数分别为5和2,则当PLL对输入信号完成锁定后,就能在该路输出上得到125M的时钟,然后,我们就可以使用该时钟信号作为千兆以太网的GTX_CLK时钟信号。另外,对于SDR SDRAM存储器,需要两路频率相同,理论相位相差180度的时钟信号,Cyclone IV E的一路PLL最多可以支持5路输出,因此,可以配置一个两路的PLL,输出的倍频和分频系数相同,但是第二路信号的输出相位较第一路相差180度,这样就能产生SDRAM存储器和SDRAM控制器工作时分别所需的时钟信号。总结下来就是PLL能够通过对输入的时钟信号进行分频、倍频、相位控制,从而得到一路或多路更高或更低的时钟信号。需要注意的是,Cyclone IV E中,除了EP4CE6和EP4CE10两个容量等级的器件只含有两个PLL单元外,其他更高容量的器件均含有4个PLL。 1.1.1.2 M9K存储器从名词可知,该存储器的每个存储块的存储容量为9Kbit,每个Cyclone IV E器件中都有多个M9K存储块,具体数量与对应的器件型号相关,例如EP4CE6含有30个M9K块,而EP4CE115则含有432个M9K块。这些存储器块可以被配置为单端口、简单双端口、真双端口 RAM 以及 FIFO 缓冲器或者 ROM。例如当我们进行数据采集时,为了保证数据生产方和数据消费方能够协调读写速度,则可以使用嵌入式块RAM存储器配置为先进先出存储器(FIFO),数据生产方仅在FIFO为非满的情况下才将数据写入到FIFO中,而数据消费方则在FIFO为非空的时候才去读取其中的数据并处理,通过这种方式实现了不同数据速率之间的匹配。 1.1.1.3 18*18硬件乘法器所谓18*18乘法器,就是乘数和被乘数输入宽度最大为18位的乘法器,由于乘法器电路实现起来较为复杂,如果使用通用逻辑电路来搭建,虽然也能实现相应的功能,但是性能会受到较大的限制,无法运行在较高的时钟频率,从而拉低整个设计的时序性能。同时,使用通用逻辑搭建乘法器,也会消耗较多的芯片面积,不利于降低成本和功耗。因此,Cyclone IV E中集成了一定数量的硬件乘法器,数量视FPGA具体型号,从15个到266个不等,这些硬件乘法器默认都是18位的输入位宽。而所谓的硬件乘法器,就是该乘法器电路使用了硬线逻辑设计,在芯片版图设计时功能和布局已经固定,即使不使用,这些乘法器电路也是存在的。每个18位的硬件乘法器都可以拆分成2个9位的硬件乘法器使用,或者也可以使用多个硬件乘法器级联实现更高位宽的乘法运算。当我们需要使用FPGA进行高速的乘法运算的时候,使用嵌入的硬件乘法器无疑是比较经济且高效的选择。 1.1.1.4 各容量等级资源数量介绍通过以上内容,我们了解了Cyclone IV E FPGA中常见的硬件资源,根据器件型号的不同,每个器件中存在的这些硬件资源的数量也是不相同的,表1.1为Cyclone IV E 系列各个容量等级的FPGA芯片中拥有的各种硬件资源的数量。用户可根据实际设计实际资源消耗,合理选择满足需求的FPGA型号。
表1.1 Cyclone IV E FPGA资源数量
表1.1 Cyclone IV E FPGA资源数量 以上我们通过对Cyclone IV E FPGA的整体硬件资源进行分析,介绍了Cyclone IV E FPGA的硬件结构。该结构包括逻辑单元(LE)、嵌入式存储器(M9K)、嵌入式18 X 18乘法器、通用PLL、全局时钟网络以及输入输出单元(IO)。了解器件的具体结构,有助于我们在设计时根据器件提供的资源,对设计进行合理的优化,以达到最佳的性价比。具体这些资源在设计中怎么使用,我们将在后续章节为大家介绍。如果读者希望了解这些资源的具体硬件电路结构,也可参看《Cyclone IV Device Handbook》。 1.1.1 重点电路设计通过前面内容的学习,我们了解了Cyclone IV E FPGA的芯片硬件资源架构,接下来,我们将选取一个具体的Cyclone IV E FPGA芯片EP4CE10F17C8,讲解其应用电路设计。 1.1.1.1 电源设计
Cyclone IV E FPGA需要三组供电,分别为内核供电、PLL模拟电路供电和IO单元供电。其中,内核供电电压根据器件是否为低电压版本区分,低电压版本,内核供电为1.0V,非低电压版本供电为1.2V。PLL模拟部分供电为固定的2.5V。IO供电电压值从1.2V~3.3V,共有6种可选值。图 1.1‑3为Cyclone IVE FPGA器件供电示意图。
图 1.1 3 Cyclone IV E FPGA器件供电示意图 1.1.1.1.1 内核供电:
Cyclone IV E FPGA内核所需供电电压为1.2V,内核工作所需最大电流随芯片上运行的设计工作频率和资源占用而不同。具体每个设计的功耗可以使用Quartus软件提供的功耗分析工具“PowerPlay Power AnalyzerTool”进行分析,例如,对于一个资源占用率为95%、时钟频率为100MHz的设计,分析出的内核静态功耗为49.84mW、内核动态功耗为45.83mW,即整个内核功耗不到100mW。可见对于EP4CE10F17C8这款器件,其内核供电电流范围要求并不太高,设计时使用常见的LDO器件如AMS1117-1.2就可以满足一般的需求。当然,我们也可以使用更加高效的DC-DC电路来实现。图 1.1‑4和图 1.1‑5分别为该工程的资源利用报告图和功耗分析结果图。 图 1.1 4资源利用率 图 1.1‑5功耗分析结果
使用DCDC电路,在提供更大输出电流的同时,可以提高电源转换电路效率,更加节能。在设计时,可以使用NCP1529型专用DCDC降压器来设计该转换电路,图 1.1‑6为NCP1529典型应用电路图。NCP1529输入电压范围为2.7V~5.5V,输出电压范围为0.9V~3.9V,可持续稳定的输出高达1A的电流。其输出电压可通过反馈电阻R1和R2不同的阻值组合来设置。输出电压
其中 为反馈电压,固定为0.6V,为了实现低功耗和低噪声,要求R2的阻值大小在100K到600K之间。
图 1.1‑6 NCP1529典型应用电路
当我们希望输出电压为1.2V时,只需选择R1和R2阻值相同即可。图 1.1‑7为AC620开发板上使用的1.2V电源电路,该电路使用NCP1529实现从3.3V电源到1.2V电源的转换,R23和R25为反馈电阻,设置两者阻值均为100K,即可实现稳定的1.2V输出。为了实现电源和实际FPGA供电管脚之间的隔离,1.2V输出端还使用了一颗功率磁珠,当调试硬件需要将1.2V从FPGA管脚上断开时,只需拆掉FB4即可,这种设计思路在硬件设计中非常的常见。
图 1.1‑7 AC620开发板1.2V供电电路 内核供电引脚在器件中被标识为VCCINT,因此,在设计时需要将标注为VCCINT的引脚都连接到内核供电电源1.2V上,如图 1.1 8所示。这些电源引脚附近一般需要加高频滤波电容。 图 1.1‑8 Cyclone IV E内核供电管脚 1.1.1.1.1 PLL模拟供电Cyclone IV E FPGA器件中,PLL电路需要两种供电,分别为模拟部分和数字部分供电。数字部分供电电压为1.2V,可直接使用内核供电电源提供。PLL模拟部分仅需最大200mA的供电电流,不过由于是模拟电路,对电源稳定性要求较高,不能有较大的纹波。该供电适合使用LDO提供,例如使用LP5900SD-2.5器件,或者其他可选LDO。
PLL供电管脚根据每个器件实际具有的PLL数量而不同,主要就是EP4CE6和EP4CE10两个器件例外,由于这两个器件片上只有两个PLL,因此也只有两个PLL模拟供电脚和数字供电脚,如图 1.1‑9所示。其他容量的器件,都是4个PLL,如图 1.1‑10所示。PLL模拟供电管脚在器件中被标注为VCCAx,数字供电管脚被标注为VCCD_PLLx,设计时,请将VCCAx引脚连接到2.5V的PLL模拟供电专用电源上,VCCD_PLL连接到1.2V内核供电上。 图 1.1‑9 EP4CE10具有2个PLL的PLL供电引脚 图 1.1‑10 EP4CE30具有4个PLL的PLL供电引脚 1.1.1.1.1 IO Bank供电
每个器件的IO口都分成了8组,每一组称为一个IO Bank,同一个Bank中的所有IO供电相同,各个Bank的IO供电都可以不同,IO供电支持1.2V、1.5V、1.8V、2.5V、3.0V、3.3V多种电平标准。具体的可根据该Bank上的IO功能确定,如某个IO Bank上连接的是DDR2存储器,则该IO Bank的供电要求为1.8V。同理,若某IO Bank被确定为使用LVDS功能,则该IO Bank的供电需要被配置为2.5V。IO供电在器件中别标注为VCCIOx,其中x为IO Bank编号,图 1.1‑11为带DDR2和LVDS接口的开发板IO供电电路,由于Bank3、Bank4被设计用于连接DDR2 SDRAM存储器,因此VCCIO3和VCCIO4连接到了1.8V的供电电源上。Bank5被配置为LVDS或普通扩展IO,当Bank5上的IO作为通用IO口时,可以使用3.3V供电,当Bank5上的IO用作LVDS功能时,则只能使用2.5V供电,因此使用P9实现VCCIO5的供电电压进行切换。
图 1.1‑11带DDR2和LVDS功能的FPGA IO供电 使用跳线直接切换是一种简易的方式,适合于供电切换可选项比较少的情况。另一种推荐的切换方式是使用可调降压电路,通过跳线直接切换不通的分压反馈电阻来设置降压电路的输出值,例如对于上述提到的NCP1529,可以通过跳线选择接入电路的不同的R1阻值来实现不同电压输出。此种方式在面对需要调整的选择比较多时,比较方便。如下图 1.1‑12J16,通过短接不通的短接线,就能选择接入反馈电路的分压电阻的阻值,从而设定不同的GPIO_VCCIO的电压值。
图 1.1‑12使用可调降压电路改变IO Bank的供电电压 1.1.1.1 配置电路设计Cyclone IV E FPGA要能够正常的工作,除了需要合理的供电外,还需要有正确的配置电路。Cyclone IV E FPGA是基于SRAM的结构的,而SRAM中的数据掉电就会丢失,因此系统上电后,必须要由配置电路将正确的配置数据加载到SRAM中,然后FPGA才能够正常的运行。Cyclone IV E支持5种配置方式,如表1.2所示。 表1.2 Cyclone IV E 配置方式 1.1.1.1.1 主动串行方式(AS)在FPGA主动串行方式(AS)下,由FPGA主动输出控制和同步信号给专用的串行配芯片 (EPCS系列或兼容芯片),在串行配置器件收到命令后,把配置数据发送到FPGA,完成配置过程。配置器件可使用原厂提供的专用EPCS芯片(EPCS4、EPCS8、EPCS16、EPCS64、EPCS128),也可以使用通用的串行SPI FLASH芯片如M25P40、M25P16、W25Q16等。由于电路简单,成本低廉,该种方式在中小容量FPGA系统中使用较为广泛。图 1.1‑13为AS配置方式时的应用电路。 图 1.1‑13 AS配置方式电路
可以看到,使用该种配置方式,配置器件和FPGA之间只需连接4根信号线即可实现。DATA为配置数据传输线,DCLK为串行数据时钟传输线,nCS为器件选中信号,ASDI为命令和数据输出引脚。 1.1.1.1.1 主动并行方式(AP)
主动并行方式和主动串行方式类似,区别在于主动并行方式使用并行接口FLASH存储器作为配置器件,并行接口FLASH存储器与FPGA的配置接口如图 1.1‑14所示: 图 1.1‑14 AP配置方式电路 该种方式配置器件和FPGA连接需要耗费较多的FPGA管脚,但是能够显著提升配置数据的的传输速度,对于资源容量较多的FPGA器件,其配置文件的尺寸也相应的较大,因此在对配置过程的时间要求较高的场合,一般使用AP配置方式。对于较低逻辑容量或较少管脚封装的FPGA器件中,一般不支持AP配置方式。 1.1.1.1.1 被动串行方式(PS)
所有Altera FPGA都支持该方式。可以由Altera的下载电缆、Altera的EPC系列配置芯片,或是智能主机(微处理器或CPLD)来配置。在PS配置时,FPGA配置数据从存储器(可以是EPC系列配置器件或其它Flash器件)中读出,写人到FPGA的DATA0接口上。数据由DCLK时钟信号引脚的上升沿打入FPGA,每个DCLK时钟周期输人1位数据。图 1.1‑15为PS配置方式时的应用电路,该模式下用一个外部的主机如MCU或者CPLD配合存储器实现。
其中nCONFIG是配置启动信号,该信号的一个低电平脉冲启动一次FPGA的配置。DCLK为串行数据时钟,DATA0为串行数据线,nCE为被配置器件选则信号,在整个配置链路只配置一片FPGA的情况下,nCE引脚可以直接接地,表明一直选中。在多片FPGA串行级联情况下,该引脚接到上一级的芯片的nCEO脚上。nCEO脚是选择输出脚。当一个器件被配置完成后,该引脚输出低电平,选中级联的下一级器件,以启动对下一级器件的配置。如果整个链路上只有一片器件,该引脚悬空即可。图 1.1‑16为典型的一个PS模式配置多片级联的FPGA的应用电路。 图 1.1‑16 PS模式配置多片级联模式FPGA电路 图 1.1‑17 PS模式配置过程波形图 FPGA的配置包括3个阶段:复位、配置和初始化。当nCONFIG引脚信号为低时,FPGA 处于复位状态。从图 1.1‑17可看出,FPGA的nCONFIG引脚上一个低电平到高电平的上升沿 将使开漏的nSTATUS引脚被释放,nSTATUS引脚被外部上拉电阻上拉为高电平,FPGA 进入配置模式,开始接收配置数据。在所有配置数据都加载到FPGA后,进人初始化模式 (Initialization),在初始化完成后,进人用户模式(User Mode)。在配置模式和初始化模式下,FPGA 用户 I/O 处于高阻态,对于Cyclone 系列器件,用户I/O有内部弱上拉。当进入用户模式后,用户 I/O就按照用户设计的功能工作。
FPGA的配置流程如图 1.1‑18所示。 图 1.1‑18 FPGA配置流程图 FPGA在上电后,nCONFIG引脚为低电平先进行复位,所有配置RAM内容都清空,I/O 口处于高阻态(或内部弱上拉)。FPGA的状态引脚nSTATUS和CONF_DONE引脚输出低 电平。当nCONFIG引脚产生一个低电平到高电平的上升沿后,FPGA进人配置模式。FPGA会首先采样配置模式(MSEL)引脚的信号状态,以决定采用何种配置模式。随后,FPGA 将释放开漏输出的nSTATUS引脚,使其由外部上拉电阻拉到髙电平,这时表示FPGA可以接收配置数据了。在配置之前和配置过程中,用户I/O 口都是高阻态(或内部弱上拉)。 接收配置数据时,配置数据由DATA(并行配置时为DATA[7:0])引脚送入,配置时钟信号由DCLK引脚送入,配置数据在DCLK的上升沿被锁存到FPGA中。当FPGA成功接收完所有配置数据后,FPGA将释放开漏输出的CONF_DONE引脚,CONF_DONE被外部上拉电阻上拉为高电平,CONF_DONE,表明配置完成并进入 FPGA的初始化。在初始化过程中,内部逻辑、内部寄存器和I/O寄存器将被初始化,I/O驱动器将被使能。之后,FPGA完成进入用户模式的操作,所有内部逻辑以及I/O都按照用户的设计运行。 INIT_DONE引脚上的信号可以指示初始化是否完成。INIT_DONE是一个可选的信号,如使用该功能,需要在Quartus II中指定。 在完成配置后,DCLK和DATA引脚不应悬空,而应被拉成固定高电平或低电平。
从上文分析可知,只要人为地在外部将nCONFIG引脚拉低一段时间,然后再拉髙,便能重新启动一次配置。所以市面上有些开发板厂家就在nCONFIG脚上接了一个轻触开关到地,按下开关便能将nCONFIG拉低,然后释放,即可启动一次配置。 1.1.3.2.4 JTAG配置方式 JTAG协议制定了一种边界扫描的规范,边界扫描架构提供了有效的测试布局紧凑的PCB板上元件的能力。。边界扫描可以在不使用物理测试探针的情况下测试引脚连接,并在器件正常工作的过程中捕获运行数据。对于FPGA,我们也可以使用JTAG电路来将配置数据送入器件中。对于Altera FPGA,Quartus II软件自动生成用于使用JTAG下载器配置的.sof文件。这种配置方式也是我们在开发和调试的过程中使用最多的方式。 JTAG的指令高于一切其他配置模式,也就是说,JTAG配置方式可以打断其他配置方式的配置过程。 对于在 JTAG 模式中的器件操作所需的四个管脚为TDI、TDO、TMS和TCK。JTAG接口和FPGA的连接如图 1.1‑19所示。在了解JTAG配置之前,先对这四个管脚的功能进行介绍。表1.3为JTAG接口信号名描述。 图 1.1‑19 FPGA JTAG电路连接 表1.3 专用的 JTAG 管脚 管脚名称 | | | | | 指令以及测试和编程数据的串行输入管脚的。数据在TCK 的上升沿移入。如果在电路板上不需要JTAG 接口,可以通过将此管脚连接至VCC来禁用JTAG。TDI 管脚具有内部弱上拉电阻(通常为25KΩ)。 | | | 指令以及测试和编程数据的串行数据输出管脚。数据在TCK的下降沿移出。如果数据没有从器件中被移出,此管脚处于三态。如果在电路板上不需要JTAG接口,悬空此管脚以禁用 JTAG 电路。 | | | 提供的控制信号输入管脚,控制信号用来控制TAP状态机的跳变。状态机跳变发生在 TCK 的上升沿。因此,TMS必须在 TCK 的上升沿之前被设置。 TMS 在 TCK 的上升沿中被评估。如果在电路板上不需要 JTAG 接口,JTAG 电路被禁用连接此管脚至 VCC。 TMS 管脚具有内部弱上拉电阻 (通常为25KΩ)。 | | | 边界扫描电路的时钟输入脚。一些操作发生在上升沿,而其它的则发生在下降沿。如果在电路板上不需要JTAG 接口,JTAG 电路被禁用连接此管脚至 GND。 TCK 管脚具有内部弱下拉电阻。 |
使用JTAG配置一个器件时,编程软件(Quartus Programmer)会旁路所有其它的器件。在旁路模式下,器件通过一个旁路寄存器将编程数据从 TDI 管脚传至 TDO 管脚,该方案的目的就是在编程软件编程器件的时候能够实施校验。即通过TDI送入器件的配置数据会在一个时钟周期之后呈现在TDO上。Quartus II 软件在完成配置后验证成功的 JTAG 配置。在配置结束后,软件通过JTAG端口检查CONF_DONE的状态,以确认配置是否完成。如果 CONF_DONE不为高,那么 Quartus II 软件就获悉配置是失败的。如果 CONF_DONE 是高的,软件就确定配置是成功的。在使用JTAG TDI 端口连续发送配置比特流之后, TCK 端口计入一个额外的时钟周期以执行器件的初始化。 Cyclone IV E器件支持多种配置方式,那么器件在上电或者收到配置启动信号(nCONFIG)后,就需要通过一定设置才能确定究竟使用哪种方式完成配置。在器件上,由专用的四个信号MSEL[3..0]来设置配置方式。需要注意的是,较小的 Cyclone IV E 器件或封装选项(E144 和 F256 封装)不具有 MSEL[3] 管脚。在不具备 MSEL[3] 管脚的 Cyclone IV E 器件,不支持使用3.0V或2.5V电平标准的主动串行快速上电复位 (AS Fast POR)配置方案和主动并行(AP)配置方案。要配置这些设备与其它支持的配置方案,根据表1.4中的MSEL设置选择 MSEL[2..0] 管脚。 表1.4 Cyclone IV E 器件的配置方案 可以看到,当确定使用一种配置方案的时候,根据配置引脚(DCLK、DATA)所在IO Bank的IO供电电压不同,MSEL的设置也不一样。例如希望使用AS标准方式配置,当配置电压标准为3.3V时,MSEL[3..0] = 0010,而当配置电压标准为3.0V或2.5V时,MSEL[3..0] = 0011。所以,确定MSEL的前提应该是确定配置电压标准。具体到E144或者F256的封装上,由于没有MSEL3,当确定使用AS方式方式配置时,如果配置电压为3.3V,则应该设置MSEL[2..0] = 010,当确定使用PS方式配置时,如果配置电压为3.3V,则应该设置MSEL[2..0] = 000。需要注意的是,对于MSEL信号,要么直接连接到VCCA(2.5V),要么直接连接到GND,不得悬空或者串接电阻。 1.1.1 小结本节简单介绍了Cyclone IV E FPGA的资源结构以及其重点电路设计,了解这些内容,有助于我们在学习和使用Cyclone IV E FPGA时,根据其特点,扬长避短,设计出最高性价比的电路和固件。由于篇幅有限,本节并未对每个知识点做非常细致的讲解,读者可查看《Cyclone IV Device Handbook》文档中相关章节,以获得更加细致的描述。
|