Papilio



Les cartes FPGA Papilio sont des cartes FPGA d'entrée de gamme permettant la synthèse de soft processors basiques (Z80, AVR8, 6510 (Commodore 64), ZPU, ...). Les cartes filles appélées Wings (PS/2, VGA, audio, Manettes, SDCard, ...) peuvent être ajoutées par empillement.

http://papilio.cc/index.php?n=Papilio.Buy

Papilio 250K & 500K
La Papilio 250K est programmable en AVR8 328 (Arduino Uno) ou en ZUPiuno.
 * http://papilio.cc/index.php?n=Papilio.ArduinoCore
 * http://gadgetforge.gadgetfactory.net/gf/project/avr_core/frs/

La Papilio 500K permet de réaliser les bornes d'Arcade

Ses caracteristiques: more details
 * Xilinx Spartan 3E XC3S500E FPGA with 500 thousand gates.
 * 48 bidirectional I/O lines.
 * Two channel USB connection for JTAG and serial communications implemented with FT2232D.
 * 32MHz oscillator that can be used by Xilinx's DCM to generate any required clock speed.

Attention, peut-être pas d'ADC ???

Wings
Plusieurs Wings sont disponibles

Papilio Arcade MegaWing
La Papilio Arcade MegaWing est une carte fille (appelé Wing) vers les mythiques consoles d'arcade (Z80, ...) pour rejouer à quelques jeux mythiques PacMan, Frogger, Asteroid, Space Invaders, Galaxian, ... avec des joysticks vintage.
 * http://papilio.cc/index.php?n=Papilio.ArcadeMegaWing
 * http://fpgaarcade.com/games.htm

Butterfly Platform MicroSD Wing (BPW5002)
add GB of NAND Flash to the Papilio
 * http://papilio.cc/index.php?n=Papilio.MicroSDWing
 * http://store.gadgetfactory.net/index.php?main_page=product_info&cPath=4&products_id=11

Quelques notions pour comprendre

 * VHDL (.vhd) : TBD
 * Verilog : TBD
 * Projet Xilink : TBD
 * BitStream (.bit) : TBD

Installation

 * Branchez la carte sur un port USB. 2 ports série USB sont installés : un pour le JTAG (et le chargement du soft processor), l'autre pour les communications du soft processor synthètisé)
 * Téléchargez et Installez le Papilio Loader

Chargement du QuickStart
Téléchargez la synthèse (.bit) du Quickstart "C:\Program Files (x86)\Papilio Programmer\Papilio_Programmer.bat" "C:\Program Files (x86)\Papilio Programmer\Quickstart-Papilio_One_500K-v1.5.bit" Programming the FPGA - Default Using devlist.txt JTAG chainpos: 0 Device IDCODE = 0x41c22093    Desc: XC3S500E

Uploading "C:\Program Files (x86)\Papilio Programmer\Quickstart-Papilio_One_500K-v1.5.bit". Done. Programming time 483.0 ms USB transactions: Write 142 read 2 retries 0

Comme indiqué dans le tutoriel, affichez la trace du port série avec Putty.

Chargement d'un jeu d'arcade
Téléchargez le bitstream (.bit) du jeu Ping Pong sur le hardware de la borne d'arcade PacMan

"C:\Program Files (x86)\Papilio Programmer\Papilio_Programmer.bat" C:\devtools\papilio\Papilio_PacMan-P1-500K-1.0-source\pacman_rel004_sp3e\ping_pong_game_on_pacman_hardware_P1_500k_1.0.bit

Using devlist.txt JTAG chainpos: 0 Device IDCODE = 0x41c22093    Desc: XC3S500E

Uploading "C:\devtools\papilio\Papilio_PacMan-P1-500K-1.0-source\pacman_rel004_sp3e\ping_pong_game_on_pacman_hardware_P1_500k_1.0.bit". Done. Programming time 477.0 ms USB transactions: Write 142 read 2 retries 0

Chargement de l'AVR8 Soft Processor (Arduino)

 * Téléchargez et installez le Papilio Arduino IDE http://papilio.cc/index.php?n=Papilio.Download
 * Lancez le avec un schetch d'exemple (Communication>ASCIITable)
 * Sélectionnez le port (le premier des 2 ports de la carte) et la carte cible "Gadget Factory Papilio One XXX" que vous avez branché
 * Compilez - chargez (bouton "Upload")
 * Ouvrez immédiatement le Serial Monitor : la sortie série du schetch est affichée

Attention: dans la version testées, plusieurs schetches d'exemple ne compilaient pas par manque des librairies (analogRead par exemple).

Trace de la console Binary sketch size: 2058 bytes (of a 16384 byte maximum)

Converting Intel hex file to Verilog Mem format:

Selecting Papilio One 500K Bit file.

Merging Verilog Mem file with Xilinx bitstream:

Writing Bit file to the Hardware JTAG chainpos: 0 Device IDCODE = 0x41c22093	Desc: XC3S500E

Uploading "out.bit". Done. Programming time 479.0 ms USB transactions: Write 142 read 2 retries 0 Using devlist.txt

Chargement du ZUPiuno
Téléchargez le bitstream du ZUPiuno HDL Core (.bit) du ZUPiuno http://www.alvie.com/zpuino/download.html

Premièrement, chargez le bitstream du ZUPiuno sur la carte avec le Papilio Loader "C:\Program Files (x86)\Papilio Programmer\Papilio_Programmer.bat" C:\devtools\papilio\zpuino-ZB2-PapilioOne-S3E500.bit Programming the FPGA - Default Using devlist.txt JTAG chainpos: 0 Device IDCODE = 0x41c22093    Desc: XC3S500E

Uploading "C:\devtools\papilio\zpuino-ZB2-PapilioOne-S3E500.bit". Done. Programming time 475.0 ms USB transactions: Write 142 read 2 retries 0

Deuxiemement, Au moyen de l'IDE Arduino modifié fourni par http://www.alvie.com/zpuino/download.html, compilez et chargez des schetchs (ASCIITable par exemple) sur la carte via le premier port série USB.

Chargement d'un programme Basic sur l'AVR8 Soft Processor
http://papilio.cc/index.php?n=Papilio.RunBASCOMBasicCode

Synthèse d'un Soft Processor AVR 8 Custom à partir des sources
Voir http://papilio.cc/index.php?n=Papilio.CustomAVR8SoftProcessor

Téléchargez les sources de la synthèse de l'AVR Core https://github.com/GadgetFactory/Arduino-Soft-Core/zipball/v1.6 et décompressez

Téléchargez et installer la suite ISE Design Suite http://www.xilinx.com/support/download/index.htm

TBC