--- Quote Start ---
Just so I am clear (and on the right track), are you alluding to the use of multiple processors (as a slave) to increase my IO count and then connecting them all to a master microcontroller? I didn't think of that...
If so, what technique would you use to bring them all together? I am just looking for a general concept and I can google the info.
--- Quote End ---
Do you own a car? All of the sensors in that car are connected via CAN bus (and some other buses). You can daisy chain multiple devices off a CAN bus, so its a little nicer than Ethernet, as you do not need an Ethernet switch.
What type of signal does your rotary encoder output? I've interfaced to Heidenhain encoders before with FPGAs. But their interface is essentially a synchronous serial interface, which I am sure a microcontroller could handle.
Think of your microcontroller as a bridge device. Lets say you want every sensor to look "the same" to your control system, eg., it looks like a CAN node, or a USB device, or an Ethernet device. Once you have written the code to create a CAN bus rotary encoder node, and a GPIO node, you can write the control software to talk to "CAN nodes" in general, i.e., the high-level code becomes simple (typically command and response packets, just like you would use when two ethernet devices communicate). Splitting a big problem into lots of small problems with well defined interface makes the task much easier to solve.
If you are reading encoders because something has to be in a particular position, then a distributed architecture might help simplify your software, eg., high-level control system sends command "go to <angle>" the CAN bus rotary encoder module then turns on a motor until the encoder reading is correct. All of the CAN nodes can report data at a fixed rate, eg., every 0.5s. Your control system can capture those monitor points and store them to a database.
Note: I'm only mentioned CAN bus because we happen to use hundreds of nodes on radio telescopes and it works well (with completely brain-dead microcontroller - ARM devices are much nicer).
You can easily create a high-level control system written in Python to talk to your cheap little microcontrollers, eg., I just Googled Raspberry PI and CAN and there are several options, and BeagleBone and CAN also generates several hits. I'm sure there are similar open-source boards that already have CAN bus - I think a lot of the NXP boards probably do - oh and maybe the Atmel ... yep ...
http://www.atmel.com/products/microcontrollers/arm/sama5.aspx https://eewiki.net/display/linuxonarm/sama5d3 http://www.digikey.com/product-search/en?vendor=0&keywords=atsama5d3-xpld I could not come up with an excuse for buying one of these ATSAMA5D3-XPLD kits ... but maybe you can have fun with one :)
That being said, I love solving problems with FPGAs too! Your problem just doesn't sound like it needs custom HDL, it sounds like a microcontroller problem.
My recommended FPGA solution would probably be to use a MAX 10 device. I just purchased a couple of the BeMicro-MAX10 kits;
http://parts.arrow.com/item/detail/arrow-development-tools/bemicromax10 Your DE-nano will be fine for development if you decide an FPGA is the way to go.
Could you please provide more details on what it is you are building. That will help readers continue to offer advice.
Cheers,
Dave