Hi all,
The design I'm working on incorporates both an SoC and an FPGA (Artix UltraScale+). The FPGA interfaces with several high-speed ICs (primarily ADCs), which offer parallel interfaces for reading data out of the IC. They also offer serial (SPI-compatible) interfaces for configuring the device. For example, output data rate, channel gain, decimation, etc. on the ADCs.
Take the AD7606C-16 ADC for example. It offers a 16-bit parallel interface for reading 16-bits of channel conversion data at a time, which is perfectly suited to an FPGA. Analog Device provide an HDL reference design for this exact purpose. However, Analog Devices provides a C driver for ADC configuration via the serial interface. This seems to be common practise for the Analog Devices ADCs; they don't seem to provide a similar reference for configuring their devices via serial link in HDL.
With that said, I'm tossing up how best to go about interfacing with these devices. Ideally everything would be managed in HDL within the FPGA itself, but given they provide the configuration driver in C code suggests that perhaps this isn't the 'usual' approach?
So, as far as I see it, these are my options:
- Do it all in HDL, write the serial logic (using an off-the-shelf SPI IP) myself and stop whining.
- Implement a MicroBlaze softcore with SPI interfaces within the FPGA and use the provided C code drivers.
- Use the SoC to configure all the FPGA-interfacing ICs and use the provided C code drivers.
I'd prefer to use option one, and don't think it would be that difficult given that I've got a C driver to use as reference.
What have others done in this scenario?