Forum: FPGA, VHDL & Co. Zynq -Programmierung - Einstieg


von Trundle T. (shaheed)


Lesenswert?

hi,

ich hab hier von meiner Arbeitstelle nen Zynq-DevKit von Xilinx 
gesponsort bekommen.
Ich soll mich mal ein bissel in die Entwicklungstools und den 
Design-Flow einarbeiten.
Daher wollte ich mal fragen ob jemand schon Erfahrung mit dem Zynq hat 
ein paar kleine Design gemacht hat.
Zu meinen Vorkenntnissen:
Im Studium immer vor C-Programmieren gedrückt, hier auf Arbeit 
zwangsweise mit BlackFins von AnalogDevices in Kontakt gekommen. Kann 
jetzt meine eigenen einfachen Funktionen schreiben, UART-Controller 
steuern, Interruptroutine implementieren... so mehr Kleinkrams. Hab noch 
nicht wirklich Durchblick von Startup-Code oder so (Linker und was weiß 
ich was es da noch alles gibt). Also ausm Stand kann ich kein komplett 
lauffähiges Bare-Metal-Prog zusammenschreiben.
FPGA-Design und PlanAHead als Entwicklungsumgebung beherrsche ich 
erstmal ausreichend.
Hab aber noch nie ne embedded-Source oder so eingefügt und oder mit dem 
Xilinx EDK-Tool gearbeitet. Und ich weiß auch nicht wie man eine 
"Verbindung" zwischen PlanAHead und EDK oder den sonstigen Tools 
herstellt.

Hab mir eigentlich alles was ich von xilinx gefunden hab an Pdfs und 
Beispielcode runtergeladen. Auch mal hier und da nen Beispiel 
nachgebaut, aber das ist alles recht schwerfällig und mir fällt es 
schwer nen roten Faden herauszufiltern, so dass ich mir meine eigene 
Vorgehensweise/ Kochrezept zurecht legen kann. Ich sags mal so mit mehr 
Zeitaufwand findet man bestimmt auch mit xilinx-Resourcen den Einstieg.
Aber vllt hat sich ja schon jemand da durch geackert und kann einem 
bestimmte Beispielaufgaben, Tutorials, PDFs oder einfach ne kleine 
Zusammenfassung über den Design-Flow empfehlen, die einem den Einstieg 
vereinfacht.

Ziel wäre es anfangs irgend nen serielles (kann auch was anderes sein) 
Interface vom Zynq mittels Telenet HTerm oder so anzusprechen und nen 
paar automatisierte Rückantworten (C-Routine im Arm-Core) zurückzulesen.

Hab gesehen hier sind einige dabei, die auch mit den Softcores von 
Xilinx arbeiten und soweit ich das mitbekommen habe, soll der 
Design-Flow dem der HardCore ähneln.

Gruß und besten Dank im Voraus

von Duke Scarring (Gast)


Lesenswert?

Also ein ZedBoard liegt hier auch im Schrank und wartet auf seine ersten 
Aufagben. Es gibt dafür auch eine eigene Webseite: http://zedboard.org/
Ansonsten läuft auf dem Ding ein komplettes Linux.
Da es ein Dual-core ist könnte man auf dem zweiten Core auch noch sein 
eigenes System implementieren. Aber wozu? Linux bringt ja schon alles 
mit.

Duke

von Trundle T. (shaheed)


Lesenswert?

moment bitte ganz kurz,

ich hab leider nicht das ZedBoard sondern das ZC702 Evaluationskit, 
sollte jetzt aber vom Design-Flow nicht den Unterschied machen.

Ok das man darauf ein komplettes Linux laufen lassen kann, habe ich auch 
schon gelesen, aber was kann man damit alles machen ?? Was wäre der 
Verwendungsbereich?? kann ich da taktgenau Datenverarbeiten, 
Signalfilter darauf betreiben??
Ein Beispiel ich habe irgendwelche Messdaten die zu einer Taktquelle 
sychron sind und durch ein Signal getriggert werden, könnte ich die 
korrekt ohne Datenverlust und mit Bezug zur Taktquelle(also zeitlicher 
Bezug)  verarbeiten auf dem Linuxsystem?? Ich dachte immer wenn man ein 
Betriebssystem verwendet oder RTS verwendet ist das nicht mehr oder nur 
sehr schwer möglich??


Also konkret ich verstehe nicht was mit Linux bringt alles mit gemeint 
ist.

von Duke Scarring (Gast)


Lesenswert?

Trundle Trollkönig schrieb:
> aber was kann man damit alles machen ??
Mit dem Linux dürfte die Realisierung eines User-Interfaces einfacher 
werden. Oder man kann diverse Daten per Webserver zur Verfügung stellen.

Für taktgenaue Datenerfassung (und Vorverarbeitung) dient ja der 
FPGA-Teil im Zynq.

Duke

von Hans-Georg L. (h-g-l)


Lesenswert?

So mal ganz grob:

Auf einem ARM läuft Linux und kümmer sich um alles wo es schon fertige 
Treiber gibt. (Ethernet, USB, Audo Video usw.)

Auf dem 2. ARM läuf ein RT-Sytem für echte RT-Anforderungen (wenn man es 
braucht).

Das FPGA ist für zusätzliche Peripherie Implementierungen und/oder für 
parallele Verarbeitung von Daten.

Das Design Flow und die Entwicklungstools sind noch stark verbesserungs 
bedürftig ;)

Aber immerhin ist bei den Boards eine auf den Zynq begrenzte ChipScope 
Lizens dabei und die braucht man auch.

Da sieht man mal wieder ganz deutlich den Unterschied zwischen Anspruch 
(Hardware/Software Codesign) und der Wirklichkeit.
Aber ich nehme an, Zynq und Co bleiben Nischenprodukte und da wird sich 
in nächster Zeit nicht viel ändern.

Vivado HLS hab ich noch nicht probiert.

von Trundle T. (shaheed)


Lesenswert?

Ok du scheinst ja ein bissel Ahnung zu haben.

Ich hab mal ne Beispielszenario:

Also ich fang mit PlanAHead und schreib mir meine Custom-Interfaces in 
Verilog/Vhdl und ein bissel Datenverarbeitung. Als Schnittstelle überleg 
ich mir nen Fifo mit Datenbus, ein paar Steuersignalen und Status-Bus 
oder so ähnlich, wie geh ich jetzt weiter vor??

Soweit ich mitbekommen hab müsste man jetzt eine Art embedded-source 
oder so auswählen in PlanaHead und da kann man dann Softcore oder 
Hardcore einfügen, aber wie genau kriege ich den Core dann in mein 
Planahead-Projekt??
Fügt man einen Core genauso hinzu wie irgend ein IP-Core??
und wie erstelle ich die Gegenschnittstelle für meine Fifoschnittstelle 
im Core??
und wie verbinde ich beide (laut Datenblatt soll es ja biszu 3000 
Verbindungen zwischen PL(FPGA) und PS(Core) geben)?? So das ich dann 
auch auf die Daten zugriff habe und sie in irgendeinem Zwischenspeicher 
oder Puffer (im Core) lagern kann??

Fragen über fragen ;)

Vielleicht kannst du mal kurz das allgemeine Vorgehen beschreiben.

von Hans-Georg L. (h-g-l)


Lesenswert?

Ich arbeite auch nicht jeden Tag und haubtberuflich mit diesen Dingern 
und muss auch immer wieder nachschauen ;)

Du musst ein "sub design" für den ARM anlegen. Bei mir kommt dabei zwar 
immer eine Fehlermeldung wegen fehlender Lizens aber die drück ich weg 
und es funktioniert trotzdem.

Beschrieben ist das alles hier:
http://zedboard.org/content/zedboard-create-planahead-project-embedded-processor

Du musst nur "dein" Board richtig auswählen.

Solange du dich innerhalb des FPGA bewegst kann du den Bus, der dir am 
besten gfällt nehmen. Sobald du aber Verbindung zu den ARM Cores oder 
dem RAM brauchst solltest du dich mal mit AXI beschäftigen.

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.