SEm/labore/07 beamer

From FSI
(Difference between revisions)
Jump to: navigation, search
(Entwicklung)
 
(5 intermediate revisions by 2 users not shown)
Line 3: Line 3:
 
= Kurvenzeichnungsperipheriebaustein für AMBA-Bus =
 
= Kurvenzeichnungsperipheriebaustein für AMBA-Bus =
  
== Introduction ==
+
== Einleitung ==
  
Dans ce laboratoire, nous allons reprendre le circuit d'interpolation et l'interfacer au bus AMBA.
+
In diesem Labor nehmen wir die Schaltung für die Interpolationsberechnung und schliessen sie an den AMBA-Bus an.
  
Le circuit utilisé présente une manière de réaliser une interface de bus générique qui peut s'adapter facilement à d'autres systèmes que le bus AMBA-Lite pris comme exemple dans cette série de laboratoires.
+
Die benutzte Schaltung zeigt eine generische Bus-Schnittstelle die sich leicht auf andere Bus-Systeme, wie z.B. hier der AMBA-Lite-Bus, anpassen lässt. Die Schaltung kann einfach an einen anderen parallelen oder sogar seriellen Bus angepasst werden.
Le circuit pourrait facilement s'adapter à un autre type de bus parallèle et même à un bus série.
+
  
== Conception ==
+
== Entwicklung ==
  
Le périphérique fournit deux sorties modulées ∑∆ permettant le dessin d'une courbe sur un oscilloscope.
+
Das Peripheriegerät erzeugt zwei ∑∆-modulierte Ausgänge mit welchen eine Kurve auf einem Oszilloskop angezeigt werden kann.
  
=== Registres ===
+
=== Register ===
  
Les registres accédés en écriture par le microprocesseur sont:
+
Auf folgende Register schreibt der Prozessor:
: adresse 00: registre de commande
+
: Adresse 00: Kontrollregister
:: bit 0: <code>run</code>, détermine si une courbe est dessinée ou bien si le système est arrêté
+
:: Bit 0: <code>run</code>, bestimmt ob die Kurve gezeichnet wird oder ob das System angehalten ist
:: bit 1: <code>updatePattern</code>, définit si on charge des nouveaux points dans les mémoires ou si on est en mode de dessin
+
:: Bit 1: <code>updatePattern</code>, bestimmt ob neue Punkte in den Speicher geschrieben werden oder ob dir Kurve gezeichnet wird
:: bit 2: <code>interpolateLinear</code>, définit si la ligne qui relie deux points successifs est une droite ou une spline
+
:: Bit 2: <code>interpolateLinear</code>, bestimmt ob die Linie zwischen zwei aufeinanderfolgenden Punkten eine Gerade oder ein Spline ist
:: bits de poids fort: <code>patternLength</code>, spécifie le nombre de points de la courbe à dessiner
+
:: Die <code>patternSize</code> höchstwertigsten Bits: Anzahl an Punkten in der zu zeichnenden Kurve
: adresse 01: registre de vitesse, donne la période entre le calcul de 2 points consécutifs du dessin
+
: Adresse 01: Geschwindigkeitsregister, Periode zwischen zwei Berechnungen der Punkte auf der Kurve
: adresse 02: registre des points de la courbe en X
+
: Adresse 02: Punkteregister der X-Achse
: adresse 03: registre des points de la courbe en Y
+
: Adresse 03: Punkteregister der Y-Achse
  
Les registres accédés en lecture sont:
+
Die folgenden Register werden vom Prozessor gelesen:
: adresse 00: registre des commande, permet de relire les valeurs écrites précédemment
+
: Adresse 00: Kontrollregister, lesen der zuvor geschriebenen Werte
: adresse 01: registre des vitesse, permet de relire la valeur écrite précédemment
+
: Adresse 01: Geschwindigkeitsregister, lesen des zuvor geschriebenen Wertes
  
=== Code VHDL ===
+
=== VHDL-Code ===
  
 
{{TaskBox|content=
 
{{TaskBox|content=
Ecrivez le code VHDL des registres de commande et de vitesse du périphérique <code>ahbBeamer</code>.
+
Schreiben Sie den VHDL-Code des Adress-decoders <code>periphAddressDecoder</code>.
 
}}
 
}}
  
=== Pilotage des mémoires de points à dessiner ===
+
{{TaskBox|content=
 +
Schreiben Sie den VHDL-Code des Kontroll- und des Geschwindigkeitsregisters des Peripheriebausteins <code>ahbBeamer</code>.
 +
}}
  
Les mémoires contenant la liste des points à dessiner font usage de blocs spécifiques de mémoire à l'intérieur du circuit programmable.
+
=== Steuerung der Punktespeicher ===
Le contrôle des mémoires comporte 2&nbsp;modes distincts:
+
 
* en mode <code>updatePattern</code>, chaque nouvel accès en écriture au registre concerné déclenche une écriture dans la mémoire et une incrémentation du compteur d'adresse
+
Die Speicherbausteine, welche die Liste der zu zeichnenden Punkte enthalten, benutzen spezielle Speicherblöcke im Innern des programmierbaren Schaltbausteins.
* en mode de dessin de courbes, chaque nouvelle demande d'un point par le signal <code>newPolynom</code> provoque l'incrémentation du compteur d'adresse
+
Zwei verschiedene Modi werden zu Kontrolle des Speichers benutzt:
 +
* im Modus <code>updatePattern</code> löst jeder Schreibzugriff auf das entsprechende Register einen Schreibzugriff auf den Speicher sowie eine Inkrementation des Adressenzählers aus
 +
* im Zeichnungsmodus wird löst jeder neue Anfrage nach einem Punkt durch das Signal <code>newPolynom</code> eine Inkrementation des Adressenzählers aus
 +
 
 +
Bei jedem Übergang auf '1' des Signals <code>updatePattern</code> wird der Adresszähler auf null zurückgesetzt.
 +
 
 +
Im Zeichnungsmodus wir der Adresszähler zusätzlich auf null zurückgesetzt, wenn er den Wert <code>patternLength-1</code> erreicht.
 +
 
 +
=== VHDL-Code ===
 +
 
 +
{{TaskBox|content=
 +
Schreiben Sie den VHDL-Code des Kontroll- und des Geschwindigkeitsregister des Peripheriebausteins <code>ahbBeamer</code>.
 +
}}
 +
 
 +
=== Zeichengeschwindigkeit ===
 +
 
 +
Der Geschwindigkeitsregister erlaubt es, die Arbeitsgeschwindigkeit zu verringern.
 +
 
 +
=== VHDL-Code ===
 +
 
 +
{{TaskBox|content=
 +
Schreiben Sie den VHDL-Code Zählers, welcher die <code>interpolateEn</code> Pulse im <code>periphSpeedController</code> Block erstellt.
 +
}}
  
Au moment du passage à&nbsp;'1' du signal <code>updatePattern</code>, le compteur d'adresse est remis à zéro.
+
=== Test der Interpolationsschaltung ===
  
En mode de dessin de courbes, le compteur d'adresse est remis à zéro lorsque le compteur atteint la valeur <code>patternLength-1</code>.
+
Der <code>selSinCos</code> Taster erlaubt es, unabhängig von allen Registerwerte einen Kreis im X-Y Moduy zu zeichnen.
Ceci n'est pas le cas en mode <code>updatePattern</code>.
+
  
=== Code VHDL ===
+
=== VHDL-Code ===
  
 
{{TaskBox|content=
 
{{TaskBox|content=
Ecrivez le code VHDL des des blocs de contrôle des mémoires des points des courbes en X et en Y du périphérique <code>ahbBeamer</code>.
+
Schreiben Sie den VHDL-Code der Sinus- und Cosinus-Tabelle im Block <code>sinCosTable</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>ahbBeamer</code>.
+
Simulieren Sie das System mit Hilfe der zur Verfügung gestellten Testbank und überprüfen Sie, dass der Block <code>ahbBeamer</code> richtig funktioniert..
 
}}
 
}}
  
Line 63: Line 85:
 
{{navNamed|left=SEm/labore/06_uart|left_name=06 UART-Peripheriebaustein|up=SEm/labore|up_name=Anleitung auf Deutsch|right=SEm/labore/08_soc|right_name=08 Realisierung eines AMBA-SoCs}}
 
{{navNamed|left=SEm/labore/06_uart|left_name=06 UART-Peripheriebaustein|up=SEm/labore|up_name=Anleitung auf Deutsch|right=SEm/labore/08_soc|right_name=08 Realisierung eines AMBA-SoCs}}
  
[[Category:SEm]]
+
[[Category:Bachelor]][[Category:SEm]][[Category:Deutsch]]

Latest revision as of 16:36, 16 April 2018

Contents

Kurvenzeichnungsperipheriebaustein für AMBA-Bus

Einleitung

In diesem Labor nehmen wir die Schaltung für die Interpolationsberechnung und schliessen sie an den AMBA-Bus an.

Die benutzte Schaltung zeigt eine generische Bus-Schnittstelle die sich leicht auf andere Bus-Systeme, wie z.B. hier der AMBA-Lite-Bus, anpassen lässt. Die Schaltung kann einfach an einen anderen parallelen oder sogar seriellen Bus angepasst werden.

Entwicklung

Das Peripheriegerät erzeugt zwei ∑∆-modulierte Ausgänge mit welchen eine Kurve auf einem Oszilloskop angezeigt werden kann.

Register

Auf folgende Register schreibt der Prozessor:

Adresse 00: Kontrollregister
Bit 0: run, bestimmt ob die Kurve gezeichnet wird oder ob das System angehalten ist
Bit 1: updatePattern, bestimmt ob neue Punkte in den Speicher geschrieben werden oder ob dir Kurve gezeichnet wird
Bit 2: interpolateLinear, bestimmt ob die Linie zwischen zwei aufeinanderfolgenden Punkten eine Gerade oder ein Spline ist
Die patternSize höchstwertigsten Bits: Anzahl an Punkten in der zu zeichnenden Kurve
Adresse 01: Geschwindigkeitsregister, Periode zwischen zwei Berechnungen der Punkte auf der Kurve
Adresse 02: Punkteregister der X-Achse
Adresse 03: Punkteregister der Y-Achse

Die folgenden Register werden vom Prozessor gelesen:

Adresse 00: Kontrollregister, lesen der zuvor geschriebenen Werte
Adresse 01: Geschwindigkeitsregister, lesen des zuvor geschriebenen Wertes

VHDL-Code

View-pim-tasks.png

Schreiben Sie den VHDL-Code des Adress-decoders periphAddressDecoder.


View-pim-tasks.png

Schreiben Sie den VHDL-Code des Kontroll- und des Geschwindigkeitsregisters des Peripheriebausteins ahbBeamer.

Steuerung der Punktespeicher

Die Speicherbausteine, welche die Liste der zu zeichnenden Punkte enthalten, benutzen spezielle Speicherblöcke im Innern des programmierbaren Schaltbausteins. Zwei verschiedene Modi werden zu Kontrolle des Speichers benutzt:

  • im Modus updatePattern löst jeder Schreibzugriff auf das entsprechende Register einen Schreibzugriff auf den Speicher sowie eine Inkrementation des Adressenzählers aus
  • im Zeichnungsmodus wird löst jeder neue Anfrage nach einem Punkt durch das Signal newPolynom eine Inkrementation des Adressenzählers aus

Bei jedem Übergang auf '1' des Signals updatePattern wird der Adresszähler auf null zurückgesetzt.

Im Zeichnungsmodus wir der Adresszähler zusätzlich auf null zurückgesetzt, wenn er den Wert patternLength-1 erreicht.

VHDL-Code

View-pim-tasks.png

Schreiben Sie den VHDL-Code des Kontroll- und des Geschwindigkeitsregister des Peripheriebausteins ahbBeamer.

Zeichengeschwindigkeit

Der Geschwindigkeitsregister erlaubt es, die Arbeitsgeschwindigkeit zu verringern.

VHDL-Code

View-pim-tasks.png

Schreiben Sie den VHDL-Code Zählers, welcher die interpolateEn Pulse im periphSpeedController Block erstellt.

Test der Interpolationsschaltung

Der selSinCos Taster erlaubt es, unabhängig von allen Registerwerte einen Kreis im X-Y Moduy zu zeichnen.

VHDL-Code

View-pim-tasks.png

Schreiben Sie den VHDL-Code der Sinus- und Cosinus-Tabelle im Block sinCosTable.

Verifikation

View-pim-tasks.png

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


Navigation
Arrow left.gif 06 UART-Peripheriebaustein Arrow up.gif Anleitung auf Deutsch 08 Realisierung eines AMBA-SoCs Arrow right.gif

Personal tools
Namespaces
Variants
Actions
Navigation
Modules / Projects
Browse
Toolbox