面临的第一个问题当然是供应商和器件的选择。通常供应商决策倾向于你以前接触最多的那家——如果你是一位FPGA初学者当然另当别论了。或许这个决策早已由设计内部逻辑的工程师(也许就是你)依据熟悉的供应商或第三方IP及其成本完成了。 供应商的软件工具也会影响到上述决策。下载并使用这些软件工具,不需要硬件就能将设计带入仿真阶段。这也是判断需要多大规模的FPGA的一种方式,前提是你的内部逻辑设计基本做完了。 要想知道FPGA的水有多深,需要多逛逛各家供应商的网站。如果你想从这些网站提供的海量(而且并不总是想象中那么清晰的)信息中有所收获,必须确保你有一整天空闲的时间。Altera和赛灵思公司是在市场份额和前沿技术方面都遥遥领先的两家公司。它们的器件使用内部配置RAM,因此要求使用存放配置数据的外部ROM来“启动”器件(两家公司也都有些小的非易失性CPLD类产品)。值得考虑的其它供应商还有Microsemi/Actel、莱迪思和赛普拉斯。它们的器件功能包括非常低的静态功耗、用于“即时开机”启动的基于ROM的配置和模拟外设。 好了,至此供应商问题解决了。接下来是选取FPGA的系列和规模。供应商都会将它们的产品细分成多个系列,通常以低端、中端和高端性能(和规模)这样的模糊概念加以区分。片上RAM需要多大?要多少DSP/乘法模块,或千兆位收发器?你可能需要通读一遍数据手册,找出诸如最大时钟频率和I/O时延等参数来帮助你选择正确的系列。需要重申的是,拥有HDL代码是有很大帮助的,因为设计软件可以让你知道适合哪种器件,它们是否能够满足你的性能要求。
你的应用还可以从不改变PCB就能更新器件中受益。一些FPGA系列包含众多引脚兼容的器件,可以在需要时让你切换到更大(或更便宜和更小)的器件。只是要确保针对最少数量的引脚输出进行设计。 不要忘了考虑其它一些细节,比如如何为不同的供电电压和I/O标准划分I/O组、PLL要求以及DDR接口要求。 我们需要更多的功率! 通常很难计算一块电路板要求的最大电流。但FPGA电源设计相当有技巧。FPGA所需电流很大程度上取决于逻辑设计和时钟频率。同样一个器件在一个设计中可能只需0.5W,而在另一个设计中可能高达5W。 开发工具(或一个独立的程序或电子数据表)应该可以为给定设计提供功率预估值,但它们需要从你那儿得到许多附加信息,其中一些可能只是有根据的推测。如果有FPGA开发板,就应该有方法测量各种情况下的供电电流。一些开发板甚至内嵌电流计显示器!只是要确保增加足够多的余量来应对设计更改以及特殊工艺/温度要求。 下面是“难题”可能会出现的时候: ● 做热分析,并在必要时增加散热器。 ● FPGA要求按顺序加电吗?(你的设计很容易出现5个或6个电源) ● 至少可能需要一个“安静的”电源,通常用于片上PLL。可以使用LDO加上一些无源滤波器件。千兆位收发器电源也能从低噪声中受益。 ● 确保你理解FPGA在上电和初始化时在做什么事。许多器件在这个时候需要抽取很大的电流。 关于引脚及其它 接下来可以认真考虑引脚分配这件大事了。同样,如果你的逻辑设计已经达到可以被编译的阶段,就让设计软件来提供帮助吧,或至少在做电路板之前验证你分配的引脚是可行的。你当然已经处理过明显的资源,比如根据供电电压划分I/O组,确保诸如LVDS、SSTL或内部50Ω终端等“特殊”引脚设置兼容它们所在的组和供电电压。 但在许多器件中存在更深层次的微妙关系:在“不要在单端信号的2个IC绑定焊盘内放置差分对”,或“类似于参考电压的输入必须距离时钟信号至少3个焊盘远”等字里行间隐含着复杂的规则。这些规则很容易让人发疯。如果让人不堪忍受,就让设计软件为你指出违例吧。如果你不这样做,那么这些问题肯定会让你疲惫不堪。 接地反弹或并发开关噪声(SSN)是另外一个考虑因素。由于FPGA的应用方式太多,所以供应商经常为最好的场景设计电源分配方案。如果你的设计要充分发挥I/O功能,比方使用数量很多的快速同时开关输出,那么你可能需要“减少”实际可以使用的引脚数量。尽量减小驱动和压摆率设置通常是一个好主意。设计软件也可能帮助进行SSN分析。我认为减小SSN的一个技巧是将未用引脚连接到地,然后在设计文件中将它们设置为输出,驱动‘0’。这些引脚将被用作伪地引脚,虽然质量没有真实地好。 交付 现在是将凝聚了你心血的产品交付给PCB版图设计的时候了。这里我不想深入讨论PCB设计(可以参考下面给出的一些**),但会指出针对FPGA设计需要考虑的一些事项。 堆叠设计对任何复杂的电路板来说都很重要,而在最复杂的电路板中通常都能找到FPGA的身影。随着500引脚芯片被认为是“中等规模”以及不断缩小的引脚间距,你可能需要十分留意走线逃逸图案、焊盘中的过孔、引脚区域内的去耦电容以及电源与地平面。一定要有创造性。必要时可以分割电源平面(当然要避免高速走线)。如果足够小心,一些电源连接(通常是局部的电源,如PLL电源)可以放在信号层上。将一些关键平面和信号放在最靠近FPGA的层。留意一些专门的版图建议,比如针对DRAM的一些建议。
|