Aug 24, 2016
Last week’s post used the 12-pin “Pmod” connector on my FPGA board to generate the X, Y, and Z signals.
Pmod™ is a simple header pinout standard (PDF) defined by Digilent. There’s a (free) license for this, but only if we actually call it Pmod. So I won’t - I’ll simply refer to the two variants as 6-pin and 12-pin headers…
- the 6-pin header is:
IO1 IO2 IO3 IO4 GND +3.3V
- the 12-pin header adds a 2nd row with:
IO5..IO8 GND +3.3V
This scheme is extremely flexible, because FPGA’s can assign any function to any IO pin, and the 12-pin variant can also be used as two independent 6-pin connections.
A few more conventions are often used for the most common interfaces:
UART – IO1..4 = ¬CTS ¬TXD ¬RXD ¬RTS
SPI – IO1..4 = ¬SS MOSI MISO SCK
I2C – IO1..2 = SCL SDA
Another great convention, is that multiple headers are placed 0.3” apart, so that modules which need more than 8 I/O pins can simply have multiple headers placed next to each other for 16, 24, or even 32 bits of I/O goodness.
So here’s a custom module, with 3 D/A “converters” in the form of 1 kΩ + 0.1 µF RC filters, plus one digital I/O pass-through:
This in turn forms the input for an op-amp used as amplifier, level-shifter, and buffer:
The circuit on the above board is as follows:
There is room to include a dual-voltage DC-DC boost regulator, but for now I’m just feeding it ±10V from my lab power supply:
(PS. What a Kabelsalat / wire mess …)
Note that the third DAC output is used as a fixed reference for the two opamps, to allow shifting their output levels to a more or less symmetric swing around zero:
These connectors are really convenient!
There are commercial Pmod modules, but it’s just as easy to create custom ones using this same pinout. So much so in fact, that I’ve created a little 40-pin-to-quad-12-pin header breakout board for it:
From left to right:
- the hand-wired breakout board
- an EP4CE6 “Mini” from eBay
- an EP4CE22 DE0-Nano from Terasic
- an XC6SLX9 “Mini” from eBay
These all have 2 compatible 2x20 headers.
Here are some more ideas for plugs:
- serial I/O using an FTDI adapter
- very cheap µSD card “adapter”
- I2C or SPI: flash/SRAM/FRAM
- PS2 keyboard + VGA (8-colours)
The last two of these haven’t been wired up yet, but you get the idea…
For comments, visit the forum.