Papilio Duo

De Wiki LOGre
Aller à : navigation, rechercher


La carte Papilio Duo est une carte FPGA pour hobbyist developpée par Gadget Factory et lancée initialement via un projet Kickstarter
Sa principale particularité est d'intégrer sur une seule carte un FPGA (Spartan 6), un coeur AVR identique à ceux utilisés sur Arduino et une mémoire SRAM 2 Mo.

Spécifications

Développement

Papilio Loader

Cet utilitaire est nécessaire pour charger les bitstreams sur la carte. Plus de details sont disponibles ici

QuickStart côté FPGA avec Computing Shield

Settings ISE pour Papilio Duo
  • Lancer ISE, New project
  • Pour les settings FPGA choisir: Spartan 6, Device: XC6SLX7, Package: TQG144, Speed: -2
  • Vérifier Top level netlist: HDL
  • Ajouter le fichier VHDL suivant:
----------------------------------------------------------------------------------
-- LED example, by Jerome Cornet
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.numeric_std.all;
use ieee.std_logic_unsigned.all;
 
library UNISIM;
use UNISIM.vcomponents.all;
 
entity LEDTop is
    Port (CLK : in  STD_LOGIC;
          ARD_RESET : out  STD_LOGIC;
          DUO_SW1 : in  STD_LOGIC;
          Arduino_47 : out  STD_LOGIC;
          Arduino_49 : out  STD_LOGIC;
          Arduino_51 : out  STD_LOGIC;
          Arduino_53 : out  STD_LOGIC);
end LEDTop;
 
architecture Behavioral of LEDTop is
 
  signal compteur : unsigned(27 downto 0);
 
begin
 
  Arduino_53 <= compteur(27);
  Arduino_51 <= compteur(26);
  Arduino_49 <= compteur(25);
  Arduino_47 <= compteur(24);
 
  ARD_RESET <= not(DUO_SW1);
 
  process (clk)
  begin
     if (rising_edge(clk)) then
	    if compteur = "1111111111111111111111111111" then
		   compteur <= "0000000000000000000000000000";
	    else
         compteur <= compteur + 1;
	    end if;
	  end if;
  end process;
 
end Behavioral;
  • Ajouter le fichier UCF (clic droit sur le fichier VHDL principal, voir section ci-dessus pour télécharger le fichier)
  • Important: cliquer sur le fichier VHDL principal, puis clic-droit sur Translate (dans Implement design), choisir Process properties, puis cocher la case Allow unmatched LOC constraint. Ce réglage permet de transformer les erreurs correspondants à la non-utilisation de toutes les pins déclarées dans le UCF dans le fichier principal.
  • Pour lancer la synthèse, double-cliquer sur Generate Programming File. Si tout se passe bien, un fichier xxx.bit est généré (ou xxx est le nom donné au fichier VHDL principal).
  • Lancer DesignLab
  • Dans Tools (outils) / Boards, choisir Papilio FPGA boards puis Papilio Duo FPGA - ZPuino.
Selection de la carte
  • Dans Tools / Serial port, choisir le "bon" serial port (vérifier qu'il correspond bien à la Papilio en essayant de la débrancher et de regarder quel port disparaît).
  • Dans Papilio, choisir Papilio Loader
Lancement du Papilio Loader
  • Dans l'appli Papilio Loader, choisir le fichier .bit, puis FPGA (programmation temporaire dans le FPGA), puis Run.
Choix du bistream
  • Les quatre LEDs du computing shield devraient s'allumer façon compteur binaire.

Création d une clock

Ce paragraphe decrit comment generer une source d horloge basique sans aucune fonctionnalite particuliere

  • Dans ISE cliquez sur l icone New source
  • Choisir IP ( Core Generator & Architecture Wizard) dans la boite de dialogue qui s'ouvre et indiquer le nom du composant a générer
Ajout d une IP creee a l aide de Core Generator
  • Filter par nom avec le mot clé Clock
  • Sélectionner Clocking Wizard dont la documentation se trouve ici
Selection de Clocking Wizard
  • Sélectionner Frequency synthesis et dans Input Clock Information remplir le champ Value de la colonne Input Freq avec la frequence du Quartz soit 32MHz puis cliquer sur Next
Fonctionnalites de la clock
  • Remplir le champ Requested de la colonne Output Freq de CLK_OUT1 avec la frequence de clock que l on souhaite obtenir puis cliquer sur Next
Reglages de la clock de sortie
  • Decocher tous les entrees/sorties optionnelles puis cliquer sur Next
Entrees/Sorties
  • Ajouter un commentaire si l on veut puis cliquer sur Next
Reglages du DCM_SP
  • Verifier les valeurs de frequence d entree et sortie, changer les noms des ports d entree/sortie si necessaire puis cliquer sur Next
Recapitulatif, nommage des ports
  • Faire un clique-droit sur le nouveau composant qui apparait dans l arborescence et cliquez sur View HDL instantiation template pour voir un exemple de code permettant l instanciation du composant nouvellement créé
Instanciation template
  • Recopier ce code dans votre design en connectant les bons signaux sur les ports du composants

Fichier UCF

Pins à usage multiple :

  • P39 : Arduino<53> et DRAGON_JTAG_GND
  • P46 : RXD et BD0_MPSSE_TCK
  • P47 : Arduino<52> et DRAGON_JTAG_TCK
  • P48 : Arduino<51> et DRAGON_JTAG_VTG
  • P50 : Arduino<50> et DRAGON_JTAG_TDO
  • P51 : Arduino<49>et DRAGON_JTAG_RESET
  • P55 : Arduino<48> et DRAGON_JTAG_TMS
  • P58 : Arduino<45> et DRAGON_JTAG_GND2
  • P59 : Arduino<44> et DRAGON_JTAG_TDI
  • P66 : Arduino<41> et DRAGON_SPI_VTG
  • P67 : Arduino<40> et DRAGON_SPI_MISO
  • P74 : Arduino<39> et DRAGON_SPI_MOSI
  • P75 : Arduino<38> et DRAGON_SPI_SCK
  • P78 : Arduino<37> et DRAGON_SPI_GND
  • P79 : Arduino<36> et DRAGON_SPI_RESET
  • P81 : Arduino<34> et ARD_JTAG_TCK
  • P83 : Arduino<32> et ARD_JTAG_TMS
  • P85 : Arduino<30> et ARD_JTAG_TDO
  • P88 : Arduino<28> et ARD_JTAG_TDI
  • P132 :Arduino<11> et ARD_SPI_MOSI
  • P133 :Arduino<12> et ARD_SPI_MISO
  • P134 :ARD_SPI_SCLK et DUO_LED
  • P141 :TXD et BD1_MPSSE_TDI