From Ithaca Generator Wiki
Jump to navigation Jump to search

What is Papilio?

Development Environment

  • It takes at least two installs to write and target the Spartan 3E on the Papilio. There are links to all the tools you can download the download page
    • One is a Java Loader program that actually sends your "compiled" binary image to the device. Download that here.
    • The second tool is the tailored Arduino environment ... if you want to do it the easy (but more limited) way
      • This approach basically makes the Papilio emulate a microcontroller that you can target with machin code to on-board flash or RAM... fun but not our primary interest at the time of this edit
    • or Xilinx ISE to work on the bare metal - follow the instructions on the Xilinx page

Loader Installation


  • If you're on a 32-bit system this should go smoothly, but you will need a Java Runtime installed ( has instructions on what packages you need install as a pre-requisite): in a nutshell run the following two commands

        sudo apt-get install default-jdk
        sudo apt-get install libftdi-dev

  • If you're on a 64-bit system, there may be some workarounds you need to do like this one
  • Extract the compressed archive into a temporary directory.
  • Bring up a terminal, change directories to the extracted directory and run the like this:


  • After that runs, you should be able to type the following to bring up the Loader Java GUI:

        sudo papilio-loader-gui

  • With this program you can load arbitrary binary "code" (BIT files) onto the FPGA - follow the instructions on the Getting Started Guide to load the appropriate BIT file for the pre-canned demo.
    • The demo program demonstrates toggling all half the pins at a fixed rate, and monitoring the other half of the pins to stop blinking the adjacent pin. It also outputs an ASCII table serially at 9600 baud. Neat!

Use It!

  • Start using Xilinx ISE to syntesize verilog into a BIT file and load it using the Loader program. Following the example project is a good way to get your feet wet.
    • You need to make sure to comment out the lines of the UCF like they say to (not sure why they don't just provide the UCF file that way)
    • The example basically toggles a lot of the pins at frequencies that are successively halved (i.e. outputs of a binary counter)