我打算设计一个定制的FPGA PCB。PCB将包含传感器。我需要读取传感器的输出并在处理器中进行处理。我已经使用FPGA完成了许多项目,但这将是我的第一个自定义设计,在此我还需要考虑硬件配置。我最近进行了研究,但是从一个角度来说,我仍然很难。因此,我想请您帮助我和其他想要设计自定义FPGA的个人,他们在每个步骤中需要考虑的重点。是否有书籍/在线资源可以在此过程中为我们提供帮助?完成项目后,我还将制作一个文档,以便人们可以使用它。
我打算设计一个定制的FPGA PCB。PCB将包含传感器。我需要读取传感器的输出并在处理器中进行处理。我已经使用FPGA完成了许多项目,但这将是我的第一个自定义设计,在此我还需要考虑硬件配置。我最近进行了研究,但是从一个角度来说,我仍然很难。因此,我想请您帮助我和其他想要设计自定义FPGA的个人,他们在每个步骤中需要考虑的重点。是否有书籍/在线资源可以在此过程中为我们提供帮助?完成项目后,我还将制作一个文档,以便人们可以使用它。
Answers:
在我公司,我们以前已经设计了一些定制的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内部的信号。
我已经设计了十几个基于FPGA的板,这些板采用了各种不同类型的FPGA,从低功耗Lattice Mach X02到具有24个SERDES通道的高性能Virtex 6。我遵循的正常步骤是:
找到一个COTs板(类似于MarkU),并大致了解您需要的内部FPGA资源,尤其要注意:
使用公式[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外部的较大电路并路由整个电源电路,并将其粗略放置在我期望的位置。这样,您就不会遇到路由难题并做出让步。
其次是高速信号:这些信号是您不想跳太多层的信号。
我一直在学习更多东西,并且会喜欢其他设计师遇到的其他技巧,因此请添加它们。
我认为,配备FPGA的定制PCB的一个很好的起点将是FPGA供应商的参考设计板。您可以检查例如电源的这些设计,但要注意参考设计板有时尺寸过小。由于电源尺寸过小,Xilinx ML605电路板失去了那里的配置,我们遇到了很多麻烦。
我的一位同事在Virtex-6 LXT240上实现了心脏收缩计算算法。数据输入由千兆以太网提供。由于采用了脉动方式,如果输入数据中没有数据,或者新的以太网帧到来时,FPGA的所有触发器都以200 MHz的频率进行切换,则FPGA几乎不会执行任何操作。计算上的这种不平衡导致TI的电源电路关闭ML605板,这只能通过切换主电源开关从此状态中恢复。
我们将此设计交给了我们大学的电气工程系,他们发现,没有办法根据安装的电容器来调整调节器系数。
是的,人们可能会说:设计错误或使用更大的fifos或...
我的同事的解决方案是将FPGA利用率降低80%。
尽管如此,原型开发板和参考设计应该能够处理极端的工作负载,尤其是如果该开发板拥有的FPGA的功耗不如CPU。