SEm/laboratoires/05 gpio

(Difference between revisions)
Jump to: navigation, search
(Introduction)
(Périphérique GPIO)
Line 2: Line 2:
 
= Périphérique GPIO =
 
= Périphérique GPIO =
 
== Introduction ==
 
== Introduction ==
Dans ce laboratoire, nous allons réaliser un périphérique très simple pour le bus AMBA-Lite: un port d'entrée-sortie bidirectionnel.
+
Dans ce laboratoire, nous allons réaliser un périphérique très simple pour le bus [[Media:AMBA_AHB-Lite_spec.pdf|AMBA-Lite]]: un port d'entrée-sortie bidirectionnel.
  
Dans un périphérique, les données écrites par le microprocesseur dans les registres doivent être mémorisées.
+
Le bus AMBA-Lite est une variante simple de la famille [http://www.arm.com/products/system-ip/amba-specifications.php Advanced Microcontroller Bus Architecture (AMBA)].
 +
Il est caractérisé par le fait qu'il ne comporte qu'un seul maître.
 +
 
 +
Dans un périphérique, les valeurs écrites par le microprocesseur dans les registres doivent être mémorisées.
 
Par contre, les registres lus par le microprocesseur sont accèdés de manière purement combinatoire et le chemin ne doit pas être retardé par des bascules.
 
Par contre, les registres lus par le microprocesseur sont accèdés de manière purement combinatoire et le chemin ne doit pas être retardé par des bascules.
  
Le Advanced High-performance Bus (AHB) est un protocol de l'[http://www.arm.com/products/system-ip/amba-specifications.php Advanced Microcontroller Bus Architecture (AMBA)], qui est publié par [http://arm.com ARM]. AHB est un bus multimaster multiplexé, qui permet aussi des bus des données à grande largeur (jusq'a 1024 bit). Il est utilisé dans des systèmes SoC pour connecter differents composants, p.ex. un processeur ARM avec ses peripheriques.
+
== Conception ==
  
AHB-Lite est un sous-ensemble simplifié avec un seul master ([[Media:AMBA_AHB-Lite_spec.pdf|Specification]]).
+
Le périphérique met à disposition du processeur des entrées-sorties bidirectionnelles.
 +
Ces entrées-sorties peuvent par exemple servir à lire des boutons et controller des LEDs.
 +
 
 +
Le nombre d'entrées/sorties et spécifié par le paramètre générique <code>ioNb</code>.
 +
Chaque ligne peut être configurée dynamiquement en entrée ou en sortie.
 +
 
 +
=== Accès au bus AMBA ===
  
 
Les access se font par principe en deux cycles, le premier pour l'adressage et le deuxième pour le transfer des données.
 
Les access se font par principe en deux cycles, le premier pour l'adressage et le deuxième pour le transfer des données.
Line 22: Line 31:
 
* <code>hwdata</code>
 
* <code>hwdata</code>
 
* <code>hrdata</code>}}
 
* <code>hrdata</code>}}
 
== Conception ==
 
 
Le composant sert à lire des boutons et controller des LEDs. Le nombre des entrées et sorties et configuré par le generic <code>ioNb</code>. L'acces se fait par 3 registres.
 
  
 
=== Registres ===
 
=== Registres ===
Line 38: Line 43:
 
=== Code VHDL ===
 
=== Code VHDL ===
  
{{TaskBox|content=Dessinez le diagram de blocs du composant AHB-Lite <code>ahbGpio</code>.}}
+
{{TaskBox|content=
 +
Dessinez le diagramme-bloc du périphérique AHB-Lite <code>ahbGpio</code>.
 +
}}
  
{{TaskBox|content=Ecrivez le code VHDL du composant AHB-Lite <code>ahbGpio</code>.}}
+
{{TaskBox|content=
 +
En se basant sur ce diagramme-bloc, écrivez le code VHDL du périphérique <code>ahbGpio</code>.
 +
}}
  
 
== Vérification ==
 
== Vérification ==
  
{{TaskBox|content=Simulez le système pour vérifier le fonctionnement correcte du nouveau composant.}}
+
{{TaskBox|content=
 +
A l'aide du banc de test à disposition, simulez le système et vérifiez le bon fonctionnement du périphérique <code>ahbGpio</code>.
 +
}}

Revision as of 16:02, 31 March 2015

Contents

Périphérique GPIO

Introduction

Dans ce laboratoire, nous allons réaliser un périphérique très simple pour le bus AMBA-Lite: un port d'entrée-sortie bidirectionnel.

Le bus AMBA-Lite est une variante simple de la famille Advanced Microcontroller Bus Architecture (AMBA). Il est caractérisé par le fait qu'il ne comporte qu'un seul maître.

Dans un périphérique, les valeurs écrites par le microprocesseur dans les registres doivent être mémorisées. Par contre, les registres lus par le microprocesseur sont accèdés de manière purement combinatoire et le chemin ne doit pas être retardé par des bascules.

Conception

Le périphérique met à disposition du processeur des entrées-sorties bidirectionnelles. Ces entrées-sorties peuvent par exemple servir à lire des boutons et controller des LEDs.

Le nombre d'entrées/sorties et spécifié par le paramètre générique ioNb. Chaque ligne peut être configurée dynamiquement en entrée ou en sortie.

Accès au bus AMBA

Les access se font par principe en deux cycles, le premier pour l'adressage et le deuxième pour le transfer des données.


View-pim-tasks.png

Simuler la banque de test ahbGpio_tb avec la configuration abhGpio.do.


View-pim-tasks.png

Observez les signaux

  • haddr
  • htrans
  • hsel
  • hwrite
  • hwdata
  • hrdata

Registres

Registres en écriture
00, Registre des données, contient les valeurs qui sont appliquées sur les sorties
01, Registre de direction, definit la direction des entrées/sorties: '1' = sortie.
Registres en lecture
00, Registre des données, met à disposition les valeurs des entrées

Code VHDL

View-pim-tasks.png

Dessinez le diagramme-bloc du périphérique AHB-Lite ahbGpio.


View-pim-tasks.png

En se basant sur ce diagramme-bloc, écrivez le code VHDL du périphérique ahbGpio.

Vérification

View-pim-tasks.png

A l'aide du banc de test à disposition, simulez le système et vérifiez le bon fonctionnement du périphérique ahbGpio.

Personal tools
Namespaces
Variants
Actions
Navigation
Modules / Projects
Browse
Toolbox