Saturday, 2 July 2016

Custom programming for FPGA boards


Is it possible to write your own tool to program FPGA boards, or are they locked down to only be programming by the manufacturer's tools?


In other words, can I write my own tool to program/flash a FPGA board which I purchase from a large vendor (say Intel, or Xillix).




Answer



Most FPGA vendors do not share the information necessary to create custom software tools which can compile designs to generate configuration "bitstream" files for the FPGA, or at least not outside of an NDA with a tool vendor who is a strategic partner. There are a few unique cases where enough information has been obtained to make this possible, but for Xilinx or Altera(Intel) you are stuck compiling your design with the vendor's tools or approved 3rd party commercial ones.


However, almost all FPGA vendors do publish Application Notes giving information on how to load a bitstream created by the vendor's approved tools into the FPGA device itself at runtime. A possible exception might be for flash or anti-fuse type FPGA, but for traditional SRAM-based FPGAs, this information is necessary to be competitive in the market because there are many designs where a processor would inject the bitstream after reading it off a disk or storage device.


Modern SRAM-based FPGAs typically support a lot of configuration methods - a slave load from a processor, a master load from a unique or standard SPI flash, JTAG extensions, possible even novel things like USB.


And even vendor-supplied specialized configuration flash chips may come with enough information to create your own tools for programming them.


That said, you generally will have the easiest experience using a vendor's own programming cable/adapter, or a workalike or approved 3rd party option, especially if you want to then do things like use a compiled-in logic analyzer which needs to communicate with the development tools via this cable. However, even there you may have options, for example the tools can sometimes proxy the communication with the programmer over a network, and that may have given someone an opportunity to reverse engineer the protocol and implement their own version.


Putting an FPGA on a custom board tends to be not at all trivial. When just starting out, you'd do best to get an evaluation or experiment board for the FPGA family you are considering. Hopefully this would just take a USB cable, or come with a supported programming adapter cable. Make very sure that the board you buy will be supported by the free tier of the vendor tools!


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...