SEm/laboratoires/05 gpio

(Difference between revisions)
Jump to: navigation, search
(Vérification)
Line 1: Line 1:
 
{{TOC right}}
 
{{TOC right}}
= Périphérique GPIO =
+
 
== Introduction ==
+
= GPIO-Peripheriebaustein =
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.
+
  
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)].
+
== Einleitung ==
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.
+
In diesem Labor werden wir einen einfachen Peripheriebaustein für den [[Media:AMBA_AHB-Lite_spec.pdf|AMBA-Lite]]-Bus realisieren: einen bidirektionellen Allzweckeingabe/-ausgabe-Kanal.
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 ==
+
AHB-Lite ist eine simple Variante in der Familie der [http://www.arm.com/products/system-ip/amba-specifications.php Advanced Microcontroller Bus Architecture (AMBA)]. Seine Spezialität ist es, dass er nur einen Master zulässt.
  
Le périphérique met à disposition du processeur des entrées-sorties bidirectionnelles.
+
=== Zugriff auf den AMBA-Bus ===
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>.
+
Zugriffe auf dem AMBA-Bus erfolgen jeweils in zwei Taktzyklen, wobei der erste für die Adressierung und der zweite zum den Datentranfser dienen.
Chaque ligne peut être configurée dynamiquement en entrée ou en sortie.
+
  
=== Accès au bus AMBA ===
+
{{TaskBox|content=Führen Sie eine Simualtion der Testbank <code>ahbGpio_tb</code> mit der Simulationskonfiguration <code>abhGpio.do</code> durch.}}
  
Les accès se font en deux cycles, le premier pour l'adressage et le deuxième pour le transfert des données.
+
{{TaskBox|content=Beobachten Sie die Signale
 
+
{{TaskBox|content=
+
Simuler le banc de test <code>ahbGpio_tb</code> avec la configuration <code>abhGpio.do</code>.
+
}}
+
 
+
{{TaskBox|content=Observez les signaux:
+
 
* <code>haddr</code>
 
* <code>haddr</code>
 
* <code>htrans</code>
 
* <code>htrans</code>
Line 34: Line 23:
 
* <code>hrdata</code>}}
 
* <code>hrdata</code>}}
  
=== Registres ===
+
== Spezifikation ==
 +
 
 +
Dieser Peripheriebaustein stellt dem Prozessor bidirektionelle Ein-/Ausgabelinien zur Verfügung. Diese Ein-/Ausgänge können zum Beispiel dazu benutzt werden, um Taster zu lesen oder LEDs zu steuern.
 +
 
 +
In diesem Peripheriebaustein müssen die Werte, welche der Mikroprocessor schreibt, gespeichert werden. Im Gegensatz dazu, werden die Werte, welche der Mikroporzessor liest, direkt kombinatorisch abgegriffen und die Linien sollen nicht durch Flipflops verspätet werden.
 +
 
 +
Die Anzahl an Ein-/Ausgängen ist durch den generischen Parameter <code>ioNb</code> definiert.
 +
Jede Linie kann dynamisch als Eingang oder Ausgang konfiguriert werden.
 +
 
 +
=== Registerplan ===
 +
 
 +
;Schreiberegister
 +
: 00, Datenregister, erhält die Werte, welche auf die Ausgänge geschrieben werden
 +
: 01, Ausgabefreigaberegister, bestimmt die Richtung der Ein-/Ausgänge: '1' = Ausgang.
 +
 
 +
;Leseregister
 +
: 00, Datenregister, stellt die Werte der Eingänge zur Verfügung
  
Les registres accédés en écriture par le microprocesseur sont:
+
== Design ==
: adresse 00: registre des données, contient les valeurs qui sont appliquées sur les sorties
+
: adresse 01: registre de direction, définit la direction des entrées/sorties: le '1' indique une ligne en sortie
+
  
Le registre accédé en lecture est:
+
[[File:AhbLiteComponents_ahbGpio_symbol.PNG|thumb|AhbLiteComponents ahbGpio]]
: adresse 00:  registre des données, met à disposition les valeurs des entrées
+
  
=== Code VHDL ===
+
{{TaskBox|content=Zeichnen Sie das Blockdiagram des AHB-Lite Komponenten <code>ahbGpio</code>.}}
  
{{TaskBox|content=
+
== Realisierung ==
Dessinez le diagramme-bloc du périphérique AHB-Lite <code>ahbGpio</code>.
+
}}
+
  
{{TaskBox|content=
+
{{TaskBox|content=Schreiben Sie den VHDL-Code basierend auf dem Blockdiagram.}}
En se basant sur ce diagramme-bloc, écrivez le code VHDL du périphérique <code>ahbGpio</code>.
+
}}
+
  
== Vérification ==
+
== Verifikation ==
  
{{TaskBox|content=
+
{{TaskBox|content=Führen Sie eine Simulation des Systems durch, um die korrekte Funktionalität des neuen Komponenten sicherzustellen.}}
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>.
+
}}
+
  
{{navNamed
+
{{navNamed|left=SEm/labore/04_synthese|left_name=04 Automatische Synthese|up=SEm/labore|up_name=Anleitung auf Deutsch|right=TBC|right_name=TBC}}
|left=SEm/laboratoires/04_synthese|left_name=04 Synthèse automatique
+
|up=SEm/laboratoires|up_name=Travaux de laboratoire
+
|right=SEm/laboratoires/06_uart|right_name=06 Périphérique UART pour bus AMBA
+
}}
+
  
 
[[Category:SEm]]
 
[[Category:SEm]]

Revision as of 08:43, 16 April 2015

Contents

GPIO-Peripheriebaustein

Einleitung

In diesem Labor werden wir einen einfachen Peripheriebaustein für den AMBA-Lite-Bus realisieren: einen bidirektionellen Allzweckeingabe/-ausgabe-Kanal.

AHB-Lite ist eine simple Variante in der Familie der Advanced Microcontroller Bus Architecture (AMBA). Seine Spezialität ist es, dass er nur einen Master zulässt.

Zugriff auf den AMBA-Bus

Zugriffe auf dem AMBA-Bus erfolgen jeweils in zwei Taktzyklen, wobei der erste für die Adressierung und der zweite zum den Datentranfser dienen.


View-pim-tasks.png

Führen Sie eine Simualtion der Testbank ahbGpio_tb mit der Simulationskonfiguration abhGpio.do durch.


View-pim-tasks.png

Beobachten Sie die Signale

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

Spezifikation

Dieser Peripheriebaustein stellt dem Prozessor bidirektionelle Ein-/Ausgabelinien zur Verfügung. Diese Ein-/Ausgänge können zum Beispiel dazu benutzt werden, um Taster zu lesen oder LEDs zu steuern.

In diesem Peripheriebaustein müssen die Werte, welche der Mikroprocessor schreibt, gespeichert werden. Im Gegensatz dazu, werden die Werte, welche der Mikroporzessor liest, direkt kombinatorisch abgegriffen und die Linien sollen nicht durch Flipflops verspätet werden.

Die Anzahl an Ein-/Ausgängen ist durch den generischen Parameter ioNb definiert. Jede Linie kann dynamisch als Eingang oder Ausgang konfiguriert werden.

Registerplan

Schreiberegister
00, Datenregister, erhält die Werte, welche auf die Ausgänge geschrieben werden
01, Ausgabefreigaberegister, bestimmt die Richtung der Ein-/Ausgänge: '1' = Ausgang.
Leseregister
00, Datenregister, stellt die Werte der Eingänge zur Verfügung

Design

AhbLiteComponents ahbGpio


View-pim-tasks.png

Zeichnen Sie das Blockdiagram des AHB-Lite Komponenten ahbGpio.

Realisierung

View-pim-tasks.png

Schreiben Sie den VHDL-Code basierend auf dem Blockdiagram.

Verifikation

View-pim-tasks.png

Führen Sie eine Simulation des Systems durch, um die korrekte Funktionalität des neuen Komponenten sicherzustellen.


Navigation
Arrow left.gif 04 Automatische Synthese Arrow up.gif Anleitung auf Deutsch TBC Arrow right.gif

Personal tools
Namespaces
Variants
Actions
Navigation
Modules / Projects
Browse
Toolbox