Sie sind auf Seite 1von 34

Embedded Systems in

rekonfigurierbarer Hardware

Einführung

Rüdiger Willenberg

V1.6 – WS18/19
Kurzvorstellung Dozent
Prof. Dr. Rüdiger Willenberg
Dipl.-Ing.(FH) Nachrichtentechnik/Elektronik (FH Mannheim)
Hard- und Firmware-Entwickler (tesa scribos GmbH, Hd.)
M.Sc. Informationstechnik (HS Mannheim)
Ph.D., Computer Engineering (University of Toronto, Kanada)

email: r.willenberg@hs-mannheim.de

Raum: Bau S, Erdgeschoss, Raum S010


Telefon: 0621/292-6355
Sprechzeiten: nach Vereinbarung per email

ESR · Embedded Systems in


rekonfigurierbarer Hardware 2
Problemstellung 1
• Benötigt: Ein robustes Netzwerk mit einfacher Verdrahtung, um
mehrere räumlich verteilte 32-Bit-Mikrocontroller über
asynchrone Nachrichten mit einander kommunizieren zu lassen.
Daten-Nutzlast von 16 Byte pro Nachricht benötigt.

• Lösungsansatz: CAN-Bus
+ ausgetestet und gut etabliert
+ von praktisch allen Herstellern unterstützt
+ Unterstützung durch aufgesetzte Higher-Level-
Softwareprotokolle (z.B. SDS, CANopen)

• Problem: CAN unterstützt nur


maximal 8 Byte Nutzlast
- keines der vorhandenen CAN-Interfaces
erlaubt Ihnen die Nutzlast-Erweiterung

ESR · Embedded Systems in


rekonfigurierbarer Hardware 3
Problemstellung 2
• Ihre Firma entwickelt sicherheitskritische
eingebettete Systeme, die für jedes kommunizierte
Datenpaket einen SHA-2-Hash erzeugen müssen.

• Da diese Aufgabe wertvolle Berechnungszeit im


Prozessor erfordern würde, verwenden Sie ein
System mit eingebautem Krypto-Coprozessor für
diese Aufgabe.

• Durch ein neues kryptografisches Paper wird


der SHA-2-Algorithmus als angreifbar demonstriert.

• Sie müssen in möglichst kurzer Zeit ein System


bereitstellen, dass den sicheren SHA-3-Hash
verwendet. Dieser wird aber noch von keinem
Coprozessor unterstützt.

ESR · Embedded Systems in


rekonfigurierbarer Hardware 4
Problemstellung 3
24bit Gaussian Gamma 24bit
RGB filter tables RGB
Video Video
Input Output

FPGA
Frame
average S
• Sie haben ein FPGA-System entworfen, dass echtzeitfähig mit einer
Verzögerung von wenigen Millisekunden einen Videostream modifiziert:
– Auf jedes Bild (Frame) wird ein weichzeichnender Gaußfilter der Größe
5x5 Pixel angewendet
– Die durchschnittliche Helligkeit jedes Eingangs-Bildes wird durch
Aufaddieren ermittelt.
– Über eine Wertetabelle (Look-up table) wird jeder der drei R,G,B-Kanäle
entsprechend eine Gamma-Kurve in seiner Helligkeit angepasst.

ESR · Embedded Systems in


rekonfigurierbarer Hardware 5
Problemstellung 3 - Fortsetzung
24bit Gaussian Gamma 24bit
RGB filter tables RGB
Video Video
Input Output

FPGA
Frame
average S
Neuberechnung

• In einer Weiterentwicklung soll nach jedem Frame anhand der


durchschnittlichen Helligkeit eine neue Gammakurve (d.h. neue
Tabellenwerte) berechnet werden.
𝜸
• Die Berechnung anhand der Gleichung 𝑽𝒐𝒖𝒕 = 𝑨 ∗ 𝑽𝒊𝒏 mit veränderlichen
Exponenten 𝜸 = 𝟎, 𝟏 … 𝟑 ist nur sehr aufwendig in FPGA-Hardware zu
implementieren (in Software existieren Bibliotheksfunktionen).

ESR · Embedded Systems in


rekonfigurierbarer Hardware 6
Lösungsansätze
• Problem 1 und 2:
Zur Verfügung stellen der fehlenden Hardware (CAN bzw.
Crypto) als VHDL-Design in einem zusätzlichem FPGA
aber: Besonders Crypto-Coprozessor braucht eine schnelle
Anbindung an den Mikrocontroller-Speicher für Effizienz (DMA)

• Problem 3:
Berechnung der neuen Gamma-Tabellen in Software in
zusätzlichem Mikrocontroller

Lösungsansatz in dieser Vorlesung: Gesamtes eingebettetes System


(CPU und benötigte Peripherie-Hardware) in einem FPGA

ESR · Embedded Systems in


rekonfigurierbarer Hardware 7
Embedded System-Entwurf für FPGA

CPU Peripherie A
z.B. UART

Treiber A

FPGA

ESR · Embedded Systems in


rekonfigurierbarer Hardware 8
Embedded System-Entwurf für FPGA

CPU Peripherie B Peripherie A


(Eigendesign) z.B. UART

Treiber A
Treiber B
FPGA

ESR · Embedded Systems in


rekonfigurierbarer Hardware 9
Embedded System-Entwurf für FPGA

CPU Peripherie B Peripherie A


(Eigendesign) z.B. UART Andere
Treiber A FPGA-
Logik
Treiber B
FPGA

ESR · Embedded Systems in


rekonfigurierbarer Hardware 10
Embedded System-Entwurf für FPGA

CPU Peripherie B Peripherie A


Applikation (Eigendesign) z.B. UART Andere
Treiber A FPGA-
Logik
Treiber B
FPGA

ESR · Embedded Systems in


rekonfigurierbarer Hardware 11
Hardware/Software-CoDesign
System-Design
(Hardware-Blöcke,
Bussysteme, I/O)
Hardwareinformation

Board Support
Hardware-
Package-
Implementierung
Generierung

Treiber-,
Design- Hardware- (Applikations-)
Entwicklung
Iterationen Verifikation

Debugging
Design-
soweit möglich Iterationen
ohne Zielhardware

Integration

Debugging,
weitere
Applikations-
Entwicklung

ESR · Embedded Systems in


rekonfigurierbarer Hardware 12
Embedded Systems in FPGAs
Zwei Variationen:
1. „Soft“-Prozessoren und –Peripherie:
Prozessorkern, Bus und Peripherieblöcke setzen sich aus
programmierbarer Logik zusammen
+ Anzahl jedes Bausteins beliebig
+ Bussystem/Systemarchitektur beliebig
- hoher Platzverbrauch, maximaler Takt durch verteilte Logik (<500MHz)

2. „Hard“-Prozessoren und –Peripherie:


Klassisch vorgefertigtes Mikrocontroller-System mit wichtigen
I/O-Bausteinen als Teil des FPGA-Chips
+ Höhere Taktfrequenz (650 MHz - 1,5GHz)
+ Geringer Chipfläche benötigt
- Anzahl Bausteine, Struktur nicht variabel

=> Beides ist kombinierbar!

ESR · Embedded Systems in


rekonfigurierbarer Hardware 13
Soft-Prozessor: Xilinx MicroBlaze
• 32-Bit-RISC-Prozessor, 4GByte Adressraum
• gcc-Compiler-Unterstützung
• Größe<->Geschwindigkeit durch Pipeline-Länge konfigurierbar
• Optionen: L1-Cache, FPU (Fließkommarechnung), MMU
(Virtueller Speicher)
• Verwendet den ARM-spezifizierten AXI-Bus
• Ports und passende Assembler-Instruktionen für nicht
adressgebundenes Streaming (AXI-Stream, Fast Simplex Link)
• Typische Taktfrequenz: 100-300MHz
• Je nach FPGA-Größe Dutzende bis Hunderte CPUs möglich
• Für alle Xilinx-FPGAs verfügbar

ESR · Embedded Systems in


rekonfigurierbarer Hardware 14
Hard-Prozessor: ARM A9 in Xilinx Zynq

ESR · Embedded Systems in


rekonfigurierbarer Hardware 15
Hard-Prozessor: ARM A9 in Xilinx Zynq
• Dual-Core 32-bit ARM A9-Prozessor mit 800/1000MHz
• L1- und L2-Caches, MMU, Floating-Point, Vectorinstruction (NEON)
• Wichtige Peripherie wie 1Gbit-Ethernet, CAN, SPI, I2C, UART, Timer,
USB hartverdrahtet und per AMBA angebunden
• ARM-System bootet und arbeitet selbständig ohne FPGA-Einfluss
• ARM-System über hoch- und niederratige AXI-Bus-Interfaces mit
der programmierbaren Logik (PL) verbunden
• ARM kann Peripherieblöcke in der PL verwenden
• PL kann gecached und ungecached auf den Hauptspeicher des
ARM zugreifen (Busmaster/DMA)
• PL ist moderne Xilinx-Serie-7-Logik mit Highspeed-Transmittern
für PCIe, SATA, etc.

ESR · Embedded Systems in


rekonfigurierbarer Hardware 16
Laborsystem: Xilinx Zedboard

ESR · Embedded Systems in


rekonfigurierbarer Hardware 17
Zur Vorlesung - Lernziele
Zwei erwünschte „Takeaways“ nach diesem Semester:

1. Bedienerfahrungen für große FPGA-Systeme und


FPGA-Embedded-Systeme mit der Xilinx Vivado Entwicklungsumgebung
inkl. Xilinx Software Development Kit

2. Erfahrung im Software/Hardware-Co-Design für „Systems-on-Chip“ (SoCs):


– Design von geeignetem Daten- und Kontrollfluss
– Erwägungen zu Performance und Entwicklungsaufwand
– Anpassung der Software-Seite an neuentworfene Hardware
– Konfigurieren und Erstellen einer Linux-Installation für ihr Zedboard;
angepasste Linux-Treiber für die eigene Hardware
– (optional, bei genügend Zeit) High-Level Hardware-Synthese aus C-Code

P.S.: (Optional) Begeisterung für das Thema entwickeln und


Interesse an Master- oder Bachelorarbeit zum Thema haben ☺

ESR · Embedded Systems in


rekonfigurierbarer Hardware 18
Inhalte

FPGA/VHDL-
Programmierung

Rechner- System-
architektur design

Embedded-
Software und
Treiber

ESR · Embedded Systems in


rekonfigurierbarer Hardware 19
Zur Vorlesung - Voraussetzungen
• C-Programmierung
➢ HS Mannheim: Vorlesung PI (Praxis in DMC, EMB)
• Embedded-Systems: Mikrocontroller, verschiedene
Speichertypen, Peripheriekomponenten (Timer, GPIO, ADC, DAC),
Interrupts
➢ HS Mannheim: Vorlesungen DMC, EMB
• Grundlegende FPGA-Kenntnisse: Aufbau, Implementierung von
Logikschaltungen, Entwicklungstools, taktsynchrones Timing
• Fundiertes VHDL oder Verilog-Verständnis
➢ HS Mannheim: Vorlesung PLB

➢ Ohne solides Verständnis dieser Themen ist der Besuch der


Vorlesung ESR nicht sinnvoll!
ESR · Embedded Systems in
rekonfigurierbarer Hardware 20
Zur Vorlesung - Semesterverlauf
• ca. 13-14 Kurstermine:
– ca. 1 Vorlesungsstunde Theorie bzw. Tool-Einführung
– ca. 1 Vorlesungsstunde Laborübungen mit den Tools (2er-Gruppen)
– Wegen Terminkonflikten 2-3x Ausweichen auf Dienstag: 9.10., 30.10., (11.12.)

• Themen:
– VHDL-Design und -Debugging mit Xilinx Vivado
– Blockbasiertes Embedded-System-Design mit Xilinx Vivado
– Embedded-Softwareentwicklung mit Xilinx SDK
– Xilinx MicroBlaze Prozessor; ARM-A9-Prozessor im Xilinx Zynq PS
– ARM AXI4-Bustypen: Full, Lite, Stream
– Design von AXI-Peripheriebausteinen und Software-Zugriff/Treiber
– Speichertypen in FPGA-Systemen
– Timing von synchronen FPGA-Schaltungen und Performanceoptimierung
– Linux für Emb.Systems, speziell Zynq/Zedboard (inkl. "Selbstbau" im Labor)

ESR · Embedded Systems in


rekonfigurierbarer Hardware 21
Zur Vorlesung - Zusammensetzung ESR-Note
• 24% Laborübungen:
– 3% für erfolgreichen Abschluss einer Laborübung bis zu maximal
24% (8 abgeschlossene Laborübungen , mind. 2-3 Reserve)
– Labore haben Tutorial-Stil und erfordern wenig oder keine Vorbereitung;
typisch Anwendung des Vorlesungsstoffs vom gleichen Tag
– Abschluss wird durch Funktionsdemonstration und Beantwortung von
Verständnisfragen erreicht.

• 42% Miniprojekte:
– 3 Miniprojekte zur selbständigen Systementwicklung/Benutzung der Tools
– Jeweils 2 Wochen Zeit; Design/Simulation im Labor/Zuhause möglich, Test
und Demo im Labor
– Jeweils 14% für den erfolgreichen Abschluss

• 34% Klausurnote:
– Einstündige schriftliche Klausur

ESR · Embedded Systems in


rekonfigurierbarer Hardware 22
Verwendete Tools
• Xilinx Vivado IDE

• Sigasi Studio VHDL Editor

• Xilinx Software Development Kit

• Git

ESR · Embedded Systems in


rekonfigurierbarer Hardware 23
Xilinx Vivado IDE
• Nachfolge-Entwicklungsumgebung für
– Xilinx ISE
– Xilinx XPS(Xilinx Platform Studio) / EDK (Embedded Development Kit)
– Xilinx Isim/Xsim Simulator
– FPGA Editor
– Xilinx PlanAhead

• Immer noch separate Tools:


– Xilinx Software Development Kit
– Xilinx Vivado HLS
– Xilinx System Generator (MATLAB/Simulink-Entwicklung)

• Unterstützt FPGAs ab der Xilinx 7er-Serie


– Artix-, Kintex-, Virtex-7, Zynq, Ultrascale, Ultrascale+

ESR · Embedded Systems in


rekonfigurierbarer Hardware 24
Verbesserungen gegenüber alter Toolchain
• Durchgehend integrierte Design-Datenbank von Elaboration
(Pre-Synthesis) bis Post-Implementation/Bitstream
– Signalverfolgung/-modifikation/-debugging über den gesamten Flow

• Verbesserte visuelle Aufbereitung von Reports und


Netzlisten/Placement/Routing

• Ähnlichstellung von Simulation und


Debugging im Betrieb (früher ChipScope)

ESR · Embedded Systems in


rekonfigurierbarer Hardware 25
Verbesserungen gegenüber alter Toolchain
• Durchgehend integriertes Skripting in Tcl
-> einfache Umstellung auf Batch Flows z.B. für
- inkrementelle Entwicklung
- Design Space Exploration
- Regressionstests

• Einfacheres Management von verschiedenen Design-Flow-


Varianten
– Mehrere verschiedene Runs (Implementationsläufe) im gleichen Projekt
– Speicherbare Optionssets für Synthese/Implementation
– Checkpoints: Report-Ergebnisse abspeicherbar

• Blockbasiertes Design für High-Level-Planung von Chipscale-


Systemen, Integration von IP aus verschiedenen Quellen, On-chip
Bus- und Netzwerkdesign

ESR · Embedded Systems in


rekonfigurierbarer Hardware 26
ESR · Embedded Systems in
rekonfigurierbarer Hardware 27
ESR · Embedded Systems in
rekonfigurierbarer Hardware 28
Sourcecode-/Versionskontrolle mit Git
Favoriten\ESR-Projekte Server (Laufwerk S:\ )

ESR · Embedded Systems in


rekonfigurierbarer Hardware 29
Sourcecode-/Versionskontrolle mit Git

ESR · Embedded Systems in


rekonfigurierbarer Hardware 30
ESR-Projekte
LabX
Empfohlene
hdlsrc (VHDL-Designfiles) Projektstruktur
testbenches (VHDL-Simulation)
constraints (*.xdc-Files für Placement, Timing)
bd (Blockdesign-Files)

Links LabXproject.tcl (Vivado-Projektrekonstruktion)


LabXproject (Vivado-Projektordner)
LabXproject.xpr
(Andere Designflow-Ordner)
Links (SDK-Projektordner)
csrc (C-Sourcecode etc.) versioniert

ESR · Embedded Systems in


rekonfigurierbarer Hardware 31
dklabserver
• Ubuntu Linux-Server für
– Netzwerkspeicher (Samba)
– Git-Repository (ebenfalls über Samba)
– Git-Backups
• (aber: Backupfestplatte im gleichen Raum)
– Lizenzserver (Sigasi)
– Wiki-Server für Projektdokumentation

• Benutzernamen: z.B. ws18_esr7 für Benutzer 7 (Namensliste)

• Server per VPN von außen erreichbar: IP-Adresse 141.19.82.105


(Hostname auf DK-Laborrechnern: dklabserver)

ESR · Embedded Systems in


rekonfigurierbarer Hardware 32
Laborübung 1

• Einfache kombinatorische Schaltung + Testbench in VHDL


• Projektanlage inkl. Git, RTL-Analyse, Simulation, Synthese,
Implementierung, Bitstream, Programmierung
• Nehmen Sie sich Zeit und sein Sie neugierig!

ESR · Embedded Systems in


rekonfigurierbarer Hardware 33
Fragen?

Bitte schnell in Moodle für ESR anmelden!

ESR · Embedded Systems in


rekonfigurierbarer Hardware 34