Forum: FPGA, VHDL & Co. Grundsatzfrage zu neuen Designstrategien (SoC/VHDL)


von Gustl B. (-gb-)


Lesenswert?

Hallo,

ich habe das was ich gelernt habe von Grunde auf mit blinkenden LEDs und 
so gelernt. Jetzt geht es aber so wie ich das sehe in letzter Zeit in 
eine andere Richtung die mich etwas verwirrt.

Was ich meine ist, dass es irgendwie einen Trend gibt möglichst einfach 
ferige Blöcke zusammenzukleben. Da nimmt einem die Entwicklungsumgebung 
auch einiges ab und schnell hat man ein System mit CPU und diversen 
Controllern. Mit den SoC-FPGAs sieht das vielleicht noch einfacher und 
baukastenartiger aus.

Jetzt die Frage weil ich keine Ahnung habe:
Braucht man dazu noch eigene VHDL Kenntnisse? Dass diese nicht schaden 
ist mir klar aber benötigt man diese noch wenn es alle Einzelbausteine 
die man verwenden möchte auch fertig gibt? Und ist es dann sinnvoll 
fertige Blöche zu verwenden oder selber zu beschreiben?

Wie macht ihr das so? Für mich sieht das irgendwie nach Spielzeug aus 
bei dem man nicht viel verstanden haben muss um trotzdem schnell ein 
fertiges System zu haben. Ich würde bei FPGAs immer von ganz unten mit 
dem Lernen anfangen, aber vielleicht ändert sich diese Ansicht.

Danke!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Gustl B. schrieb:
> Da nimmt einem die Entwicklungsumgebung auch einiges ab und schnell hat
> man ein System mit CPU und diversen Controllern. Mit den SoC-FPGAs sieht
> das vielleicht noch einfacher und baukastenartiger aus.
> Braucht man dazu noch eigene VHDL Kenntnisse?
Nein. Die braucht man erst, wenn das geklebte nicht ganz das tut, was es 
soll. Und glücklich ist dann der, der der aus seinem Tool dann überhaupt 
noch VHDL oder Verilog herausbekommt...

> Ich würde bei FPGAs immer von ganz unten mit dem Lernen anfangen, aber
> vielleicht ändert sich diese Ansicht.
Zum Lernen ist das auch sehr sinnvoll, denn die grundlegenden 
Probleme im FPGA können an solch simplen Beschreibungen einfach 
begriffen werden.

Ein wenig provokant gesagt: voll bekommt man heute ein großes FPGA in 
vertretbarer Zeit nur noch mit Beschreibungen aus Codegeneratoren und 
Matlab-Modellen...  ;-)

von Gustl B. (-gb-)


Lesenswert?

Vielen Dank, so sehe ich das auch! Das ist wie der Unterschied zwischen 
"Ein schönes Bild haben wollen" und "malen lernen wollen". Wenn man 
malen lernen will setzt man sich vor die leere Leinwand und die ersten 
Versuche sind entweder total primitiv oder sehen schlimm aus, wenn man 
ein schönes Bild haben möchte dann kauft man sich eines oder (wenn man 
selber was machen möchte) löst man ein Puzzle.

Es geht darum, dass wir an der Uni Nachfrage nach "FPGA" von Seite der 
Studenten haben, also nicht viele aber doch ein paar. Und daher werden 
wir (alles Anfänder wie ich) einen Workshop ohne Credits anbieten 
(Vorlesung trauen wir uns nicht zu).
Die Wünsche zum Inhalt von Seiten der Studenten sind aber eher wenig 
anfängertauglich, also CCD, OpenCL, PCIe, ... Das macht aus meiner Sicht 
keinen Sinn und ich könnte da dann nur vorschlagen fertige Kerne zu 
verwenden was aber eben nicht bedeutet "FPGA zu lernen" und daher in 
einem Workshop, der hauptsächlich von Änfängern besucht werden wird 
nichts verloren hat.

Oder geht es in die Richtung dass man einfach änfängt Kerne 
aneinanderzukleben? So wie heutzutage auch programmiert wird mit lauter 
Fremdbibliotheken?

: Bearbeitet durch User
von Achim S. (Gast)


Lesenswert?

Wenn du ein PCIe-Interface implementieren willst, dann musst du auf 
vorgefertigte Komponenten zurückgreifen. Das gilt auch für viele andere 
spezialisierte Komponenten im FPGA. Der Einsatz vorgefertigter 
Komponenten gehört zur ernsthaften Nutzung von FPGAs klar dazu. Aber für 
Anfänger ist PCIe natürlich 3 Nummern zu groß.

Was ich an deiner Stelle machen würde:
a) den Leuten die Grundbegriffe der Hardwaresynthese in VHDL beibringen. 
Darauf achten, dass sie das Wesentliche verstanden haben (synchrones 
Design mit Registern, FSM, Multiplexer, ... und generell: den 
Unterschied zwischen Hardwarebeschreibung und Programmierung).
b) Zusätzlich an 2-3 halbwegs einfachen Beispielen zeigen, wie man mit 
dem IP-Generator umgeht, um spezielle Komponenten zu nutzen(z.B. um ein 
FIFO aus BlockRAM einzubinden und um mit einem CLK-Manager 
unterschiedliche Frequenzen aus einem Eingangstakt abzuleiten.

von Gustl B. (-gb-)


Lesenswert?

Vielen Dank!

Mir geht es nicht drum vorgefertigte Komponenten zu verteufeln, nein ich 
benutze die auch, aber eben nicht im Blindflug. Es gibt für jeden 
Blödsinn fertige Komponenten (BRAM, FIFO, ...) und viele davon kann man 
auch mal selber schreiben so wie es auch Lothar gemacht hat.

Ich würde unten anfangen so wie ich es mal in einem Praktikum an der FH 
gelernt habe:
- Kombinatorik
- Zustandsautomaten
- Simulation
- und dann erst wie man sich Zeug generieren lässt.

Das Problem: Bei einer Veranstaltung die nur einmal je Woche stattfindet 
wird man auch in einem ganzen Semester nicht sonderlich weit kommen. Das 
Ende des Praktikums an der FH (nach einem Semester) war eine Laufschrift 
auf 7-Segment-Anzeigen.

von Lars R. (lrs)


Lesenswert?

Gustl B. schrieb:

> Wie macht ihr das so? Für mich sieht das irgendwie nach Spielzeug aus
> bei dem man nicht viel verstanden haben muss um trotzdem schnell ein
> fertiges System zu haben. Ich würde bei FPGAs immer von ganz unten mit
> dem Lernen anfangen, aber vielleicht ändert sich diese Ansicht.

Das Schreiben und Testen dieser Blöcke erfordert sehr viel Zeit 
(Kosten). Demnach handelt es sich keinesfalls um ein Spielzeug. Der 
Nutzen für denjenigen, der die Blöcke verwendet, ist immens. Dennoch 
gibt es auch Argumente, die gegen eine Verwendung der vom 
FPGA-Hersteller gelieferten Blöcke sprechen. Eines dieser Argumente ist 
genau der Grund, warum Dir der FPGA-Hersteller immer mehr Blöcke 
kostenlos liefert: Kundenbindung.

> Es geht darum, dass wir an der Uni Nachfrage nach "FPGA" von Seite der
> Studenten haben, also nicht viele aber doch ein paar. Und daher werden
> wir (alles Anfänder wie ich) einen Workshop ohne Credits anbieten
> (Vorlesung trauen wir uns nicht zu).
> Die Wünsche zum Inhalt von Seiten der Studenten sind aber eher wenig
> anfängertauglich,

Achso... Welche Uni?
In dem Fall sage ich: Blöcke kleben und den LED-Blink-Block mit dem SoC 
ansprechen. Dann einen Addierer dazu, usw.
"SoC steuert VHDL-Block" wird auch in der Industrie benötigt und die 
Motivation der Studenten ist höher. Vielleicht kann man es mit 
"Mikrocontroller" oder "Programmierung" kombinieren oder im Rahmen von 
"Algorithmen und Datenstrukturen"

> also CCD, OpenCL, PCIe, ... Das macht aus meiner Sicht
> keinen Sinn und ich könnte da dann nur vorschlagen fertige Kerne zu
> verwenden

Wahrscheinlich wäre es möglich, ein fertiges Demoprojekt auf den FPGA zu 
laden. Aber es ist ungleich schwieriger, aus einem neuen, leeren Projekt 
heraus ein PCIe-Beispiel "zusammenzuklicken" und in Betrieb zu nehmen.

> was aber eben nicht bedeutet "FPGA zu lernen" und daher in
> einem Workshop, der hauptsächlich von Änfängern besucht werden wird
> nichts verloren hat.

Ja, aber wie gesagt aus anderen Gründen, als ursprünglich von Dir 
vermutet. Vielmehr denke ich, "Blöcke kleben" und "SoC steuert 
VHDL-Block" ist viel eher das, wonach die Studenten gefragt haben, als 
"Verbringen wir das gesamte Semester damit, mit VHDL einen UART zu 
schreiben". Wobei auch das nicht alle schaffen werden.

Für letzteres muss aus der Person selbst heraus das Interesse kommen, 
sich in der Freizeit langfristig damit zu beschäftigen, weil die 
Veranstaltungszeiten dafür nicht ausreichen. Man kann dafür nur die 
Grundlagen legen. Allein diese haben (oder hatten früher?) bereits einen 
anderen Umfang, als was Dir zur Verfügung steht: Digitaltechnik (4/2), 
Rechnerorganisation (4/2/1) sowie HDLs und Simulation, .... Einen UART 
hatte ich einmal im Rahmen eines Praktiums im Hauptstudium im 5. oder 6. 
Semester in der Vertiefungsrichtung Technische Informatik schreiben 
lassen. Das war nicht zu leicht.

von Gustl B. (-gb-)


Lesenswert?

Danke für Deine Meinung!

Ja,

Lars R. schrieb:
> In dem Fall sage ich: Blöcke kleben und den LED-Blink-Block mit dem SoC
> ansprechen. Dann einen Addierer dazu, usw.
> "SoC steuert VHDL-Block" wird auch in der Industrie benötigt und die
> Motivation der Studenten ist höher.

Richtig, aber: Macht das Sinn ohne die Grundlagen zu kennen? Ich würde 
mich da irgendwie nicht gut dabei fühlen wenn ich Anfängern zeige wie 
sie möglichst einfach ein System mit CPU zusammenklicken können ohne 
vorher Kombinatorik, den Aufbau von Zustandsautomaten, Constraints, 
Simulation, ... zu vermitteln.

Und ja, es ist eher wenig Zeit, daher wird wohl Hardware mit nach Hause 
genommen werden dürfen. Ich würde trotzdem eher bei den Grundlagen 
angangen, also damit was Lothar hier jedem Anfänger predigt: Blinkende 
LED, Laufschrift, ...

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Gustl B. schrieb:
> also damit was Lothar hier jedem Anfänger predigt: Blinkende LED,
Richtig, es geht ja nicht darum, mit dieser blinkenden LED das komplette 
Semester herumzuhampeln. Aber an diesem einfachen Beispiel kann man 
schon mal das grundlegende Konzept eines "Clock Enables" auf zeigen.

> Laufschrift, ...
Uuups, Laufschrift, das wäre eher was für später... ;-)

Aber letztlich geht es schon darum, Grundlagen zu erkennen und zu 
erklären. Und mögliches Fehlverhalten bei ungünstiger Beschreibung 
aufzuzeigen. Denn das Design innerhalb eines solchen Blocks mit den 
selben Methoden aufgebaut. Und wenn der trotz allen Tests "seltsames 
Verhalten" zeigt, dann ist es gut, solche grundlegenden Fehlermuster 
erkennen zu können.
Das können die Studenten selber natürlich nicht einschätzen und 
wünschen sich dann absurde Dinge...

: Bearbeitet durch Moderator
von Gustl B. (-gb-)


Lesenswert?

Oh sorry meinte so eine laufende LED auf einer Reihe mehrerer LEDs. Halt 
einfache Automaten.
Laufschrift war wie geschrieben das was am Ende eines Semesters an der 
FH stand. Und auch das war für echt viele nicht trivial.

Ich werde wohl vorschlagen, dass sich Jeder für den Workshop selber 
raussuchen kann was er will. Dafür wird es ja ein Workshop. Mit der 
Hilfe werde ich es dann wie im Forum halten und nur Tipps geben aber 
keine fertigen Lösungen. Die Teilnehmer müssen sich dann eben 
realistisch einschätzen wenn sie nicht stolpern wollen.

: Bearbeitet durch User
von Schlumpf (Gast)


Lesenswert?

Ich bin ganz klar der Meinung, dass man um die elementarsten Grundlagen 
nicht herum kommt und erst dann anfangen sollte, Cores 
zusammenzuklicken.

Ich kann aus meiner Arbeit nur sagen, dass es in den allermeisten Fällen 
so war, dass es für das, was ich benötigte, gar keine Cores gab, weil es 
einfach zu speziell war.

Lars R. schrieb:
> Vielmehr denke ich, "Blöcke kleben" und "SoC steuert
> VHDL-Block" ist viel eher das, wonach die Studenten gefragt haben, als
> "Verbringen wir das gesamte Semester damit, mit VHDL einen UART zu
> schreiben".

Kann schon sein, dass es das ist, was die Studenten wollen. In der 
Klicki-Klicki-Bunti-Zeit.. Ist halt die Frage, ob man den Studenten das 
anbietet, was sie wollen, oder das, was sie brauchen?

Hirnlos ein paar Cores in einem GUI zusammenklicken ist nicht FPGA 
lernen, sondern GUI lernen.
FPGA lernen ist, zu verstehen, wie ein FPGA aufgebaut ist, was er kann 
und wie man diese Funktionen in HDL so beschreibt und constrained, dass 
sie dann auch synthetisierbar sind.

Ich mache das jetzt schon viele Jahre und egal was ich code, ich sehe 
vor meinem inneren Auge dabei die Register etc "entstehen".
Vielleicht ist das old-school, aber ich bin damit bis jetzt ganz gut 
gefahren.

von Gustl B. (-gb-)


Lesenswert?

Auch Dir vielen Dank! Genau so sehe ich das auch :-) Und genau das 
kostet eben viel Zeit bis man in Automaten und paralleler Logik denkt.

von Lars R. (lrs)


Lesenswert?

Gustl B. schrieb:
> Danke für Deine Meinung!
>
> Ja,
>
> Lars R. schrieb:
>> In dem Fall sage ich: Blöcke kleben und den LED-Blink-Block mit dem SoC
>> ansprechen. Dann einen Addierer dazu, usw.
>> "SoC steuert VHDL-Block" wird auch in der Industrie benötigt und die
>> Motivation der Studenten ist höher.
>
> Richtig, aber: Macht das Sinn ohne die Grundlagen zu kennen?

Es ist meiner Ansicht nach in Deinem Fall sinnvoll, damit zu beginnen.
Am Beispiel des VHDL für eine blinkende LED und einen Addierer könntest 
Du auf einer need-to-know-Basis das Nötigste an Grundlagen vermitteln. 
Anschließend beispielsweise das Lauflicht.

> Ich würde
> mich da irgendwie nicht gut dabei fühlen wenn ich Anfängern zeige wie
> sie möglichst einfach ein System mit CPU zusammenklicken können ohne
> vorher Kombinatorik, den Aufbau von Zustandsautomaten, Constraints,
> Simulation, ... zu vermitteln.

Inkl. Constraints? Dazu VHDL-Syntax, die Entwicklungsumgebung, Arbeit am 
PC, und das ganze im Rahmen von 1-2SWS? Für Studenten, die Dich 
ernsthaft danach gefragt haben, innerhalb von 1-2SWS PCIe und OpenCL mit 
FPGAs machen?

> Und ja, es ist eher wenig Zeit, daher wird wohl Hardware mit nach Hause
> genommen werden dürfen.

Das nützt wenig und die Software ist kostenlos.

> Ich würde trotzdem eher bei den Grundlagen
> angangen, also damit was Lothar hier jedem Anfänger predigt: Blinkende
> LED, Laufschrift, ...

Es spricht auch meiner Ansicht nach nichts gegen LED und Lauflicht.

> Ich werde wohl vorschlagen, dass sich Jeder für den Workshop selber
> raussuchen kann was er will. Dafür wird es ja ein Workshop. Mit der
> Hilfe werde ich es dann wie im Forum halten und nur Tipps geben aber
> keine fertigen Lösungen.

Das wird schief gehen, denke ich. Schon allein deshalb, weil Du selbst 
gleichzeitig nur an einem Rechner sein kanst.

> Die Teilnehmer müssen sich dann eben
> realistisch einschätzen wenn sie nicht stolpern wollen.

Ist das nicht Dein Job?

> Auch Dir vielen Dank! Genau so sehe ich das auch :-) Und genau das
> kostet eben viel Zeit bis man in Automaten und paralleler Logik denkt.

Zeit, die Du nicht hast.

Gut... ich habe alles gesagt, was ich beitragen kann.

Viele Grüße
Lars

von Gustl B. (-gb-)


Lesenswert?

Lars R. schrieb:
> Inkl. Constraints? Dazu VHDL-Syntax, die Entwicklungsumgebung, Arbeit am
> PC, und das ganze im Rahmen von 1-2SWS? Für Studenten, die Dich
> ernsthaft danach gefragt haben, innerhalb von 1-2SWS PCIe und OpenCL mit
> FPGAs machen?

Ja. Es heißt schließlich FPGA-Workshop und das schließt aus meiner Sicht 
die Grundlagen ein. Zumindest soweit dass man nicht nur Komponenten 
generieren lassen kann sondern auch selber welche schreiben lernt.

Lars R. schrieb:
> Das wird schief gehen, denke ich. Schon allein deshalb, weil Du selbst
> gleichzeitig nur an einem Rechner sein kanst.

Ja, aber es wird mehrere im Workshop geben die schon etwas Ahnung haben. 
Im Praktikum an der FH gab es nur einen Betreuer und das hat auch 
geklappt wobei der auch viel wie in einer Vorlesung erklärt hat 
(Grundlagen). Es werden auch eher wenige Teilnehmer <10.

Lars R. schrieb:
> Ist das nicht Dein Job?

Nein. Auf mich kam man zu weil ich als Student schon wo anders 
(Zulassungsarbeit) etwas mit FPGAs mache und sonst nicht wirklich viele 
was damit machen.

Lars R. schrieb:
> Zeit, die Du nicht hast.

Auch richtig, daher setze ich sehr darauf, dass die Teilnehmer sich 
selber viel beibringen. Es wird keine Punkte geben also zählt sowieso 
nur Interesse.

von Unbekannt ;) (Gast)


Lesenswert?

Aus meiner Sicht ist das Problem hier nicht mit was fängt man an sondern 
die heutige Komplexität eines FPGA und der dazugehörigen Toolchain.

Meine Herangehensweise wäre die Folgende:

1) Grundlagen: Automaten, Constraints, ... (kleines Projekt Lauflicht 
zur Übung)

2) Übergang zu SoC:
2a) Grundlagen über Prozessor, Bussysteme im FPGA, Theorie zum Auslagern 
der Komponenten aus dem Prozessor (finde ich sehr wichtig da so manche 
Leute meinen ein FPGA sei ja immer viel besser...)
2b) Übung z.B. umschreiben des Lauflicht IP-Cores zu einem Lauflicht mit 
Busanbindung über ein einfaches Registerinterface und Ansteuerung aus 
Software heraus.

Aus meiner Sicht bringt dieses vorgehen die Grundlagen bei aber bringt 
auch einen ersten Kontakt zu SoC's der für einen Anfänger noch 
überschaubar ist. Und hierbei müssen keine fertigen Klicki-Cores (außer 
natürlich der CPU) genutzt werden (können aber nach Wunsch).

Grüße

von Gustl B. (-gb-)


Lesenswert?

Danke!

Dann stellt sich die grundlegende Frage CPU oder nicht CPU?

Aus meiner Sicht kommt mit einer CPU eine zusätzliche Hürde hinzu und 
zwar dass der Teilnehmer Grundlagen der Rechnerarchitektur und auch eine 
Programmiersprache können sollte. Das kann ich leider nicht voraussetzen 
und im Rahmen des Workshops auch nicht vermitteln. Die Teilnehmer kommen 
aus dem Bereich Mathe/Physik und nicht aus Informatik, das gibt es bei 
uns nicht.

Ich habe noch nichts mit SoC gemacht und auch nur einmal mit dem 
Mirkoblaze und C. Wie ist das mit SoC wie dem Zynq, muss man sich da mit 
Linux auskennen, eigene Treiber schreiben, C oder ähnliches beherrschen, 
ist das was für Anfänger?

Aus meiner Sicht ist da (falls man mit dem PC kommunizieren möchte) ein 
UART deutlich geeigneter und auch auf PC Seite mit Python (oder noch 
einfacher mit einem Terminalprogramm wie Cutecom/Realterm) ohne eigene 
Treiber sehr leicht ansprechbar. Klar das ist lahm und als 
Fortgeschrittener will man das nicht, aber es ist einfach und trotzdem 
für Anfänger erstmal angemessen schwer.

von Achim S. (Gast)


Lesenswert?

Wenn die Studies am Ende des Workshops Spaß an und Lust auf VHDL haben 
sollen, dann sehe ich es als kontraproduktiv, einen Widerspruch zu 
konstruieren zwischen "Nutzung von IP-Cores" und "Verstehen, was man 
tut".

Ja, man kann IP-Cores ohne jedes Verständnis zusammenklicken. Aber es 
muss nicht so sein. Man kann durchaus auch verstehen, was man tut, und 
trotzdem IP-Cores einsetzen, um für die Studenten interessante 
Anwendungen zu realisieren (auch jenseits der 7-Segment-Anzeige).

Klar würde ich den Workshop mit wirklich elementaren Dingen beginnen. 
Die blinkende LED ist das "Hello World" des FPGAs. Und klar würde ich 
die Grundlagen auch so weit treiben, dass die Studies wissen, was sie 
mit VHDL beschreiben (ich hatte ja oben schon eine kleine Liste 
beschrieben, bei genauerem Nachdenken fallen einem wahrscheinlich noch 
ein paar Punkte für diese Grundlagenliste ein).

Aber dann hätte ich keinerlei Bauchschmerzen damit, sinnvolle 
Komponenten einzusetzen, um innerhalb des Semesters auch anspruchsvolle 
Anwendungen zu realisieren. (Außer du willst mit dem Workshop erreichen, 
dass die Studies FPGAs öde finden).

Ein Beispiel: den Studiwunsch CCD könntest du mit einer 1-DIM CCD-Zeile 
aufgreifen (kleines Spektrometer basteln, die Hardware dafür notfalls 
bei einem Edutainment-Versender kaufen). Für die Ansteuerung der 
CCD-Zeile brauchst du eine Statemachine und ein paar Zähler, darum kann 
sich ein Teil der Workshopteilnehmer kümmern. Das erste Erfolgserlebnis 
haben sie, wenn Sie das Ausgangssignal des CCD mit dem Oszi betrachten.

Eine zweite Untergruppe des Workshops kann sich um Takterzeugung und 
Ansteuerung eines ADC kümmern.

Die dritte Gruppe kümmert sich darum, die Daten im FPGA 
zwischenzuspeichern und "irgendwie" in einen PC zu bringen. Das kann 
über UART gehen (selbst geschrieben oder von woanders übernommen), und 
eröffnet damit fast schon die USB-Welt durch Anbindung an einen FT232. 
Wenn UART zu kompliziert ist, dann über SPI auf einen (externen) µC, der 
seinerseits eine UART bedient.

An fertigen Komponenten werden eingesetzt:
- BlockRAM: klar kann man den auch direkt in VHDL beschreiben, aber dann 
muss ich auch (auswendig) lernen, wie genau die Beschreibung auszusehen 
hat, damit BlockRAM benutzt wird. Ich sehe keine wirklichen Vorteil 
gegenüber der Nutzung des IP-Assistenten, mit dem die Studies halt auch 
umgehen lernen sollten.
- evtl. CLK Manager (ist aber eigentlich nicht nötig)
- ggf. eine UART (nicht unbedingt was von Xilinx, gerne auch eine 
sinnvolle Beschreibung aus dem Netz. Lothar hat doch sicher sowas auf 
seiner Seite ;-)

Zusammengefasst: mein Ziel wäre, dass die Studies die Grundlagen 
verstehen und dass sie Spaß an der Anwendung haben (nicht entweder - 
oder). Dazu brauchen sie eine Anwendung, der sie einen Nutzen zuordnen 
(auch wenn es ein "spielerischer" Nutzen ist) und die sie als 
Herausforderung annehmen. Ich würde mich schwertun, ihnen die 
Siebensegmentanzeige als solche Anwendung zu verkaufen.

von Gustl B. (-gb-)


Lesenswert?

Genau, klar sollen Komponenten verwendet werden und Dein Vorschlag ist 
ziemlich gut. Clockmanager klar, BRAM ist eigentlich komplizierter wenn 
man die generierte Komponente verwendet finde ich. UART ist ein sehr 
schönes Beispiel für einen Automaten den man auch gut selber schreiben 
und auch simulieren kann.

Sonst finde ich motivierende Beispiele auch sehr gut, 7-Segment war eben 
das mit dem ich angefanhen habe aber ja, das ist eher trocken. Gut wäre 
auch eine Anfängeranwendung die über das was ein uC kann hinausgeht. Z. 
B. VGA-Video und das Anzeigen von ADC Messwerte auf dem Bildschirm. 
Quasi eine Art sehr einfaches Oszilloskop mit einfachem Trigger und so.

Ein weitere Beispiele die noch Anfängergeeignet sind wären:

1. Ein Frequenz/Signalgenerator mit VGA als DAC für Sinus, Rechteck, 
Sägezahn. Steuerung über Drehgeber oder vom PC aus über UART.
2. Ansteuerung einer RGB-LED mit PWM über Drehgeber/UART.
3. Uhr/Stoppuhr
4. FM-Sender der das Audio über einen ADC bekommt
5. 1Bit PWM Audio vom ADC zu PWM mit Lautstärkeregelung und so oder 
Audio über UART an FPGA nach PWM.

Das ist alles machbar und braucht eigentich kaum fertige Komponenten.

Was ich mit Komponenten unverstanden zusammenkleben meinte ist eher das 
generieren von Komplettsystemen mit CPU, DDR-RAM und so. Das geht auch 
und motiviert vermutlich auch, ist aber aus meiner Sicht nichts für 
Anfänger.

von Achim S. (Gast)


Lesenswert?

Gustl B. schrieb:
> Das ist alles machbar und braucht eigentich kaum fertige Komponenten.

Stimmt, aber das ist kein Vorteil: wenn die Studies mit Komponenten 
umgehen lernen, ist das gut, nicht schlecht ;-)

Gustl B. schrieb:
> Was ich mit Komponenten unverstanden zusammenkleben meinte ist eher das
> generieren von Komplettsystemen mit CPU, DDR-RAM und so.

So weit würde ich in einem Anfängerworkshop mit Sicherheit auch nicht 
gehen.

von Gustl B. (-gb-)


Lesenswert?

Ok, dann sehen wir das ähnlich. Wo es nötig und nützlich ist verwende 
ich auch fertige Komponenten, und das sollte auch definitiv Inhalt des 
Workshops werden. Wenn ich aber sehe wie manche Tutorials zu FPGA-Boards 
aufgebaut sind, dann besteht das nur daraus sich ein fertiges System 
zusammenzuklicken.

Das ist zwar auch schön weil man dann sehr schnell Hardware verwenden 
kann die sehr leistungsfähig ist (SerDes, PCIe, DDR-RAM) und das ist 
vielleicht auch gewünscht von Seiten der Teilnehmer, bringt aber aus 
meiner Sicht nicht viel ohne die Grundlagen. Speziell meine ich sowas 
wie das QSYS von Altera.

Ich habe hier das Buch VHDL-Synthese, da geht es die ersten 200 Seiten 
eigentlich nur um Grundlagen, auch mit dem Kapitel 
"Komponentengeneratoren".

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

>> Und ja, es ist eher wenig Zeit, daher wird wohl Hardware mit nach Hause
>> genommen werden dürfen.
> Das nützt wenig und die Software ist kostenlos.
Es schadet sogar, denn dann arbeiten 50% damit und kommen weiter. Die 
anderen 50% tun nichts und werden abgehängt...

Gustl B. schrieb:
> Wenn ich aber sehe wie manche Tutorials zu FPGA-Boards aufgebaut sind,
> dann besteht das nur daraus sich ein fertiges System zusammenzuklicken.
Die sind auch dafür da, dass der FAE vor einer Gruppe Leute in 3 Stunden 
etwas lauffähiges zuwege bringen kann.

Das mit der CPU auf dem FPGA wäre für mich eine eigene Vorlesung. Denn 
letztlich komm dann ein neuer Freiheitsgrad und eine neue Toolchain 
dazu: die Software.

von Gustl B. (-gb-)


Lesenswert?

Lothar M. schrieb:
> Es schadet sogar, denn dann arbeiten 50% damit und kommen weiter. Die
> anderen 50% tun nichts und werden abgehängt...

Es wird ein Workshop, da haben sowieso nicht alle den gleichen Stand 
oder machen die selben Dinge. Es wird eher so sein, dass sich die 
Teilnehmer selber ihre Themen suchen können und es dann auch an ihnen 
selber liegt wie viel sie tatsächlich lernen.
Andernfalls müsste man das doch ähnlich einer Vorlesung/Unterricht 
aufbauen und langweilt dann Diejenigen die schon Vorwissen haben.

Lothar M. schrieb:
> Das mit der CPU auf dem FPGA wäre für mich eine eigene Vorlesung. Denn
> letztlich komm dann ein neuer Freiheitsgrad und eine neue Toolchain
> dazu: die Software.

Sehe ich auch so, das könnte man als Fortsetzung des 
Mikrokontrollerkurses machen.

von Lars R. (lrs)


Lesenswert?

Gustl B. schrieb:
> Danke!
>
> Dann stellt sich die grundlegende Frage CPU oder nicht CPU?
>
> Aus meiner Sicht kommt mit einer CPU eine zusätzliche Hürde hinzu und
> zwar dass der Teilnehmer Grundlagen der Rechnerarchitektur und auch eine
> Programmiersprache können sollte. Das kann ich leider nicht voraussetzen
> und im Rahmen des Workshops auch nicht vermitteln. Die Teilnehmer kommen
> aus dem Bereich Mathe/Physik und nicht aus Informatik, das gibt es bei
> uns nicht.

Achso. Dann nehme ich meine Empfehlung von weiter oben zurück. Nimm 
stattdessen Matlab, Simulink, Xilinx System Generator und ein passendes 
Board dazu. 30-Tage-Lizenzen gab es mal kostenlos. Vielleicht lässt der 
Xilinx-Ansprechpartner mit sich reden.

Alternativ einen Schematic-Editor. Ggf. mit http://papilio.cc/ oder 
ähnliches.

Keinesfalls VHDL.


Welche Uni?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Gustl B. schrieb:
> Die Teilnehmer kommen aus dem Bereich Mathe/Physik und nicht aus
> Informatik, das gibt es bei uns nicht.
Aua, übersehen... :-/
Dann passt das, was Lars R. schrieb:
>> Nimm stattdessen Matlab, Simulink, Xilinx System Generator und ein
>> passendes Board dazu.
Und dann kannst du auch gleich den Speicher-Core und den PCIe- oder 
USB3- oder 10Gigabit-Ethernet-Core mit reinpacken. Denn genau diese 
"einfache" Vorgehensweise ist es, von der der Mathworks-Verkäufer den 
Jungs auf der Messe erzählt und vorgeschwärmt hat...

: Bearbeitet durch Moderator
von Gustl B. (-gb-)


Lesenswert?

Lars R. schrieb:
> Keinesfalls VHDL.

Lothar M. schrieb:
> Und dann kannst du auch gleich den Speicher-Core und den PCIe- oder
> USB3- oder 10Gigabit-Ethernet-Core mit reinpacken. Denn genau diese
> "einfache" Vorgehensweise ist es, von der der Mathworks-Verkäufer den
> Jungs auf der Messe erzählt und vorgeschwärmt hat...

Hallo? Meint ihr das ernst? Das wird ein Workshop für Anfänger und es 
wird ein FPGA-Workshop, also kein Simulink-Workshop. Ich bezweifle auch 
sehr, dass Erfahrung mit Matlab vorhanden ist weil es keine FH sondern 
eine Uni (ohne Etechnik) ist.

Also da ich selber keine Erfahrung mit Matlab in Bezug auf FPGAs, PCIe- 
oder USB3- oder 10Gigabit-Ethernet-Core habe werde ich mich dann wohl 
daraus zurückziehen und das Jemanden anders machen lassen. Ich könnte 
wirklich nur Grundlagen anbieten.

Lars R. schrieb:
> Alternativ einen Schematic-Editor. Ggf. mit http://papilio.cc/ oder
> ähnliches.

Schematic wollte ich eigentlich auch nicht machen, vielleicht mal 
herzeigen aber auch nicht mehr. Hm ...

: Bearbeitet durch User
von Lars R. (lrs)


Lesenswert?

Ja. Das, was Du Dir zunächst mit besten Absichten überlegt hast, ist so 
unheimlich weit von der Erwartungshaltung der Studenten entfernt. 
Möglicherweise auch von der Erwartungshaltung derer, die Dich von 
Uni-Seite dafür anfragen. Insbesondere auch, was das "Ergebnis" des 
Kurses anbelangt.

Du möchtest VHDL mit Studenten benutzen, die keine Informatikstudenten 
sind, nicht programmiert haben und womöglich auch Matlab noch nicht 
gesehen haben. Überleg Dir das doch einmal in Ruhe selbst.

> Also da ich selber keine Erfahrung mit Matlab in Bezug auf FPGAs, PCIe-
> oder USB3- oder 10Gigabit-Ethernet-Core habe werde ich mich dann wohl
> daraus zurückziehen und das Jemanden anders machen lassen. Ich könnte
> wirklich nur Grundlagen anbieten.

Die Konsequenz könnte auch hier wieder richtig sein, aber die Annahme 
ist falsch. Mit dem System Generator kann man auch Zustandsautomaten 
modellieren und LEDs blinken lassen. Vorher anschauen müsstest Du Dir 
die Sache natürlich und vermutlich wäre es auch für Dich ganz 
interessant.
Das FPGA-Systemgenerator-Simulink-Design, welches automatisch auf den 
FPGA geladen wird auf dem FPGA "läuft", kommuniziert mit dem 
Systemgenerator-Simulink-Design, welches auf dem PC läuft. Bei Designs 
bestehen lediglich aus zusammengeklickten und konfigurierten Symbolen. 
Der Rest läuft im Hintergrund. Wahlweise Cycle-akkurat oder Continuous 
(oder wie das dort heißt)

Als ich das vor einigen Jahren angeschaut hatte, lief das problemlos 
über UART. Und ich glaube, auch über Ethernet. Ich weiß nicht, wie weit 
die inzwischen sind. Vielleicht gibt bei der Co-Simulation inzwischen 
auch die Auswahl "PCIe". Dann läuft es halt über PCIe-Core. Den brauchst 
Du ggf. nicht mal selbst einbinden.
Jedenfalls werden nur für bestimmte Boards die passenden Board-Files im 
Systemgenerator mitgeliefert. Und so ein Board musst Du dafür nehmen. 
Dann ist schon alles vorbereitet.

Ganz ähnliche Lösungen gibt es auch von NI. Die bieten zu Ihren 
Umgebungen sogar regelmäßig kostenlose Ganztagsseminare an.

von Gustl B. (-gb-)


Lesenswert?

Ja, klar das liegt vielleicht näher an der Erwartungshaltung, ist für 
mich dann aber kein FPGA-Workshop mehr. Ich werde das mal abklären mit 
den anderen Beteiligten.

Ausserdem möchte ich keine Abhängigkeit zu irgendwelchen Herstellern 
oder Boards, also Matlab können Studenten nicht daheim benutzen und die 
Boards mit denen das zusammenarbeitet sind halt auch oft teuer.
Naja, wenn der Workshop in diese Richtung gehen sollte wäre ich 
vielleicht auch froh wenn ich das dann nicht mitbetreue.

Jedenfalls Danke für Deine Sicht der Dinge! Du hast auch völlig Recht, 
dass man sonst innerhalb eines solchen Kurses von Null an nicht so 
sonderlich viel schaffen würde.

Lars R. schrieb:
> Du möchtest VHDL mit Studenten benutzen, die keine Informatikstudenten
> sind, nicht programmiert haben und womöglich auch Matlab noch nicht
> gesehen haben. Überleg Dir das doch einmal in Ruhe selbst.

Darin sehe ich jedoch keinen Widerspruch, da VHDL von anderen Sprachen, 
Prorammiersprachen, sehr unterschiedlich ist, es ist eine 
Beschreibungssprache mit komplett anderer Denkweise.

von Lars R. (lrs)


Lesenswert?

Gustl B. schrieb:
> Lars R. schrieb:
>> Du möchtest VHDL mit Studenten benutzen, die keine Informatikstudenten
>> sind, nicht programmiert haben und womöglich auch Matlab noch nicht
>> gesehen haben. Überleg Dir das doch einmal in Ruhe selbst.
>
> Darin sehe ich jedoch keinen Widerspruch, da VHDL von anderen Sprachen,
> Prorammiersprachen, sehr unterschiedlich ist, es ist eine
> Beschreibungssprache mit komplett anderer Denkweise.

Dann solltest Du meiner Ansicht nach mit dem Geben solcher Kurse "ganz 
vorsichtig sein". Unabhängig davon, in welcher Art und Weise der Kurs 
letztlich erwartet wird.
Die Begründung dazu formuliere ich nicht aus, weil ich nicht weiß, wie 
ich es in wenigen Sätzen verständlich ausdrücken kann... parallel, 
sequentiell, Programmablaufpläne, Wie oft wird eine Schleife 
durchlaufen?, Syntax, Was sind sequentielle VHDL-Zuweisungen, was sind 
parallele (nur Signale betrachtet), Zuweisungen default cases (nicht 
case-Statement), Latches statt FFs, Anfänger-multiple-drivers-Error, 
Bitbreiten, int, std_logic, unsigned/signed, Effekte des Simulators 
(angefangen bei der Sensitivity list), usw.
Das alles und noch viel mehr (constraints...) mit Leuten, bei denen Du 
mit print HelloWorld und if/else anfängst.

Edit: Troll?

: Bearbeitet durch User
von Gustl B. (-gb-)


Lesenswert?

Lars R. schrieb:
> Edit: Troll?

Ich betrachte so langsam eher Dich als Troll und wünsche mir mehr 
Kommentare von Anderen.

Hier im Forum haben immer wieder Anfänger mit Vorkenntnissen aus 
Programmiersprachen starke Probleme mit der Beschreibungssprache VHDL.

Lars R. schrieb:
> parallel,
> sequentiell, Programmablaufpläne, Wie oft wird eine Schleife
> durchlaufen?, Syntax, Was sind sequentielle VHDL-Zuweisungen, was sind
> parallele (nur Signale betrachtet), Zuweisungen default cases (nicht
> case-Statement), Latches statt FFs, Anfänger-multiple-drivers-Error,
> Bitbreiten, int, std_logic, unsigned/signed, Effekte des Simulators
> (angefangen bei der Sensitivity list), usw.

Und was soll es bei all dem helfen vorher C oder einen andere 
Programmiersprache zu können? Ich konnte vor VHDL schon etwas C und mir 
hat das nicht wirklich geholfen. VHDL sieht eher wie Pascal aus, hat 
aber auch mit Pascal nicht viel gemein, es ist eine 
Beschreibungssprache.

Egal, ich hab jedenfalls auch Deine Meinung gelesen, Danke dafür.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Lars R. schrieb:
> Du möchtest VHDL mit Studenten benutzen, die keine Informatikstudenten
> sind, nicht programmiert haben und womöglich auch Matlab noch nicht
> gesehen haben.
Die studieren BWL.

Lars R. schrieb:
> Das alles und noch viel mehr (constraints...) mit Leuten, bei denen Du
> mit print HelloWorld und if/else anfängst.
Oder gar so: Leute, die das Schreiben eines Briefes mit Word schon mit 
"Programmieren" gleichsetzen.

Na gut, das ist jetzt ein wenig überspitzt ausgedrückt, trifft aber 
vermutlich das Ziel ganz gut. Wenn die Jungs erwarten, dass du ihnen 
Matlab/Simulink (für Mathematiker und Physiker) beibringst, und du 
fängst mit VHDL-Grundlagen an, dann ist es, wie wenn du einem 
Word-Briefeschreiber das Message- und Treibermodell von Windows 
erklärst.
Er wird sagen "Thema verfehlt", obwohl du sicher bist, dass das Wissen 
um die Interna wichtig ist, um den Rechner sicher und effizient am 
Laufen zu halten. Und beide haben Recht. Nur haben beide auch nichts von 
der aufgewendeten Zeit...

> Ich werde das mal abklären mit den anderen Beteiligten.
Und mit den Studenten...

Lars R. schrieb:
> Edit: Troll?
Nein, leider nicht. So ist das Leben...  :-/

: Bearbeitet durch Moderator
von Lars R. (lrs)


Lesenswert?

Lothar M. schrieb:
> Lars R. schrieb:
>> Du möchtest VHDL mit Studenten benutzen, die keine Informatikstudenten
>> sind, nicht programmiert haben und womöglich auch Matlab noch nicht
>> gesehen haben.
> Die studieren BWL.
Ja. "Kein Matlab" stand vom TO so im Raum. Deshalb schrieb ich 
"womöglich".

> Lars R. schrieb:
>> Edit: Troll?
> Nein, leider nicht. So ist das Leben...  :-/
Ja, unbedacht und voreilig von mir. Danke. :)

von Gustl B. (-gb-)


Lesenswert?

Lothar M. schrieb:
> Die studieren BWL.

Nein, das machen wir nicht und ist wenig hilfreich.

Lothar M. schrieb:
> Nein, leider nicht. So ist das Leben...  :-/

Das ist auch nur bedingt hilfreich. Wir haben interessierte Studenten 
(ich bin auch einer) die gerne etwas zu FPGAs lernen möchten. Daher 
wollen wir einen FPGA-Workshop anbieten. Die Frage ist jetzt was man da 
genau macht, inhaltlich.

Hast Du da eine Empfehlung Lothar? Generell würde mich interessieren ob 
VHDL von Grund auf, fertige Systeme zusammenklicken, eine Mischung 
daraus oder etwas mit SoC?

Da es ein FPGA-Workshop werden soll möchte ich vor allem nichts 
voraussetzen müssen was man nicht wirklich benötigt (Matlabkenntnisse, 
Programmiererfahrung, Linuxkenntnisse). Die Projektideen die ich oben 
noch zusätzlich zu der Idee mit der CCD-Leiste aufgelistet habe

Gustl B. schrieb:
> Ein weitere Beispiele die noch Anfängergeeignet sind wären:
>
> 1. Ein Frequenz/Signalgenerator mit VGA als DAC für Sinus, Rechteck,
> Sägezahn. Steuerung über Drehgeber oder vom PC aus über UART.
> 2. Ansteuerung einer RGB-LED mit PWM über Drehgeber/UART.
> 3. Uhr/Stoppuhr
> 4. FM-Sender der das Audio über einen ADC bekommt
> 5. 1Bit PWM Audio vom ADC zu PWM mit Lautstärkeregelung und so oder
> Audio über UART an FPGA nach PWM.

sind alle ohne Vorkenntnisse machbar, vermutlich auch innerhalb eines 
Semesters.

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


Lesenswert?

> Oder geht es in die Richtung dass man einfach änfängt Kerne
> aneinanderzukleben? So wie heutzutage auch programmiert wird mit lauter
> Fremdbibliotheken?

Wenn dein Projekt aus verschiedenen Mudulen besteht, von denen du kein 
Support bekommst, wirst du Schiffbruch erleiden.
Du kannst kein Quellcode anschauen und das hinterlegt Beispiel passt aus 
verschiedenen Gründen nicht, dann brauchst du schon mal interes Wissen 
und das ist sehr schwer zu beschaffen.

von MaWin (Gast)


Lesenswert?

Gustl B. schrieb:
> Braucht man dazu noch eigene VHDL Kenntnisse?

Man braucht grundlegende Kenntnisse, z.B. über clock Domains

> Ich würde bei FPGAs immer von ganz unten mit dem Lernen anfangen,

Meiner Meinung nach nicht sinnvoll.

Man kann (in VHDL) beliebige Konstrukte formulieren, die nie 
synthetisierbar sind.

Man muss bei Logikschaltungen auch nichts über Dotierung der 
Transistoren wissen.

Wenn man VHDL/FPGA jemandem wirklich näher bringen will, fängt man nicht 
mit esoterischem Ballast an.

Gustl B. schrieb:
> wollen wir einen FPGA-Workshop anbieten. Die Frage ist jetzt was man da
> genau macht, inhaltlich.

Man fängt beispielsweise mit Logikschaltungen an. Einfache 
Gatterschaltungen und Register.

Man macht am zweiten Abend weiter, in dem man (im ersten Abend fertig 
gemachte) Gatterschaltungen (wie Volladdierer) verbindert, so wie man 
TTL-Bausteine verbinden würde.

Dann kann man am dritten Abend auch mal komplexe IP nehmen, über deren 
Innenleben nichts bekannt ist (z.B. ein UART).

Natürlich gibt es, wenn man ganz tief in den Grundlagen anfängt, auch 
manche Optimierungsschritte, die man sonst nicht kennenlernt, aber das 
ist akademisch.

Gustl B. schrieb:
> Ich habe hier das Buch VHDL-Synthese, da geht es die ersten 200 Seiten
> eigentlich nur um Grundlagen,

Ja, es gibt haufenweise schlechter Bücher, mit der Absicht, Konkurrenten 
mit sinnlosem Ballast zuzuschmeissen, damit man selber schneller weiter 
kommt.

Achim S. schrieb:
> Ja, man kann IP-Cores ohne jedes Verständnis zusammenklicken. Aber es
> muss nicht so sein.

Bei simplen IP (Halbaddierer :-) kann jeder noch beim Entstehen 
mitmachen, beim komplexen (z.B. UART mit 16-fachem Takt) muss man das 
nicht mehr machen, das unterscheidet sich nicht vom einfachen, kostet 
nur mehr Zeit.

Achim S. schrieb:
> Die dritte Gruppe kümmert sich darum

Schlecht. So bekommst du Leute, die nur Teilbereiche kennen und immer 
noch keine Ahnung haben, wie es zusammenspielt.

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


Lesenswert?

Was sicher ein Ziel sein kann, das dauert eben auch Jahre sich 
wiederverwendbare Module zu schaffen. Diese kosten aber auch Zeit und 
muss gepflegt und dokumentiert werden.

Ich hatte da mal ein SPI Modul angefangen.
http://www.dossmatik.de/vhdl/spimaster.pdf

Meine Grundidee ist eine Softcore-CPU zu nutzen und den größten Teil der 
Programmierung in C auszulagern. Das ist den meisten Programmieren 
bereits vertraut. So kann man schneller die Jungs begeistern, die breits 
mit Mikrocontrollern zu tun hatten. Die Toolchain wird aufwendiger und 
ist schon Vorlesung Teil 2. Du sucht aber noch was für Einsteiger.

von Gustl B. (-gb-)


Lesenswert?

MaWin schrieb:
> Man fängt beispielsweise mit Logikschaltungen an. Einfache
> Gatterschaltungen und Register.

Genau das meinte ich mit "Grundlagen" also Kombinatorik, 
Zustandsautomaten, Constraints, Simulation, ... oder sollte man das 
weglassen? Ich finde das sehr wichtig.

MaWin schrieb:
> Man muss bei Logikschaltungen auch nichts über Dotierung der
> Transistoren wissen.

Das wäre mir auch zu tief.

Vielen Dank René! So wie Du sehe ich das auch und haben es weiter oben 
auch Andere. Klar braucht man auch fertige Komponenten, aber eben nur da 
wo es nützlich ist. Selbst bei einem UART ist das fraglich. Wenn man 
etwas lernen will, dann schreibt und simuliert man den selber, wenn man 
nur will dass es funktioniert nimmt man den fertigen Block.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Gustl B. schrieb:
> So wie Du sehe ich das auch und haben es weiter oben auch Andere.
An einer Elektronik Hochschule sehe ich es als sehr sinnvoll an, mit 
Grundlagen auf Bitebene loszulegen.
Aber du selbst hast geschreiben, dass die Wünsche anders aussehen:
Gustl B. schrieb:
>>> Die Wünsche zum Inhalt von Seiten der Studenten sind aber eher wenig
>>> anfängertauglich, also CCD, OpenCL, PCIe, ...
Deshalb musst du dich fragen: Wenn einer einen Rennwagen aus Carbon 
bauen will, hat der dann Spass daran, einen Roller aus Holz zu basteln?

Gustl B. schrieb:
> Da es ein FPGA-Workshop werden soll
Das ist das Problem: der Name!
Ein FPGA-System ist ein Blinklicht genauso wie ein PCIe gekoppelter 
32-Bit-Prozessor mit DDR. Wenn du es schaffst, den Studis den OpenCL und 
PCIe Zahn zu ziehen und zu sagen: "Jetzt lassen wir erst mal was Rollen, 
das ist auch schon Fortbewegung!" und wenn sie dann trotzdem kommen, 
dann kann das was werden.
Aber es ist eben kein "FPGA-Workshop" im Sinne von 
Mathematikern/Physikern (wie binde ich ein FPGA an meinen Rechner an um 
die Berechnung von Bitcoins/Wettermodellen zu beschleunigen), sondern 
einer im Sinne von Elektrikern (wie werden Zahlen dargestellt und 
verarbeitet).

> Hast Du da eine Empfehlung Lothar?
Stell dein Konzept auf. Mit Sachen, bei denen du dich auskennst. Und 
biete das an. Wenn einer Interesse hat, dann soll und wird er kommen.

René D. schrieb:
> So kann man schneller die Jungs begeistern, die breits mit
> Mikrocontrollern zu tun hatten.
Es sind Physiker und Mathematiker, keine Elektroniker.

MaWin schrieb:
> Gustl B. schrieb:
>> Ich habe hier das Buch VHDL-Synthese, da geht es die ersten 200 Seiten
>> eigentlich nur um Grundlagen,
> Ja, es gibt haufenweise schlechter Bücher, mit der Absicht, Konkurrenten
> mit sinnlosem Ballast zuzuschmeissen, damit man selber schneller weiter
> kommt.
Lustigerweise zählt gerade dieses Buch nicht zu den Schlechten.
Überhaupt nicht...

von Gustl B. (-gb-)


Lesenswert?

Das Buch hatte ich auch auf Deine Empfehlung hin gelesen und für sehr 
lehrreich befunden :-)

Ja, ich werde mal evaluieren was wirklich das Interesse ist, und dann 
werde ich anbieten was ich eben so zu bieten habe. Klar wird der 
Workshop offen sein für alles, aber bei machen Dingen können die 
Betreuer wie ich eben nicht helfen.
Ich bin gespannt was daraus wird.

von Martin S. (strubi)


Lesenswert?

Moin,

wenn die Wünsche der Interessierten anders aussehen, könnte ich noch den 
Einstieg per MyHDL empfehlen. Die meisten Wissenschaftler kommen 
irgendwann an Python nicht vorbei, da ist die Hürde zumindest, was das 
Code schreiben angeht, dann nicht so hoch und man muss sich mit den 
mühsamen Hinterlassenschaften von "verbosen" (sorry für denglisch, aber 
"geschwätzig" klingt auch doof) Sprachen wie VHDL oder dem hässlichen 
Verilog nicht herumschlagen. Und: Man lernt gleich anständig zu 
simulieren, denn der Simulator ist mit drin.
Vorteil an MyHDL ist, dass man genau wie bei VHDL immer noch 
"elektronisch" statt "programmatisch" denken muss, aber bei der 
Simulation gleich ein anständiges Scripting zur Hand hat. Das spart 
viele Wochen bei der Verifikation.

Wenn Du in Richtung SoCs willst, was ich jetzt im ersten Anlauf ne recht 
grosse Nummer finde, gibt's eigentlich nur wenige Möglichkeiten: Gleich 
den Kram vom FPGA-Hersteller nehmen (kann für gelegentliches Unwohlsein 
sorgen) oder einen von vielen mehr oder weniger akademischen Ansätzen 
adaptieren.
Zum Thema SoC-Entwurf ohne Schreib-Overhead gibt es einige interessante 
einigemassen generische Sachen:
- IP-XACT und ähnliche XML-Ansätze zur Code-Generierung
- kactus2 Toolchain
- DesignLab / ZPUino

Ich persönlich bin eher ein Fan von XML und kconfig/Makefiles, aber da 
tickt jeder anders.

Grüsse,

- Strubi

von Gustl B. (-gb-)


Lesenswert?

Hallo, vielen Dank!

SoC halte ich auch für ein paar Nummer zu groß, vor allem weil man dafür 
Anforderungen wie Grundkenntnisse der Rechnerarchitektur mitbringen 
sollte und auch C können muss.

MyHDL werde ich mir mal angucken bei Gelegenheit, ich finde aber auch 
VHDL ganz in Ordnung, so sonderlich viel Tipparbeit ist die 
Geschwätzigkeit auch nicht.

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


Lesenswert?

> René D. schrieb:
>> So kann man schneller die Jungs begeistern, die breits mit
>> Mikrocontrollern zu tun hatten.
> Es sind Physiker und Mathematiker, keine Elektroniker.

Ich kann gut mitfühlen. Ich war als Student HIWI bei den Physikern. 
Meine Aufgabe war es Messaufbauten zu bauen. Programieren konnen die 
alle sehr sehr schnell.
Nur bei der Sprache mit Fachbegriffen hat es etwas gedauert, bis die 
Physiker ihr komplexes System auftröseln konnen und einem Fachfremden 
Ihr Problem erklären konnten. Ich sehe die gleiche Sprachlücke bei 
deinen Leuten und dir.

von VHDL hotline (Gast)


Lesenswert?

Da es ja um eine Grundsatzfrage zu Designstrategien geht, kann mal 
jemand was zu den Xilinx Software Defined x-Methoden sagen? Habe es 
bisher nicht benutzt, klingt aber interessant. So etwas in der Art, um 
FPGAs für SW-Designer zugänglich zu machen?

http://www.eejournal.com/archives/articles/20141202-xilinx/
http://www.eejournal.com/archives/articles/20150317-sdsoc/



Zum konkreten Praktikumsfall gibt wie ja schon gesagt mehrere Methoden, 
je nach Motivation und Kenntnissen der Teilnehmer. Wenn es sich um 
ausreichend Teilnehmer mit genug Eigenmotivation handelt, mach doch 
mehrere kleine Gruppen und baue ein größeres Projekt aus vielen 
Gruppenteilleistungen, was auch für Physiker/Mathematiker interessant 
ist und wo am Ende was greifbares rauskommt, z.B. Richtung Audio- oder 
Bildverarbeitung. Wenn z.B. eine Gruppe eine Kosinustransformation 
umsetzt, eine andere Quantisierung und Codierung usw. , dann haben alle 
auch bißchen Mathekenntnisse angewendet und was über Umsetzung von 
Protokollen in HW gelernt. Am Ende könnte man das in ein von dir schon 
bereitgestelltes größeres Projekt einbinden und z.B. eine MP3/ein jpg 
decodieren o.ä . Dafür musst du natürlich selbst schon Interfaces 
definieren und ein Simulationsmodell bereitstellen, damit jede Gruppe 
unabhängig voneinander vorankommt.

von Gustl B. (-gb-)


Lesenswert?

Das sieht sehr interessant aus, habe ich nicht nix von gehört.

Nochmal zu dem Ansatz sich von der Entwicklungsumgebung alles generieren 
zu lassen wie mit diesem QSYS von Altera, ich denke da sollte man 
unterscheiden.

Es gibt Anwendungsfälle, für die gibt es alles fertig, zwar nicht 
komplett aber in einzelnen Blöcken. Das kann man sich dann ohne 
VHDL-Kenntnisse generieren lassen. Das ist vor allem im Bereich des 
Rechnens sinnvoll oder bei Signalverarbeitung.

Und es gibt auch Probleme die man mit einem FPGA lösen möchte, für die 
es nicht alles schon gibt, also z. B. wenn man eigene Hardware gebaut 
hat und die anbinden möchte. Dann kommt man um eine Beschreibungssprache 
nicht herum.

Ersteres ist für Physiker/Mathematiker wohl sinnvoll wenn es nur um das 
Rechnen geht, wenn aber selbst gebaute Geräte bedient werden sollen und 
man da eigene Hardware an das FPGA anschließt braucht man schnell wieder 
Kenntnisse von Hardware und Beschreibungssprache.

Dieses SDx sieht mir auch sehr danach aus wie eine Hilfe Rechenprobleme 
zu beschleunigen, also man will ein Problem rechnen das sich schön 
parallelisieren lässt, man hat ein dickes FPGA und dann beschreibt man 
das Problem in Software und es wird automatisch ins FPGA gesteckt. So 
wie OpenCL und andere. Das ist aber vermutlich etwas komplett anderes 
wie wenn man mit dem FPGA selber ein Gerät baut. Das spaltet sich meiner 
Meinung nach in einen Teil von Anwendungen ohne Notwendigkeit der 
Kenntnisse von Beschreibungssprachen und ein Teil mit.

Was man jetzt in einem Workshop behandelt wird sich nach der Nachfrage 
richten.

von Halbleiterstudent (Gast)


Lesenswert?

MaWin schrieb:
> Man muss bei Logikschaltungen auch nichts über Dotierung der
> Transistoren wissen.
Das hätte ich bis vor Kurzem auch noch gedacht, habe aber wegen dem hier 
eine andere Meinung:

Beitrag "Re: uC mit sicherem RAM ausstatten"

von Gustl B. (-gb-)


Lesenswert?

Ja gut, klar kann man immer tief eintauchen, aber das ist dann meist 
nicht sinnvoll für das Zeil das man erreichen möchte. Die Frage stellt 
sich auch, ob es sinnvoll ist VHDL zu erlernen oder generell alles mit 
Simulink/Labview/QSYS/... zu machen.

In diesem Fall für einen Workshop entfällt da aber weil dafür Grundlagen 
in anderen Bereichen benötigt würden. Nur mit VHDL und den 
Design-Werkzeugen des Herstellers kommt man auch schon relativ weit und 
verlangt keine Voraussetzungen von den Teilnehmern - ausser Motivation.

von J. S. (engineer) Benutzerseite


Lesenswert?

Man muss das eben gedanklich trennen:

1. Abläufe: FSMs, vFSMs, ALUs, C oder ASM auf Softcore
2. SoC - Verschaltung:  SoC-Designtool
3. Modulare Verschaltung: VHDL, HDL-Designer
4. SV-Cores:  Mathematik, Simulink
5. IO-Cores:  VHDL, Megawizzard
6. Elektronik: Pegel, Ströme, physische Interfaces, LVDS

Positionen 1 (und 2) kann man mit Softwareentwicklern besetzen,
Positionen 4 kann man mit Physikern und Systemern besetzen

Der Rest erfordert FPGA- und Digital-Kenntnisse und manchmal analoge 
Kenntnisse

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.