SEm/labore/07 oszillo
Line 69: | Line 69: | ||
{{TaskBox|content= | {{TaskBox|content= | ||
− | + | Schreiben Sie die VHDL-Architektur der Blöcke, welche die Speicherblöcke im FIFO-Modus steuern.}} | |
Der Registerblock steuert die Interpolationsschaltung, welche eine Kurve auf den Bildschirm des Oszilloskop zeichnet. | Der Registerblock steuert die Interpolationsschaltung, welche eine Kurve auf den Bildschirm des Oszilloskop zeichnet. | ||
Line 75: | Line 75: | ||
=== Interpolationsschaltung === | === Interpolationsschaltung === | ||
− | Die Interpolationsschaltung ist dieselbe, die für das Zeichnen von Lissajous-Kurven auf | + | Die Interpolationsschaltung ist dieselbe, die für das Zeichnen von Lissajous-Kurven auf dem Oszilloskop gebraucht wurde, aber mit anderen Werten für manche Generics. |
− | dem Oszilloskop gebraucht wurde, aber mit anderen Werten für manche Generics. Somit sollte | + | Somit sollte sie beim ersten Versuch funktionieren. |
− | sie beim ersten Versuch funktionieren. | + | |
− | Auf dem Testboard gibt es einen Button für | + | Auf dem Testboard gibt es einen Button für das Signal '''selSinCos'''. |
− | + | Mit diesem Signal wählt man zwischen zwei verschieden Steuerungen. | |
− | + | Die erste benutzt die Steuerung vom Registerblock und zeichnet die darin gespeicherte Lissajous-Kurven. | |
− | + | Die zweite benutzt eine Defaultsteuerung die einen Kreis zeichnet. | |
− | so, | + | Dies Anhand eines lokalen Sinus- sowie Kosinusgenerators. |
− | ersten Viertels der Sinustabelle. | + | |
+ | {{TaskBox|content= | ||
+ | Ergänzen Sie den VHDL-Code von '''sinCosTable''' so, dass die Sinus- und Kosinusausgänge anhand der 8 Werte des zur Verfügung stehenden ersten Viertels der Sinustabelle gezeichnet wird.}} | ||
=== Simulation === | === Simulation === | ||
− | Simulieren Sie den APB-Peripheriebaustein und überprüfen Sie seine | + | {{TaskBox|content= |
− | Funktionalität. | + | Simulieren Sie den APB-Peripheriebaustein und überprüfen Sie seine Funktionalität.}} |
== Erstellung des AMBA-Bus Systems == | == Erstellung des AMBA-Bus Systems == | ||
− | Der Peripheriebaustein wurde | + | Der Peripheriebaustein wurde in den Block '''grBeamer''' gelegt, welcher das AMBA-Bussystem enthält. |
− | AMBA- | + | |
=== Simulation === | === Simulation === | ||
− | In der Library '''ambarchitect_test''' | + | {{TaskBox|content= |
− | Blocks '''beamer_tester'''. | + | # In der Library '''ambarchitect_test''' duplizieren Sie die Architektur des Blocks '''beamer_tester'''. |
− | + | # Editieren Sie die neue Architektur und implementieren Sie die Steuerungen, um Koordinaten in den Peripheriebaustein zu schreiben und dann dessen Funktionalität zu starten.}} | |
− | Editieren Sie die | + | |
− | Koordinaten | + | |
− | starten. | + | |
=== Test auf Platte === | === Test auf Platte === | ||
− | Für die ersten Tests, löschen Sie den LEON-Prozessor zusammen mit der Debug Support Unit | + | {{TaskBox|content= |
− | (DSU). Lassen Sie die Anschlüsse, welche diesen Bausteinen gehören. | + | Für die ersten Tests, löschen Sie den LEON-Prozessor zusammen mit der Debug Support Unit (DSU) aus dem Design. Lassen Sie dabei die Anschlüsse, welche diesen Bausteinen gehören, stehen.}} |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | * | + | {{TaskBox|content= |
− | * Laden Sie | + | # Erstellen Sie eine VHDL-Datei anhand des Blocks '''Board/FPGA_beamer'''. |
+ | # Synthetisieren Sie diese Schaltung. | ||
+ | # Laden Sie diese auf die Testplatte und überprüfen Sie die Funktionalität des Systems: | ||
+ | #* Schreiben Sie in die Kontrollregister durch den Seriellen Port und lesen Sie die geschriebene Werte zurück. | ||
+ | #* Laden Sie einen Koordinatensatze in den Speicher uns starten Sie das Zeichnen der Splines.}} | ||
− | Der | + | Der Bus '''testOut''' erlaubt es Testsignale auf die Stecker der Testplatte herauszuziehen. |
− | Testplatte | + | |
{{navNamed|left=SEm/labore/06_apb|left_name=06 APB Komponent|up=SEm/labore|up_name=Anleitung auf Deutsch|right=SEm/labore/07_oszillo|right_name=-}} | {{navNamed|left=SEm/labore/06_apb|left_name=06 APB Komponent|up=SEm/labore|up_name=Anleitung auf Deutsch|right=SEm/labore/07_oszillo|right_name=-}} | ||
[[Category:SEm]] | [[Category:SEm]] |
Latest revision as of 08:34, 21 June 2013
|
Oszillo Peripheriebaustein
Einleitung
Dieses Labor zeigt die Schaffung eines APB-Peripheriebausteins in einem AMBA-Bus System. Er wird uns ermöglichen, eine Schaltung zu erstellen, welche eine Graphik auf einem Oszilloskop im X-Y Modus zeichnet.
Konfiguration
Die Schaltung basiert auf dem im den vorderen Laboren gesehenen AMBA Bussystem. Wir werden einen Peripheriebaustein erstellen um die Spline-Zeichnungsfunktion auszuführen.
Entwurf des Peripheriebausteins
Der Peripheriebaustein ist in 2 Teile geteilt: einen Block für die Kontrollregister und einen Block für die Funktionalität.
Adressierung
Registerblock
Der Peripheriebaustein wird durch die folgende Register gesteuert:
- Adresse 00, 16 Bits: Kontrollregister
- Adresse 01, 16 Bits: gibt die Periode zwischen der Berechnung von zwei benachbarten Punkten der Spline an
- Adresse 02, 16 Bits: Register zum Schreiben eines Punktes im X-Koordinatenspeicher (FIFO)
- Adresse 03, 16 Bits: Register zum Schreiben eines Punktes im Y-Koordinatenspeicher
Das Kontrollregister enthält folgende Elemente:
- Bit 0, run: Aktivierung der Berechnungsfunktion der zu zeichnenden Punkte
- Bit 1, newPattern: signalisiert das Laden einer neuen Sequenz von Koordinaten im Speicher
- Bit 2: linesSplines: auswählen zwischen geraden Linien oder Splines zwischen 2 aufeinanderfolgenden Punkten
- Bits 15 ... 8, size: Anzahl Punkte der Graphik im Koordinaten-Speicher
Das Kontrollregister wird als Schreib-Lese-Speicher erstellt, d.h. es ist möglich die geschriebene Werte zurückzulesen. Auf die Register zu den Koordinatenspeichern kann nur im Schreibmodus zugegriffen werden.
- Im normalen Modus, wenn updatePattern = '0' und die Enable-Steuerung der Speicher en = '1' ist, wird die Adresse bei jedem newPolynom-Puls inkrementiert. Dies bis die Adresse patternSize erreicht, dann wird Sie wieder auf null gezetzt.
- Beim Laden eines neuen Koodinatensatzes, wenn updatePattern auf '1' umschaltet, werden die Speicheradressen auf null gesetzt.
- Während dem Laden einer neuen Sequenz von Koordinaten (updatePattern = '1'), wird die Adresse nach jedem Schreiben in das dazugehörende Register inkrementiert. Das Schreiben in den Speichern wird ausgeführt, wenn en = '1' und write = '1'.
Der Registerblock steuert die Interpolationsschaltung, welche eine Kurve auf den Bildschirm des Oszilloskop zeichnet.
Interpolationsschaltung
Die Interpolationsschaltung ist dieselbe, die für das Zeichnen von Lissajous-Kurven auf dem Oszilloskop gebraucht wurde, aber mit anderen Werten für manche Generics. Somit sollte sie beim ersten Versuch funktionieren.
Auf dem Testboard gibt es einen Button für das Signal selSinCos. Mit diesem Signal wählt man zwischen zwei verschieden Steuerungen. Die erste benutzt die Steuerung vom Registerblock und zeichnet die darin gespeicherte Lissajous-Kurven. Die zweite benutzt eine Defaultsteuerung die einen Kreis zeichnet. Dies Anhand eines lokalen Sinus- sowie Kosinusgenerators.
Simulation
Erstellung des AMBA-Bus Systems
Der Peripheriebaustein wurde in den Block grBeamer gelegt, welcher das AMBA-Bussystem enthält.
Simulation
Test auf Platte
Der Bus testOut erlaubt es Testsignale auf die Stecker der Testplatte herauszuziehen.
Navigation
06 APB Komponent
Anleitung auf Deutsch
-