SEm/labore/08 soc
(→Implémentation) |
(→Implementation) |
||
(2 intermediate revisions by one user not shown) | |||
Line 3: | Line 3: | ||
= Realisierung eines AMBA-SoCs = | = Realisierung eines AMBA-SoCs = | ||
− | == | + | == Einleitung == |
− | + | In diesem Labor werden Sie in einem programmierbaren Schaltkreis ein Prozessorsystem inklusive der in den vorherigen Laboren entwickelnden Peripheriegeräten implementieren. Ein solches System wird Ein-Chip-System (System on Chip (SoC)) genannt. | |
− | == | + | == Serielles Busprotokoll == |
− | + | Der [http://opencores.org/project,nanoblaze Prozessor] führt ein Programm aus, welches das serielle Interface über das Peripheriegerät UART liest und Lese- sowie Schreibzugriff auf den Inhalt des Speichers gibt. | |
− | === | + | === Datenframe === |
− | + | Dieses serielle Protokoll wird auch von Ihren Kollegen der Leistungselektronik für die Steuerung ihrer DSPs verwendet. | |
− | + | Jedes Datenframe ist wie folgt aufgebaut: | |
: '''header''': AA<sub>h</sub> | : '''header''': AA<sub>h</sub> | ||
− | : '''packet id''': | + | : '''packet id''': Befehlsnummer |
− | : '''cmd''': | + | : '''cmd''': Befehlscode |
− | : '''data length''': | + | : '''data length''': Anzahl Bytes des Befehls |
− | : '''data''': | + | : '''data''': Inhalt des Befehls |
− | : '''checksum''': | + | : '''checksum''': Summe aller Bytes des Befehls, ohne Überträge |
− | + | Auf jeden Befehl folgt ein Antwortdatenframe, welches in der gleichen Weise aufgebaut ist. | |
− | + | Die Antwort kopiert die Nummer und den Code des Befehls, kann aber andere Daten enthalten. | |
− | === | + | ==== Schreibzugriff auf den Speicher ==== |
− | + | Um ein 16 bit langes Wort in den Speicher zu schreiben, sieht das Befehlsdatenframe folgendermassen aus: | |
: '''cmd''': 03<sub>h</sub> | : '''cmd''': 03<sub>h</sub> | ||
: '''data length''': 4 | : '''data length''': 4 | ||
: '''data''': addr<sub>l</sub>, addr<sub>h</sub>, data<sub>l</sub>, data<sub>h</sub> | : '''data''': addr<sub>l</sub>, addr<sub>h</sub>, data<sub>l</sub>, data<sub>h</sub> | ||
− | + | Die Antwort enthält: | |
: '''data length''': 0 | : '''data length''': 0 | ||
− | : '''data''': '' | + | : '''data''': ''none'' |
− | === | + | ==== Lesezugriff auf den Speicher ==== |
− | + | Um ein 16 bit Wort im Speicher zu lesen, muss das Befehlsframe folgendermassen aussehen: | |
: '''cmd''': 04<sub>h</sub> | : '''cmd''': 04<sub>h</sub> | ||
: '''data length''': 2 | : '''data length''': 2 | ||
: '''data''': addr<sub>l</sub>, addr<sub>h</sub> | : '''data''': addr<sub>l</sub>, addr<sub>h</sub> | ||
− | + | Die Antwort enthält: | |
: '''data length''': 2 | : '''data length''': 2 | ||
: '''data''': data<sub>l</sub>, data<sub>h</sub> | : '''data''': data<sub>l</sub>, data<sub>h</sub> | ||
Line 48: | Line 48: | ||
== Simulation == | == Simulation == | ||
− | + | Die zur Verfügung gestellte Testbank <code>beamerSoc_tb</code> liest und schreibt verschiedene Register des Prozessorsystems. | |
{{TaskBox|content= | {{TaskBox|content= | ||
− | + | Untersuchen Sie den Inhalt des Blocks <code>beamerSoc</code> und bestimmen Sie an welchen Adressen sich die Register des Kurvenzeichnungsperipheriebausteins befinden. | |
− | + | ||
}} | }} | ||
{{TaskBox|content= | {{TaskBox|content= | ||
− | + | Studieren Sie den VHDL-Code des Stimuli-Generators <code>beamerSoc_tester</code> und erklären Sie die Testsequenz. | |
}} | }} | ||
{{TaskBox|content= | {{TaskBox|content= | ||
− | + | Führen Sie eine Simulation durch und überprüfen Sie, dass das System richtig funktioniert. | |
}} | }} | ||
− | == | + | == Implementation == |
{{TaskBox|content= | {{TaskBox|content= | ||
− | + | Synthetisieren Sie das SoC und überprüfen Sie dessen korrektes Verhalten mit einem Oszilloskop. | |
}} | }} | ||
− | {{navNamed|left=SEm/labore/07_beamer|left_name=07 Kurvenzeichnungsperipheriebaustein|up=SEm/labore|up_name=Anleitung auf Deutsch|right=SEm/labore/ | + | {{navNamed|left=SEm/labore/07_beamer|left_name=07 Kurvenzeichnungsperipheriebaustein|up=SEm/labore|up_name=Anleitung auf Deutsch|right=SEm/labore/09_pipeline|right_name=09 Hochgeschwindigkeits-Addierer}} |
[[Category:Bachelor]][[Category:SEm]][[Category:Deutsch]] | [[Category:Bachelor]][[Category:SEm]][[Category:Deutsch]] |
Latest revision as of 14:33, 29 April 2016
|
Realisierung eines AMBA-SoCs
Einleitung
In diesem Labor werden Sie in einem programmierbaren Schaltkreis ein Prozessorsystem inklusive der in den vorherigen Laboren entwickelnden Peripheriegeräten implementieren. Ein solches System wird Ein-Chip-System (System on Chip (SoC)) genannt.
Serielles Busprotokoll
Der Prozessor führt ein Programm aus, welches das serielle Interface über das Peripheriegerät UART liest und Lese- sowie Schreibzugriff auf den Inhalt des Speichers gibt.
Datenframe
Dieses serielle Protokoll wird auch von Ihren Kollegen der Leistungselektronik für die Steuerung ihrer DSPs verwendet. Jedes Datenframe ist wie folgt aufgebaut:
- header: AAh
- packet id: Befehlsnummer
- cmd: Befehlscode
- data length: Anzahl Bytes des Befehls
- data: Inhalt des Befehls
- checksum: Summe aller Bytes des Befehls, ohne Überträge
Auf jeden Befehl folgt ein Antwortdatenframe, welches in der gleichen Weise aufgebaut ist. Die Antwort kopiert die Nummer und den Code des Befehls, kann aber andere Daten enthalten.
Schreibzugriff auf den Speicher
Um ein 16 bit langes Wort in den Speicher zu schreiben, sieht das Befehlsdatenframe folgendermassen aus:
- cmd: 03h
- data length: 4
- data: addrl, addrh, datal, datah
Die Antwort enthält:
- data length: 0
- data: none
Lesezugriff auf den Speicher
Um ein 16 bit Wort im Speicher zu lesen, muss das Befehlsframe folgendermassen aussehen:
- cmd: 04h
- data length: 2
- data: addrl, addrh
Die Antwort enthält:
- data length: 2
- data: datal, datah
Simulation
Die zur Verfügung gestellte Testbank beamerSoc_tb
liest und schreibt verschiedene Register des Prozessorsystems.
Implementation
Navigation
07 Kurvenzeichnungsperipheriebaustein
Anleitung auf Deutsch
09 Hochgeschwindigkeits-Addierer