SEm/labore/06 apb

From FSI
(Difference between revisions)
Jump to: navigation, search
(Created page with "{{TOC right}} = APB Komponent = ---- '''Table des matières''' EinleitungAnalyse des APB BussesSchaltungInitializierung des Masters AHBUART[[Initi...")
 
(Übertragung mit Hilfe des Komponenten APBUART)
 
(2 intermediate revisions by one user not shown)
Line 1: Line 1:
 
{{TOC right}}
 
{{TOC right}}
 
 
    
 
    
 
= APB Komponent =
 
= APB Komponent =
  
----
 
 
'''Table des matières'''
 
 
[[Einleitung]][[Analyse des APB Busses]][[Schaltung]][[Initializierung des Masters AHBUART]][[Initializierung des Komponenten APBUART]][[Übertragung mit Hilfe des Komponenten APBUART]][[Lesen des Status auf dem Komponenten APBUART]][[Signale des APB Busses]][[Index und Adressen]][[Erstellung des APB Komponenten]][[Registerplan]][[Schaltung]][[Simulation]]
 
 
== Einleitung ==
 
== Einleitung ==
  
Dieses Dabor zeigt die Erstellung eines APB Komponentes, basierend auf die GRLib.
+
Dieses Labor zeigt die Erstellung eines APB Komponenten basierend auf der GRLib.
 
+
Dieser Komponent wird gebraucht um Taster zu lesen und LEDs zu steuern.
Das Komponent wird gebraucht, um Taster zu lesen und LEDs zu steuern.
+
  
 
== Analyse des APB Busses ==
 
== Analyse des APB Busses ==
Line 21: Line 14:
 
Die Analyse des APB-Busses basiert auf folgender Schaltung.
 
Die Analyse des APB-Busses basiert auf folgender Schaltung.
  
'''Figure 1. Schaltung zur Analyse des APB Busses'''
+
[[Image:SEm_ambaDesign.png|center|Schaltung zur Analyse des APB Busses]]
  
[[Image:ambaDesign.png]]<br>
+
Das System wird durch die serielle Schnittstelle '''ahbuart''' gesteuert, welches ein Master des AMBA Busses ist.
Das System wird durch die serielle Schnittstelle '''ahbuart''' gesteuert,
+
Damit kann auf die andere serielle Schnittstelle, '''apbuart''', zugegriffen werden.
welches ein Master des AMBA Busses ist. Damit kann die andere serielle Schnittstelle,
+
'''apbuart''', zugegriffen werden.
+
  
=== Initializierung des Masters AHBUART ===
+
=== Initialisierung des Masters AHBUART ===
  
Initializeren Sie die Schaltung, indem Sie das Character 55 h aud der RS232 Linie
+
{{TaskBox|content=
senden. Der '''ahbuart''' n&uuml;tzt es, um das Baudrate der seriellen Schnittstelle
+
Initialisieren Sie die Schaltung indem Sie den Charakter 55 h auf der RS232 Linie senden.
herauszufinden.
+
Der '''ahbuart''' nützt es, um das Baudrate der seriellen Schnittstelle herauszufinden.}}
  
 
=== Initializierung des Komponenten APBUART ===
 
=== Initializierung des Komponenten APBUART ===
  
Initializieren Sie den Steuer- und den Baudrate-Register bei Adressen 8000.0208 h und
+
{{TaskBox|content=
8000.020C h. Dies wird mit Hilfe von der Sequenz C1 80000208 80001003 00000008
+
Initialisieren Sie das Steuer- und das Baudrate-Register bei den Adressen 8000.0208 h und 8000.020C h.
dirchgef&uuml;hrt.
+
Dies wird mit Hilfe von der Sequenz <code>C1 80000208 80001003 00000008</code> durchgeführt.}}
  
In der Simulation, folgen Sie die &Auml;nderungen der Register '''r.rxen''' und
+
{{TaskBox|content=
'''r.brate''' des Komponenten '''apbuart'''.
+
In der Simulation folgen Sie den Änderungen der Register '''r.rxen''' und '''r.brate''' des Komponenten '''apbuart'''.}}
  
=== &Uuml;bertragung mit Hilfe des Komponenten APBUART ===
+
=== Übertragung mit Hilfe des Komponenten APBUART ===
  
Starten Sie das Senden eines Charakters auf der seriellen Schnittstelle, indem Sie
+
{{TaskBox|content=
dessen ASCII-Code zu Adresse 8000.0200 h Schreiben.
+
Starten Sie das Senden eines Charakters auf der seriellen Schnittstelle, indem Sie dessen ASCII-Code zur Adresse 8000.0200 h schreiben.}}
  
In der Simulation, stellen Sie die Ermittlung des Charakters auf der seriellen Linie
+
{{TaskBox|content=
fest und folgen Sie die &Auml;nderungen der Register '''r.tcnt''' und
+
In der Simulation, stellen Sie die Senden des Charakters auf der seriellen Linie fest und folgen Sie den Änderungen der Register '''r.tcnt''' und '''r.thold''' des Komponenten '''apbuart'''.}}
'''r.thold''' des Komponenten '''apbuart'''.
+
  
=== Lesen des Status auf dem Komponenten APBUART ===
+
=== Lesen des Status des dem Komponenten APBUART ===
  
Lesen Sie das Statusregister des Komponenten, indem sie ein Wort bei Adresse 8000.0204 h
+
{{TaskBox|content=
lesen. Dies wird mit Hilfe von der Sequenz 80 80000204 durchgef&uuml;hrt.
+
Lesen Sie das Statusregister des Komponenten, indem sie ein Wort bei Adresse 8000.0204 h lesen. Dies wird mit Hilfe der Sequenz <code>80 80000204</code> durchgeführt.}}
  
In der Simulation, analysieren Sie den zur&uuml;ckgelesenen Wert.
+
{{TaskBox|content=
 +
Analysieren Sie in der Simulation den zurückgelesenen Wert.}}
  
Senden Sie einige Charakter auf der Linie '''rxd1''', d.h. auf dem
+
{{TaskBox|content=
seriellen Eingang des Komponenten '''apbuart'''.
+
Senden Sie einige Charakter auf der Linie '''rxd1''', d.h. auf dem seriellen Eingang des Komponenten '''apbuart'''.}}
  
In der Simulation, folgen Sie die &Auml;nderungen der Register '''r.rcnt''' und
+
{{TaskBox|content=
'''r.rhold''' des Komponenten '''apbuart'''.
+
Folgen Sie in der Simulation den Änderungen der Register '''r.rcnt''' und '''r.rhold''' des Komponenten '''apbuart'''.}}
  
Lesen Sie erneut das Statusregister des Komponenten und erkl&auml;ren Sie den Unterschied mit
+
{{TaskBox|content=
dem erten Leseergebnis
+
Lesen Sie erneut das Statusregister des Komponenten und erklären Sie den Unterschied mit dem ersten Leseergebnis.}}
  
 
=== Signale des APB Busses ===
 
=== Signale des APB Busses ===
  
In der Simulation, folgen Sie das Datentransfer auf dem APB Bus.
+
{{TaskBox|content=
 +
Folgen Sie in der Simulation dem Datentransfer auf dem APB Bus.}}
  
Machen Sie die Liste der Signale in den Typen '''apbi''' und
+
{{TaskBox|content=
'''apbo'''.
+
Erstellen Sie die Liste der Signale in den Typen '''apbi''' und '''apbo'''.}}
  
Zeichen Sie ein Lese- und ein Schreibe-Zyklus eines APB Komponentes.
+
{{TaskBox|content=
 +
Zeichen Sie einen Lese- und einen Schreibe-Zyklus eines APB Komponentes.}}
  
 
=== Index und Adressen ===
 
=== Index und Adressen ===
  
Untersuchen Sie das VHDL-Code des Komponenten '''apbuart''' und finden Sie
+
{{TaskBox|content=
die &Uuml;bereinstimmungen von '''pconfig'''. Bestimmen Sie, wozu dieses
+
Untersuchen Sie den VHDL-Code des Komponenten '''apbuart''' und finden Sie die Übereinstimmungen von '''pconfig'''.
dient.
+
Bestimmen Sie, wozu dieses dient.}}
  
Untersuchen Sie das VHDL-Code des Komponenten '''apbuart''' und finden Sie
+
{{TaskBox|content=
die &Uuml;bereinstimmungen von '''pindex'''. Erkl&auml;ren Sie, wie das Komponent der
+
Untersuchen Sie den VHDL-Code des Komponenten '''apbuart''' und finden Sie die Übereinstimmungen von '''pindex'''.
AHB/APB Br&uuml;cke sein Index &uuml;bermittelt.
+
Erklären Sie, wie der Komponent der AHB/APB Brücke ('''apbctrl''') seinen Index übermittelt.}}
  
Das Komponent '''report_version''' erlaubt es, ein Message am Anfang der
+
Der Teil '''report_version''' erlaubt es, eine Mitteilung am Anfang der Simulation anzuzeigen.
Simulation anzuzeigen. Die Pragmas '''translate_off''' und
+
Der Code zwischen den Pragmas '''translate_off''' und '''translate_on''' wird vom Synthese-Tool ignoriert und nicht synthetisiert.
'''translate_on''' ziehen diesen Teil des Codes dem Synthese-Tool ab.
+
  
 
== Erstellung des APB Komponenten ==
 
== Erstellung des APB Komponenten ==
  
Das zu erstellende Komponent wird dazu dienen, auf der Testplatte Schalter zu lesen und
+
Der zu erstellende Komponent wird dazu dienen, auf der Testplatte Schalter zu lesen und LEDs zu steuern..
LEDs zu steuern..
+
  
 
=== Registerplan ===
 
=== Registerplan ===
  
Das Komponent hat 2 Register:
+
Der Komponent hat 2 Register:
  
 
* Das Register mit dem Zustand der Schalter bei Adresse 0x0
 
* Das Register mit dem Zustand der Schalter bei Adresse 0x0
 
* Das Register mit dem Steuerwert der LEDs bei Adresse 0x4
 
* Das Register mit dem Steuerwert der LEDs bei Adresse 0x4
  
Die LSBs von jedem Register geben den Zustand oder den Steuerwert der jeweiligen Ein-
+
Die LSBs von jedem Register geben den Zustand oder den Steuerwert der jeweiligen Ein- und Ausgänge (Schalter oder LEDs).
und Ausg&auml;ngen (Schalter oder LEDs).
+
  
 
=== Schaltung ===
 
=== Schaltung ===
  
Erstellen Sie im Block '''gr_beamer''' ein neues Komponent, welches am APB
+
Der Komponent hat folgende generischen Parameter:
Bus angeschlossen ist. Dieses Komponent hat folgende generische parameter:
+
  
* '''pindex''': sein Index auf dem APB Bus,
+
* '''pindex''': seinen Index auf dem APB Bus
* '''paddr''' und '''pmask''': die Parameter, welche bestimmen, bei welchen Adressen auf dem Bus das Komponent gelegt ist,
+
* '''paddr''' und '''pmask''': die Parameter, welche bestimmen, bei welchen Bus-Adressen sich der Komponent befindet
* '''buttonnb''': die Anzahl Schalter, welche dem Komponenten angeschlossen sind,
+
* '''buttonnb''': die Anzahl Schalter welche an den Komponenten angeschlossen sind
* '''lednb''': die Anzahl LEDs, welche dem Komponenten angeschlossen sind.
+
* '''lednb''': die Anzahl LEDs welche vom Komponenten gesteuert werden
  
Bringen Sie die Schalter-Eing&auml;nge und die LED-Ausg&auml;nge an die Ports des
+
{{TaskBox|content=
'''gr_beamer''' Blocks.
+
Erstellen Sie im Block '''gr_beamer''' einen neuen Komponenten, welcher am APB Bus angeschlossen ist.}}
  
Schreiben Sie das VHDL-Code des neuen APB Komponenten.
+
{{TaskBox|content=
 +
Bringen Sie die Schalter-Eingänge und die LED-Ausgänge an die Ports des '''gr_beamer''' Blocks.}}
  
Im Block '''beamer''', ziehen Sie die neuen Ein- und Ausg&auml;ngen des
+
{{TaskBox|content=
Komponenten '''gr_beamer''' auf den Ports dieses Blocks.
+
Schreiben Sie den VHDL-Code des neuen APB Komponenten.}}
 +
 
 +
{{TaskBox|content=
 +
Im Block '''beamer''', ziehen Sie die neuen Ein- und Ausgängen des Komponenten '''gr_beamer''' auf die Ports dieses Blocks.}}
  
 
=== Simulation ===
 
=== Simulation ===
  
F&uuml;hren Sie eine Simulation des Systems durch, um die Funktionalit&auml;t des neuen APB
+
{{TaskBox|content=
Komponenten sicherzustellen.
+
Führen Sie eine Simulation des Systems durch, um die Funktionalität des neuen APB Komponenten sicherzustellen.}}
 +
 
 +
{{navNamed|left=SEm/labore/05_amba|left_name=05 AMBA-Bus basiertes System|up=SEm/labore|up_name=Anleitung auf Deutsch|right=SEm/labore/07_oszillo|right_name=07 Oszillo Peripheriebaustein}}
 +
 
 +
[[Category:SEm]]

Latest revision as of 22:10, 19 June 2013

Contents

APB Komponent

Einleitung

Dieses Labor zeigt die Erstellung eines APB Komponenten basierend auf der GRLib. Dieser Komponent wird gebraucht um Taster zu lesen und LEDs zu steuern.

Analyse des APB Busses

Schaltung

Die Analyse des APB-Busses basiert auf folgender Schaltung.

Schaltung zur Analyse des APB Busses

Das System wird durch die serielle Schnittstelle ahbuart gesteuert, welches ein Master des AMBA Busses ist. Damit kann auf die andere serielle Schnittstelle, apbuart, zugegriffen werden.

Initialisierung des Masters AHBUART

View-pim-tasks.png

Initialisieren Sie die Schaltung indem Sie den Charakter 55 h auf der RS232 Linie senden. Der ahbuart nützt es, um das Baudrate der seriellen Schnittstelle herauszufinden.

Initializierung des Komponenten APBUART

View-pim-tasks.png

Initialisieren Sie das Steuer- und das Baudrate-Register bei den Adressen 8000.0208 h und 8000.020C h. Dies wird mit Hilfe von der Sequenz C1 80000208 80001003 00000008 durchgeführt.


View-pim-tasks.png

In der Simulation folgen Sie den Änderungen der Register r.rxen und r.brate des Komponenten apbuart.

Übertragung mit Hilfe des Komponenten APBUART

View-pim-tasks.png

Starten Sie das Senden eines Charakters auf der seriellen Schnittstelle, indem Sie dessen ASCII-Code zur Adresse 8000.0200 h schreiben.


View-pim-tasks.png

In der Simulation, stellen Sie die Senden des Charakters auf der seriellen Linie fest und folgen Sie den Änderungen der Register r.tcnt und r.thold des Komponenten apbuart.

Lesen des Status des dem Komponenten APBUART

View-pim-tasks.png

Lesen Sie das Statusregister des Komponenten, indem sie ein Wort bei Adresse 8000.0204 h lesen. Dies wird mit Hilfe der Sequenz 80 80000204 durchgeführt.


View-pim-tasks.png

Analysieren Sie in der Simulation den zurückgelesenen Wert.


View-pim-tasks.png

Senden Sie einige Charakter auf der Linie rxd1, d.h. auf dem seriellen Eingang des Komponenten apbuart.


View-pim-tasks.png

Folgen Sie in der Simulation den Änderungen der Register r.rcnt und r.rhold des Komponenten apbuart.


View-pim-tasks.png

Lesen Sie erneut das Statusregister des Komponenten und erklären Sie den Unterschied mit dem ersten Leseergebnis.

Signale des APB Busses

View-pim-tasks.png

Folgen Sie in der Simulation dem Datentransfer auf dem APB Bus.


View-pim-tasks.png

Erstellen Sie die Liste der Signale in den Typen apbi und apbo.


View-pim-tasks.png

Zeichen Sie einen Lese- und einen Schreibe-Zyklus eines APB Komponentes.

Index und Adressen

View-pim-tasks.png

Untersuchen Sie den VHDL-Code des Komponenten apbuart und finden Sie die Übereinstimmungen von pconfig. Bestimmen Sie, wozu dieses dient.


View-pim-tasks.png

Untersuchen Sie den VHDL-Code des Komponenten apbuart und finden Sie die Übereinstimmungen von pindex. Erklären Sie, wie der Komponent der AHB/APB Brücke (apbctrl) seinen Index übermittelt.

Der Teil report_version erlaubt es, eine Mitteilung am Anfang der Simulation anzuzeigen. Der Code zwischen den Pragmas translate_off und translate_on wird vom Synthese-Tool ignoriert und nicht synthetisiert.

Erstellung des APB Komponenten

Der zu erstellende Komponent wird dazu dienen, auf der Testplatte Schalter zu lesen und LEDs zu steuern..

Registerplan

Der Komponent hat 2 Register:

  • Das Register mit dem Zustand der Schalter bei Adresse 0x0
  • Das Register mit dem Steuerwert der LEDs bei Adresse 0x4

Die LSBs von jedem Register geben den Zustand oder den Steuerwert der jeweiligen Ein- und Ausgänge (Schalter oder LEDs).

Schaltung

Der Komponent hat folgende generischen Parameter:

  • pindex: seinen Index auf dem APB Bus
  • paddr und pmask: die Parameter, welche bestimmen, bei welchen Bus-Adressen sich der Komponent befindet
  • buttonnb: die Anzahl Schalter welche an den Komponenten angeschlossen sind
  • lednb: die Anzahl LEDs welche vom Komponenten gesteuert werden


View-pim-tasks.png

Erstellen Sie im Block gr_beamer einen neuen Komponenten, welcher am APB Bus angeschlossen ist.


View-pim-tasks.png

Bringen Sie die Schalter-Eingänge und die LED-Ausgänge an die Ports des gr_beamer Blocks.


View-pim-tasks.png

Schreiben Sie den VHDL-Code des neuen APB Komponenten.


View-pim-tasks.png

Im Block beamer, ziehen Sie die neuen Ein- und Ausgängen des Komponenten gr_beamer auf die Ports dieses Blocks.

Simulation

View-pim-tasks.png

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


Navigation
Arrow left.gif 05 AMBA-Bus basiertes System Arrow up.gif Anleitung auf Deutsch 07 Oszillo Peripheriebaustein Arrow right.gif

Personal tools
Namespaces
Variants
Actions
Navigation
Modules / Projects
Browse
Toolbox