2.3 Cyclone IV FPGA核心电路设计
2.3.1 Cyclone IV FPGA简介
尽管目前Cyclone最新系列为Cyclone 10,但Cyclone IV系列是Altera低端FPGA的典型选型代表,笔者依然将其作为基础进行FPGA核心电路的设计及介绍。Cyclone IV FPGA是Cyclone III FPGA的升级版本,如EP3C5E144C8N与EP4CE6E22C8N甚至拥有一样的I/O与Device ID,在板卡设计时可以直接替换。Cyclone IV FPGA在Cyclone III系列基础上,对体系结构和硅片进行了改进,采用了高级半导体工艺技术,并且为用户提供了全面的功耗管理工具,由此将功耗降低了25%。
Cyclone IV FPGA采用了优化过的60nm工艺技术,而Cyclone III FPGA使用的是65nm工艺技术,因此功耗上有改善,在其他方面几乎没有区别,包括硬件电路的设计等(当然Cyclone IV推出后Cyclone III直接被淘汰了)。而Cyclone II FPGA作为经典的90nm工艺技术FPGA,在Cyclone IV FPGA发布前,支撑了多年Altera的低端产品系列,Cyclone II FPGA与Cyclone IV FPGA的主要特性对比如表2.2所示。
表2.2 Cyclone II FPGA与Cyclone IV FPGA的主要特性对比
Altera公司于2009年11月3日发布了Cyclone IV FPGA系列。在移动视频、语音和数据访问及高质量3D图像对低成本带宽需求的推动下,Cyclone IV FPGA系列增加了对主流串行协议的支持,不但实现了低成本和低功耗,而且还提供了丰富的逻辑单元、存储器和DSP(数字信号处理)功能。Altera Cyclone IV FPGA拓展了Cyclone系列的领先优势,为市场提供了成本最低、功耗最低并具有收发器的FPGA。Cyclone IV FPGA系列适合对成本敏感的大批量应用,可帮助用户满足越来越大的带宽需求,同时降低了成本。
Cyclone IV FPGA最高提供150000个逻辑单元,资源更多,功耗却更低,非常适合广播、消费、工业、无线、固网等领域的低成本、小外形封装的需求。其主要优点与特性介绍如下。
1.降低了系统成本
所有Cyclone IV FPGA由于其强大的IP核、更高的集成度而降低了电路板成本,减小了电路板面积,缩短了设计的周期;利用Cyclone IV GX FPGA的灵活性和高度集成特性,可以设计体积更小、成本更低的器件,从而降低了系统总成本。
2.降低了功耗
采用经过优化的60nm低功耗工艺,Cyclone IV E FPGA拓展了前一代Cyclone III FPGA的低功耗优势。最新一代器件降低了内核电压,与前一代产品相比,总功耗降低了25%;与Cyclone II FPGA系列相比,总功耗降低了65%。
3.集成收发器
Cyclone IV GX FPGA采用了成熟的GX收发器技术,具有出众的抖动性能和优异的信号完整性。PCI-SIG兼容收发器型号支持多种串行协议。Cyclone IV GX FPGA为根端口和端点配置的PCI Express X1、X2和X4提供唯一的硬核知识产权模块。
Cyclone IV系列FPGA器件是目前Altera公司的主推型号,由于其成本相对较低,功耗明显减小,所以广受市场欢迎,甚至目前用得比Cyclone V与Cyclone 10系列还要多。
2.3.2 EP4CE15F12C8N设计需求研究分析
本书例程基于Cyclone IV E系列FPGA EP4CE15F12C8N,本节将采用该型号进行电路设计。实际上,Cyclone IV E系列FPGA的硬件设计都一样,最大的区别就是引脚分布、I/O资源及封装的区别。如图2.20所示为Cyclone IV E系列不同规模FPGA的资源介绍,其中本书使用了1.5万个LEs的EP4CE15型,最大的EP4CE115型有约115万个LEs。
图2.20 Cyclone IV E系列FPGA
笔者曾经多次设计过Cyclone IV系列FPGA的驱动板,在失败中不断总结才走到了今天,如图2.21所示为笔者分别在2011年、2012年项目中设计的Cyclone IV E系列FPGA板卡(最小封装、规模的EP4CE6E22C8N),现在看来,需要很大的改进才可应用。
图2.21 笔者在2011年、2013年设计的Cyclone IV E系列FPGA板卡
Cyclone IV系列FPGA比MAX II CPLD的设计稍微复杂些,但基本思路一致。后文中,笔者将通过分析Cyclone IV Device Handbook来完成Cyclone IV系列FPGA器件的驱动板设计。Cyclone IV Device Handbook(Cyclone4-handbook.pdf)数据手册的下载地址为https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/hb/cyclone-iv/cyclone4-handbook.pdf。
如图2.22所示为Cyclone IV Device Handbook手册目录内容,我们主要关心第一部分中Section I、II、III的内容,这些内容包含了Cyclone IV系列FPGA概述,逻辑资源、内存模块、嵌入式乘法器、时钟网络、I/O特性、外部内存接口及元成配置、JTAG下载、电源要求等内容。参照这些内容,完全可以设计出一个FPGA器件基本的原理图—设计源于手册。
1.Cyclone IV电源方案设计
查看数据手册时,切记不要盲目地寻找答案。阅读数据手册有一定的方法,笔者推荐的思路大致如下。
(1)查看手册的目录,了解整个手册的框架。
(2)查看手册最前面的器件介绍,了解自己准备研究什么内容。
(3)查看目录寻找自己需要的信息,包括功能、电源、引脚配置、读/写时序等。
(4)查看手册封装信息(如设计硬件),了解器件电气特性要求。
(5)设计驱动电路或时序代码,有问题则继续审阅手册。
由于我们现在要设计FPGA的电源供电方案,因此可以直接在手册目录找到“Power”关键字,即找到“Section III:System Integration”的“Power Requirements for Cyclone IV Devices”,这里有Cyclone IV的电源供电要求。目录检索如图2.23所示。
图2.22 Cyclone IV Device Handbook目录
图2.23 Cyclone IV手册目录检索
转到该小节继续查询,在手册第266页看到Cyclone IV E系列FPGA的电源要求,如图2.24所示。
图2.24 Cyclone IV FPGA电源配置
FPGA的电源方案相对于MAX II CPLD略微复杂,如图2.24可见E系列FPGA的内核电压与PLL的数字电压均为1.2V(1.0V不常用), PLL模拟电压为2.5V(即便不用PLL也要供电,否则无法工作), I/O电压从1.2V到3.3V可选(常用3.3V),因此EP4CE15F12C8N核心板中,至少有3.3V(I/O电压)、2.5V(PLL模拟电压)、1.2V(内核电压、PLL数字电压)三种电压。
2.Cyclone IV的全局时钟网络特性
手册中与Clock相关的章节如图2.25所示。
图2.25 手册中与Clock相关的章节
可从“Clock Networks and PLLs in Cyclone IV Devices”小节中找到FPGA内部的全局时钟网络分布。由于主要关心E系列的FPGA,因此在手册第76页中找到如图2.26所示全局时钟网络框图。
图2.26 E系列FPGA的全局时钟网络框图
由图2.26可见,Cyclone IV E FPGA最多有4个PLL,分别位于器件的4个角落。此外,每个PLL都包含了一个时钟控制模块,而且PLL具有级联功能(这在Cyclone II FPGA中是不支持的)。另外,每个PLL支持最多5个时钟的输出,因此如果FPGA有4个PLL,则最多可以有20个全局时钟信号(这远比MAX II CPLD要强大)。EP4CE15F12C8N有4个PLL,而EP4CE6/10 FPGA只有2个PLL,因此最多能产生5×2=10个全局时钟信号。
Cyclone IV系列FPGA的动态PLL可使时钟网络变得灵活多变,可以根据用户选择,在工作期间动态地改变,来满足设计的要求(手册第96页有关于PLL Reconfiguration的描述)。通过重构PLL使得PLL的输出频率、相位可实时重新配置,这一强大的功能给用户带来了巨大的帮助。笔者曾经在PLL Reconfiguration的基础上,完成了“通用LCD控制器”,以及支持任意分辨率、任意时钟的LCD控制器的设计。
3.Cyclone IV JTAG配置电路设计
从MAX II CPLD到Cyclone IV FPGA,这一直都是FPGA得以在线可编程的关键。在JTAG方面,Cyclone IV FPGA与Cyclone II FPGA相比,有了一定的改进,因此需要特别注意。
可在手册第三部分查阅Cyclone IV FPGA配置与升级的介绍,如图2.27所示。
图2.27 Cyclone IV FPGA JTAG配置与升级的介绍
对于EPCS的选型,Cyclone IV FPGA的未压缩二进制配置文件的大小在手册第168页进行了介绍,如图2.28所示。针对EP4CE6/10/15的容量,使用EPCS4 Flash(4Mbit)进行逻辑开发足矣。
图2.28 Cyclone IV FPGA未压缩二进制配置文件的大小
关于Cyclone IV FPGA的JTAG电路,在手册的第220页中的“Programming Serial Configuration Devices In-System Using the JTAG Interface”部分进行了介绍,使用JTAG接口实现串行EPCS配置的电路图,如图2.29所示。
与MAX II CPLD相比,TDI、TMS电阻(1~10kΩ)上拉2.5V,而不再是3.3V。同时,JTAG的电源脚也是2.5V。另外,很重要的一点是,很多朋友设计的EPCS无法完成配置,根据手册推荐,需要在EPCS数据源端有25Ω左右的终端匹配电阻,这可能是因为Cyclone IV FPGA的这部分结构更加脆弱吧!
另外,为了完成JTAG配置串行EPCS的功能,需要将FPGA配置为AS模式。在手册第220页下面的注释为:“The MSEL pin settings vary for different configuration voltage standards and POR time. To connect MSEL for AS configuration schemes, refer to Table 8-3 on page 8-8 , Table 8-4 on page 8-8 , and Table 8-5 on page 8-9 . Connect the MSEL pins directly to VCCA or GND.”
继续寻找手册中的表8-3(GX)、8-4(GX)、8-5(E)。EP4CE15F12C8N为Cyclone IV E FPGA,因此参考手册中的表8-5,如图2.30所示。
图2.29 Cyclone IV FPGA EPCS与JTAG配置电路
图2.30 Cyclone IV FPGA的MSEL配置表
根据表格配置AS为Standard,则EP4CE15F12C8N的MSEL[2:0]应该配置为010或011。同时,使用JTAG配置串行EPCS的推荐电路的备注中又提道:“MSEL pins directly to VCCA or GND.”,综上所述,可以配置MSEL[1]为2.5V, MSEL[2]、MSEL[0]为GND,这样,EP4CE6E22C8N的JTAG与EPCS配置电路就完成了。
最后,对于Cyclone IV FPGA器件的EPCS配置电路,数据线的长度还有一定的要求,有些EPCS配置不成功的另一个原因就是EPCS的引脚走线过长。在手册第182页中给出了EPCS的引脚走线的最大的长度,如图2.31所示。
图2.31 Cyclone IV AS引脚走线的最大长度
2.3.3 Cyclone IV FPGA核心原理图设计
为了能够更清晰地了解Cyclone IV FPGA的硬件设计原理,笔者为此专门绘制了硬件设计框图,如图2.32所示。
图2.32 Cyclone IV FPGA的硬件设计框图
1.EP4CE15F12C8N的电源方案设计
电源的方案,决定了FPGA板的性能及功耗。根据2.3.2节的分析可知,需要设计三种不同的电源,包括3.3V I/O电压、2.5V PLL模拟电压、1.2V内核电压及PLL数字电压。
在前面CPLD核心板的设计中,笔者使用了国产AMS1117-3.3作为CPLD的I/O与内核电压,由于CPLD本身的功耗较小,同时未考虑板卡功耗,用于入门学习完全足够。
但进一步思考,LDO作为低压差转换芯片(至少几百mV压差才能转换),3.3V通道的压差为1.7V,1.2V通道的压差更大(为3.8V)。由于LDO的输入电流基本上等于输出电流,如果输入/输出的压差太大,则将导致损耗在LDO上的能量很大,如果采用LDO则估算浪费了(1.7+3.8)÷(5+5)=55%的功耗。
DC/DC是利用开关方式实现的电压转换。如果输入电压和输出电压并不非常接近,或者输入电压低于输出电压,就可以考虑采用DC/DC。DC/DC的优点是效率高,可以输出大电流,且静态电流小,同时其自身的损耗小。
FPGA的功耗主要损耗在内核与I/O电压上,因此,为了设计出更完善的方案,能实现低功耗,同时成本低,额定电流足够提供给板卡,电路设计也不至于太复杂,笔者通过不断尝试与学习总结,最终决定采用DC/DC提供从5V转换3.3V/1.2V,并采用LDO从3.3V转换2.5V的方案(2.5V电流较小,因此损耗也很小)。
首先讲解LDO,前面CPLD核心板中采用的AMS1117-3.3就是常用的低压差芯片,但是封装略大、功率略高,因此为了优化选型,笔者根据经验选用了PAM公司的PAM3101AAA330,作为3.3V转换2.5V的芯片,该LDO最低支持180mV压差,且能最高输出300mA电流。
其次,DC/DC的选型更多,这里笔者选用了美国芯源系统公司(MPS)的DC/DC电源转换芯片MP2214来实现3.3V及1.2V的电压转换,该芯片支持2.5~5V电压的输入,最大可输出电流为2A,输出电压可调,且为SOC23-8小封装,能够满足大部分FPGA产品板卡的设计。如图2.33所示为笔者设计的Cyclone IV FPGA的3路电压转换电路,图中电源由DC接口输入,5.1V钳位二极管主要用于防止外部输入过高电压而损坏电路,6脚按键负责电源的开关,MP2214电源芯片用于生成目标电压。
图2.33 Cyclone IV FPGA的3路电压转换电路
由于MP2114内部的基准源为0.6V,所以在设计中通过2个电阻调节比例,来实现不同电压的输出。另外,实际输出能力不仅取决于器件,还与Layout质量有关。手册中提供了推荐电路,如图2.34(左)所示。为了最大限度地减少风险,设计者可以按照手册进行设计,笔者设计的电路如图2.34(右)所示。
图2.34 手册提供的推荐电路(左)与笔者设计的电路(右)
目前大部分处理器,包括DSP、ARM等,都需要多种电源,电源种类很多,因此便有了电源管理芯片。针对类似Altera Cyclone IV这种3电源的处理器,也有专用电源管理芯片方案。TI公司推出了针对Altera FPGA和Xilinx FPGA的电源管理芯片,并且给出了多种不同需求的设计方案,典型的电源管理芯片有TPS75003,其介绍可参考www.ti.com/lit/ds/symlink/tps75003.pdf,推荐原理图如图2.35所示。
图2.35 TPS75003推荐原理图
从图2.35可知,TPS75003与分立的DC-DC类似,只需要简单的电容、电阻、电感等元器件即可完成3通道电压的输出,该芯片主要有以下特性。
(1)集成2个效率为95%的3A Buck控制器,调用可最低调至1.2V。
(2)集成1个300mA的LDO,电压最低可调至1.0V。
(3)电压输入范围为2.2~6.5V。
以上特性可见笔者分离的2片MP2214及1片PAM3101AAA330。对比分立电源芯片转换方案言,采用电源管理芯片能够更好地设计电源,同时可降低系统的功耗,更适用于系统的集成。不过,由于电源管理芯片的相对价格较高,布局布线上也没有独立的IC那么灵活,且受到货源的限制,所以笔者最后没有采用此方案,而是使用了灵活的分立DC-DC电源转换方案。
2.EP4CE15F12C8N的PLL配置电路
PLL配置电路负责FPGA全局时钟的倍频或分频,在FPGA电路设计中尤为重要,FPGA的频率能运行多高,很大程度上在硬件上取决于电源的纹波系数,以及PLL的电路设计(在器件特性范围内,能运行的最高频率主要取决于这两部分)。手册中要求VCCA必须有磁珠+电容滤波,纯净的电压才能保证PLL的性能,如图2.36所示为笔者设计的配置电路。
图2.36 EP4CE15F17C8N FPGA PLL配置电路
在PCB设计中,器件必须按照原理图顺序从大到小排布,为了达到更高的主频,根据手册中的推荐,每一个器件都有各自独立的作用,不可省略。大部分开发板为了节约板材成本,获得更大的利益,甚至已经精简到2个0.1μF的陶瓷电容,尽管这在低频领域没有太大问题,但是当提高主频时,由于设计简陋,所以势必不可能达到较高的频率(笔者当年设计的一个板卡,由于精简设计PLL,只能运行到100MHz左右)。
3.EP4CE15F17C8N的JTAG&EPCS电路设计
在Cyclone IV FPGA手册分析中,已经介绍了该系列的JTAG配置方案。设计者需要注意配置电压、EPCS的布局布线,以及MSEL的配置,根据手册提供的电路进行设计即可,笔者设计的电路如图2.37所示。
图2.37 EP4CE15F17C8N FPGA JTAG&AS配置电路
至此,EP4CE15F17C8N FPGA的核心电路原理图设计完毕。“设计源于电路”,笔者完全是根据手册设计PCB的。如图2.38所示为采用EP4CE15F17C8N FPGA设计的本书配套VIP_Board的PCB版走线图,供读者参考。
图2.38 基于EP4CE15F17C8N的FPGA板卡TOP与Bottom走线图
2.3.4 FPGA核心板Layout注意事项
针对PCB的电源线宽,对于布线有如下要求(摘自网络)。
(1)在有条件的情况下,应尽量采用单独的电源层和地层进行供电。采用电源网络总线时,网孔越多越好,以形成许多嵌套的网孔;同时总线要尽量宽,以达到均衡电流、降低噪声的目的。
(2)电源的走线不能中间细两头粗,以免在上面产生过大的压差。走线不能突然拐弯,拐弯最好采用大于90°的钝角,如果采用圆弧形走线,则电源的过孔要比普通的大一些。有条件时,应在过孔处增加滤波电容。
(3)对于那些特别容易产生噪声的部分,应用地线包围起来,以免噪声耦合入电压。
其中,(1)讲得很有道理,而(2)则是众说纷纭,有的工程师说90°的布线对噪声的抑制更好,也有说钝角、弧线等更好的。对此没有权威的测试,也没有准确的说法,大多都是经验之谈(笔者曾经在RFID实验室学习过,90°布线有时对信号反而有好处)。
关于PCB布线对电流大小的影响,在Layout设计中尤为重要,笔者也在不断地参考、寻找资料。以下引用一段摘自《电子电路抗干扰实用技术》的原文:“由于腐铜铜箔厚度有限,在需要过较大电流的铜箔中,应考虑铜箔的载流量问题。仍以典型的0.03mm厚度为例,如果铜箔为宽W(mm),长度为L(mm)的条状导线,则其电阻为0.0005×L/W欧姆。另外,铜箔的载流量还与印制电路板上安装的元件种类、数量及散热条件有关。在考虑安全的情况下,一般可按照经验公式0.15×W(A)来计算铜箔的载流量。”
0.15×W(A)是最简单的估算,可以粗略地计算出额定电流需要的线宽。当然,这不是权威,只是给予了一个最基本的参考。
在印制电路板的定制中,我们最常用的1OZ铜厚即为0.035mm。由于PCB生产厂商也没有给出相关资料,所以我们不得不在浩瀚的网络中寻找资源。网络上有在不同铜厚下测试的载流能力,如表2.3所示。
表2.3 不同铜厚下测试的载流能力
同时,笔者还找到了一份关于同一铜厚1OZ(0.035mm),针对不同温度、不同线宽,所测试得到的载流量的参考表,如表2.4所示。
表2.4 不同温度、不同线宽时的载流量
总之,电源布线时,满足60%的余量最好,但一般都会最大限度也给足线宽,以满足驱动能力的最大化。权威的《IPC-2221A》(2003年出版,《IPC-2221》于1998出版,对于PCB线路载流能力的阐述没有2003版清晰)的6.2节中有关于PCB线路载流能力的计算介绍,如下所示。
The minimum width and thickness of conductors on the finished board shall be determined primarily on the basis of the current-carrying capacity required, and the maximum permissible conductor temperature rise.
I=kΔT0.44A0.725
Where I=current in amperes, A=cross section in sq. mils, and ΔT=temperature rise in ℃and k is a constant such that:
k=0.048 for outer layers.
k=0.024 for inner layers.
简单地讲,设计PCB线路时,应最先考虑线路的厚度与宽度(以满足载流能力),以及允许的最大温升。用给出的公式计算最大载流能力时,计算结果主要取决于参数 k、温升及PCB线路的横截面。其中,参数的定义及赋值主要如下。
(1)I为线路最大载流量,单位为A。
(2)参数k为0.024(线路在Outer Layer),或者0.048(线路在Inner Layer)。
(3)A为PCB布线的横截面(单位为mil2),其铜厚1OZ即0.035mm=1.44mil。
(4)ΔT为温升,Outer Layer经验值为10, Inner Layer经验值为5。
笔者在设计EP4CE15F17C8N板卡时,1.2V内核电源线线宽为50mil,而PCB(印制电路板)为普通的1OZ,即1.44mil,因此最大载流能力计算为:
I=kΔT0.44A0.725=0.048×100.44×(1.44×50)0.725=2.9363A
EP4CE15F17C8N手册中并没有给出明确的峰值数据,但实测该芯片内核电流在1A以内(几百mA),因此走线宽度足够。该PCB的1.2V电源主线设计如图2.39所示。
图2.39 PCB的1.2V电源主线设计
在成本不敏感的情况下,或者DIY设计中可以设计多层PCB板时,在稳定电源的同时,也降低了布线难度。笔者在本书匹配的FPGA(Cyclone IV FPGA)板卡设计中采用的就是4层板的设计,其中包括完整的地层与电源基层,剩下两层为信号线。