SEm/labore/05 amba

(Difference between revisions)
Jump to: navigation, search
Line 5: Line 5:
 
== Einleitung ==
 
== Einleitung ==
  
Dieses labor zeigt die Erstellung eines AMBA-Bus System, basierend auf der GRLib.
+
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 erlauben, eine einfache Schaltung zu bilden, mit einem Prozessor, einem
+
Es wird uns erlauben, eine einfache Schaltung mit einem Prozessor, einem Speicher-Interface und einer seriellen Schnittstelle zu bilden.
Speicher-Interface und einer seriellen Schnittstelle.
+
  
 
== Zeichnung der Schaltung ==
 
== Zeichnung der Schaltung ==
Line 14: Line 13:
 
=== Vorbereitung ===
 
=== Vorbereitung ===
  
Im Arbeitsverzeichnis, '''U:\SEm_labs''', erstellen Sie ein neues
+
{{TaskBox|Erstellen Sie im Arbeitsverzeichnis, '''U:\SEm_labs''' ein neues Verzeichnis '''Ambarchitect'''.}}
Verzeichnis '''Ambarchitect'''.
+
  
Starten Sie das Programm AMBAdraw, clicken Sie auf '''Import Template
+
{{TaskBox|
Design''' und basieren Sie auf der Schaltung in
+
# Starten Sie das Programm [http://ambadraw.hevs.ch AMBAdraw].
'''C:/EDA/AMBAdraw/source/template/HDS'''. Dies erlaubt es, eine
+
# Klicken Sie auf '''Import Template Design''' und basieren Sie auf der Schaltung in '''C:/EDA/AMBAdraw/source/template/HDS'''.}}
Referenz-Schaltung zu laden, welche alle GRLib Blöcke enthält, und die schlussendliche
+
Schaltung wird ein Teil dieser Gesamtschaltung sein.
+
  
Achtung: alle Preferences gehen verloren, wenn man eine neue Referenz-Schaltung
+
Dies wird eine Referenz-Schaltung in [http://ambadraw.hevs.ch AMBAdraw] laden welche alle existierenden GRLib Blöcke enthält
lädt.
+
Ihre schlussendliche Schaltung wird ein Teil dieser Gesamtschaltung sein.
 +
 
 +
{{NewsBox|Achtung!|Alle ''Preferences'' gehen verloren, wenn man eine neue Referenz-Schaltung lädt.}}
  
 
=== Schaltung ===
 
=== Schaltung ===
  
Im Programm AMBAdraw zeichnen Sie die folgende Schaltung.
+
{{TaskBox|Im Programm [http://ambadraw.hevs.ch AMBAdraw]zeichnen Sie die folgende Schaltung.}}
  
'''Figure 1. Zu erstellende Schaltung'''
+
[[Image:SEm_ambaDesign.png|center|Zu erstellende Schaltung]]
  
[[Image:ambaDesign.png]]<br>
+
Das Manual '''grLib cores user manual.pdf''' beschreibt alle Blöcke des Systems.
Das Manual '''grLib cores user manual.pdf''' beschreibt alle Bl&ouml;cke des
+
Mit ihm können Sie auch bestimmen, auf welche Busse (AHB oder ABP) die Komponenten angeschlossen werden.
Systems. Es erlauubt es auch, zu bestimmen, auf welche Busse die Komponente angeschlossen
+
werden.
+
  
 
== Parametrisierung des Systems ==
 
== Parametrisierung des Systems ==
  
Die Datei '''configuration.xls''' dient dazu, einige Parameter des Systems zu
+
Die Datei '''configuration.xls''' dient dazu, einige Parameter des Systems zu anzugeben.
anzugeben.
+
  
 
=== Index ===
 
=== Index ===
  
Alle Komponente auf dem AHB-Bus haben ein eigenes Index.
+
Alle Komponenten auf dem AHB-Bus haben einen eigenen Index, unabhängig vom den Index des
 +
APB-Busses.
  
F&uuml;llen Sie die Tabelle '''indexes''' der Datei
+
{{TaskBox|
'''configuration.xls''' ein, und updaten Sie die
+
In der Datei '''configuration.xls''' füllen Sie die Tabelle '''indexes'''.
'''hindex'''-Parameter der AHB-Komponenten im Programm AMBAdraw.
+
Aktualisieren Sie die '''hindex'''-Parameter der AHB-Komponenten in [http://ambadraw.hevs.ch AMBAdraw].
  
Alle Komponente auf dem APB-Bus haben ein eigenes Index, unabh&auml;ngig von den Indexen des
 
APB-Busses.
 
  
 
Abhand von der Tabelle '''indexes''' der Datei
 
Abhand von der Tabelle '''indexes''' der Datei
Line 62: Line 56:
 
dies mit Hilfe einer Adresse und eines Masks.
 
dies mit Hilfe einer Adresse und eines Masks.
  
F&uuml;r die AHB-Bus Slaves:
+
Für die AHB-Bus Slaves:
  
 
* ist die Basis-Adresse der Position durch ihre 12 MSBs angegeben,
 
* ist die Basis-Adresse der Position durch ihre 12 MSBs angegeben,
* ist die L&auml;nge des zugeteilten Speichers durch die Maske auf die 12 MSBs gegeben.
+
* ist die Länge des zugeteilten Speichers durch die Maske auf die 12 MSBs gegeben.
  
F&uuml;r die APB-Komponenten werden Basis Adresse und L&auml;nge &auml;hnlich definiert, nur aber auf
+
Für die APB-Komponenten werden Basis Adresse und Länge ähnlich definiert, nur aber auf
 
die 12 weiteren Bits der Adresse.
 
die 12 weiteren Bits der Adresse.
  
F&uuml;llen Sie die Tabellen '''memory map, definition''' der Datei
+
Füllen Sie die Tabellen '''memory map, definition''' der Datei
 
'''configuration.xls''' ein, und updaten Sie die '''haddr'''-,
 
'''configuration.xls''' ein, und updaten Sie die '''haddr'''-,
 
'''hmask'''-, '''paddr'''- und
 
'''hmask'''-, '''paddr'''- und
Line 82: Line 76:
 
== Erstellung des VHDL Codes ==
 
== Erstellung des VHDL Codes ==
  
Der Programm AMBAdraw generiert ein VHDL-Code abhand einer Referenz-Schaltung welche alle
+
Der Programm [http://ambadraw.hevs.ch AMBAdraw] generiert ein VHDL-Code abhand einer Referenz-Schaltung welche alle
GRLib Bl&ouml;cke enth&auml;lt, und erstellt die schlussendliche Schaltung, indem er die nicht
+
GRLib Blöcke enthält, und erstellt die schlussendliche Schaltung, indem er die nicht
 
selektierte Komponente wegnimmt.
 
selektierte Komponente wegnimmt.
  
Line 97: Line 91:
  
 
Starten Sie HDL Designer anhand der Datei
 
Starten Sie HDL Designer anhand der Datei
'''U:\SEm_labs\Ambarchitect\ambarchitect.hdp''', &ouml;ffnen Sie den Block
+
'''U:\SEm_labs\Ambarchitect\ambarchitect.hdp''', öffnen Sie den Block
 
'''toplevel''' betrachten Sie die erstellte Schaltung.
 
'''toplevel''' betrachten Sie die erstellte Schaltung.
  
Line 105: Line 99:
 
<br>
 
<br>
  
Achtung: alle &Auml;nderungen gehen verloren, wenn man vom Programm AMBAdraw neu ein Export
+
Achtung: alle änderungen gehen verloren, wenn man vom Programm [http://ambadraw.hevs.ch AMBAdraw] neu ein Export
durchf&uuml;hrt.
+
durchführt.
  
 
== Simulation des Systems ==
 
== Simulation des Systems ==
Line 125: Line 119:
 
Editieren Sie '''U:\SEm_labs\Ambarchitect\beamer.hdp''':
 
Editieren Sie '''U:\SEm_labs\Ambarchitect\beamer.hdp''':
  
* setzen Sie zus&auml;tzlich Referenze zur Library '''ambarchitect_test'''.
+
* setzen Sie zusätzlich Referenze zur Library '''ambarchitect_test'''.
* im Teil '''ModelSim''', &auml;ndern Sie den basis Pfad '''$HDS_PROJECT_DIR''' mit '''D:/Labs/SEm/Ambarchitect'''.
+
* im Teil '''ModelSim''', ändern Sie den basis Pfad '''$HDS_PROJECT_DIR''' mit '''D:/Labs/SEm/Ambarchitect'''.
  
 
Starte Sie HDL Designer abhand der Datei
 
Starte Sie HDL Designer abhand der Datei
Line 134: Line 128:
  
 
Kopieren Sie den modul '''ambarchitect/toplevel''' unter den Namen
 
Kopieren Sie den modul '''ambarchitect/toplevel''' unter den Namen
'''ambarchitect/gr_beamer''' so, dass AMBAdraw es nicht &uuml;berschreiben
+
'''ambarchitect/gr_beamer''' so, dass [http://ambadraw.hevs.ch AMBAdraw] es nicht überschreiben
 
wird.
 
wird.
  
 
Erstellen Sie einen neuen Block '''ambarchitect/beamer''', welcher den
 
Erstellen Sie einen neuen Block '''ambarchitect/beamer''', welcher den
vorigen Block enth&auml;lt, zusammen mit VHDL-Code, welches die GRLib Ein- und Ausg&auml;nge zu
+
vorigen Block enthält, zusammen mit VHDL-Code, welches die GRLib Ein- und Ausgänge zu
 
'''std_ulogic'''- oder '''std_ulogic_vector'''-Linien
 
'''std_ulogic'''- oder '''std_ulogic_vector'''-Linien
 
entfaltet.
 
entfaltet.
Line 162: Line 156:
 
Liste der Komponenten mit der taste '''F5''' neu erstellt.
 
Liste der Komponenten mit der taste '''F5''' neu erstellt.
  
Um einige Komponente der GRLib-Library compilieren zu k&ouml;nnen, &ouml;ffnen Sie die Library
+
Um einige Komponente der GRLib-Library compilieren zu können, öffnen Sie die Library
 
'''unisim''', selektieren Sie alle '''RAMB4*'''-Komponente und
 
'''unisim''', selektieren Sie alle '''RAMB4*'''-Komponente und
 
compilieren Sie diese.
 
compilieren Sie diese.
Line 174: Line 168:
 
* auf dem Flash sind Byte_n = '1' et RP_n = '1',
 
* auf dem Flash sind Byte_n = '1' et RP_n = '1',
 
* auf dem Flash ist CE = "00" &amp; RomS_n(0),
 
* auf dem Flash ist CE = "00" &amp; RomS_n(0),
* f&uuml;r den Speicher-Kontroller soll bWidth = "01",
+
* für den Speicher-Kontroller soll bWidth = "01",
* F&uuml;r die zwei Speicher, geben sie den Link auf der kopierten Dateien in '''U:\SEm_labs\Ambarchitect\ambarchitect_test'''.
+
* Für die zwei Speicher, geben sie den Link auf der kopierten Dateien in '''U:\SEm_labs\Ambarchitect\ambarchitect_test'''.
  
 
Erstellen Sie einen Block, welcher den bidirektionellen Bus der Speicher anf
 
Erstellen Sie einen Block, welcher den bidirektionellen Bus der Speicher anf
Line 195: Line 189:
  
 
Lesen Sie den Inhalt des Speicher an Adresse 8000.0100 h. Dies wird mit Hilfe der
 
Lesen Sie den Inhalt des Speicher an Adresse 8000.0100 h. Dies wird mit Hilfe der
Sequenz 83 80 00 01 00 durchgef&uuml;hrt. Folgen Sie das, was auf dem AMBA-Buss passiert, von dem
+
Sequenz 83 80 00 01 00 durchgeführt. Folgen Sie das, was auf dem AMBA-Buss passiert, von dem
Empfang der Steuerung bis zum Zur&uuml;cksenden der Daten. ErkL&auml;ren Sie den Wert der Daten,
+
Empfang der Steuerung bis zum Zurücksenden der Daten. ErkLären Sie den Wert der Daten,
 
welche vom Speicher gelesen wurden.
 
welche vom Speicher gelesen wurden.
  
Line 214: Line 208:
  
 
Lesen Sie den Inhalt des Speicher an Adresse 8000.0100 h. Dies wird mit Hilfe der
 
Lesen Sie den Inhalt des Speicher an Adresse 8000.0100 h. Dies wird mit Hilfe der
Sequenz 83 80 00 01 00 durchgef&uuml;hrt. Folgen Sie das, was auf dem AMBA-Buss passiert, von dem
+
Sequenz 83 80 00 01 00 durchgeführt. Folgen Sie das, was auf dem AMBA-Buss passiert, von dem
Empfang der Steuerung bis zum Zur&uuml;cksenden der Daten. ErkL&auml;ren Sie den Wert der Daten,
+
Empfang der Steuerung bis zum Zurücksenden der Daten. ErkLären Sie den Wert der Daten,
 
welche vom Speicher gelesen wurden.
 
welche vom Speicher gelesen wurden.
  

Revision as of 19:54, 11 June 2013

Contents

AMBA-Bus basiertes System

Einleitung

Dieses Labor zeigt die Erstellung eines AMBA Bussystem basierend auf der GRLib.

Es wird uns erlauben, eine einfache Schaltung mit einem Prozessor, einem Speicher-Interface und einer seriellen Schnittstelle zu bilden.

Zeichnung der Schaltung

Vorbereitung

View-pim-tasks.png

ToDo some code


View-pim-tasks.png

ToDo some code

Dies wird eine Referenz-Schaltung in AMBAdraw laden welche alle existierenden GRLib Blöcke enthält Ihre schlussendliche Schaltung wird ein Teil dieser Gesamtschaltung sein.


Achtung!

Alle Preferences gehen verloren, wenn man eine neue Referenz-Schaltung lädt.

Schaltung

View-pim-tasks.png

ToDo some code

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 den Index des APB-Busses.

{{TaskBox| In der Datei configuration.xls füllen Sie die Tabelle indexes. Aktualisieren Sie die hindex-Parameter der AHB-Komponenten in AMBAdraw.


Abhand von der Tabelle indexes der Datei configuration.xls, updaten Sie die pindex-Parameter der APB-Komponenten.

Speicher-Plan

Die System-Komponente haben je ihr eigenes Speicherposition. Die GRLib parametrisiert dies mit Hilfe einer Adresse und eines Masks.

Für die AHB-Bus Slaves:

  • ist die Basis-Adresse der Position durch ihre 12 MSBs angegeben,
  • ist die Länge des zugeteilten Speichers durch die Maske auf die 12 MSBs gegeben.

Für die APB-Komponenten werden Basis Adresse und Länge ähnlich definiert, nur aber auf die 12 weiteren Bits der Adresse.

Füllen Sie die Tabellen memory map, definition der Datei configuration.xls ein, und updaten Sie die haddr-, hmask-, paddr- und pmask-Parameter der AHB-Komponenten im Programm AMBAdraw.

Komponenten-spezifische Parameter

Mit Hilfe des manuals grLib cores user manual.pdf, updaten Sie die andere Parameter der Komponenten im Programm AMBAdraw.

Erstellung des VHDL Codes

Der Programm AMBAdraw generiert ein VHDL-Code abhand einer Referenz-Schaltung welche alle GRLib Blöcke enthält, und erstellt die schlussendliche Schaltung, indem er die nicht selektierte Komponente wegnimmt.

Erstellung des anwendungsspezifisches Systems

Cliken Sie auf Document and project Settings und geben Sie an, in welchem Verzeichnis die Erstellten Dateien geschrieben werden sollen: U:\SEm_labs\Ambarchitect.

Cliken Sie auf Export as HDL.

Betrachtung des Systems

Starten Sie HDL Designer anhand der Datei U:\SEm_labs\Ambarchitect\ambarchitect.hdp, öffnen Sie den Block toplevel betrachten Sie die erstellte Schaltung.

Figure 2. Erstellte Schaltung

File:AmbaCircuit.png

Achtung: alle änderungen gehen verloren, wenn man vom Programm AMBAdraw neu ein Export durchführt.

Simulation des Systems

Um den System zu testen, wollen wir es auf einer Testbank setzen, und ihn durch den AHB UART steuern.

Testbench-Library

Verlassen Sie den Programm HDL Designer.

Erstellen Sie das Verzeichis U:\SEm_labs\Ambarchitect\ambarchitect_test.

Kopieren Sie U:\SEm_labs\Ambarchitect\ambarchitect.hdp unter den Namen U:\SEm_labs\Ambarchitect\beamer.hdp.

Editieren Sie U:\SEm_labs\Ambarchitect\beamer.hdp:

  • setzen Sie zusätzlich Referenze zur Library ambarchitect_test.
  • im Teil ModelSim, ändern Sie den basis Pfad $HDS_PROJECT_DIR mit D:/Labs/SEm/Ambarchitect.

Starte Sie HDL Designer abhand der Datei U:\SEm_labs\Ambarchitect\beamer.hdp.

Einkapslung der Schaltung

Kopieren Sie den modul ambarchitect/toplevel unter den Namen ambarchitect/gr_beamer so, dass AMBAdraw es nicht überschreiben wird.

Erstellen Sie einen neuen Block ambarchitect/beamer, welcher den vorigen Block enthält, zusammen mit VHDL-Code, welches die GRLib Ein- und Ausgänge zu std_ulogic- oder std_ulogic_vector-Linien entfaltet.

Schliessen Sie dbgo(0) an dbgi1 an, sowie dbgo1 an dbgi(0) an, um den Prozessor mit dem DSU zu steuern.

Figure 3. Eingekapselte Schaltung

File:AmbaEncapsulated.png

Testbank

In der Library ambarchitect_test, erstellen Sie ein Testbank beamer_tb und legen Sie darin den Block ambarchitect/beamer zusammen mit einem Simuli-Generator beamer_tester.

Un 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 in U:\SEm_labs\Ambarchitect\ambarchitect_test. In HDL Designer wird die Liste der Komponenten mit der taste F5 neu erstellt.

Um einige Komponente der GRLib-Library compilieren zu können, öffnen Sie die Library unisim, selektieren Sie alle RAMB4*-Komponente und compilieren Sie diese.

Plazieren Sie diese Speicher am zu testendem 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' et RP_n = '1',
  • auf dem Flash ist CE = "00" & RomS_n(0),
  • für den Speicher-Kontroller soll bWidth = "01",
  • Für die zwei Speicher, geben sie den Link auf der kopierten Dateien in U:\SEm_labs\Ambarchitect\ambarchitect_test.

Erstellen Sie einen Block, welcher den bidirektionellen Bus der Speicher anf den unidirektionellen Bussen der GRLib anschliesst.

Figure 4. Testbank

File:AmbaTestbench.png
Schreiben Sie den Code der Testbank , um folgende Signale zu erzeugen:

  • Power-on-Reset un Taktsignal,
  • die Steuerung des Systems via RS232 durch den Block ahbuart.

Simulation

Initialisieren Sie die Schaltung, indem Sie den Charakter 55 h auf der RS232-Linie sendet. Der Block ahbuart kann sich damit automatisch der Baudrate der seriellen Linie anpassen.

Lesen Sie den Inhalt des Speicher an Adresse 8000.0100 h. Dies wird mit Hilfe der Sequenz 83 80 00 01 00 durchgeführt. Folgen Sie das, was auf dem AMBA-Buss passiert, von dem Empfang der Steuerung bis zum Zurücksenden der Daten. ErkLären Sie den Wert der Daten, welche vom Speicher gelesen wurden.

Figure 5. Simulation

File:AmbaSimulation.png
Schreiben Sie den Code der Testbank , um folgende Signale zu erzeugen:

  • Power-on-Reset un Taktsignal,
  • die Steuerung des Systems via RS232 durch den Block ahbuart.

Simulation

Initialisieren Sie die Schaltung, indem Sie den Charakter 55 h auf der RS232-Linie sendet. Der Block ahbuart kann sich damit automatisch der Baudrate der seriellen Linie anpassen.

Lesen Sie den Inhalt des Speicher an Adresse 8000.0100 h. Dies wird mit Hilfe der Sequenz 83 80 00 01 00 durchgeführt. Folgen Sie das, was auf dem AMBA-Buss passiert, von dem Empfang der Steuerung bis zum Zurücksenden der Daten. ErkLären Sie den Wert der Daten, welche vom Speicher gelesen wurden.

Figure 5. Simulation

File:AmbaSimulation.png


Navigation
Arrow left.gif 04 Automatische Synthese Arrow up.gif Anleitung auf Deutsch 06 APB Komponent Arrow right.gif

Personal tools
Namespaces
Variants
Actions
Navigation
Modules / Projects
Browse
Toolbox