Zuvor war der Quellcode, der vom Generator für neuronale Netze ausgegeben wurde, der in "Ich habe einen Generator für neuronale Netze erstellt, der auf FPGA läuft" veröffentlicht wurde, der eigentliche FPGA-Atlas-SoC. Ich habe versucht, es mit (DE0-Nano-SoC) auszuführen.
Das Repository ist hier https://github.com/kotauchisunsun/DE0_NN
Affero GPL v3
Der DE0-Nano-Soc-Schalter wird eingegeben und die LED wird ausgegeben, um sich wie ein neuronales Netzwerk zu verhalten. Wenn der Schalter eingeschaltet ist, wird 1 zugewiesen, und wenn er ausgeschaltet ist, wird 0 zugewiesen.
Geben Sie SW [0] 1 ein Geben Sie SW [1] 2 ein SW [2] zum Ausgang des oberen linken neuronalen Netzwerks und zum Gewichtungskoeffizienten des oberen rechten neuronalen Netzwerks SW [3] zum Ausgang des neuronalen Netzwerks unten links und zum Gewichtungskoeffizienten des neuronalen Netzwerks oben rechts
Es ist zugeordnet. Ebenfalls,
Wenn sich das neuronale Netzwerk oben rechts entzündet, leuchtet die LED [0] auf. LED [1] leuchtet auf, wenn sich das untere rechte neuronale Netzwerk entzündet
Es ist eine solche Funktion.
Diese Arbeit muss nicht aus dem obigen Repository kopiert werden.
Verwenden Sie den in "Ich habe einen Generator für neuronale Netze erstellt, der auf FPGA ausgeführt wird" verwendeten neuronalen Netzwerkgenerator.
https://github.com/kotauchisunsun/NN_FPGA
Wird geklont.
$ cd NN_FPGA
$ python script/main.py 16 2 2 2
> NN_NL_016_0002_0002_NL_016_0002_0002
> saved to generate.v
> None
Dies erzeugte eine Datei mit dem Namen generate.v und ein Modul mit dem Namen NN_NL_016_0002_0002_NL_016_0002_0002, das das Hauptmodul für neuronale Netze ist.
Atlas-SoC und DE0-Nano-SoC sind hinsichtlich der Hardware gleich, nur die Firmware unterscheidet sich. Daher können Sie DE0-Nano-SoC und Atlas-Soc ändern, indem Sie die Firmware mit der SD-Karte neu schreiben. Dieses Mal werden wir die unten verlinkten Daten mit der Bezeichnung SystemCD von DE0-Nano-SoC verwenden.
http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=205&No=941&PartNo=4#soc
Entpacken Sie die zuvor heruntergeladene Datei und
DE0-Nano_SoC_v.1.0.9_SystemCD\Demonstrations\SoC_FPGA\my_first_hps-fpga_base
Kopieren Sie my_first_hps-fpga_base und verwenden Sie sie.
Fügen Sie das vorherige Repository https://github.com/kotauchisunsun/DE0_NN oder die generierte generate.v zum Projekt hinzu.
Ich werde nicht im Detail erklären, wie man es hinzufügt, aber Sie können es über [Projekt] -> [Aktuelle Datei zum Projekt hinzufügen] in der Menüleiste hinzufügen.
Bearbeiten Sie danach ghrd.v im Projekt. Dies ist etwas Besonderes. Kopieren Sie den Inhalt von diff_ghrd.v in das Repository vor der Zeile ** 271 von ghrd.v und dem Endmodul **.
(Der Grund, warum es auf Umwegen geschrieben ist, ist, dass die Lizenz von ghrd.v selbst nicht gut verstanden wird. Wenn Sie sie also in das Repository stellen, können Probleme auftreten.)
Kompilieren Sie es anschließend und brennen Sie es mit Programmer auf DE0-Nano-SoC.
Tatsächlich mit DE0-Nano-SoC
Ich habe einen Testfall vorbereitet, weil ich nicht glaube, dass ich ihn verstehen kann, bis ich ihn tatsächlich verschiebe. Wenn Sie diese ausprobieren, können Sie sehen, wie das neuronale Netz tatsächlich läuft.
SW[0] | SW[1] | SW[2] | SW[3] | LED[0] | LED[1] |
---|---|---|---|---|---|
off | off | off | off | off | off |
on | off | off | off | off | on |
off | on | off | off | off | on |
on | on | off | off | off | on |
on | off | off | on | on | on |
off | off | off | on | off | off |
off | off | on | on | off | off |
(Anmerkungen) Wenn SW [2] = Ein SW [3] = Ein, können Sie sehen, dass LED [0] und LED [1] ODER-Ausgänge von SW [0] und SW [1] sind.
DE0 unter Verwendung des neuronalen Netzwerkgenerators (oder des daraus generierten Codes), der in "Ich habe einen neuronalen Netzwerkgenerator erstellt, der auf FPGA ausgeführt wird" erstellt wurde. - Wir haben ein neuronales Netzwerk erstellt, das mit Nano-SoC (Atlas-SoC) funktioniert, und bestätigt, dass es tatsächlich funktioniert.
Recommended Posts