kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Day by Day

(EN google-translate)

(PL google-translate)


Bitte packen Sie das entliehene Board nach der Arbeit damit immer in die antistatische Tüte und sicher in die Box.


68_nexys -- Inhalte zum Kurs, siehe auch Moodle.

Verzeichnis der im Verlauf des Semesters behandelten Themen

Mittwoch 24.03.2021

  • Erste Schritte mit dem Xilinx-Nexys-Video-Board
https://projectf.io/posts/hello-nexys-1/
https://reference.digilentinc.com/_media/reference/programmable-logic/nexys-video/nexys-video_rm.pdf
https://www.xilinx.com/support/documentation-navigation/design-hubs/dh0013-vivado-installation-and-licensing-hub.html
https://reference.digilentinc.com/learn/tutorials/start
Video: Mit Vivado ein VHDL-Projekt erstellen und auf den nexys video übertragen
vivado_vhdl_proj_nexys_teil_1.mp4
vivado_vhdl_proj_nexys_teil_2.mp4
Download des Projekts
nexybitvergleich2.zip nexybitvergleich2.zip -- mit VIVADO 2020.2 erstellt.
Quelltexte dazu
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity mustervergleich is
    Port ( A1 : in STD_LOGIC;
           A0 : in STD_LOGIC;
           B1 : in STD_LOGIC;
           B0 : in STD_LOGIC;
           C : out STD_LOGIC);
end mustervergleich;

architecture Behavioral of mustervergleich is
begin
    C <= (A1 xnor B1) and (A0 xnor B0);
end Behavioral;

Code 0-1: VHDL-Datei

## FPGA Configuration I/O Options
set_property CONFIG_VOLTAGE 3.3 [current_design]
set_property CFGBVS VCCO [current_design]

## Slide Switches
set_property -dict {PACKAGE_PIN E22 IOSTANDARD LVCMOS12} [get_ports {A1}];
set_property -dict {PACKAGE_PIN F21 IOSTANDARD LVCMOS12} [get_ports {A0}];
set_property -dict {PACKAGE_PIN G21 IOSTANDARD LVCMOS12} [get_ports {B1}];
set_property -dict {PACKAGE_PIN G22 IOSTANDARD LVCMOS12} [get_ports {B0}];

## LEDs
set_property -dict {PACKAGE_PIN T14 IOSTANDARD LVCMOS25} [get_ports {C}]

Code 0-2: Constraints-Datei

Mittwoch 31.03.2021

Themen

  • Besprechung des neuen Fokus.
  • Besprechung der Literatur.
  • Besprechung des "halbseminaristischen" Vorgehens.
  • Überblick zu verfügbaren Beispielprojekten.
  • Einführung zu PMOD und Präsentation eines einfachen PMOD-Beispiels.
  • Hinweis auf XADC.
  • Übung: 2x2Bit Mustervergleich mit LUT4.
  • Übung: Diskretes Perzeptron auf der Basis eines Lookup-Tables mit Java.

zugehörige interne Links:

68_nexys/50_Literatur
05_Nexys_Video/01_Projekte
68_nexys/05_Nexys_Video/02_PMOD
69_FPGA/13_LUT -- bitte abgleichen mit ug953-vivado-7series-libraries.pdf
68_nexys/01_Installation

Mittwoch 07.04.2021

Themen

  1. Textbesprechungen
  2. Auffrischen der Syntax von VHDL
  3. Übertragung diskretisierte sigmoide Funktion als Lookup-Table auf einen FPGA

1. Textbesprechungen

Begriff / Abkürzung Bedeutung Erläuterung
MAC Multiply-Accumulate x = x + a*b , Varianten sind als parallel arbeitende Komponente in Digital System Prozessoren verbaut und können mit FPGAs nachgebildet werden.

Tabelle 0-1: ASIC § Application-Specific Integrated Circuit § extra für spezielle Anwendungen entwickelte Chips, die dann preisgünstig sind, wenn sie genau so in sehr großer Stückzahl gebraucht werden

Was haben Sie aus den Texten entnehmen können, das wichtig sein könnte für das hier verfolgte Ziel der Implementierung von KI-Methoden auf einem FPGA? Lassen Sie uns das zusammentragen.

  • Gemeinsamkeit KI-Verfahren: Fehlertoleranz -- Verfahren arbeiten auch noch bei unvollständigem oder fehlerhaftem Input gut.
  • Versärkung alfa bei sigmoide Funktion schon theoretisch begründet.
  • Alternativen table-driven Methoden zur Abb. der sigm. Fkt.: abschnittweise definierte Funktion, spezielle Methodik zur Abbildung von Funktion mittels digitaler Schaltungen (CORDIC), oder Definieren einer nicht linearen, aber einfacher darstellbaren Funktion, Rectifier-Funktion (RELU).
  • Auf nicht stetig differenzierbare Funktionen ist das Backpropagation-Verfahren nicht mehr anwendbar.
  • Stichwort Parallelität von Neuronalen Netzen: Motivation, sie auf FPGAs als parallele Strukturen zu implementieren.
  • Aufsummieren von Produkten MAC ist parallele Struktur als mit FPGA umsetzbar.
  • Vergleich PC, FPGA, ASIC: FPGA in Kombination von Leistung und Kosten ev. attraktiver als PC. Nachteil ASIC: keine gute Software zur Optimierung der Stukturen.
  • Mögliches Problem: Notwendige Verkabelung bei rein paraller Umsetzung eines NN ev. nicht durch VHDL-Kompiler umsetzbar.

2. Wiederholungen zur Syntax von VHDL

69_FPGA/11_VHDL -- einige Angaben zur Syntax von VHDL.

Verwendung von Modulen und Libraries:

69_FPGA/12_UNISIM -- Beispiel zur Verwendung selbst geschriebener Module und von Standardelementen von Xilinx.
...
-- Vier D-FlipFlops instanziieren
--	FLIP3: entity FDCE_instanz
	FLIP3: FDCE
	    port map(D => sig_d(3), C => clock1Hz, CLR => not all_reset, Q => sig_q(3), CE => eins);
	FLIP2: FDCE
	    port map(D => sig_d(2), C => clock1Hz, CLR => not all_reset, Q => sig_q(2), CE => eins);
	FLIP1: FDCE
	    port map(D => sig_d(1), C => clock1Hz, CLR => not all_reset, Q => sig_q(1), CE => eins);
	FLIP0: FDCE
	    port map(D => sig_d(0), C => clock1Hz, CLR => not all_reset, Q => sig_q(0), CE => eins);
...

Code 0-3: Erstes Flipflop referenziert auf ein selbst geschriebenes Modul, die anderen sind Standardelemente der UNISIM-Library.


69_FPGA/13_LUT -- Wiederholung zu LUT4 zur Umsetzung des Bitvergleichers.

3. Übertragung diskretisierte sigmoide Funktion als Lookup-Table auf einen FPGA


68_nexys/06_Sfunction_diskret -- Musterlösung liefert Lookup-Table als Java-Methode (Quelltext).

Übung

Nehmen Sie obige Musterlösung als Ausgangspunkt und schreiben einen VHDL-Quelltextgenerator, der die diskretisierte sigmoide Funktion als Lookup-Table implementiert.

Über die 8 Schalter des nexys video sollen die Zahlen +/-127 eingegeben werden können. Sie dienen als Input für den Lookup-Table. Die 8 LEDs sollen den Ausgabewert des Lookup-Tables anzeigen.

Ergänzen Sie ein Java-Programm, das alle möglichen Input-Output-Paare so darstellt, wie sie auf dem nexys video eingestellt, bzw. angezeigt werden, damit das Ergebnis auf dem nexys leichter auf Korrektheit überprüft werden kann.

Für die Realisierung eines Lookup-Tables mit VHDL unter Verwendung von Integer-Zahlen, orientieren Sie sich bitte wegen der VHDL-Syntax an folgendem Beispiel:


69_FPGA/99_day_by_day_SoSe2018 -- siehe ab "Machbarkeitsstudie: Neuronales Netz mit fünf Neuronen auf Integer-Basis in FPGA: "

TIP: Arbeiten Sie vielleicht nicht gleich an dem "grossen" Projekt, sondern zergliedern Sie es in aufeinander aufbauende Teilaufgaben und machen mehrere VHDL-Projekte draus: 1) Bitmuster der Schalter 1:1 auf LEDs übertragen. 2) Zwischenumwandlung nach Integer. 3) Vorzeichen +/127 am Eingang. 4) schließlich mit zwischen geschaltetem Lookup-Table.


Mittwoch 14.04.2021

Themen:

  • Textbesprechung
  • Musterlösung diskrete sigmoide Funktion
  • Vorbesprechung Vorprojekt und Projekt, sowie seminaristische Aufgabe

Textbesprechung

  • Emulation eines Mikrocontroller-artigen Systems (MicroBlaze, typischerweise kein Betriebssystem, sondern main-loop) für die "globalen Aufgaben".
  • Eingebettetes System ist nur Teil eines Gesamtsystems, anders als PC (no general purpose / no desktop system).
  • Kann besser an Kundenanforderung angepasst werden. Stichwort: hardware accelerator, bestimmte Aufgaben werden von "custum digital circuits" erledigt und nicht durch den Programmcode des emulierten Mikrocontrollers.
  • SoC -- System on Chip (Beispiel: Bildschirmansteuerung, Audiosignalverarbeitung, basiert auf IP-Elementen, insb. Bereitstellung entsprechender Schnittstellen)
  • IP -- intellectual property (Blackbox bestimmter Funktionalität mit vorgegebenen Ein- und Ausgängen, wie z.B. FFT-Modul, Analog-Digital-Wandler, Erzeugung mit Wizard aus primitiven Komponenten des FPGA, kann dann vom Programmierer instanziiert werden.)

Mittwoch 21.04.2021

Themen:

  • Vorbemerkung zum Fortgang des Kurses
  • Textbesprechung
  • Teil-Musterlösung Bitvergleicher auf FPGA (Vorprojekt)
  • Vorbesprechung Projektarbeiten und neues Thema: Fuzzy-Logik und Neuro-Fuzzy
  • Einführung Fuzzy-Logik
  • Literatur zum Lesen: Übersicht zu Neuro-Fuzzy

Textbesprechung

  • Verringerung der Rechengenauigkeit (Fixed-Point vs. Fließkomma) kann Platzverbrauch und Geschwindigkeit Neuronaler Netze signifikant verbessern (beides ca. Faktor 10), ohne Einbußen bei den erzielbaren Ergebnissen.
  • Schnelles Training nützlich, wegen dem Erfordernis die Netztopologie zu variieren.
  • Backpropagation benötigt mindestens 16-bit fixed-point.
  • Varianten für FPGA-Implementierungen: On-Chip-Learning vs. Offline-Learning
  • Chip-Select-Feature für alle Komponenten auf dem FPGA, damit nur die Entitäten arbeiten, die gerade benötigt werden, z.B. nur die Schicht, die gerade propagiert wird.
  • Fixed-point: SIII.F F F F F F F F F F F F (Sign, Integer, Fraction, VIRTUAL decimal point)
  • XOR als klassisches "Spielzeugproblem", wo da nicht linear separierbar.
  • Sigmoide Funktion bedarf eines beachtlichen Rechenbedarfs: 56 Taktzyklen gegenüber 1-20 für Multiplikationen.
  • Sigmoide Funktion 250mal kleiner auf FPGA wenn mit Fixed-point implementiert.

Teillösung Diskretisiertes NN auf FPGA

73_COACH3/09_Algorithmen/03_Evoopt -- vorweg: Wiederholung genetische Optimierung
nnfpga001_FPGAlookupSigmoid.zip
nnfpga002_JAVAlookupSigmoid.zip
nnfpga003_JAVAnetz.zip
nnfpga004_GenOpt.zip
Erklärvideo zu obigen Projekten -- 03_SoSe2021/02_SLE/01_day_by_day/nnfuerfpga.mp4
Übung

Ergänzen Sie die obigen Java-Projekte so, dass bei Null Fehlern ein diskretes NN ausgegeben wird, das in VHDL formuliert ist.

Ergänzende Angaben

Anderer Versuch NN auf FPGA zu bringen: https://www.youtube.com/watch?v=YgA7LKUofyY&t=326s
https://www.youtube.com/watch?v=CoyhAqUS2f0 -- Video 2, erst hier wird das FPGA-System vorgestellt.

Wie macht man das, wenn man eine Entity in einem anderen
VHDL-File definiert:

library xil_defaultLib;
use xil_defaultLib.NAME_DER_ENTITY;

ODER:
ev. geht auch work.NAME_EIGENE_ENTITY


Code 0-4: Ergänzende Angaben

Zwischenstand zur Verwendung der Beispiele von Digilent:

68_nexys/05_Nexys_Video/03_XADC

Mittwoch 28.04.2021

Themen:

  • Abschluss zum diskreten Neuronalen Netz als Bitvergleicher auf einem FPGA
  • Wenn verfügbar: Vergleich der Synthese zwischen modularer und nicht modularer Implementierung
  • Textbesprechung Fuzzy-Logik, Fuzzy-Regler, Neuro-Fuzzy, ev. youtube-video zu NN auf FPGA
  • Einführung zu Fuzzy-Logik und Fuzzy-Regler als Anwendungsfall
62_Regelungssysteme/18_Fuzzy -- Alles zu Fuzzy

Einführung in die Fuzzy-Logik

62_Regelungssysteme/18_Fuzzy
67_Echtzeitsysteme/13_Fuzzy
67_Echtzeitsysteme/13_Fuzzy/03_Uebung9 -- Übung Fuzzy-System

Fuzzy-Regler

67_Echtzeitsysteme/13_Fuzzy/02_FuzzyRegler
62_Regelungssysteme/18_Fuzzy/07_Haengependel/03_FuzzyRegler

Mittwoch 05.05.2021

Themen

  • Fortsetzung der Planung und Vergabe der Projektarbeitsthemen
  • Fundierung der Themen durch "Vorstudien" und ergänzende Theorie zu "Softcomputing"
  • Gruppenarbeit zur Konkretisierung eines Themas mit anschließender Themenpräsentation und gemeinsamer Diskussion
68_nexys/11_Vorstudien

Mittwoch 12.05.2021 -- Start der Projektarbeiten

Themen

  1. Gruppenbildung
  2. Themenerfassung
  3. Abstimmung der Themen
  4. -- Vorbereitung der Themenvorstellungen und Indentifikation der benötigten Materialien in den Gruppen --
  5. Präsentation und Disskussion der Themen durch die Gruppen und Erfassen der benötigten Materialien
  6. Abstimmung des finalen Präsentationstermins
  7. Abstimmen der Ausgabe der Materialien
  8. Start der Projektarbeit