by tschaboo » Fri Mar 01, 2013 8:36 am
I love Al's Ziport concept and gbulmer's ideas.
I'm exactly one of those people gbulmer has in mind: played around with microcontrollers and low speed peripherals (temperature and humidity sensors, RS485...) but I don't know enough about electronics to feel comfortable with high speed signals or other advanced stuff.
The perfect daughter card for me would look like that:
1.) There are 6 wires reserved on the opposite side of the first Ziport: SCLK, MOSI, MISO, 3xSS. Those are passed through the daughter boards without shifting.
2.) The daughter card lets me select which of the three SS I want to assign (jumper, solder-bridge, DIP switch, whatever).
3.) Right after the input and selector there is a level shifter which brings the SPI signals to 3.3V or 5V. (Would an optocoupler be slow? expensive? bad idea for another reason?)
4.) This is fed into an ATmega (can operate from 1.8V to 5V).
5.) The outputs of the ATmega go to the 0.1" headers.
There would be one "factory" preloaded firmware which transforms this card into an I/O card. I could certainly help with this firmware. Anyone else can grab a programmer (search for USBasp at eBay.com -> those are 7 USD including worldwide shipping) and do all the stuff gbulmer mentioned.
Actually the perfect board would also have
6.) 1-3 RC filters for ultra cheap and slow DAC (since the Atmels unfortunately miss those).
The ATmega probably costs the same as a single deserializer and you would have a board which could be made Arduino compatible, except for the form factor and the expensive USB port. ADCs, PWM, I2C, UART, everything there - for free!
As far as I understood the discussion, Al has two major concerns regarding gbulmer's proposal:
(a) giving up valuable high-speed "wires"
(b) added complexity when using a uC on the I/O board.
IMHO (a) is not really a problem: Having the 6 (or maybe even 8) wires there will be the default. If someone really wants to use all as Ziports you just need another configuration for the PL. Only if one specific card uses more than ~21 LVDS pairs, the card needs to violate the specification. Which doesn't matter, because then this would be the only card anyway.
Regarding (b): I think it's worth the trouble. And it would be feasible if there is only one default firmware.
I also think that an I/O card would need level shifters anyway. The advantage of my proposal is, that there are only unidirectional level shifters on the few SPI signals and everything else operates at the desired voltage. Most ATmegas can operate from 1.8V to 5.0V.
Many people use an Arduino connected to a PC for real-world connection. With this card you could have the Arduino including a dual core PC plus an Epiphany accelerator all in one (tiny) piece - smaller than an Arduino UNO!