SEm/labore/05 amba

(Difference between revisions)
Jump to: navigation, search
(Vorbereitung)
(Replaced content with "{{TOC right}} = AMBA-Bus basiertes System = == AHB-Lite == {{navNamed|left=SEm/labore/04_synthese|left_name=04 Automatische Synthese|up=SEm/labore|up_name=Anleitung...")
Line 3: Line 3:
 
= AMBA-Bus basiertes System =
 
= AMBA-Bus basiertes System =
  
== Einleitung ==
+
== AHB-Lite ==
  
Dieses Labor zeigt die Erstellung eines [http://www.arm.com/products/system-ip/amba/amba-open-specifications.php AMBA] Bussystem basierend auf der [http://www.gaisler.com/index.php/downloads/leongrlib GRLib].
 
  
Es wird uns erlauben, eine einfache Schaltung mit einem Prozessor, einem Speicher-Interface und einer seriellen Schnittstelle zu bilden.
 
  
== Zeichnung der Schaltung ==
+
{{navNamed|left=SEm/labore/04_synthese|left_name=04 Automatische Synthese|up=SEm/labore|up_name=Anleitung auf Deutsch|right=TBC|right_name=TBC}}
 
+
=== Vorbereitung ===
+
 
+
{{TaskBox|content=
+
Erstellen Sie im Arbeitsverzeichnis, '''U:\SEm_labs''' ein neues Verzeichnis '''Ambarchitect'''.}}
+
 
+
{{TaskBox|content=
+
# Starten Sie das Programm [http://ambadraw.hevs.ch AMBAdraw].
+
# Klicken Sie auf '''Import Template Design''' und basieren Sie auf der Schaltung in '''C:/EDA/ISYS/AMBAdraw/source/template/HDS'''.}}
+
 
+
Dies wird eine Referenzschaltung in [http://ambadraw.hevs.ch AMBAdraw] laden welche alle existierenden GRLib Blöcke enthält
+
Ihre schlussendliche Schaltung wird ein Teil dieser Gesamtschaltung sein.
+
 
+
{{WarningBox|content=
+
Alle ''Preferences'' gehen verloren, wenn man eine neue Referenzschaltung lädt.}}
+
 
+
=== Schaltung ===
+
 
+
{{TaskBox|content=
+
Im Programm [http://ambadraw.hevs.ch AMBAdraw]zeichnen Sie die folgende Schaltung.}}
+
 
+
[[Image:SEm_ambaDesign.png|center|Zu erstellende Schaltung]]
+
 
+
Das Manual '''grLib cores user manual.pdf''' beschreibt alle Blöcke des Systems.
+
Mit ihm können Sie auch bestimmen, auf welche Busse (AHB oder ABP) die Komponenten angeschlossen werden.
+
 
+
== Parametrisierung des Systems ==
+
 
+
Die Datei '''configuration.xls''' dient dazu, einige Parameter des Systems zu anzugeben.
+
 
+
=== Index ===
+
 
+
Alle Komponenten auf dem AHB-Bus haben einen eigenen Index, unabhängig vom Index des APB-Busses.
+
 
+
{{TaskBox|content=
+
# In der Datei '''configuration.xls''' füllen Sie die Tabelle '''indexes'''.
+
# Aktualisieren Sie den'''hindex'''-Parameter der AHB-Komponenten in [http://ambadraw.hevs.ch AMBAdraw].
+
# Aktualisieren Sie deb'''pindex'''-Parameter der APB-Komponenten.}}
+
 
+
=== Speicherplan ===
+
 
+
Die Systemkomponente haben alle ihre eigene Speicherposition.
+
Die GRLib parametrisiert diese mit Hilfe einer Adresse und einer Maske.
+
 
+
Für die AHB-Bus Slaves:
+
 
+
* ist die Basisadresse durch die 12 MSBs des Adresssignals gegeben
+
* ist die Länge des zugeteilten Speichers durch die Maske auf diese 12 MSBs gegeben.
+
 
+
Für die APB-Komponenten werden Basisadresse und Länge ähnlich definiert, nur aber auf den 12 weiteren Bits der Adresse.
+
 
+
{{TaskBox|content=
+
Füllen Sie in der Datei '''configuration.xls''' die Tabellen '''memory map, definition''' und aktualisieren Sie die '''haddr'''-, '''hmask'''-, '''paddr'''- und '''pmask'''-Parameter der Komponenten in [http://ambadraw.hevs.ch AMBAdraw].}
+
 
+
=== Komponentenspezifische Parameter ===
+
 
+
{{TaskBox|content=
+
Setzen Sie mit Hilfe des Manuals '''grLib cores user manual.pdf''' die andere Parameter der Komponenten in [http://ambadraw.hevs.ch AMBAdraw].}}
+
 
+
== Erstellung des VHDL Codes ==
+
 
+
[http://ambadraw.hevs.ch AMBAdraw] erstellt Ihre Schaltung indem es die nicht ausgewählten Komponenten aus der Referenzschaltung entfernt.
+
 
+
=== Erstellung des anwendungsspezifischen Systems ===
+
 
+
{{TaskBox|content=
+
# Klicken Sie auf '''Edit -> Document and Project Settings...''' und geben Sie folgenden '''Project Path''' ein: '''U:\SEm_labs\Ambarchitect'''.
+
# Klicken Sie auf '''Export as... -> HDL'''.}}
+
 
+
=== Betrachtung des Systems ===
+
 
+
[[Image:SEm_ambaCircuit.png|thumb|Erstellte Schaltung]]
+
 
+
{{TaskBox||content=
+
Starten Sie HDL Designer mit der Datei '''U:\SEm_labs\Ambarchitect\ambarchitect.hdp''', öffnen Sie den Block '''toplevel''' und betrachten Sie die erstellte Schaltung.}}
+
 
+
{{WarningBox|content=
+
Alle Änderungen in der exportierten Schaltung werden überschrieben wenn man in [http://ambadraw.hevs.ch AMBAdraw] ein  '''Export as...'''durchführt.}}
+
 
+
== Simulation des Systems ==
+
 
+
Um das System zu testen wollen wir es auf eine Testbank setzen und es durch den AHB UART steuern.
+
 
+
=== Testbench-Library ===
+
 
+
Verlassen Sie das Programm ''HDL-Designer''.
+
 
+
{{TaskBox|content=
+
Erstellen Sie das Verzeichnis '''U:\SEm_labs\Ambarchitect\ambarchitect_test'''.}}
+
 
+
{{TaskBox|content=
+
Benennen Sie die Datei '''U:\SEm_labs\Ambarchitect\ambarchitect.hdp''' um in '''U:\SEm_labs\Ambarchitect\beamer.hdp'''.}}
+
 
+
In der .hdp Datei speichert ''HDL-Designer'' den Namen und den Pfad aller Libraries Ihres Projekts. Dabei wird ein eigener Pfad für jeden Task (HDL, HDS, ModelSim, Synthese, ...) gesetzt. Die Pfade eines Tasks sind jeweils zusammen gruppiert.
+
 
+
{{TaskBox|content=
+
Editieren Sie '''U:\SEm_labs\Ambarchitect\beamer.hdp''' mit Ihrem Lieblingstexteditor:
+
# Setzen Sie zusätzliche Referenzen zur Library '''ambarchitect_test''' (Vergleichen Sie mit '''ambarchitect''').
+
# In der Gruppe '''ModelSim''' ändern Sie den Basispfad '''$HDS_PROJECT_DIR''' zu '''D:/Labs/SEm/Ambarchitect'''.}}
+
 
+
{{TaskBox|content=
+
Starten Sie ''HDL-Designer'' mit der Datei '''U:\SEm_labs\Ambarchitect\beamer.hdp'''.}}
+
 
+
=== Einkapslung der Schaltung ===
+
 
+
[[Image:SEm_ambaEncapsulated.png|thumb|Eingekapselte Schaltung]]
+
 
+
{{TaskBox|content=
+
In ''HDL-Designer'' kopieren Sie das Modul '''ambarchitect/toplevel''' unter den Namen '''ambarchitect/gr_beamer'''.}}
+
 
+
So wird [http://ambadraw.hevs.ch AMBAdraw] diese Datei nicht überschreiben, falls Sie das Projekt neu generieren.
+
wird.
+
 
+
{{TaskBox|content=
+
# Erstellen Sie einen neuen Block '''ambarchitect/beamer'''.
+
# Erstellen Sie ein neues Blockdiagramm für diesen Block.
+
# Fügen Sie den Block '''gr_beamer''' in dieses Blockdiagramm ein.
+
# Addieren sie Blöcke mit VHDL-Code, welcher die Strukturen der GRLib Ein- und Ausgänge in einfache '''std_ulogic'''- oder '''std_ulogic_vector''' umwandelt.}}
+
 
+
{{TaskBox|content=
+
Schliessen Sie '''dbgo(0)''' an '''dbgi1''' an, sowie '''dbgo1''' an '''dbgi(0)''', um den Prozessor mit der DSU zu steuern.}}
+
 
+
=== Testbank ===
+
 
+
[[Image:SEm_ambaTestbench.png|thumb|Testbank]]
+
 
+
{{TaskBox|content=
+
# In der Library '''ambarchitect_test''', erstellen Sie eine Testbank namens '''beamer_tb'''.
+
# Legen Sie dort hinein den Block '''ambarchitect/beamer'''
+
# Erstellen sie einem Stimuli-Generator '''beamer_tester'''.}}
+
 
+
{{TaskBox|content=
+
# Um ein VHDL-Modell der Speicher, Flash und SDRAM, zu haben, kopieren Sie den Inhalt des Verzeichnisses '''R:\Modules\SI\223_SEm\Digital\Ambarchitect\ambarchitect_test''' nach '''U:\SEm_labs\Ambarchitect\ambarchitect_test'''.
+
# In HDL-Designer aktualisieren Sie die Library '''ambarchitect_test''' mit der Taste '''F5'''.}}
+
 
+
Die VHDL-Modelle der Speicherblöcke sollten nun in ''HDL-Designer'' sichtbar sein.
+
 
+
{{TaskBox|content=
+
Um einige Komponente der GRLib-Library kompilieren zu können, öffnen Sie die Library '''unisim''', selektieren Sie alle '''RAMB4*'''-Komponente und kompilieren Sie diese.}}
+
 
+
{{TaskBox|content=
+
Platzieren Sie diese Speicher am zu testenden System. Regeln Sie folgende Parameter:
+
* die SDRAM hat 12 Adressbits,
+
* die 2 Bits DQM der SDRAM sind angeschlossen an sdDQM(4) und sdDQM(0),
+
* das Signal CKE der SDRAM ist angeschlossen an sdCkE(0),
+
* das Signal Cs_n der SDRAM ist angeschlossen an sdCS_n(0),
+
* auf dem Flash sind Byte_n = '1' und RP_n = '1',
+
* auf dem Flash ist CE = "00" & RomS_n(0),
+
* für den Speicher-Kontroller soll bWidth = "01" sein,
+
* Für die zwei Speicher, geben sie den Link auf der kopierten Dateien in '''U:\SEm_labs\Ambarchitect\ambarchitect_test'''.}}
+
 
+
{{TaskBox|content=
+
Erstellen Sie einen Block, welcher den bidirektionellen Bus der Speicher auf die unidirektionellen Busse der GRLib anschliesst.}}
+
 
+
{{TaskBox|content=
+
Schreiben Sie den Code der Testbank um folgende Signale zu erzeugen:
+
* Power-on-Reset und Taktsignal,
+
* die Steuerung des Systems via RS232 durch den Block '''ahbuart'''.}}
+
 
+
=== Simulation ===
+
 
+
[[Image:SEm_ambaSimulation.png|thumb|Simulation]]
+
 
+
 
+
{{TaskBox|content=
+
Initialisieren Sie die Schaltung, indem Sie den Charakter 55 h auf der RS232-Linie senden.}}
+
 
+
Der Block '''ahbuart''' kann sich damit automatisch an die Baudrate der seriellen Linie anpassen.
+
 
+
{{TaskBox|content=
+
Lesen Sie den Inhalt des Speichers an Adresse 8000.0100 h.}}
+
 
+
Dies wird mit Hilfe der Sequenz 83 80 00 01 00 durchgeführt.
+
 
+
{{TaskBox|content=
+
Folgen Sie dem, was auf dem AMBA-Bus passiert.
+
Angefangen beim Empfang des Befehls bis zum Zurücksenden der Daten.
+
Erklären Sie den Wert der Daten welche vom Speicher gelesen wurden.}}
+
 
+
{{TaskBox|content=
+
Schreiben Sie den Code der Testbank um folgende Signale zu erzeugen:
+
* Power-on-Reset und Taktsignal
+
* die Steuerung des Systems via RS232 durch den Block '''ahbuart'''}}
+
 
+
{{navNamed|left=SEm/labore/04_synthese|left_name=04 Automatische Synthese|up=SEm/labore|up_name=Anleitung auf Deutsch|right=SEm/labore/06_apb|right_name=06 APB Komponent}}
+
  
 
[[Category:SEm]]
 
[[Category:SEm]]

Revision as of 15:40, 10 March 2015

Contents

AMBA-Bus basiertes System

AHB-Lite

Navigation
Arrow left.gif 04 Automatische Synthese Arrow up.gif Anleitung auf Deutsch TBC Arrow right.gif

Personal tools
Namespaces
Variants
Actions
Navigation
Modules / Projects
Browse
Toolbox