In some of our designed circuit boards used Field-programmable gate array (FPGA) chips. Using FPGA needed when not enough CPU power for certain operations, for example for parallel computing or computing on the fly, so as FPGA can be used as universal converters interfaces speed interfaces, devices with minimum delay processed signal receiving, processing data in real time, etc. In order to FPGA chip perform the desired function is specially designed "program" (you can often limited to circuit solutions), this program is loaded into the FPGA memory or external specialized ROM loader chip. Also, often the code for FPGA is stored in the onboard CPU and loaded them into the FPGA by boot protocol, this makes it possible to change the firmware for FPGA together in the firmware of the processor.
Writing code on hardware description languages: Verilog, the VHDL, simulation code (testbench), loading code into FPGA in various ways, functional test and indirect ways by using instrumentation. Experience with FPGA Xilinx Spartan series, Altera Cyclone series, Lattice Mach series and others in development environments ISE WebPACK, Quartus Software, Lattice Diamond. Working with cores, modules, DDR2 interfaces, SRAM, DMA, I2C, Camera Parallel Interface (CPI), PCI Express, etc.