1. FPGA上板前检查清单:电源、时钟、复位、配置模式、IO引脚分配、原理图与PCB核对

说实话,我见过太多工程师兴冲冲地把代码下载到板子上,结果板子一点反应都没有。然后就开始抓瞎——是电源没供上?时钟没起振?还是FPGA压根没配置成功?

其实这些问题,大部分都能在上板前避免。我个人的习惯是,在点击那个"Program"按钮之前,先花半小时把下面这几项过一遍。这半小时,往往能省下后面好几天的调试时间。

核心原则:上板前检查不是走形式,而是帮你把"已知的未知"变成"已知的已知"。说白了,就是别让低级错误浪费你的时间。

1.1 电源检查——这是命脉

FPGA对电源的要求很苛刻。内核电压、IO电压、辅助电压,一个都不能少,一个都不能偏。

检查要点:

  • 电压值对不对? 比如Xilinx 7系列,VCCINT通常是1.0V,VCCAUX是1.8V,VCCO根据bank不同可能是1.8V、2.5V或3.3V。拿万用表量一下,别光看原理图。
  • 上电时序满足吗? 很多FPGA要求VCCINT先上电,VCCO后上电。如果时序反了,轻则配置失败,重则烧坏IO。我在项目中遇到过因为电源芯片的EN引脚接反,导致VCCO先于VCCINT上电,结果芯片内部闩锁,板子直接废了。
  • 纹波大不大? 用示波器看,峰峰值最好控制在50mV以内。尤其是内核电压,纹波大了会导致时序收敛困难。

我的小技巧: 上电后先摸一下FPGA芯片的温度。如果发烫,赶紧断电!大概率是电源短路或者电压给高了。

1.2 时钟检查——心脏跳动

FPGA是同步电路,时钟就是它的心跳。心跳停了,一切白搭。

检查要点:

  • 晶振起振了吗? 用示波器探头点一下晶振输出脚。我见过最坑的一次,晶振虚焊,示波器一碰就有波形,一松手就没了。后来发现是焊盘氧化了。
  • 时钟频率对吗? 别只看晶振标称值。有些晶振的精度是±50ppm,对于高速SerDes来说可能不够。差分时钟要特别注意,P和N的相位差是不是180度。
  • 时钟分配网络有没有问题? 如果用了时钟缓冲器,检查它的输出使能引脚是不是拉对了。我曾经因为一个上拉电阻没焊,导致时钟缓冲器一直处于高阻态,FPGA死活没时钟。

注意: 对于GTH/GTY等高速收发器,参考时钟的抖动要求非常严格。普通的晶振可能不满足要求,必须用专用的低抖动振荡器。

1.3 复位检查——别让系统卡在未知态

复位信号看起来简单,但坑不少。

检查要点:

  • 复位电平对不对? 是低电平复位还是高电平复位?很多FPGA默认是低电平复位,但有些外设是高电平复位。混在一起用,系统永远复不了位。
  • 复位信号干净吗? 按键复位一定要做去抖处理,不然FPGA内部会检测到多次复位边沿。我习惯在FPGA内部做一个同步复位模块,把外部复位信号先同步到系统时钟域。
  • 上电复位时间够吗? 有些电源芯片的Power Good信号需要一定延时才能稳定。如果复位信号释放得太快,FPGA可能还没完成初始化。

避坑指南: 我曾经在项目里直接用RC电路做上电复位,结果因为电容漏电,复位信号一直拉不上去。后来老老实实用了复位监控芯片,再也没出过问题。

1.4 配置模式检查——FPGA怎么"学会"你的代码

FPGA是SRAM-based的,断电就丢。所以每次上电,它都需要从外部存储器加载配置数据。

检查要点:

  • 模式引脚设置对了吗? 比如Xilinx的M[2:0]引脚,决定了是Master SPI、Slave SelectMAP还是JTAG模式。我见过有人把Master SPI和Slave SelectMAP的引脚接反了,结果配置一直失败。
  • 配置存储器有没有烧录? 如果用的是SPI Flash,检查一下里面是不是空的。很多开发板出厂时Flash是空白的,第一次用需要先烧录。
  • 配置时钟频率合适吗? Master模式下,FPGA自己产生配置时钟。如果频率太高,Flash可能跟不上。一般建议先降到10MHz左右调试,稳定后再提上去。

经验之谈: 调试阶段建议先用JTAG模式下载,确认代码没问题后,再切换到Master SPI模式。这样能隔离问题——到底是代码问题,还是配置电路问题。

1.5 IO引脚分配检查——别让信号走错路

这是最容易出问题的地方,尤其是大型项目,几百个引脚,一个不小心就搞错了。

检查要点:

  • 引脚分配和原理图一致吗? 把XDC/UCF文件和原理图对着看,一个引脚一个引脚地过。我习惯用Excel做交叉比对,把原理图的网络名和约束文件里的端口名列在一起,用VLOOKUP找差异。
  • 电气标准匹配吗? 比如DDR接口要用SSTL标准,LVDS要用DIFF_SSTL。如果用了LVCMOS去驱动LVDS接收器,信号质量会很差。
  • Bank电压对不对? 每个Bank的VCCO必须和该Bank上所有IO的电压标准一致。混用不同电压标准会导致IO损坏。

特别提醒: 有些FPGA引脚是专用功能引脚,比如CCLK、DONE、PROGRAM_B等,不能当作普通IO用。强行使用会导致配置失败。

1.6 原理图与PCB核对——纸上谈兵的最后一步

这一步很多人会忽略,觉得原理图没问题就行了。但PCB布局布线中的问题,往往比原理图更隐蔽。

检查要点:

  • 关键信号有没有等长? 比如DDR的DQ和DQS,要求等长控制在±10mil以内。如果PCB上走线差了100mil,时序肯定过不了。
  • 电源走线够宽吗? 内核电流可能高达十几安培,如果电源走线太细,压降会很大。我算过,1oz铜厚、10mil宽的走线,每英寸电阻约50mΩ,10A电流下压降0.5V,这已经超过FPGA的容限了。
  • 去耦电容放对位置了吗? 电容要尽量靠近FPGA的电源引脚,而且小电容(0.1uF)要比大电容(10uF)更靠近。如果电容放反了,高频噪声滤不掉。

我的习惯: 拿到PCB后,先用万用表量一下电源和地之间有没有短路。然后用示波器看所有电源轨的上电波形。最后再上FPGA。这三步走完,基本能排除90%的硬件问题。

知识体系总览

下面这张图,是我自己总结的上板前检查流程。每次做新板子,我都会照着走一遍。

FPGA上板前检查流程 上板前检查清单 1. 电源检查 2. 时钟检查 3. 复位检查 4. 配置模式检查 5. IO引脚分配检查 6. 原理图与PCB核对 ✅ 可以上电调试 每个检查项都通过后,再上电调试,成功率会大幅提升

这张图看起来简单,但每个节点背后都有很多细节。电源检查不只是量电压,还要看纹波和时序;时钟检查不只是看频率,还要看抖动和分配网络。嗯,这些细节,我们在后面的章节里会一个一个展开讲。

最后说一句:上板前检查不是浪费时间,而是在帮你省钱。一块FPGA板子少则几千,多则几万,因为一个低级错误烧了板子,不值得。

可可精品资料库