Wow, I honestly did not expect this much of a response, thank you. I got sick (still am, apologies for any weird grammar, etc) right after the posting the thread and haven't been keeping up so I'll try to answer stuff in order.
Is this going to be one 'box' that runs all 500 LEDs, or is each string of 50 going to be off on it's own, and connected back to the main controller?
Each 50 LED string is going to go of in its own direction, only getting data centrally.
As far as control, using one FPGA to drive ten 800kbps serial streams sounds okay, using one FPGA for *each* serial stream sounds like crazy overkill--not sure which you meant.
The FPGA was intended to drive all ten chains. I like FPGAs but not that much
... Depending on what sort of content you want to drive this whole system with, generating the serial stream may be the easy part compared to generating the data that goes into that serial stream. ...
Very true. The data involved will basically be pretty light patterns, but involving some computation. I'm going to do some small scale testing to see where the bottleneck is in the computations.
You asked for feedback.... soooo.... I think your idea is needlessly complex. I just did a project somewhat similar to this. My thoughts...
I have a habit of over-engineering stuff
-Arduino is shit, ditch it. If you have the know-how to use something like the Spartan, I don't see what the Arduino is needed for? Use a Cypress PSoC4.
I've never actually used an Arduino but I've understood them to be more beginner-friendly and one of the reasons for using potentially using one is that in the end I may not be the only one having to work with it. That Cypress board looks neat though.
As for power.... why 3A regulators? If the LED's are 250mW, that's 50mA @ 5V... so 500 of them means 25A in total. 3A regulators means 9-10 regulators to power the whole lot.
One thing that I seem to have omitted from the original post is that this is intended to be worn, and large heatsinks are not an option for several reasons. Therefore the idea was to have 10 smaller regulators to spread out the heat generation.
If you aren't comfortable straying from Atmel, use the OctoWS2812 library
https://www.pjrc.com/teensy/td_libs_OctoWS2811.html#videodisplay
This guy is driving 1000 LED's with full motion video using an Atmel Teensy board.
That looks very interesting
I was led to believe that it would be unlikely to handle the communication but that library seems to have a very nice solution to that. In case it wasn't painfully obvious I've never tried to run quite this many LEDs at high speed with weird constraints.
I'm not sure why everyone is sticking to the serial interfaces. If I would want to make a system like this, I would divide the trips into 8 or 16 and use a real parallel port on a MCU to drive it. And I'm not sure why would you go with the Arduino+Spartan configuration, that is like a spaceship with a pogostick hybrid. Just use a proper 32 bit 48+ Mhz microcontorller, so even if you bitbang the interface, it is still fast without #ASM.
But you should wait for Mike to stuble here, he is the pro when it comes to LEDs.
I'm not sure I understand you regarding serial/parallel, but I like your analogy
I'm not sure why everyone is sticking to the serial interfaces.
Why make your life more complicated by parallelizing bit-banging when the "smart LEDs" can accept bit rates up to 800kbps which is more than sufficient to drive the 500 LEDs OP wants to use? Since these LEDs use 1/3, 2/3 NRZ coding to signal 0s and 1s, parallelizing across 8-16bits would require a few extra operations at three times the banging rate. It is not too hard to imagine why someone would want to use a small CPLD or FPGA to offload the bit-banging if they need the CPU for other purposes.
This was pretty much my reasoning, yes.
As stated in reply to Corporate666, I seem to have omitted the fact that this is intended to be worn. It will not be arranged in a nice matrix, but spread out unevenly and part of the computation problem lies in computing and adjusting patterns given an approximate location of each LED.
This is also part of the reason why I've avoided some possibly better suited but larger boards, as even a moderately sized board may cause problems.