Understanding I/O

Sorry for the # of questions i’m about to have, but I am not very experienced in electronics and the guy I’ve been trusting to help on this has been really busy and hasn’t read most of the documentation yet. For context; I am working on what is essentially a MIDI keyboard & I want it to have the ability to have variable volume. Based on how this piano will be made, I thought the best way to do this was to take in a signal for each key and measure how long the “note on” signal is recieved in comparison to the base clock. However, based on what I can tell I only have 59 single I/O pins and enough differential I/O pins to take in 9 extra signals (68 signals in total) which is less than the 88 signals I need. So here come the questions.

  1. Can I run different I/O types on the same bank?

  2. What is this Dual Voltage I/O and how does it work? (Can’t find any documentation)

  3. What is the Voltage coming out of the LED pins? (Might use them as a way to make out MIDI output)

We have till Saturday morning to get this project done so any help would be really appreciated

  1. Depends on the IO types. Most of the pins on the Au are connected with 3.3V so they are only compatible with IO standards that use 3.3V like LVCMOS33 and TMDS_33.

  2. The dual voltage IO allows you power that bank with 1.8V instead of 3.3V. To do this, connect VBSEL (D20) to 1.8V (D21). This allows you to use 1.8V IO standards like LVDS.

  3. The LED pins are 3.3V and are like any other pin but with an LED pulling them down (330 ohm resistor + LED). They can still be used as inputs/outputs if you need assuming the LED load isn’t an issue.

See https://www.xilinx.com/support/documentation/user_guides/ug471_7Series_SelectIO.pdf for way more info on IO standards.

Thank you for your answers and I did read that pdf before asking and still had these questions. So because i’m not experienced in all of this, do you have any idea how I could read 88 different inputs?

Thanks Alchitry,
Follow up question: would I use a MAX3002 to increase my 3.3V output to 5V? My motor controller expects a 5V PWM. Thanks.

A quick additional question on the Au dual voltage I/O pins. I tried using those with the PWM module (and other type of signals) to output the signals, but I don’t observe any change on the pin. This works on the differential I/O of Bank A (although I basically use them as single ended output). Is there any parameter that I need to set in a constraint file (.acf or .xdc?)?

edit: As an example here are three signals declared as output (top module) and linked in the constraint file to:

pin pwm0 C34;
pin ttl1 A28;
pin ttl2 C40;

ttl1 works, while pwm0 and ttl2 don’t. I have the same problem with the pins D43, D42, D8, D9, D11 and D12, and all dual voltage IO pins from Bank C.


@Holoptics, You simply need to declare the 88 inputs in your top level file and then the pin locations in a constraint file (.acf is usually the easiest as you can use the bank/pin numbers)

@Jon, a lot of 5V devices will happily accept 3.3V as a 1. If you need to level shift it there are numerous ways to do so. For example, https://www.sparkfun.com/products/12009

@jdeschamps, The dual voltage pins should just work. It’s possible you have a bad board. The chip that does the dual-voltage selection has some tiny pins on it and it is possible it wasn’t soldered properly. You can contact us at support@alchitry.com to arrange a repair.