Move pins on the fly on the Papilio FPGA board

Gadget Factory started a weekly series of tutorials for their Papilio FPGA development boards. This week they cover how to move IO pins around and change their assignments.

Possibly the most exciting feature of the Papilio is the ability to shift peripheral functionality to any pin at any time, completely on the fly. Shifting SPI pins allows you to easily connect up to 12 SPI devices at once! Or control multiple stepper motors by shifting PWM outputs! Finally, shifting functionality means you never need to worry about where to connect Wings. Every I/O pin is equal, so go ahead and connect your Wing to any open Wing Slot, the FPGA can shift to accommodate the Wing!

We like using the programmable pin function on PIC24Fs too. There’s also some other uCs with pin assignment. If we have the choice between two otherwise similar chips and one has programmable pins, we almost always go for the reprogrammable pins. It makes PCB routing much easier, and minor circuit misnakes can be fixed in software.

Join the Conversation


  1. Actually it is not that simple…..
    Just because you can ‘re-define’ a pin in the VHDL does not mean the design will continue to function correctly.
    This is what separates the two groups of people:

    1. The group that think they can write VHDL because it ‘works’
    2. The group that understand that the logic has to be assigned close to the pins and that the propagation delays need to be kept consistent using placement and routing rules, randomly re-allocating pins can completely destroy a good design.

    It may mean the difference between needing a 500mhz clocked design and being able to accomplish the same with a 100Mhz clock.

Leave a comment

Your email address will not be published. Required fields are marked *

Notify me of followup comments via e-mail. You can also subscribe without commenting.