Forum: FPGA, VHDL & Co. Verbinden Xilinx Zynq 7000 mit einem externen µC


von Andre (Gast)


Lesenswert?

Hallo,

meine Frage zielt auf die Möglichkeiten ab, wie man z. B. eine einen 
Raspberry Pi mit einem Zynq-7000 hardwareseitig verbinden könnte?

Der erste Gedanke, der mir gekommen ist, ist die SPI Schnittstelle des 
RaspberryPI zu nutzen und diese mit einem Shared-Memory auf dem Zynq zu 
verbinden.

Die Kette würde wie folgt aussehen:
Raspberry Pi [Arm A72] <->
Raspberry Pi [SPI]     <->
Zynq[SPI]              <->
Zynq[Shard-Mem]        <->
Zynq[Arm A9]

Wäre dieser Ansatz ein gangbarer Weg und was gäbe es noch für 
Möglichkeiten?

Vielen dank im Voraus

Andre

von Gustl B. (-gb-)


Lesenswert?

Andre schrieb:
> hardwareseitig verbinden könnte?

Ein Draht!

Was soll die Verbindung denn können? Datenrate? Master-Slave oder 
Master-Master? Ist die Anzahl der Pins die verwendet werden dürfen 
begrenzt?, ...

von Karla Kastrada - Würstchenversand (Gast)


Lesenswert?


von Duke Scarring (Gast)


Lesenswert?

Andre schrieb:
> Wäre dieser Ansatz ein gangbarer Weg
Ja.

> und was gäbe es noch für
> Möglichkeiten?
Ethernet? I2C? GPIO?

> Shared-Memory auf dem Zynq
Warum brauchst Du einen extra Raspberry?
Reicht dir der 666 MHz Core auf dem Zynq nicht?

Duke

von Andre (Gast)


Lesenswert?

Danke für die Antworten.

Karla Kastrada - Würstchenversand schrieb:
> Zynqberry!
>
> 
https://shop.trenz-electronic.de/de/TE0726-03M-ZynqBerry-Modul-mit-Xilinx-Zynq-7010-in-Raspberry-Pi-Formfaktor

Das Board habe ich auch gesehen.
Es geht darum, die Performance eine Raspberry PI 4 mit einem kleinen 
FPGA zu versehen.
Natürlich könnten man auch einen Zynq UltraScale+ MPSoC, dann hätte man 
alles in einem, der sind jedoch zu teuer.

Duke Scarring schrieb:
>> und was gäbe es noch für
>> Möglichkeiten?
> Ethernet? I2C? GPIO?

Bei den Daten die ausgetauscht werden sollen ist ein Shard-Mem wohl am 
attraktivsten.

>> Shared-Memory auf dem Zynq
> Warum brauchst Du einen extra Raspberry?
> Reicht dir der 666 MHz Core auf dem Zynq nicht?

Leider nein, ich würde gerne den Real-Time Anteil der Anwendung auf den 
Zynq auslagern und ein Linux auf dem Raspberry laufen lassen, was nicht 
auf die geringe Latenz angewiesen ist.

Es gibt natürlich Ansätze wie OpenAMP, Xenomai oder eine 
Virtualisierung-Plattform verwenden.
Der Grundgedanke ist jedoch: Wenn man sowieso einen FPGA benötigt, kann 
man auch einen mit einem Hardcore CPU nehmen.

Andre

von Samuel C. (neoexacun)


Lesenswert?

Raspis sollten ein Secondary Memory Interface (SMI) besitzen. Was das so 
alles kann und ob es Spaß macht, damit zu arbeiten weiß ich allerdings 
nicht.

https://iosoft.blog/2020/07/16/raspberry-pi-smi/

von Duke Scarring (Gast)


Lesenswert?

Andre schrieb:
> Leider nein, ich würde gerne den Real-Time Anteil der Anwendung auf den
> Zynq auslagern und ein Linux auf dem Raspberry laufen lassen, was nicht
> auf die geringe Latenz angewiesen ist.
Ein Zynq besteht aus einem FPGA (PL) + einem Dual-Core ARM (PS). Man 
kann Linux auch auf nur einem Kern beschränken und nimmt den zweiten für 
seine Realtime-Applikation.
Ich kenne den Umfang deiner Problemstellung nicht, aber ich würde 
versuchen die Realtimegeschichte komplett in Hardware (FPGA/PL) zu 
realisieren.

Duke

von C. A. Rotwang (Gast)


Lesenswert?

Andre schrieb:
>>> Shared-Memory auf dem Zynq
>> Warum brauchst Du einen extra Raspberry?
>> Reicht dir der 666 MHz Core auf dem Zynq nicht?
>
> Leider nein, ich würde gerne den Real-Time Anteil der Anwendung auf den
> Zynq auslagern und ein Linux auf dem Raspberry laufen lassen, was nicht
> auf die geringe Latenz angewiesen ist.

Linux kriegste auch für dem Zynq-Arm von Xilinx (geschenkt?):
https://www.xilinx.com/support/documentation-navigation/design-hubs/dh0016-petalinux-tools-hub.html

> Natürlich könnten man auch einen Zynq UltraScale+ MPSoC, dann hätte man
> alles in einem, der sind jedoch zu teuer.

Naja der Ultrascale sind ja auch 5(?) Hardcore prozessoren, sicher das 
es nicht mit dem Dual-Hardcore vom 'normalen' Zync passt.

Da gibt es diverse boards bspw. das Zybo, das man gebraucht im 
zweistelligen Bereich bekommt. Oder als Student neu für 160€ 
https://shop.trenz-electronic.de/de/29306-Zybo-Z7-10-akademisch-Zynq-7000-ARM/FPGA-SoC-Plattform-SDSoC-Voucher?c=119


Es gibt auch noch preiswertere Zynq-boards wie
https://shop.trenz-electronic.de/de/29167-Cora-Z7-10-Zynq-7000-Dual-Core-for-ARM/FPGA-SoC-Development?c=119

oder single core:
https://shop.trenz-electronic.de/de/29168-Cora-Z7-07S-Zynq-7000-Single-Core-for-ARM/FPGA-SoC-Development?c=119


Es müßen nicht die 400+ für ein simples ultrascale sein: 
https://shop.trenz-electronic.de/de/TE0821-01-3BE21FA-MPSoC-Modul-mit-Xilinx-Zynq-UltraScale-ZU3EG-1-2-GByte-DDR4-SDRAM-4-x-5-cm

von Andre (Gast)


Lesenswert?

Samuel C. schrieb:
> Raspis sollten ein Secondary Memory Interface (SMI) besitzen. Was
> das so
> alles kann und ob es Spaß macht, damit zu arbeiten weiß ich allerdings
> nicht.
>
> https://iosoft.blog/2020/07/16/raspberry-pi-smi/

Danke für den Beitrag:
Es wäre auf jeden Fall eine weitere Möglichkeit Peripherie mit dem 
Raspberry PI 4 zu verbinden.
Der Autor des Artikels war nicht zufrieden mit den "ADC speed tests".
Vlt. findet man deswegen nicht so viel über den SMI, weil die 
Daten-Raten mit anderen Schnittstellen schneller sind.

von Andre (Gast)


Lesenswert?

Duke Scarring schrieb:
> Ein Zynq besteht aus einem FPGA (PL) + einem Dual-Core ARM (PS). Man
> kann Linux auch auf nur einem Kern beschränken und nimmt den zweiten für
> seine Realtime-Applikation.
> Ich kenne den Umfang deiner Problemstellung nicht, aber ich würde
> versuchen die Realtimegeschichte komplett in Hardware (FPGA/PL) zu
> realisieren.

Die Tests sind bereits mit OpenAMP gemacht worden (Petalinux+OpenAMP).
Der Punkte ist eher die Haupt-CPU. Der Zynq 7000 ist ein ARM A9 
Dual-Core und läuft je nach Ausprägung um die 700 MHz.
Der Raspberry Pi 4 Mod B ist ein A72 Quad-Core mit 1,5 GHz verbaut.
Bei den Perfomance-Messungen war ca. ein 10 facher Unterschied zwischen 
den CPUs zu sehen.

Andre

von Christoph Z. (christophz)


Lesenswert?

Andre schrieb:
> Es geht darum, die Performance eine Raspberry PI 4 mit einem kleinen
> FPGA zu versehen.

Jetzt gilt ein Zynq schon als kleiner FPGA. Ich werde alt :-)

Dein Ansatz mit SPI ist recht OK, solange die Datenmenge zwischen beiden 
Systemen eher klein bleibt. Vielleicht reicht für eure Zwecke ja 
wirklich was kleines, wie z. B. die hier: 
https://www.bugblat.com/products/pif/index.html

von Andre (Gast)


Lesenswert?

Danke für die Vorschläge:

C. A. Rotwang schrieb:
> Andre schrieb:
>>>> Shared-Memory auf dem Zynq
>>> Warum brauchst Du einen extra Raspberry?
>>> Reicht dir der 666 MHz Core auf dem Zynq nicht?
>>
>> Leider nein, ich würde gerne den Real-Time Anteil der Anwendung auf den
>> Zynq auslagern und ein Linux auf dem Raspberry laufen lassen, was nicht
>> auf die geringe Latenz angewiesen ist.
>
> Linux kriegste auch für dem Zynq-Arm von Xilinx (geschenkt?):
> 
https://www.xilinx.com/support/documentation-navigation/design-hubs/dh0016-petalinux-tools-hub.html
>
Bei dem Zyny Dual-Core hätte man einen Core mit OpenAMP abspalten 
müssen.
Dann hätte das Petalinux/Applikation noch einen Core zur Verfügung, und 
aus Perfomance-Gründen, wäre das zu wenig.

Den Ansatz habe ich auch verfolgt.

>> Natürlich könnten man auch einen Zynq UltraScale+ MPSoC, dann hätte man
>> alles in einem, der sind jedoch zu teuer.
>
> Naja der Ultrascale sind ja auch 5(?) Hardcore prozessoren, sicher das
> es nicht mit dem Dual-Hardcore vom 'normalen' Zync passt.
>

Kommt auf die Ausprägung an:
Zynq UltraScale+ CG:
Dual-core Cortex-A53 ,dual-core Cortex-R5 real-time processing unit

Zynq UltraScale+ EG:
quad-core Cortex-A53 ,dual-core Cortex-R5 real-time processors unit

https://www.xilinx.com/products/silicon-devices/soc/zynq-ultrascale-mpsoc.html

> Da gibt es diverse boards bspw. das Zybo, das man gebraucht im
> zweistelligen Bereich bekommt. Oder als Student neu für 160€
> 
https://shop.trenz-electronic.de/de/29306-Zybo-Z7-10-akademisch-Zynq-7000-ARM/FPGA-SoC-Plattform-SDSoC-Voucher?c=119
>
> Es gibt auch noch preiswertere Zynq-boards wie
> 
https://shop.trenz-electronic.de/de/29167-Cora-Z7-10-Zynq-7000-Dual-Core-for-ARM/FPGA-SoC-Development?c=119
>
> oder single core:
> 
https://shop.trenz-electronic.de/de/29168-Cora-Z7-07S-Zynq-7000-Single-Core-for-ARM/FPGA-SoC-Development?c=119
>
Die Single-Core Variante als Zusatz-Modul für den Raspberry PI, ist eine 
echte Alternative. Hierbei würde man Kosten, APU Performce und Latenz 
unter einen Hut bekommen. Man darf halt die Entwicklungskosten nicht 
außer Acht lassen.

> Es müßen nicht die 400+ für ein simples ultrascale sein:
> 
https://shop.trenz-electronic.de/de/TE0821-01-3BE21FA-MPSoC-Modul-mit-Xilinx-Zynq-UltraScale-ZU3EG-1-2-GByte-DDR4-SDRAM-4-x-5-cm

Diese Boards kann ich noch empfehlen:

https://www.mouser.de/ProductDetail/MYIR/MYS-7Z020-C?qs=lc2O%252BfHJPVYdzkYnNC69%2FQ%3D%3D

https://www.xilinx.com/products/boards-and-kits/1-vad4rl.html


Andre

von Andre (Gast)


Lesenswert?

Christoph Z. schrieb:
> Andre schrieb:
>> Es geht darum, die Performance eine Raspberry PI 4 mit einem kleinen
>> FPGA zu versehen.
>
> Jetzt gilt ein Zynq schon als kleiner FPGA. Ich werde alt :-)

Klein im Sinne der Zynq Famile ;)

https://www.xilinx.com/support/documentation/data_sheets/ds190-Zynq-7000-Overview.pdf


> Dein Ansatz mit SPI ist recht OK, solange die Datenmenge zwischen beiden
> Systemen eher klein bleibt. Vielleicht reicht für eure Zwecke ja
> wirklich was kleines, wie z. B. die hier:
> https://www.bugblat.com/products/pif/index.html

Genau, das muss noch ermittelt werden, wie viele Ressourcen die 
Funktionalitäten auf dem FPGA brauchen.

Andre

von Karla Kastrada - Würstchenversand (Gast) (Gast)


Lesenswert?

Andre schrieb:
> Der Raspberry Pi 4 Mod B ist ein A72 Quad-Core mit 1,5 GHz verbaut.
> Bei den Perfomance-Messungen war ca. ein 10 facher Unterschied zwischen
> den CPUs zu sehen.

Das hätte man aber gleich in den Eröffnungsartikel schreiben sollen, 
weil ein Raspi hätte auch Model 1 mit 700 MHz Single core sein können, 
das mit Wald7Wiesen benchmarks sehr wohl in der Leistungsklasse eines 
Zynq-ARM spielt.

Ferner ist es immer die Frage, welche Leistung das Linux überhaupt 
braucht und ob es nicht eher die RAM-Ausstattung ist (Raspi von 256k bis 
2-8 GB), die Linux  ausbremst.

Und was der ARM nicht an (Rechen-)Performance bringt kann man oft durch 
den FPGA-teil ersetzen, weil der ist extra zum number crunchen 
optimierbar.

von Andre (Gast)


Lesenswert?

Karla Kastrada - Würstchenversand (Gast) schrieb:
> Andre schrieb:
>> Der Raspberry Pi 4 Mod B ist ein A72 Quad-Core mit 1,5 GHz verbaut.
>> Bei den Perfomance-Messungen war ca. ein 10 facher Unterschied zwischen
>> den CPUs zu sehen.
>
> Das hätte man aber gleich in den Eröffnungsartikel schreiben sollen,
> weil ein Raspi hätte auch Model 1 mit 700 MHz Single core sein können,
> das mit Wald7Wiesen benchmarks sehr wohl in der Leistungsklasse eines
> Zynq-ARM spielt.
>
Stimmt, hätte ich in den Eröffungspost schreiben sollen.
Der Kernpunkt des Post war jedoch die Frage nach den 
Anbindungsmöglichkeiten, die natürlich vom RPI4 Mod B Board abhängen.

> Und was der ARM nicht an (Rechen-)Performance bringt kann man oft durch
> den FPGA-teil ersetzen, weil der ist extra zum number crunchen
> optimierbar.
Genau!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.