■ SCREENSHOT 3. Every possible I/O assignment for
IOBUS4 — including the default IOBUS pin assignment
— belongs to I/O Mux Group 0.
Other than locking yourself into a dimly lit office and
absorbing the Vinculum-II datasheet, the best way to
come up to speed on the operation of the Vinculum-II is
to fiddle with the VNC2 IOMux Config utility. A 64-pin
virtual Vinculum-II is captured in Screenshot 2. Note that I
have selected pin 12 which defaults to a bi-directional I/O
58 August 2010
■ SCREENSHOT 4. My first rule of embedded computing is
evident here. If we reassign the UART I/O pins and want to
use the FIFO, we must also reassign the default FIFO pins.
Nothing is free when it comes to embedded computing.
Special thanks to FTDI’s Damon Barsuglia for his support.
pin. If you’re wondering why I didn’t select pin 11, check
out the datasheet and application notes. You’ll be warned
more than once that pin 11 is the debugger interface pin
and it is not recommended to reassign this pin.
To aid in the logical assignment of peripheral I/O, the
Vinculum-II’s I/O pins are arranged into I/O Mux Groups.
Each IOBUS pin in an I/O Mux Group is four IOBUS pins
away from others in the same group. For instance,
IOBUS1 (pin 12) is part of I/O Mux Group 1. IOBUS5 is
also part of I/O Mux Group 1, as is IOBUS9 and so forth.
The debugger interface pin (IOBUS0) belongs to I/O Mux
Group 0. There are a total of four groups. That means the
64-pin Vinculum-II can select up to 11 pins from each
Pin 39 of the Vinculum-II (IOBUS20) defaults to the
UART TXD pin which is obviously an output. IOBUS20
belongs to I/O Mux Group 0. UART TXD cannot be
reassigned to any pin that is not part of I/O Mux Group 0.
So, what if we wanted to reassign the UART TXD function
to a pin in the pin 1-16 area? According to the VNC2
IOMux Config utility, pins 11 (IOBUS0) and 15 (IOBUS4)
are the only possible destinations in the pin 1-16 area. We
know that reassigning a peripheral I/O to pin 11 is a NO
NO. So, if we believe what we see in Screenshot 3, we
must consider placing the UART TXD output at pin 15.
Pin 40 (IOBUS21) is part of I/O Mux Group 1 and
defaults to UART RXD. For the purposes of PCB design, it
is most convenient to keep the UART TXD and RXD I/O
pins next to each other. This idea is carried over to the
Vinculum-II as its I/O logic is designed to keep the TXD
and RXD I/O pins adjacent no matter where they are
allowed to be assigned. We could assign UART RXD to
pin 12 (IOBUS1). However, if we follow the rules of
reassignment, pin 11 cannot be reassigned to support the
UART TXD function. Thus, our adjacent pin requirement
could not be met. According to Screenshot 4, the next
available I/O Mux Group 1 pin is pin 16 (IOBUS5);
placing the UART RXD function here keeps the UART
TXD and UART RXD pins side by side.
The VNC2 IOMux Config utility keeps us out of
trouble when it comes to reassigning peripheral I/O pins.
However, its greater strength is its ability to generate the
code behind the pin swaps. Here’s our UART swap code:
unsigned char packageType;
packageType = vos_get_package_type();
//Initialise the IOMUX parameters
if(packageType == VINCULUM_II_64_PIN)