We have extensive experience in the development of firmware for FPGA’s in the VHDL language. We normally focus on four types of developments, or combinations thereof.

-Generic Peripherals: This consists of the expansion of the uC and uP peripherals with general purpose peripherals such as UART’s, I2C, Ethernet MAC’s, USB’s, etc. These components are connected to the CPU's memory bus, or via PCIe buses on very powerful processors.
One example is the expansion of peripherals for PC architectures, for designs based on COM Express cards. So the necessary elements are added on a single component, with the possibility of expanding and/or modifying them quickly and easily in the future.

- Dedicated Peripherals: Much like the generic peripherals, we equip the uC and uP with peripherals to run, but they are designed especially for specific applications. One example is to provide a CPU with a controller for a high-speed ADC, which performs digital filtering operations, changes sampling frequencies, FFT's, etc. The CPU can configure these blocks and collect the processed data, thus freeing it from that computing workload.

- Stand-Alone Controllers: The FPGA’s become the core of the system and do not depend on a CPU. This makes it possible to perform very strict parallel checks in real time.
One example is a radio decoder, which combines filtering, correlation, preamble detectors with different approaches, statistical decoders and error checkers. When combined they result in a radio receiver which is highly-immune to interference.

- System-On-Chip: This involves creating systems with a CPU and the necessary peripherals for a specific application, but contained within a single IC. In these cases our designs are based on Microblaze or NiosII architectures, and we equip them with the necessary peripherals, whether they are commercial and/or dedicated. One of its advantages is the fact that it is highly reconfigurable, as it is possible to add or remove components and even multicores are possible.