2.4 FPGA/CPLD电路焊接、调试经验总结
对于FPGA/CPLD驱动电路设计,首先需设计原理图与PCB,接着应投产打样,拿到板子后再进行焊接调试及相关的测试。如果电路基本功能验证通过,就可以进行项目工程设计;反之,如果出现了这样或那样的问题,继而发现原理图设计的问题,则只能重新设计电路图。硬件开发流程如图2.40所示。
图2.40 硬件开发流程
笔者在这里想重点总结一下关于FPGA/CPLD电路的焊接、调试经验,也许会有遗漏或不符合常规的部分,但至少这些是笔者认为,对于DIY或手工焊接调试电路而言,进行开发过程中比较有效的流程。为此,笔者专门设计了一整套的FPGA PCB焊接、调试、排错,直到最终硬件定型的开发流程(当然这不仅仅只适用于FPGA/CPLD,而是一个基本的思维),如图2.41所示(CPLD根据需要可以相应精简)。
1.PCB板卡的检查
拿到厂家打样好的PCB板卡后,一定不要急于进行焊接。虽然现在的制板工艺及飞针测试技术很成熟,电路通常不会有问题,但也不排除意外。首先应检查PCB板卡是否有问题(主要是短路)。如果小概率事件发生,板卡短路了,则应立即与厂家联系。
2.电源与主芯片的焊接主次
焊接电路一般由主到次,即从主芯片到外围电路,按照从大到小的顺序进行。如果方案是成熟的,并且经过了多次验证,则主次无所谓;反之,如果方案(尤其是电源方案)是最新的,则一般先焊接电源进行测试,在保证板载电压(5V、3.3V、1.2V、2.5V等)都正常的情况下,再进行FPGA/CPLD的焊接,以保证风险的最小化。如果焊接后发现电源有问题,则只能通过割线、跳线等方法来临时解决,最终在下一版本中进行优化。同时,焊接完FPGA/CPLD之后,也必须进行短路、虚焊等测试(仅适用于TQFP或QFN, BGA就难了,不过BGA采用机贴一般不会有问题)。
图2.41 FPGA PCB板卡开发流程
当然,在产品焊接过程中,若硬件电路均已验证通过,则一般都会遵循由大到小,由贴片到直插的顺序进行焊接。
3.FPGA/CPLD配置电路的焊接、调试
在保证基本电源的前提下,即可进行FPGA/CPLD配置电路的焊接调试。这一部分电路主要有FPGA/CPLD的晶振、复位电路,以及JTAG接口、AS模式的配置、EPCS存储芯片的电路等。该部分的各个模块的测试方法如下所示。
(1)对于晶振的输出,可以通过示波器观察波形、频率是否符合要求。最简便的方法是用万用表的电压挡进行测试。由于晶振输出的是0~3.3V的正弦波/方波(常用为正弦波),所以在晶振正常输出的前提下,一般能测试到1.65V左右的电压。切记,晶振不要焊反,否则将导致“局部”短路。
(2)JTAG的接口得通过Quartus II的Programmer测试(保证USB Blaster功能正常),如果能检测到硬件,则一般通信正常;反之,则需要检查配置电路是否正确,是否虚焊(通过万用表的二极管挡点测)等。如果出现如图2.42所示的窗口,则表示已经检测到硬件。但由于EP3C16与EP4CE15的ID相同,所以这里需用户手动选择EP4CE15。
图2.42 由USB Blaster检测到的FPGA ID
接着,Programmer检测到的EP4CE15 FPGA并且通信正常,界面显示如图2.43所示。
图2.43 Programmer检测到的EP4CE15 FPGA
反之,如果JTAG通信不正常,或者JTAG部分电路有问题,则软件会弹出警告,告诉用户扫描不到JTAG链。选择“Yes”可以进一步测试,定位JTAG通信的错误,如图2.44所示。这时,通常也需要通过硬件的测试和原理图的反查等方法来保证JTAG通信正常。
图2.44 不能扫描到硬件的警告
(3)AS模式与EPCS配置芯片需要一起测试,保证FPGA的MSEL设计正确,以及相关配置信号的上、下拉电阻焊接正确。这一部分主要针对FPGA,而CPLD没有这一部分的烦恼。由于笔者都是用一个JTAG接口来实现FPGA的测试及EPCS的配置的,所以对于EPCS的配置,在此只能进行jic文件的下载测试,以验证通信是否正常。Cyclone IV FPGA的EPCS电路比Cyclone II脆弱,因此需确保数据端有终端匹配电阻,以及布局布线在10mil以内。
EPCS电路最终的测试,需要在外围电路焊接、调试完成之后进行,否则没有EPCS加载的成功的标志,只是验证了通信的正常而已。
4.外围电路的焊接与测试
执行到此,已经基本保证FPGA/CPLD能够正常工作。这时再进行外围电路的逐个焊接、测试,以保证每一部分的电路都能运行正常。当然,这里的测试是建立在已经设计好Verilog HDL驱动的基础上的。
在外围测试中,如果发现某一部分外部设备工作不正常,则多半是由于电路设计的问题,应返回原理图、PCB进行分析和查错,周而复始,只要坚持不懈,总能解决问题。
硬件开发最重要的就是调试能力,我们无法保证设计万无一失,但至少要保证能够解决电路中出现的问题,进而实现优化、改进,设计出更完善的产品。
5.最终的项目工程设计
只有保证所有电路的焊接、调试都正常后,才能进行项目工程设计。这样做可以最大限度地保证硬件的稳定性与可靠性,以免徒劳。