SEm/labore/06 uart

From FSI
(Difference between revisions)
Jump to: navigation, search
(Register)
 
(7 intermediate revisions by 2 users not shown)
Line 3: Line 3:
 
= UART-Peripheriebaustein für AMBA-Bus =
 
= UART-Peripheriebaustein für AMBA-Bus =
  
== Introduction ==
+
== Einleitung ==
Dans ce laboratoire, nous allons réaliser un périphérique très commun dans tous les systèmes à processeur: un port série (Universal Asynchronous Receiver/Transmitter, [http://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter UART]).
+
  
Ce laboratoire exerce la conception d'un circuit et demande une réflexion sur l'architecture du système.
+
In diesem Labor werden wir einen Peripheriebaustein entwickeln, der in den Prozessorsystemen weit verbreitet ist: eine serielle Schnittstelle (Universal Asynchronous Receiver/Transmitter, [http://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter UART]).
  
== Conception ==
+
In dieses Labor wird die Entwicklung einer digitalen Schaltung geübt und verlangt dadurch auch eine Reflexion über die Architektur des Systems.
  
Le périphérique met à disposition du processeur deux lignes série: une en émission et une en réception.
+
== Entwicklung ==
  
La lecture des bits du mot série entrant doit se faire au plus près du milieu de ceux-ci.
+
Der Peripheriebaustein stellt dem Prozessor zwei serielle Leitung zur Verfügung: eine für den Empfang und eine für die Übertragung.
Le compteur qui détermine le moment de cette lecture doit donc être synchronisé au moins avec l'apparition du <code>start bit</code>.
+
Par contre, le compteur qui pilote l'émission d'un mot série conserve une période fixe, indépendante du circuit de réception.
+
  
=== Registres ===
+
Die empfangenen Datenbits sollten möglichst in deren Mitte gelesen werden. Der Zähler, welcher diesen Moment des Lesens bestimmt, sollte also wenigstens mit dem Auftreten des  <code>start bit</code> synchronisiert werden.
 +
Unabhängig dazu behält der Zähler, welcher die Übertragung steuert, immer die gleiche Periode.
  
Les registres accédés en écriture par le microprocesseur sont:
+
=== Register ===
: adresse 00: registre de donnée, contient la valeur qui va être transmise sur la ligne RS&nbsp;232
+
: adresse 01: registre de contrôle, pas utilisé pour le moment
+
: adresse 02: registre de période, donne la vitesse de transmission, tant en émission qu'en réception
+
  
Les registres accédés en lecture sont:
+
Auf folgende Register schreibt der Prozessor:
: adresse 00: registre des donnée, contient la valeur reçue sur la ligne RS&nbsp;232
+
: Adresse 00: Datenregister, die 8 LSBs dieses Registers werden auf der RS232-Linie übertragen
: adresse 01: registre de statut:
+
: Adresse 01: Kontrollregister, im Moment noch unbenuzt
:: bit 0: indique qu'un nouveau mot a été reçu et peut être lu par le microprocesseur
+
: Adresse 02: Bitperiode, gibt die Übertragungsgeschwindigkeit für das Senden sowie das Empfangen
:: bit 1: indique qu'un mot est en cours de transmission et que le microprocesseur ne doit pas écrive de nouvelle valeur dans le registre de donnée
+
Die Bitperiode gibt die Anzahl Clock-Perioden an, welche der Übertragung eines Bits entsprechen.
:: bit 2: indique qu'un nouveau mot est en cours de réception
+
  
=== Code VHDL ===
+
Die folgenden Register werden vom Prozessor gelesen:
 +
: Adresse 00: Datenregister, enthält in den 8 LSBs den zuletzt auf der RS232-Linie empfangenen Wert
 +
: Adresse 01: Statusregister
 +
:: Bit 0: zeigt an, dass ein neues Wort empfangen wurde und vom Prozessor gelesen werden kann
 +
:: Bit 1: zeigt an, dass ein Wort gesendet wird und dass der Prozessor keinen neuen Wert ins Datenregister schreiben soll
 +
:: Bit 2: zeigt an, dass ein neues Wort empfangen wird
 +
 
 +
=== VHDL-Code ===
  
 
{{TaskBox|content=
 
{{TaskBox|content=
Dessinez le diagramme-bloc du périphérique AHB-Lite <code>ahbUart</code>.
+
Zeichnen sie das Blockschema des AHB-Lite-Peripheriegeräts <code>ahbUart</code>.
 
}}
 
}}
  
 
{{TaskBox|content=
 
{{TaskBox|content=
En se basant sur ce diagramme-bloc, écrivez le code VHDL du périphérique <code>ahbUart</code>.
+
Basierend auf dem Blockschema, schreiben Sie den VHDL-Code für das Peripheriegerät <code>ahbUart</code>.
 
}}
 
}}
  
== Vérification ==
+
== Verifikation ==
  
 
{{TaskBox|content=
 
{{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>ahbUart</code>.
+
Simulieren Sie das System mit Hilfe der zur Verfügung gestellten Testbank und überprüfen Sie, dass der Block <code>ahbUart</code> richtig funktioniert.
 
}}
 
}}
  
Line 49: Line 50:
 
{{navNamed|left=SEm/labore/05_gpio|left_name=05 GPIO-Peripheriebaustein|up=SEm/labore|up_name=Anleitung auf Deutsch|right=SEm/labore/07_beamer|right_name=07 Kurvenzeichnungsperipheriebaustein}}
 
{{navNamed|left=SEm/labore/05_gpio|left_name=05 GPIO-Peripheriebaustein|up=SEm/labore|up_name=Anleitung auf Deutsch|right=SEm/labore/07_beamer|right_name=07 Kurvenzeichnungsperipheriebaustein}}
  
[[Category:SEm]]
+
[[Category:Bachelor]][[Category:SEm]][[Category:Deutsch]]

Latest revision as of 10:51, 27 March 2017

Contents

UART-Peripheriebaustein für AMBA-Bus

Einleitung

In diesem Labor werden wir einen Peripheriebaustein entwickeln, der in den Prozessorsystemen weit verbreitet ist: eine serielle Schnittstelle (Universal Asynchronous Receiver/Transmitter, UART).

In dieses Labor wird die Entwicklung einer digitalen Schaltung geübt und verlangt dadurch auch eine Reflexion über die Architektur des Systems.

Entwicklung

Der Peripheriebaustein stellt dem Prozessor zwei serielle Leitung zur Verfügung: eine für den Empfang und eine für die Übertragung.

Die empfangenen Datenbits sollten möglichst in deren Mitte gelesen werden. Der Zähler, welcher diesen Moment des Lesens bestimmt, sollte also wenigstens mit dem Auftreten des start bit synchronisiert werden. Unabhängig dazu behält der Zähler, welcher die Übertragung steuert, immer die gleiche Periode.

Register

Auf folgende Register schreibt der Prozessor:

Adresse 00: Datenregister, die 8 LSBs dieses Registers werden auf der RS232-Linie übertragen
Adresse 01: Kontrollregister, im Moment noch unbenuzt
Adresse 02: Bitperiode, gibt die Übertragungsgeschwindigkeit für das Senden sowie das Empfangen

Die Bitperiode gibt die Anzahl Clock-Perioden an, welche der Übertragung eines Bits entsprechen.

Die folgenden Register werden vom Prozessor gelesen:

Adresse 00: Datenregister, enthält in den 8 LSBs den zuletzt auf der RS232-Linie empfangenen Wert
Adresse 01: Statusregister
Bit 0: zeigt an, dass ein neues Wort empfangen wurde und vom Prozessor gelesen werden kann
Bit 1: zeigt an, dass ein Wort gesendet wird und dass der Prozessor keinen neuen Wert ins Datenregister schreiben soll
Bit 2: zeigt an, dass ein neues Wort empfangen wird

VHDL-Code

View-pim-tasks.png

Zeichnen sie das Blockschema des AHB-Lite-Peripheriegeräts ahbUart.


View-pim-tasks.png

Basierend auf dem Blockschema, schreiben Sie den VHDL-Code für das Peripheriegerät ahbUart.

Verifikation

View-pim-tasks.png

Simulieren Sie das System mit Hilfe der zur Verfügung gestellten Testbank und überprüfen Sie, dass der Block ahbUart richtig funktioniert.


Navigation
Arrow left.gif 05 GPIO-Peripheriebaustein Arrow up.gif Anleitung auf Deutsch 07 Kurvenzeichnungsperipheriebaustein Arrow right.gif

Personal tools
Namespaces
Variants
Actions
Navigation
Modules / Projects
Browse
Toolbox