XaiJu
marcoreps
marcoreps

patreon


OSMU: Which controller?

So I've been trying to find a combination of microcontrollers, DACs and ADCs that can operate 3 OSMU channels (= 12 DACs + 6 ADCs + a few digital pins) simultaneously, with reasonable speed (= hundreds of kHz or even a few MHz?) and are easy to opto-isolate.

There are some attractive all-in-one solutions here: http://www.analog.com/en/parametricsearch/11289 or http://www.ti.com/product/LMP92018 or https://www.maximintegrated.com/en/products/analog/data-converters/analog-to-digital-converters/MAX1329.html

But my initial plan of controlling all 3 channels with 1 SPI bus seems totally unrealistic.

1. Option: An STM32F302 on every output stage. It has fast ADCs and DACs and it could get its program from a central UI controller before running. It would need clock distribution tho and data output would have to happen sort of asynchronously.

2. Option: A central Xilinx Zynq which is an ARM Cortex-A9 for the UI and connectivity and FPGA for the high pin count, high speed control of all the discrete DACs and ADCs. It needs a lot of digital isolators and the component itself is not cheap.

Personally I like the second option better, because I've been making excuses for not learning FPGA stuff for far too long. It's also easier for firmware updates and I don't think it would scare away community software developers - they can just have their way with the SoC and never even touch the FPGA side.

Thoughts?


I also want to connect the output stages via PCI-E or some other card edge connection, so that users can replace them, or swap high-current / high voltages modules later ...

OSMU: Which controller?

Comments

I know the post is old but I think a small processor in each one of the daughter cards is the best option, this way you can simply use an isolated I2C to set the parameters without delay worries. Second benefit is that you eliminate the FPGA, the bom cost will be much lower.

Vinicius Miguel

Wonderful to have so many experts here, in case I run into problems ;) Is there anything better than Xilinx Vivado I should try?

Marco Reps

I've been using the Zynq devices at work and have learned to hate Vivado for the high speed interfaces (DDR3, Aurora, PCIE). I haven't used the ADCs or DACs to know if their IP is any easier. The ARM side is easy-ish but there's so much abstraction that it gets confusing sometimes. I agree with others that an FPGA sounds best for your design and you'll learn a lot, but I can assure you that you'll get frustrated with the tools during your design.

Dillon Nichols

I also suggest to use FPGA. I had an experience with network of MCs. Albeit it is fun to flash one MC from another during startup, I can't say it is convenient to debug such setup. If you can do all your job using one package - do it.

Volodymyr Babchuk

Vivado is free if you are targeting a device supported by the 'webpack' license. That includes most smaller consumer/prosumer grade FPGA's. Of course the smaller devices should be plenty big enough to make a soc with a basic video controller and sigma delta adc's and dac's.

TweakoZ

'pretty easily' sounds good! I've read some intriguing things about Xilinxes Vivado software, but it appears to be super expensive and even if I could get a license, it would probably not help the open source aspect much ?

Marco Reps

There are also the raw fpga's (cmod-a7, arty-a7, etc..). You can integrate a softcore into the FPGA pretty easily with open source tools using migen/misoc/litex. as a bonus, litex will even generate a gcc toolchain and runtime library for you. If you are making your own board you could just put the fpga on the board and save a few more bucks. assuming you can pull off <= 1mm pitch bga's. A link for you: <a href="https://www.bunniestudios.com/blog/?p=5018" rel="nofollow noopener" target="_blank">https://www.bunniestudios.com/blog/?p=5018</a>

TweakoZ

unfortunately no. There is for Lattice devices, but not for Xilinx/Altera afaik.

Jan-Henrik Bruhn

Is there an open source toolchain for the xilinx fpgas? Im not sure that this is even important. At least there seams to be a linux installer for the SDK on there downloadpage.

Yes good call. But remember that (at least in the Xilinx universe), everything in the FPGA is connected via the AXI Bus, so that would obviously need some translation logic. But it easily is up to the high speed data handling. You then might also have a look at AXI Streams, which are usually used for transmitting signals like video for example.

Jan-Henrik Bruhn

In case of FPGA I'd go for tens-of-MHz binary output ADCs to avoid the SPeye of the needle altogether

Marco Reps

Might make more sense. Just using the FPGA part to connect the APU of the Zynq to the (SPI?) Buses of the ADC/DAC would be kind of wasteful I guess, as you can easily fit a bunch of MicroBlaze Processors inside of the FPGA Portion of the Zynq/Spartan and still add the AXI to SPI logic to it.

Jan-Henrik Bruhn

The Zynq looks like an elegant solution. Make sure the ARM side does what you want. Is the reference linux distro going to suit your needs and drive your UI without too much pain?

Jason Wilson

FPGA. For motivating community towards FPGA.

That sounds pretty scary tbh 😳 But I have this: <a href="https://www.scarabhardware.com/minispartan6/" rel="nofollow noopener" target="_blank">https://www.scarabhardware.com/minispartan6/</a> It was abandoned by the developer but maybe I can give it a try ...

Marco Reps

I'd suggest using the FPGA. I haven't really analyzed the requirements, but maybe a Spartan-6/7 FPGA is enough? It is just an FPGA, without APUs or similar, but you might get the same functionality using MicroBlaze Softcores running on the FPGAs in addition to the high speed control logic. Might make it way less pricey.

Jan-Henrik Bruhn


More Creators