Sunday, 13 March 2016

custom FPGA PCB Design tips


I am planning to design a custom FPGA PCB. the PCB will contain sensors. I need to read the output of the sensors and process them in the processor. I have completed many projects using FPGA's, but this will be my first custom design where I need to consider the hardware configuration as well. I have done research lately, but it is still hard for me to start from a point. Therefore I am asking you to help me and other individuals who wants to design their custom FPGA what are the points they need to consider at each step. Are there books/online resources which can help us in this process? I will also make a document after I have finished my project so people can make use of it.



Answer



At my company, we've previously designed some custom FPGA boards, and have recently started using commercial off-the-shelf ("COTS") FPGA boards with custom FMC daughterboards.


Prototype stage


If you're still in the early project definition stage, plan on buying at least one COTS FPGA board for prototyping. You can wire up one of your sensors to the I/O headers and do a quick proof-of-concept. That gives you an idea how the project might perform when scaled to many sensors, and estimate how many you can support with a given FPGA.



If the FPGA is too small or too slow or the tools are inadequate for the job, it's easy to swap in a different COTS FPGA at this stage. (Well not easy but at least manageable...)


If the firmware doesn't work at this stage, it's clearly because of a firmware problem, not a custom PCB design error. With custom firmware and custom PCB, it's sometimes hard to tell which side is at fault for a problem.


Custom FPGA board versus Commercial Off-The-Shelf FPGA board


Designing a custom FPGA board makes sense if the project will have a short life cycle, high volume, or requires a smaller form factor than you can achieve with COTS FPGA board and PMOD or FMC add-on boards.


If the project life cycle exceeds the product lifetime of a DDR memory chip (a couple of years), then designing a custom FMC daughterboard may be a better alternative.


Cost is a factor in this decision. Most COTS FPGA boards are somewhat general-purpose, designed for maximum flexibility. If you're making a high-volume, cost-sensitive product, then it is probably worthwhile to make a custom design; but for low-volume you are probably better off concentrating on making a daughtercard.


Regardless of which approach you choose, there are certain interfaces that require clear, master documentation: at the interface between the FPGA toplevel I/O pins and the rest of the board, and at the connector interface between boards. These are places where pin locations, internal net names, and external net names sometimes get mismatched and swapped. A table is sufficient documentation; be sure to keep this interface table versioned and under source control. Before sending PCB files to fabrication, print out a copy of this interface table, a copy of the schematic, and a copy of the FPGA pin/pad report. Drag a highlighter across the papers to check off each signal connects where it should.


For connectors, I've learned the hard way to provide a mechanical "system drawing" that shows both boards and mating connectors together on a single, dimensioned drawing. I first got burned by a VME connector system where pin "A1" on one connector did not map to pin "A1" on the other connector. I've also seen designers forget that a pair of right-angle connectors results in a mirror image connection (90 degrees + 90 degrees = 180 degrees). This was a problem when I was responsible for the motherboard and several other project managers were responsible for various daughterboards.


Custom FPGA board tips


Start with the "reference design" from the FPGA vendor, and then omit whatever parts aren't required for your application. Don't remove any bypass capacitors from the FPGA, and don't try to get away with using fewer PCB layers. Pay attention to the layer stack (often found alongside the drill drawing); fine pitch components typically use 0.5oz copper instead of the standard 1oz copper foil thickness.



BGA package is a pain to work with. Yield is never as good as with TQFP or TQFN packages, and reworking a BGA is near impossible. Even inspecting for assembly problems requires an X-Ray imager. Be sure to use a Contract Manufacturing service provider you trust.


Power supplies are always tricky when working with FPGA boards. The actual power requirements of the FPGA depend very strongly on the configuration bitstream. Xilinx provides a "power estimator" tool, but the estimate is only valid if the firmware is complete. There's a risk when making a last-minute firmware change, that the power requirements are greater than expected. Plan on leaving some supply current margin. If the initial power estimate says you need 560mA, go ahead and use a 1000mA regulator. The extra available output current does no harm, but having insufficient output current will result in aberrant system behavior.


If there are any uncommitted FPGA pins, bring out as many as possible to a header. When there is a problem, these uncommitted pins become a valuable diagnostic resource for probing signals inside the FPGA.


No comments:

Post a Comment

arduino - Can I use TI's cc2541 BLE as micro controller to perform operations/ processing instead of ATmega328P AU to save cost?

I am using arduino pro mini (which contains Atmega328p AU ) along with cc2541(HM-10) to process and transfer data over BLE to smartphone. I...