Forum: FPGA, VHDL & Co. Alles AXI oder was?


von Michael W. (Gast)


Lesenswert?

Xilnx scheint sich komplett auch Zynq und AXI einzuschießen, habe ich 
den Eindruck. Selbst die kleinsten Schaltungsfunktionen werden auf Busse 
gestopft und zentral verarbeitet. Macht das Sinn? Ich habe mir mal 
angesehen, welche Verzögerungen auf dem AXI-Interface entstehen und wie 
lange es dauert, bis man nach einer Buszuteilung ein Datum von einem 
Slave erfragen kann. Da vergehen schon mal 10 - 15 Takte, bis das Datum 
eingesammelt ist. Besonders bei hohen Bandbreiten und Informatinsdichten 
ist das meines Erachtens eine gewaltige Systembremse. Die 
Haupteigenschaft von FPGAs, echt parallel zu arbeiten und von einem 
Punkt ein IF anzusprechen, während ein anderer Punkt ein ganz anderes IF 
mit ganz anderer Bandbreite abfrühstückt, wird verschenkt!

Das Ergebnis der Problematik: Designs mit 4 AXI-Bussen, 6 AXI-Mastern 
und 24 AXI-Slaves und einem Umfang, der ein 70 Euro-FPGA erfordert, 
statt ein kleines FPGA für ein Drittel.

Ist da nicht auch viel Strategie der Herstellers dabei?

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

> Das Ergebnis der Problematik: Designs mit 4 AXI-Bussen, 6 AXI-Mastern
> und 24 AXI-Slaves und einem Umfang, der ein 70 Euro-FPGA erfordert,
> statt ein kleines FPGA für ein Drittel.
>
> Ist da nicht auch viel Strategie der Herstellers dabei?

Irgendwie müssen die ihre großen Bausteine vollbekommen.

Was noch hinzukommt. Ich weiß nicht wie man einen einfachen AXI Slave 
selber schreibt. Und man ist wieder Abhänging vom Hersteller.

von mhm (Gast)


Lesenswert?

Markus W. schrieb:
> Xilnx scheint sich komplett auch Zynq und AXI einzuschießen, habe
> ich
> den Eindruck. Selbst die kleinsten Schaltungsfunktionen werden auf Busse
> gestopft und zentral verarbeitet. Macht das Sinn? Ich habe mir mal
> angesehen, welche Verzögerungen auf dem AXI-Interface entstehen und wie
> lange es dauert, bis man nach einer Buszuteilung ein Datum von einem
> Slave erfragen kann. Da vergehen schon mal 10 - 15 Takte, bis das Datum
> eingesammelt ist. Besonders bei hohen Bandbreiten und Informatinsdichten
> ist das meines Erachtens eine gewaltige Systembremse.
Nun, in der Regel verarbeitet ein FPGA riesige Datenströme 
unidirektional, also zum Beispiel von PCIe in einen DDR3-RAM, dafür 
viele Daten parallel und das ganze sehr schnell. Wenn du ständig die 
Richtung umschaltest bedeutet das in der Regel sowieso einen erheblichen 
Performance-Verlust, was die Datenrate angeht, da solche Datenpfade 
massiv gepipelined sind, um die Datenraten zu erreichen. Wenn du nun 
ständig die Richtung änderst, musst du erstmal die eine Pipeline leeren 
und dann die andere wieder füllen. Das macht alles Latenz, die sich in 
der bidirektionalen Datenrate dann negativ auswirkt. Insofern also nicht 
wirklich verwunderlich, dass AXI4 da auch nur mit Wasser kocht.
Zudem gibt es noch AXI4-Lite, was eine abgespeckte Version von AXI4 
darstellt und gerade für Slaves gedacht ist, die keine besonderen 
Anforderungen an Datenrate, sondern vielleicht eher an Latenz haben. 
Wenn du also einen GPIO-Slave oder sowas hast, dann kann man da auch 
durchaus AXI4-Lite verwenden. Wobei ich hier keine genauen Messungen 
gemacht habe, was Latenzen angeht.

> Die Haupteigenschaft von FPGAs, echt parallel zu arbeiten und von einem
> Punkt ein IF anzusprechen, während ein anderer Punkt ein ganz anderes IF
> mit ganz anderer Bandbreite abfrühstückt, wird verschenkt!
Nun, in der Regel will man das Verhalten gar nicht wirklich haben, 
sondern es gibt eine zentrale Kontrollinstanz (sei es ein Prozessor oder 
eine Statemachine), die irgendwo Register setzt und dann die 
Peripherieblöcke arbeiten lässt. Will man so ein Verhalten dennoch 
haben, dann hat man auch mit anderen Bussen mehrere getrennte Instanzen 
des Busses. Insofern verstehe ich hier nicht ganz, was genau AXI da 
schlimmer als andere macht.

> Das Ergebnis der Problematik: Designs mit 4 AXI-Bussen, 6 AXI-Mastern
> und 24 AXI-Slaves und einem Umfang, der ein 70 Euro-FPGA erfordert,
> statt ein kleines FPGA für ein Drittel.
Wenn du in dem Design 6 Master und 25 Slaves hast, dann hast du ja wohl 
eine Architektur umgesetzt, bei der zentral Dinge gesteuert werden. Wie 
willst du das anders lösen, als mit Bussen und eventuell sogar mehreren 
Instanzen eines bestimmten Bus-Typs? Und wie gesagt, für Peripherien, 
welche keine Anforderungen an Datenraten haben: AXI4-Lite! Da gibt es 
dann auch eine AXI2APB-Bridge und APB ist im Prinzip Wishbone, nach 
einer handvoll Gattern und ein paar anderen Signalnamen...

> Ist da nicht auch viel Strategie der Herstellers dabei?
Da ist vermutlich auch ein wenig was dran, wobei mir ein solch 
allgemeiner Bus, der dann überall verwendet wird deutlich lieber ist, 
als ein System, bei welchem jede Peripherie ihre eigene 
Frickel-Schnittstelle hat.

René D. schrieb:
> Was noch hinzukommt. Ich weiß nicht wie man einen einfachen AXI Slave
> selber schreibt. Und man ist wieder Abhänging vom Hersteller.

Also erstmal ist AXI keine Erfindung von Xilinx, sondern von ARM als 
Teil der AMBA Spezifikation. Und da auch andere namhafte Hersteller ihre 
FPGA SoCs auf ARM-Cores aufbauen bist du hier also nicht abhängig von 
nur einem Hersteller. Vielleicht, wenn du die IP-Cores des jeweiligen 
Hersteller verwendest, aber dann bist du sowieso bereits von dem 
Hersteller abhängig. Weiterhin ist es durchaus möglich sich einen 
AXI-Slave selbst zu bauen, zumindest einen AXI4-Lite. Dazu gibts auch 
Doku im Internet, einfach mal Google fragen. Und falls das zu schwer 
sein sollte, kann man sich auch wie gehabt einfach Wishbone-Slaves bauen 
und dann die - zugegebenermaßen ein wenig übertriebene - Kette von 
AXI4-Lite über APB nach Wishbone verwenden. Also alles halb so schlimm.

von AXI-Neuling (Gast)


Lesenswert?

Interessant! Ich dachte bisher, der AXI sei ein einfacer Prozessorbus, 
an den man wie ein RAM ansdocken und alles anschließen kann.

von Falk B. (falk)


Lesenswert?

AXI ist KEIN Bus!!!

von Klakx (Gast)


Lesenswert?

Mit der Bezeichnung AXI ist es nicht getan. Besonders wenn man sich noch 
AXI Stream Standard sich angeschaut. Diese Verbindung ist klein und 
wahnsinnig simpel, aber standardisiert.
Einen memory mapped AXI 4 slave zu bauen ist nicht ohne. Als ip Anbieter 
mMn notwendig, ansonsten aber oft vermeidbar.

von AXI-Neuling (Gast)


Lesenswert?

Falk B. schrieb:
> AXI ist KEIN Bus!!!

Sondern?

von Mh. M. (mhm)


Lesenswert?

AXI-Neuling schrieb:
> Falk B. schrieb:
>> AXI ist KEIN Bus!!!
>
> Sondern?

Eine Punkt-zu-Punkt Verbindung. Man kann also lediglich zwei Teilnehmer 
miteinander direkt verbinden. In einem System mit mehreren Teilnehmern 
wird das so gelöst, dass es spezielle Interconnects gibt, welche dann 
als Mux fungieren.
Hin und wieder (wie auch von mir in meinem Beitrag oben) wird ein 
solches AXI System mit Interconnects inkorrekterweise als Bussystem 
bezeichnet, da es dann ähnliche Aufgaben wie ein echter Bus erfüllen 
kann.

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Ich war mal auf einer Schulung zur exteren Speicheranbindung.
Da gab es eine möglichkeit den Speicher mit einem rudimentären Bus 
anzuschließen oder mit einem AXI interface. Das AXI Interfache brauchte 
noch mal einen deutliche Resourcenverbrauch. Seit dem habe ich AXI nicht 
mehr angeschaut.

Als Punkt zu Punktverbindung habe ich Fifos in meinen Design bzw. melde 
mit einem busy flag Stau als flow control und das funktioniert super.
Leider kein Standard.

von Bitwurschtler (Gast)


Lesenswert?

Mh. M. schrieb:
> AXI-Neuling schrieb:
>> Falk B. schrieb:
>>> AXI ist KEIN Bus!!!
>>
>> Sondern?
>
> Eine Punkt-zu-Punkt Verbindung. Man kann also lediglich zwei Teilnehmer
> miteinander direkt verbinden.
...
> Hin und wieder (wie auch von mir in meinem Beitrag oben) wird ein
> solches AXI System mit Interconnects inkorrekterweise als Bussystem
> bezeichnet, da es dann ähnliche Aufgaben wie ein echter Bus erfüllen
> kann.

Doch, doch Point 2 Point kann auch als Bus bezeichnet werden. Macht 
beispielweise die Wishbone Spec so . Wishbone ist ein SoC-Bus der in den 
Topologien "Shared bus" aber auch "Point2 Point" über Crossbar switsches 
realisiert werden kann:

https://en.wikipedia.org/wiki/Wishbone_(computer_bus)


Oder PCI und PCIe. Beides werden üblichererweise an Peripherie-Busse 
bezeichnet, wobei letzteres ein reines P2P System, ersteres dagegen als 
Shared bus ist.

von Duke Scarring (Gast)


Lesenswert?

René D. schrieb:
> Als Punkt zu Punktverbindung habe ich Fifos in meinen Design bzw. melde
> mit einem busy flag Stau als flow control und das funktioniert super.
> Leider kein Standard.
Aber schon sowas wie AXI-Lite-Lite.

Wenn ich das richtig verstanden habe, besteht AXI aus drei (asynchronen) 
FIFOs.
Einen zum Daten schreiben, einen zum Daten lesen und einen für die 
Kommandos (lesen/schreiben/???).

Wenn die Daten nur in eine Richtung fließen (müssen), dann bleibt nur 
noch ein FIFO übrig...

Duke

von Klakx (Gast)


Lesenswert?

schau mal in die Spezifikation, Google "AMBA® AXI™ and ACE™ Protocol
Specification"

Das sind 300 Seiten..dabei wird das wird FIFO nur als Beispiel und 
weniger als 5 mal erwähnt.

Im Fazit geht es nicht um FIFOs. Auch ist das rein synchron von der 
Spec.

Asynchron wird's erst durch FIFOs oder spezielle Komponenten mit 
AXI-Interface.

von Videoprozessierer (Gast)


Lesenswert?

Mh. M. schrieb:
> Man kann also lediglich zwei Teilnehmer
> miteinander direkt verbinden. In einem System mit mehreren Teilnehmern
> wird das so gelöst, dass es spezielle Interconnects gibt, welche dann
> als Mux fungieren.

Gemeint ist sicher das hier:
http://www.xilinx.com/products/intellectual-property/axi_interconnect.html

Wie effektiv ist das dann noch?

Ich glaube Xilinx "verschaukelt" uns mit diesem Axi:
https://www.axi.com/de/

von Fpgakuechle K. (Gast)


Lesenswert?

Videoprozessierer schrieb:

>
> Wie effektiv ist das dann noch?

Da ein Vergleich zwischen AXI und (dem Vorgänger) AMBA bezüglich 
Effizienz:
http://www.design-reuse.com/articles/24123/amba-ahb-to-axi-bus-comparison.html

Vielleicht mal mit dem Performance Monitor selbst das Optimum 
herauskitzeln: 
http://www.xilinx.com/support/documentation/ip_documentation/axi_perf_mon/v5_0/pg037_axi_perf_mon.pdf

http://www.xilinx.com/support/documentation/application_notes/xapp1219-system-performance-modeling.pdf


Dort ein Vergleich von verschiedenen SoC-Bussen (aber kein AXI, wohl zu 
neu damals)

https://www.engr.colostate.edu/~sudeep/research/ppt/commbook_chap3.ppt

MfG,

von Strubi (Gast)


Lesenswert?

Moin,

ich denke mal, dass der ganze Komplexitäts-Wahnsinn automatisch mit den 
ARM-Cores eingeschleppt wurde. Schlussendlich will man ein möglichst 
robustes Tool, mit dem sich die Cores zusammenstöpseln lassen (oder 
vielleicht will es Xilinx für seinen Zielpublikum so).
Das ganze war ja schon einmal dagewesen mit QSys/Avalon, was ja bis zu 
einem gewissen Grad auch per Klick akzeptabel funktioniert, ähnlich 
tut's der lm32 SDK auf Wishbone-Basis.
Das wird immer nur dann zum Problem, wenn man was versucht, was der 
Hersteller nicht vorsieht, oder schlicht ungetestet blieb. Deswegen sehe 
ich ehrlich gesagt immer noch nicht ein, warum man einen aufwendigen 
Interconnect braucht, der zudem noch logikfressende Muxer "Faktor zwei" 
gegenüber der Wishbone-Lösung instanziert und plötzlich die Bandbreite 
in die Knie geht, und man eigentlich keine Möglichkeit mehr hat, 
optimierend einzugreifen.
Das machen IMHO die diversen Untergrund-SoC-Generatoren auf XML-Basis 
o.ä. etwas eleganter, bzw. fährt man mit einer Bridge für seine 
eigenständige Wishbone-Peripherie besser. Schade, dass die Hersteller 
mit IP-XACT einfach nicht in die Pötte kommen..

Grüsse,

- Strubi

von Michael W. (Gast)


Lesenswert?

Strubi schrieb:
> Das ganze war ja schon einmal dagewesen mit QSys/Avalon, was ja bis zu
> einem gewissen Grad auch per Klick akzeptabel funktioniert,

Das Avalonzeug gab es aber auch schon zu den alten Quartuszeiten, oder?

von Michael W. (Gast)


Lesenswert?

Ich muss es nun nochmal aufwärmen!

Ich wollte gerade einen etwas aufwändigeren Filter aufsetzen, den man 
nicht mehr gut per Hand bauen kann und stelle fest, dass sowohl CIC als 
auch FIR nur noch als AXI-Version angeboten werden. (Vivado 2015.4).

Habe ich was verpasst?

Kann ich kein natives Interface mehr haben?

von Falk B. (falk)


Lesenswert?

Scheint so. Das ist die Xilinx-Politik, aber die gibt es schon einige 
Jahre. Die nativen Schnittstellen sind "böse", AXI-AXI über alles . . . 
;-)

von Christian R. (supachris)


Lesenswert?

Naja, Axi Streaming für die Filter usw.. ist zwar ärgerlich aber 
trotzdem sehr simpel anzusprechen. Obacht beim Reset, der ist auch 
intern Low aktiv....

von Klakx (Gast)


Lesenswert?

AXI-Streaming würde ich schon als natives Interface bezeichnen. Statt 
read/write heißt das Signal halt valid.

von Michael W. (Gast)


Lesenswert?

Die Verwaltung des AXI-Zeugs bringt doch sicher wieder Timing-Verzug und 
löst sich auch bei Nichtnutzung garantiert nicht in Wohl gefallen auf, 
nehme ich an. Es dürfte also Platz kosten.

Mir scheint das AXI-Getue eine Mischung aus Faulheit und Politik. Die 
machen es sich einfach und der Kunde soll dann umständliche Cores 
benutzen, der er nur mit der Spezialsoftware bearbeiten kann und die 
dann irgendwann mal teuer wird - während immer mehr FPGA-Fläche 
verschwendet wird, um größere FPGAs verkaufen zu können.

von J. S. (engineer) Benutzerseite


Lesenswert?

M. W. schrieb:
> Die Verwaltung des AXI-Zeugs ...
> ... dürfte also Platz kosten.

Das kann gut möglich sein! Die Benutzung solche pauschaler und 
universeller Interfaces bringt immer Verwaltung mit und verhindert 
gleichzeitig eine optimierte individuelle Lösung. Das ist halt das 
Problem von Standardisierung. Man muss es ja nicht nutzen, dann bleibt 
es eine vor sich hindümpelde Totgeburt. Ich nenne nur als Beispiel das 
vor 10 Jahren als DAS kommende Interface für VHDL-Cores gehypte 
"Wunschknochenzwischengesicht".

> Mir scheint das AXI-Getue eine Mischung aus Faulheit und Politik. Die
> machen es sich einfach und der Kunde soll dann umständliche Cores
> benutzen,

Daher baue ich meine Cores, Interfaces und vor allem auch solche Sachen 
wie Timinggeneratoren, DDSen und eben besonders auch die Filter in 
nativem VHDL. Das kann ich jederzeit portieren.

> nur mit der Spezialsoftware bearbeiten kann und die
> dann irgendwann mal teuer wird - während immer mehr FPGA-Fläche
> verschwendet wird, um größere FPGAs verkaufen zu können.

Also ganz ehrlich: Wenn ICH der Marktstratege bei Xilinx wäre, würde ich 
das auch ganz genau das machen!

Was will man erwarten?  Genau so macht man Geld: Anfüttern mit 
kostenlosen Proben, Interesse wecken, unmerklich abhängig machen und 
wenn der Kunde nicht mehr davon lassen kann, die Preise erhöhen. So 
machen es alle: Die Smartphonehersteller, die App-Entwickler, die 
Zigarettenindustrie und die Crack-Dealer :-)

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.