Cours:TP printempsM4209 : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
(Page créée avec « =Introduction= Comme nous utilisons la carte DE2-115, le FPGA utilisé est un '''Cyclone IVE''' de référence '''EP4CE115F29C7'''. La série d'exercice proposée ici peut... »)
 
m (Introduction)
Ligne 2 : Ligne 2 :
 
Comme nous utilisons la carte DE2-115, le FPGA utilisé est un '''Cyclone IVE''' de référence '''EP4CE115F29C7'''. La série d'exercice proposée ici peut certainement être réalisée avec d'autres cartes terasIC, comme le DE-2 et même probablement la DE-1. La seule chose qu'il vous faudra adapter sera le fichier de contraintes. Pour le reste, rien à changer !
 
Comme nous utilisons la carte DE2-115, le FPGA utilisé est un '''Cyclone IVE''' de référence '''EP4CE115F29C7'''. La série d'exercice proposée ici peut certainement être réalisée avec d'autres cartes terasIC, comme le DE-2 et même probablement la DE-1. La seule chose qu'il vous faudra adapter sera le fichier de contraintes. Pour le reste, rien à changer !
  
Le compteur de passages est évoqué dans un autre livre : [[b:TD5_VHDL_et_CAO#Le_compteur_de_passages_revu_et_corrig.C3.A9|Compteur de passages revu et corrigé]]. Il sera le fil conducteur de ce TP.
+
Le compteur de passages est évoqué dans un autre livre : [https://fr.wikibooks.org/wiki/TD5_VHDL_et_CAO#Le_compteur_de_passages_revu_et_corrig.C3.A9 Compteur de passages revu et corrigé]. Il sera le fil conducteur de ce TP.
  
 
Nous allons, dans cette série de TPs, construire d'abord complètement un compteur de passages sans processeur puis dans un processeur sans périphérique particulier. Pour terminer cette série, nous allons d'abord déporter le transcodage vers l'extérieur, puis l'ensemble compteurs BCD et transcodeurs. L'objectif de ce travail est donc de bien comprendre les rapports entre le matériel et le logiciel pour des exemples relativement simples.
 
Nous allons, dans cette série de TPs, construire d'abord complètement un compteur de passages sans processeur puis dans un processeur sans périphérique particulier. Pour terminer cette série, nous allons d'abord déporter le transcodage vers l'extérieur, puis l'ensemble compteurs BCD et transcodeurs. L'objectif de ce travail est donc de bien comprendre les rapports entre le matériel et le logiciel pour des exemples relativement simples.

Version du 9 janvier 2016 à 18:41

Introduction

Comme nous utilisons la carte DE2-115, le FPGA utilisé est un Cyclone IVE de référence EP4CE115F29C7. La série d'exercice proposée ici peut certainement être réalisée avec d'autres cartes terasIC, comme le DE-2 et même probablement la DE-1. La seule chose qu'il vous faudra adapter sera le fichier de contraintes. Pour le reste, rien à changer !

Le compteur de passages est évoqué dans un autre livre : Compteur de passages revu et corrigé. Il sera le fil conducteur de ce TP.

Nous allons, dans cette série de TPs, construire d'abord complètement un compteur de passages sans processeur puis dans un processeur sans périphérique particulier. Pour terminer cette série, nous allons d'abord déporter le transcodage vers l'extérieur, puis l'ensemble compteurs BCD et transcodeurs. L'objectif de ce travail est donc de bien comprendre les rapports entre le matériel et le logiciel pour des exemples relativement simples.

TP 1 (1h30)

Exercice 1

On vous demande simplement de réaliser un transcodeur pour afficher tout nombre sur 4 bits (entrée) sur un afficheur 7 segments.

Indication 1

Vous devez réaliser l'architecture correspondante pour l'entité VHDL suivante :

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
-- zero pour allumer les LEDs
entity transcod7segs is
    port (  
            I_in4    : in  std_logic_vector(3 downto 0);
				-- Ordre : gfedcba
            Q_7segs  : out std_logic_vector(6 downto 0)
    );
end transcod7segs;

Si le nom des entrées sorties ne vous convient pas, changez-les et assumez ces changements lors des nombreux câblages de ce transcodeurs. Tous nos schémas gardent cette convention de noms, à commencer par le fichier de contraintes que nous donnons maintenant.

Indication 2

Le fichier de contraintes sera :

To,Direction,Location,I/O Bank,VREF Group,I/O Standard,Reserved
Q_7segs[6],Output,PIN_H22,6,B6_N0,2.5 V,
Q_7segs[5],Output,PIN_J22,6,B6_N0,2.5 V,
Q_7segs[4],Output,PIN_L25,6,B6_N1,2.5 V,
Q_7segs[3],Output,PIN_L26,6,B6_N1,2.5 V,
Q_7segs[2],Output,PIN_E17,7,B7_N2,2.5 V,
Q_7segs[1],Output,PIN_F22,7,B7_N0,2.5 V,
Q_7segs[0],Output,PIN_G18,7,B7_N2,2.5 V,

I_in4[3],Input,PIN_AD27,5,B5_N2,2.5 V,
I_in4[2],Input,PIN_AC27,5,B5_N2,2.5 V,
I_in4[1],Input,PIN_AC28,5,B5_N2,2.5 V,
I_in4[0],Input,PIN_AB28,5,B5_N1,2.5 V,

L'enseignant vous expliquera comment trouver ces contraintes avec la documentation de la carte.

Exercice 2

Deux transcodeurs sept segments

Réaliser la même chose avec deux afficheurs. On aura donc maintenant 8 entrées et 14 sorties. On vous demande cette réalisation avec deux composants correspondant à l'exercice 1 (transcodeurs)

Le fichier de contraintes sera :

To,Direction,Location,I/O Bank,VREF Group,I/O Standard,Reserved
Unit7segs[6],Output,PIN_H22,6,B6_N0,2.5 V,
Unit7segs[5],Output,PIN_J22,6,B6_N0,2.5 V,
Unit7segs[4],Output,PIN_L25,6,B6_N1,2.5 V,
Unit7segs[3],Output,PIN_L26,6,B6_N1,2.5 V,
Unit7segs[2],Output,PIN_E17,7,B7_N2,2.5 V,
Unit7segs[1],Output,PIN_F22,7,B7_N0,2.5 V,
Unit7segs[0],Output,PIN_G18,7,B7_N2,2.5 V,
Diz7segs[6],Output,PIN_U24,5,B5_N0,2.5 V,
Diz7segs[5],Output,PIN_U23,5,B5_N1,2.5 V,
Diz7segs[4],Output,PIN_W25,5,B5_N1,2.5 V,
Diz7segs[3],Output,PIN_W22,5,B5_N0,2.5 V,
Diz7segs[2],Output,PIN_W21,5,B5_N1,2.5 V,
Diz7segs[1],Output,PIN_Y22,5,B5_N0,2.5 V,
Diz7segs[0],Output,PIN_M24,6,B6_N2,2.5 V,

sw[7],Input,PIN_AB26,5,B5_N1,2.5 V,
sw[6],Input,PIN_AD26,5,B5_N2,2.5 V,
sw[5],Input,PIN_AC26,5,B5_N2,2.5 V,
sw[4],Input,PIN_AB27,5,B5_N1,2.5 V,
sw[3],Input,PIN_AD27,5,B5_N2,2.5 V,
sw[2],Input,PIN_AC27,5,B5_N2,2.5 V,
sw[1],Input,PIN_AC28,5,B5_N2,2.5 V,
sw[0],Input,PIN_AB28,5,B5_N1,2.5 V,

TP 2 (1h30)

Exercice 1

En vous aidant du compteur décompteur décimal présenté ici, on vous demande de compléter le code pour faire un compteur décimal cascadable.

Exercice 2

Test des compteurs BCD cascadés

Le compteur cascadable de l'exercice 1 doit être testé. Pour cela vous devez lui envoyer une horloge lente. Vous allez donc assembler :

  • un compteur destiné à réaliser une horloge lente (division par 2**24)
  • deux compteurs décompteurs décimaux cascadés
  • deux transcodeurs

Le fichier de contraintes sera :

To,Direction,Location,I/O Bank,VREF Group,I/O Standard,Reserved
clk,Input,PIN_Y2,2,B2_N0,3.3-V LVTTL,
Init,Input,PIN_Y23,5,B5_N2,2.5 V,
Aff7segs[6],Output,PIN_H22,6,B6_N0,2.5 V,
Aff7segs[5],Output,PIN_J22,6,B6_N0,2.5 V,
Aff7segs[4],Output,PIN_L25,6,B6_N1,2.5 V,
Aff7segs[3],Output,PIN_L26,6,B6_N1,2.5 V,
Aff7segs[2],Output,PIN_E17,7,B7_N2,2.5 V,
Aff7segs[1],Output,PIN_F22,7,B7_N0,2.5 V,
Aff7segs[0],Output,PIN_G18,7,B7_N2,2.5 V,
Diz7segs[6],Output,PIN_U24,5,B5_N0,2.5 V,
Diz7segs[5],Output,PIN_U23,5,B5_N1,2.5 V,
Diz7segs[4],Output,PIN_W25,5,B5_N1,2.5 V,
Diz7segs[3],Output,PIN_W22,5,B5_N0,2.5 V,
Diz7segs[2],Output,PIN_W21,5,B5_N1,2.5 V,
Diz7segs[1],Output,PIN_Y22,5,B5_N0,2.5 V,
Diz7segs[0],Output,PIN_M24,6,B6_N2,2.5 V,
DownUp,Input,PIN_AC28,5,B5_N2,2.5 V,
en,Input,PIN_AB28,5,B5_N1,2.5 V,

Ce fichier de contraintes correspond à "en" interrupteur complètement à droite, "DownUp" juste à côté et "Init" complètement à gauche.

TP 3 (1h30)

Exercice 1

Séquenceur du compteur de passages

Réaliser le séquenceur en complétant le code correspondant trouvé ICI dans un autre livre. Vous allez ensuite assembler :

  • un compteur destiné à réaliser une horloge lente (division par 2**20) : ce sera l'horloge générale
  • un séquenceur
  • deux compteurs décompteurs décimaux cascadés
  • deux transcodeurs

Le fichier de contrainte sera :

To,Direction,Location,I/O Bank,VREF Group,I/O Standard,Reserved
clk,Input,PIN_Y2,2,B2_N0,3.3-V LVTTL,
Rst,Input,PIN_Y23,5,B5_N2,2.5 V,
Aff7segs[6],Output,PIN_H22,6,B6_N0,2.5 V,
Aff7segs[5],Output,PIN_J22,6,B6_N0,2.5 V,
Aff7segs[4],Output,PIN_L25,6,B6_N1,2.5 V,
Aff7segs[3],Output,PIN_L26,6,B6_N1,2.5 V,
Aff7segs[2],Output,PIN_E17,7,B7_N2,2.5 V,
Aff7segs[1],Output,PIN_F22,7,B7_N0,2.5 V,
Aff7segs[0],Output,PIN_G18,7,B7_N2,2.5 V,
Diz7segs[6],Output,PIN_U24,5,B5_N0,2.5 V,
Diz7segs[5],Output,PIN_U23,5,B5_N1,2.5 V,
Diz7segs[4],Output,PIN_W25,5,B5_N1,2.5 V,
Diz7segs[3],Output,PIN_W22,5,B5_N0,2.5 V,
Diz7segs[2],Output,PIN_W21,5,B5_N1,2.5 V,
Diz7segs[1],Output,PIN_Y22,5,B5_N0,2.5 V,
Diz7segs[0],Output,PIN_M24,6,B6_N2,2.5 V,
CapteurGauche,Input,PIN_AC28,5,B5_N2,2.5 V,
CapteurDroit,Input,PIN_AB28,5,B5_N1,2.5 V,

CapteurDroit est l'interrupteur complètement à droite, CapteurGauche est juste à côté tandis que Rst est complètement à gauche.

Aperçu général du compteur de passages

Voici en schéma ce que vous devez réaliser. Modèle:Remarque

Exercice 2

Changer le séquenceur pour laisser la possibilité de réaliser un demi-tour.

TP 4 (1h30)

Aperçu fonctionnel de notre SOC (Tiny861) au départ

Vous allez maintenant réaliser vos premiers programmes en C destinés à un processeur dans le FPGA. Le code source complet du processeur vous est donné. Vous allez donc réaliser un projet pour compiler ce processeur. Cette compilation peut être assez longue (près de 10 mn) mais la simple mise en RAM/ROM du programme ne prendra que 2 mn une fois cette première compilation réalisée.

Voici sous forme schématique l'ensemble du processeur.

Ressources

Andreas Hilvarsson a écrit ce cœur ATTiny861 et l'a publié chez Opencores.org. Nous avons modifier sa façon d'y créer des périphériques et en particulier retiré tous les PORTs bidirectionnels qui ne servent à rien dans un FPGA.

Modèle:Remarque