I’m hoping you guys can give me some feedback on a project I’m working on.
So this is the worst-case: I’m trying to find/build a 128-channel high-speed (~1MHz) digital (5V 1’s and 0’s) pattern generator and I’m exploring possible solutions. The basic requirement is that I need to output 128 50/50 square-waves who’s phases can be adjusted by small amounts. For example, the worst case the phase should be adjusted by 1/128 the period (1/1MHz/128 = 7.9us). I believe this means the clock rate of the system needs to extend to 128MHz.
So I see there being two basic challenges 1) How do I get 128-channel (i.e. 128-bit) parallel output and 2) How do I get the 1MHz clock rate with adjustable phase?
This seems beyond the capabilities of the standard Arduino but I’m trying to understand if a serial-to-parallel approach with a microcontroller would work. For example, if I took the 3 hardware timers on the arduino and connected shift registers to them, then each one could control ~43 channels at a max (ideal, but not feasible) frequency of 16MHz/43 = 372kHz. If I wanted to make the phase adjustable by 128th the period, then I think this would lower the max signal frequency to 372kHz/128 = 2.9KHz. So is this the right way to think about this or am I missing something?
Also what about other hardware solutions? The Maple Leaf clocks at 72MHz and has 4 hardware timers so that would mean 128channels/4 = 32 channels/timer, 72MHz/32 = 2.25MHz frequency reduced to 2.25MHz/128 = 17.6kHz with adjustable phase. Or what about the Beaglebone that tops out at 1GHz?
When I Google “high speed digital pattern generator” I get something like this http://www.byteparadigm.com/product-gp-24100-20.html or http://www.usbee.com/dx.html These are PCI or USB style devices, as anyone had some experience with this variety?
So can you guys help point me in the right direction or provide any feedback on this? I greatly appreciate any input.