Die Verwendung des vorhandenen Overlays scheint in anderen Artikeln eingeführt worden zu sein. Überspringen Sie es also und fahren Sie mit dem nächsten fort. Dieses Mal werde ich meine eigene Überlagerung als Fortsetzung von [Letztes Mal] erstellen (https://qiita.com/lobmto/items/8f97872fc0f1927035a2). Erstellen Sie eine Überlagerung von "c = a + b" unter Bezugnahme auf dieses Video ~~ pack ~~.
Der Logikschaltungsteil von PYNQ-Z1 kann von einem Programm aus wie eine Bibliothek (?) Behandelt werden. Weitere Informationen finden Sie unter Offiziell.
Der Download allein beträgt 10 GB und nach Abschluss fast 50 GB. Sie sollten also mit ausreichend Zeit und Speicherplatz daran arbeiten. Dieses Mal habe ich Webpack (kostenlose Version) verwendet.
Versuchen wir hier eine Schaltung, die gemäß dem Tutorial nur "c = a + b" ausführt.
Bereiten Sie zunächst eine Schaltung vor, die nur das FPGA hinzufügt.
Add Remove Files (1st)
in TopFunction add ein, um NewFile-> adder.cpp zu erstellenSolution Configuration
erreichen, suchen Sie und wählen Sie Part Selection-> xc7z020clg400-1
Sobald ein neues Projekt erstellt wurde, wird es implementiert.
adder.cpp
void add(int a, int b, int& c) {
#pragma HLS INTERFACE ap_ctrl_none port=return
#pragma HLS INTERFACE s_axilite port=a
#pragma HLS INTERFACE s_axilite port=b
#pragma HLS INTERFACE s_axilite port=c
c = a + b;
}
Drücken Sie den "grünen Pfeil" oben links im Bild unten. Wenn alles gut geht, sollten Sie einen Bildschirm wie diesen sehen.
Die folgenden Dateien werden unter der Registerkarte Explorer unter solution-> impl-> misc-> drivers-> add_v1_0-> src-> xadd_hw.h generiert. Wenn Sie sich das ansehen, sehen Sie die Entsprechungstabelle zwischen Variablen und Adressen.
Variable | Adresse |
---|---|
a | 0x10 |
b | 0x18 |
c | 0x20 |
Dies ist rechts neben dem "grünen Pfeil"![Image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382909/68a02ee2-8fda-1a21 -b767-839ce80ccd4b.png) und drücken Sie "OK".
Konfigurieren Sie Overlay mit dem zuvor erstellten Addierer
Da die Informationen von PYNQ-Z1 nicht im Vivado-Webpaket registriert sind, laden Sie die Daten von [hier] herunter (https://github.com/cathalmccabe/pynq-z1_board_files/blob/master/pynq-z1.zip). Ich benutzte es. Entpacken Sie diese und kopieren Sie sie nach C: \ Xilinx \ Vivado \ 2019.2 \ data \boards \ board_files
usw.
Default Part
-> Board
-> PYNQ-Z1
.Wir werden weiter an Vivado arbeiten.
Run Block Automation
-> OK
Sources
-> design_1
-> Create HDL Wrapper
-> OK
![Image.png](https: // qiita-image-store. s3.ap-northeast-1.amazonaws.com/0/382909/d7dd5a93-4a5a-1a3f-5412-d1cf83d8c2f8.png)PROGRAM AND DEBUG
-> Generate Bitstream
-> Yes
-> OK
.File
-> Export
-> Export Block Design
-> OK
Nachdem Sie eine Reihe von Dateien erstellt haben, kopieren Sie diese nach PYNQ-Z1 und führen Sie sie aus.
Kopieren Sie die folgenden zwei Dateien in den Projektordner.
Benennen Sie sie zum leichteren Verständnis in "adder.bit", "adder.hwh" und "adder.tcl" um.
Geben Sie im URL-Teil des Explorers \\ pynq
ein, um den internen Ordner zu manipulieren. Sowohl ID als auch Passwort sind "xilinx".
Erstellen Sie ein neues Verzeichnis "adder" in "Network / pynq / xylinx / pynq / overlay" und kopieren Sie "adder.bit", "adder.hwh" und "adder.tcl".
Greifen Sie auf [http: // pynq: 9090](http: // pynq: 9090) zu und melden Sie sich bei jupyter an (ID / Passwort ist xylinx). Erstellen Sie nach dem Verbinden eine neue Python3-Notiz aus "Neu" auf dem Startbildschirm und öffnen Sie sie.
Folgen Sie dann dem Offiziellen.
Zuerst lesen.
In[1]
from pynq import Overlay
overlay = Overlay('/home/xilinx/pynq/overlays/adder/adder.bit')
In den nächsten beiden wird jede Verwendung im Text angezeigt.
In[2]
overlay?
In[3]
add_ip = overlay.add_0
add_ip?
Berechnen wir "4 + 5".
In[4]
add_ip.write(0x10, 4)
add_ip.write(0x18, 5)
add_ip.read(0x20) #Wird als 9 ausgegeben
Das ist das gleiche.
In[5]
add_ip.register_map.a = 3
add_ip.register_map.b = 4
add_ip.register_map.c
Es hat vorerst funktioniert. Das nächste Mal möchte ich das Array durch parallele Verarbeitung beschleunigen.