Auparavant, le code source produit par le générateur de réseau neuronal publié dans "J'ai créé un générateur de réseau neuronal fonctionnant sur FPGA" est le FPGA Atlas-SoC réel. J'ai essayé de l'exécuter avec (DE0-Nano-SoC).
Le référentiel est ici https://github.com/kotauchisunsun/DE0_NN
Affero GPL v3
Le commutateur DE0-Nano-Soc est entré et la LED est sortie pour se comporter comme un réseau neuronal. Lorsque le commutateur est activé, 1 est attribué et lorsqu'il est désactivé, 0 est attribué.
Entrez SW [0] 1 Entrez SW [1] 2 SW [2] à la sortie du réseau neuronal supérieur gauche et au coefficient de pondération du réseau neuronal supérieur droit SW [3] à la sortie du réseau de neurones en bas à gauche et au coefficient de poids du réseau de neurones en haut à droite
Il est attribué à. Aussi,
Lorsque le réseau neuronal en haut à droite s'allume, la LED [0] s'allume. La LED [1] s'allume lorsque le réseau neuronal inférieur droit s'allume
C'est une fonction comme ça.
Ce travail n'a pas besoin d'être copié à partir du référentiel ci-dessus.
Utilisez le générateur de réseau neuronal utilisé dans "J'ai créé un générateur de réseau neuronal fonctionnant sur FPGA".
https://github.com/kotauchisunsun/NN_FPGA
Sera cloné.
$ 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
Cela générera un fichier appelé generate.v et un module appelé NN_NL_016_0002_0002_NL_016_0002_0002 pour le réseau neuronal principal.
Atlas-SoC et DE0-Nano-SoC sont les mêmes en termes de matériel, seul le firmware est différent. Par conséquent, vous pouvez changer DE0-Nano-SoC et Atlas-Soc en réécrivant le firmware avec la carte SD. Cette fois, nous utiliserons les données appelées SystemCD de DE0-Nano-SoC liées ci-dessous.
http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=205&No=941&PartNo=4#soc
Décompressez le fichier que vous avez téléchargé précédemment et
DE0-Nano_SoC_v.1.0.9_SystemCD\Demonstrations\SoC_FPGA\my_first_hps-fpga_base
Copiez et utilisez my_first_hps-fpga_base.
Ajoutez le référentiel précédent https://github.com/kotauchisunsun/DE0_NN ou le generate.v généré au projet.
Je n'expliquerai pas comment l'ajouter en détail, mais vous pouvez l'ajouter depuis [Projet] -> [Ajouter le fichier actuel au projet] dans la barre de menu.
Après cela, modifiez ghrd.v dans le projet. C'est un peu spécial, copiez le contenu de diff_ghrd.v dans le référentiel avant ** 271 ligne de ghrd.v et end module **.
(La raison pour laquelle il est écrit de manière détournée est que la licence de ghrd.v elle-même n'est pas bien comprise, donc si vous la placez dans le référentiel, des problèmes peuvent survenir.)
Après cela, compilez-le et gravez-le sur DE0-Nano-SoC avec Programmer.
Fonctionnant actuellement sur DE0-Nano-SoC
J'ai préparé un cas de test parce que je ne pense pas pouvoir le comprendre tant que je ne l'ai pas déplacé. Si vous essayez ces derniers, vous pouvez voir comment le réseau neuronal fonctionne réellement.
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 |
(Remarques) Lorsque SW [2] = on SW [3] = on, vous pouvez voir que la LED [0] et la LED [1] sont les sorties OU de SW [0] et SW [1].
DE0 en utilisant le générateur de réseau neuronal (ou le code généré à partir de celui-ci) créé dans "J'ai créé un générateur de réseau neuronal fonctionnant sur FPGA" -Nous avons créé un réseau neuronal qui fonctionne avec le Nano-SoC (Atlas-SoC) et confirmé qu'il fonctionne réellement.