SEm/labore/05 gpio

(Difference between revisions)
Jump to: navigation, search
Line 1: Line 1:
 
{{TOC right}}
 
{{TOC right}}
 
    
 
    
= GPIO-Peripheriebaustein für AMBA-Bus =
+
= GPIO-Peripheriebaustein =
  
== AHB-Lite ==
+
== Einleitung ==
  
Der Advanced High-performance Bus (AHB) ist ein Busprotokoll der [http://www.arm.com/products/system-ip/amba-specifications.php Advanced Microcontroller Bus Architecture (AMBA)], welche von [http://arm.com ARM] veröffentlicht wird. AHB ist ein multiplexiertes Multimasterbussystem, welches auch breite Datenbusse (bis 1024 bit) zulässt. Es wird in SoC-Systemen verwendet um verschiedene Komponenten zu verbinden, z.B. ARM-Prozessoren mit Peripheriegeräten.
+
In diesem Labor werden wir einen simplen Peripheriebaustein für den [[Media:AMBA_AHB-Lite_spec.pdf|AMBA-Lite-Bus]] erstellen: eine bidirektionellen Ein-/Ausgangskanal.
  
AHB-Lite ist eine vereinfachte Untermenge von AHB welche nur einen Master zulässt ([[Media:AMBA_AHB-Lite_spec.pdf|Specification]]).
+
AHB-Lite ist eine einfache Variante der Busfamilie [http://www.arm.com/products/system-ip/amba-specifications.php Advanced Microcontroller Bus Architecture (AMBA)]. Sein spezielles Merkmal ist, dass er nur einen Master zulässt.
 +
 
 +
In einem Peripheriebaustein müssen die Werte, welche der Master (hier Mikroprozessor) in die Register schreibt, gespeichert werden.
 +
Im Gegensatz werden die Werte, welche der Master liest, direkt kombinatorisch weitergegeben, ohne sie durch Flipflops zu verzögern.
 +
 
 +
=== AMBA-Buszugriffe ===
  
 
Zugriffe erfolgen jeweils in zwei Taktzyklen, wobei der erste für die Adressierung und der zweiter zum den Datentranfser dienen.
 
Zugriffe erfolgen jeweils in zwei Taktzyklen, wobei der erste für die Adressierung und der zweiter zum den Datentranfser dienen.
Line 21: Line 26:
 
* <code>hrdata</code>}}
 
* <code>hrdata</code>}}
  
== Erstellung des AHB-Lite Komponenten ==
+
== Spezifikation ==
  
 
[[File:AhbLiteComponents_ahbGpio_symbol.PNG|thumb|AhbLiteComponents ahbGpio]]
 
[[File:AhbLiteComponents_ahbGpio_symbol.PNG|thumb|AhbLiteComponents ahbGpio]]
Line 38: Line 43:
 
=== Design ===
 
=== Design ===
  
{{TaskBox|content=Zeichnen Sie das Blockdiagram des AHB-Lite Komponenten <code>ahbGpio</code>.}}
+
{{TaskBox|content=
 +
Zeichnen Sie das Blockdiagram des AHB-Lite Komponenten <code>ahbGpio</code>.
 +
}}
  
 
=== Realisierung ===
 
=== Realisierung ===
  
{{TaskBox|content=Schreiben Sie den VHDL-Code des AHB-Lite Komponenten <code>ahbGpio</code>.}}
+
{{TaskBox|content=
 +
Schreiben Sie den VHDL-Code des AHB-Lite Komponenten <code>ahbGpio</code>.
 +
}}
  
Versuchen Sie dabei, die verschiedenen Funktionen in eigenen Prozessen zu implementieren, um die Wartungsfreundlichekeit des Codes zu erhöhen.
+
=== Verifikation ===
  
{{TaskBox|content=Führen Sie eine Simulation des Systems durch, um die korrekte Funktionalität des neuen Komponenten sicherzustellen.}}
+
{{TaskBox|content=
 +
Führen Sie eine Simulation des Systems mit Hilfer der zur verfügung gestellten Testbank durch. Verifizieren Sie die korrekte Funktionalität des neuen Komponenten.
 +
}}
  
  

Revision as of 13:56, 17 April 2015

Contents

GPIO-Peripheriebaustein

Einleitung

In diesem Labor werden wir einen simplen Peripheriebaustein für den AMBA-Lite-Bus erstellen: eine bidirektionellen Ein-/Ausgangskanal.

AHB-Lite ist eine einfache Variante der Busfamilie Advanced Microcontroller Bus Architecture (AMBA). Sein spezielles Merkmal ist, dass er nur einen Master zulässt.

In einem Peripheriebaustein müssen die Werte, welche der Master (hier Mikroprozessor) in die Register schreibt, gespeichert werden. Im Gegensatz werden die Werte, welche der Master liest, direkt kombinatorisch weitergegeben, ohne sie durch Flipflops zu verzögern.

AMBA-Buszugriffe

Zugriffe erfolgen jeweils in zwei Taktzyklen, wobei der erste für die Adressierung und der zweiter 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

AhbLiteComponents ahbGpio

Der zu erstellende Komponent wird dazu dienen, auf der Testplatte Schalter zu lesen und LEDs zu steuern. Die Anzahl Ein- und Ausgänge wird über den Generic ioNb gesetzt. Der Zugriff erfolgt über 3 Register.

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

View-pim-tasks.png

Zeichnen Sie das Blockdiagram des AHB-Lite Komponenten ahbGpio.

Realisierung

View-pim-tasks.png

Schreiben Sie den VHDL-Code des AHB-Lite Komponenten ahbGpio.

Verifikation

View-pim-tasks.png

Führen Sie eine Simulation des Systems mit Hilfer der zur verfügung gestellten Testbank durch. Verifizieren Sie die korrekte Funktionalität des neuen Komponenten.


Navigation
Arrow left.gif 04 Automatische Synthese Arrow up.gif Anleitung auf Deutsch UART-Peripheriebaustein Arrow right.gif

Personal tools
Namespaces
Variants
Actions
Navigation
Modules / Projects
Browse
Toolbox