定制FPGA PCB设计技巧


9

我打算设计一个定制的FPGA PCB。PCB将包含传感器。我需要读取传感器的输出并在处理器中进行处理。我已经使用FPGA完成了许多项目,但这将是我的第一个自定义设计,在此我还需要考虑硬件配置。我最近进行了研究,但是从一个角度来说,我仍然很难。因此,我想请您帮助我和其他想要设计自定义FPGA的个人,他们在每个步骤中需要考虑的重点。是否有书籍/在线资源可以在此过程中为我们提供帮助?完成项目后,我还将制作一个文档,以便人们可以使用它。


也许您应该提到计划使用的FPGA的物理尺寸,引脚数,所需的电源电压,...
Dzarda 2014年

这些尚未指定。也许我的问题尚不清楚,但我正在寻找指南。
2014年

好,可以。
Dzarda 2014年

这个问题似乎没什么意思
Roh 2014年

4
最大的问题是,您是否愿意使用BGA封装,或者是否打算将自己局限于手工友好型TQFP封装中提供的产品的一部分(以及降低的电气性能)。接下来,您是否希望将所有电源和信号分两层传​​送(微妙但对于有限的目标可能),还是愿意使用4个或更多?您的传感器信号有多快?您希望以什么速率计时内部逻辑?您有对噪音敏感的模拟物吗?您是否考虑过将子板与现有FPGA板一起使用?
克里斯·斯特拉顿

Answers:


11

在我公司,我们以前已经设计了一些定制的FPGA板,并且最近开始使用带有定制FMC子板的商用现货(“ COTS”)FPGA板。

原型阶段

如果您仍处于项目定义的早期阶段,请计划购买至少一块COTS FPGA板进行原型设计。您可以将一个传感器连接到I / O接头并进行快速概念验证。这样可以使您了解将项目扩展到许多传感器后项目将如何执行,并估算给定FPGA可以支持多少个。

如果FPGA太小或太慢,或者工具不足以完成工作,则现阶段可以很容易地换用其他COTS FPGA。(不是很容易,但至少是可管理的...)

如果固件在此阶段不起作用,很明显是由于固件问题,而不是自定义PCB设计错误。使用自定义固件和自定义PCB,有时很难分辨出哪一方出了问题。

定制FPGA板与商用现货FPGA板

如果项目的生命周期短,量大或所需的外形尺寸比使用COTS FPGA板和PMOD或FMC附加板所能达到的要小,那么设计定制的FPGA板就很有意义。

如果项目生命周期超过DDR存储器芯片的产品寿命(几年),则设计定制的FMC子板可能是更好的选择。

成本是决定的一个因素。大多数COTS FPGA板在某种程度上都是通用的,旨在实现最大的灵活性。如果您要生产大批量,对成本敏感的产品,那么进行定制设计可能是值得的。但是对于小批量产品,您最好集中精力制作子卡。

无论选择哪种方法,某些接口都需要清晰的主要文档:在FPGA顶级I / O引脚与电路板其余部分之间的接口,以及电路板之间的连接器接口。在这些地方,引脚位置,内部网络名称和外部网络名称有时不匹配并交换。一个表是足够的文档;确保此接口表保持版本控制并受源代码管理。在将PCB文件发送到制造之前,请打印出此接口表的副本,原理图的副本以及FPGA引脚/焊盘报告的副本。在论文上拖动荧光笔,以检查每个信号应在何处连接。

对于连接器,我已经学会了提供机械“系统图”的困难方法,该图可以在单个尺寸图上同时显示板和匹配连接器。我首先被VME连接器系统所烧死,其中一个连接器上的引脚“ A1”未映射到另一个连接器上的引脚“ A1”。我还看到设计师忘记了一对直角连接器会导致镜像连接(90度+ 90度= 180度)。当我负责主板并且其他几个项目经理负责各种子板时,这是一个问题。

定制FPGA板提示

从FPGA供应商的“参考设计”开始,然后省略您的应用程序不需要的任何部分。不要从FPGA上移除任何旁路电容器,也不要试图减少使用更少的PCB层。注意图层堆栈(通常在钻图旁边);细间距组件通常使用0.5oz的铜,而不是标准的1oz铜箔厚度。

BGA封装很难使用。成品率从来都不如TQFP或TQFN封装好,而且几乎不可能对BGA进行返工。即使检查组装问题,也需要X射线成像仪。确保使用您信任的合同制造服务提供商。

使用FPGA板时,电源总是很棘手。FPGA的实际功率要求在很大程度上取决于配置位流。Xilinx提供了“功耗估算器”工具,但是该估算值仅在固件完成后才有效。在最后一刻更改固件时,存在电源需求大于预期的风险。计划保留一些电源电流裕量。如果初始功率估计值需要560mA,请继续使用1000mA稳压器。多余的可用输出电流不会造成任何危害,但是输出电流不足会导致异常的系统行为。

如果有任何未使用的FPGA引脚,则将尽可能多的引脚带出。出现问题时,这些未使用的引脚将成为宝贵的诊断资源,用于探测FPGA内部的信号。


11

我已经设计了十几个基于FPGA的板,这些板采用了各种不同类型的FPGA,从低功耗Lattice Mach X02到具有24个SERDES通道的高性能Virtex 6。我遵循的正常步骤是:

找到一个COTs板(类似于MarkU),并大致了解您需要的内部FPGA资源,尤其要注意:

  • LUT(查找表)计数:(设计是否适合参考板上的LUT?)如果您没有资源或详尽的方法来确定LUT使用的精确估计(精度不到1K LUT),因为设计可能尚未完成。使用此经验法则。如果设计接近完成,请采用设计的大小(LUT数量),然后查找具有至少30%以上的LUT的FPGA。如果设计尚未完成,则将LUT增加50%或100%。因此,如果设计适合9K LUT,请确保使用具有12K LUT或更高版本的FPGA。我倾向于过度杀伤,可能会增加到25K LUT。这样可以节省您以后的头痛。委托该电路板设计的任何人都应该了解,该设计应该有多个旋转点,因此可以夸大FPGA的第一个版本。
  • BRAM(块RAM计数):确定您的设计是否需要比FPGA内部更多的内存资源。首先,这很容易被忽略,但是在设计中,出于各种原因(ROM,FIFO等),您倾向于使用块RAM。我在设计上用完了块存储器,并尝试使用分布式RAM(使用LUT作为RAM) ),它很快就吞噬了我所有的LUT。确定是否需要外部存储器很重要。这给设计增加了很多风险,因为如果设计需要任何水平的性能,您就可以
  • 枚举您将使用的所有信令标准和可能的电压电平:这很重要,因为您希望使用的某些信令标准(LVDS,LVSPEC,LVCMOS)可能会有电压限制。仔细阅读用户指南,并确保支持所有这些标准。
  • 电源要求:我同情以前关于尺寸过小的电源的所有抱怨,以获取规定的核心电压,最近我一直在为大型但低端的FPGA(Spartan LX45(T)-LX75(T)和莱迪思ECP3)。幸运的是,在确定用于I / O的电源时,您可以减轻一些风险。特别是,如果该存储体不是驱动未知源(扩展连接器),则过程如下:找到该存储体将要附接的所有组件,确定所有这些组件的输入电容,找出最大时钟频率。将驱动这些信号,然后您可以计算功率需求并大致估算旁路需求,

使用公式[P =(1/2)CV ^ 2 *(f)],其中C =输入电容,f =频率。FPGA必须驱动的输入信号(对于每个信号!)。您可以找到最坏情况下的估计,以驱动所有输出信号需要多少功率。

您还需要考虑与内部终端电阻相关的功率损耗(基于您使用的I / O标准)

最近,我也越来越多地使用TI Webbench工具,并取得了很多成功:

TI Webbench (我不在TI工作)

原理图:

  • 笨拙地设置原理图您和所有HDL设计师都会大量回到该原理图,因此,每个人都可以轻松快速地找到所需的东西,而无需将来您或他们研究整个原理图来查找如果引脚20是时钟输入。其中包括原理图上的大量注释(如果可能),描述电路的目的,预期结果甚至是问题。因为FPGA可以分解为存储体,所以考虑将FPGA组件分解为多个部分,甚至可以为单个存储体分配整个原理图页面。

  • 在将时钟固定到正确的引脚上时,在原理图中放了很多烦人的音符:在为设计构建第一张图像时,我的头撞到了许多墙壁上,并把可怕的“时钟信号路由到未启用时钟的引脚上” 。担心FPGA上的各种时钟引脚。确保您了解某些时钟引脚打算在FPGA象限上使用,否则您将面对每个人说:“嘿,您知道有些时钟引脚打算在FPGA的象限上使用”。仅需15个人告诉您此操作即可确保您再也不做一次。

  • 在FPGA配置设计上花费大量时间:即使您不打算使用JTAG引脚,也请确保将其拔出。这是可行的错误和致命的缺陷之间的区别。

  • 如有疑问,请带出额外的信号按钮,LED和DIP开关:与将额外的信号路由至分接头LED,DIP开关和按钮相关的额外工作非常辛苦,但是它总是有帮助的。

版面

  • 尽早与Fab家进行通信:尤其是如果您需要阻抗控制的布线时,请为所需的层数要求堆叠一层。首先确定走线宽度,以便确定可以使用6 mil的走线而不是8 mil的走线来实现50欧姆阻抗,这样就更容易路由高速信号。

  • 从旁路盖开始:尽早设计电源系统。我要做的第一件事是首先将所有小电容放置在FPGA下方或靠近引脚的位置。FPGA外部的较大电路并路由整个电源电路,并将其粗略放置在我期望的位置。这样,您就不会遇到路由难题并做出让步。

  • 其次高速信号:这些信号是您不想跳太多层的信号。


我一直在学习更多东西,并且会喜欢其他设计师遇到的其他技巧,因此请添加它们。


6

我认为,配备FPGA的定制PCB的一个很好的起点将是FPGA供应商的参考设计板。您可以检查例如电源的这些设计,但要注意参考设计板有时尺寸过小。由于电源尺寸过小,Xilinx ML605电路板失去了那里的配置,我们遇到了很多麻烦。

答复omid的评论:

我的一位同事在Virtex-6 LXT240上实现了心脏收缩计算算法。数据输入由千兆以太网提供。由于采用了脉动方式,如果输入数据中没有数据,或者新的以太网帧到来时,FPGA的所有触发器都以200 MHz的频率进行切换,则FPGA几乎不会执行任何操作。计算上的这种不平衡导致TI的电源电路关闭ML605板,这只能通过切换主电源开关从此状态中恢复。

我们将此设计交给了我们大学的电气工程系,他们发现,没有办法根据安装的电容器来调整调节器系数。

是的,人们可能会说:设计错误或使用更大的fifos或...

我的同事的解决方案是将FPGA利用率降低80%。

尽管如此,原型开发板和参考设计应该能够处理极端的工作负载,尤其是如果该开发板拥有的FPGA的功耗不如CPU。


您能解释一下我应该注意的“过小”的意思吗?
2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.