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
|
Video: Mit Vivado ein VHDL-Projekt erstellen und auf den nexys video übertragen
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
|
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
| 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.
|
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
|
Mittwoch 21.04.2021
Themen:
|
Textbesprechung
|
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
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:
|
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
|
68_nexys/11_Vorstudien
Mittwoch 12.05.2021 -- Start der Projektarbeiten
Themen
|