Forum: FPGA, VHDL & Co. Wie konstruiert man strukturiertes VHDL?


von Berater (Gast)


Lesenswert?

Wo und wie wird das eigentlich gelehrt?

Reicht es den FHs und Unis, den Studies beizubringen, wie die Sprache 
funktioniert und wie man die Konstrukte anwendet, oder wird da mehr 
getan?

Meine Frage nämlich lautet: Wie konstruiert man sinnvolle Schaltungen???

Beides sind 2 unterschiedliche Dinge und das eine impliziert noch nicht 
das andere, wie ich gerade wieder erfahren muss! Ich sitze an einem 
VHDL-Code, der von einem Physiker geschrieben wurde:

- tolle komplexe Konstrukte
- hoch dynamische und flexible Struktur
- viele generics
- aufs bit genau optimiert
- jedes sample ausgenutzt

Ein genialer Code, von einem Topmann, wie er auch intern gesehen wird. 
Problem: Der Code funktioniert nicht richtig in der realen Umgebung. 
Irgendwas passt mit dem Timing nicht. Denn leider:

- wurde ein viel zu komplizierter Ansatz verwendet
- glänzt der Code vor Fifos, wo keine gebraucht werden
- es gibt vertrackte Bitopmitierungen mit LUTs und SRs
- die Signale sind alle abstahiert und haben anonyme Namen
- der code ist praktisch komplett undokumentiert
- es gibt keine richtigen Testbenches
- der Topmann ist wech

Wie kommt man dem bei?

Wie erklärt man dem Auftraggeber, dass dieser tolle, intelligente Code 
nicht zu debuggen ist, jedenfalls nicht in vertretbaren Zeiträumen.(?)

Warum ist es immer noch so, dass immer wieder Wert auf die Sprache VHDL, 
nicht aber auf das Designen gelegt wird? Warum bringt man den Leute 
nicht mal bei, dass man testfreundlich entwicklen muss, teamfähigen- und 
lesbaren Code erzeugen muss und es nicht darauf ankommt, besoners 
geniale Struturen zu erdenken?

Und warum hängen überall Leute rum, die sich das offenbar selber 
beigebracht haben und aus der Art geschlagenen Code abliefern?

von Georg A. (Gast)


Lesenswert?

Der Typ könnte glatt bei Xilinx anfangen ;) Aber so absonderlich oder 
VHDL-spezifisch ist das nicht, das gibts genauso auch bei "normaler" 
Programmierung. Vor lauter OO-Tricks und supertollen 
Datenstrukturoptimierungen blickt dann auch kein anderer mehr durch.

von Matthias (Gast)


Lesenswert?

Wenn ich schon lese dass es keine ordentliche Dokumentation gibt, dann 
ist meine erste Frage immer:
gibt es specification-documents?
Wenn nein: Prima, alles was das Design macht, ist korrekt! Das Problem 
hat jemand anders

Willst du jetzt wissen warum die Menschen so sind, wie sie sind?

Arbeiten Programmierer nicht in einem strikten Team mit einem "Aufseher" 
der auf Guidelines achtet geht das garantiert schief. Sobald 
Programmierer/Entwickler die Freiheiten bekommen, zu tun und zu lassen 
was sie wollen, solange am Ende das raus kommt, was erwartet wird, denkt 
der Entwickler zu Anfang, er hat einen Traumjob gefunden. Und dann kommt 
man da an wo du jetzt stehst! Mein Job fing auch so an, ein Jahr lang 
VHDL entwickeln wie ich es gerade wollte solange hinten rauskam was 
erwartet wurde. Und meine 2 Kollegen ebenso. Dann wurde der eine lange 
krank, die Deadline kam naeher und ich musste seinen Code debuggen und 
verstand: NICHTS! Nicht eine kommentar-Zeile, Signale die Namen von 
Mitarbeitern tragen und alles schrecklich kryptisch und kompliziert 
gebastelt. Es lief darauf hinaus dass ich beinah alle Module neu 
schreiben musste, weil das schneller ging als sie aufzuraeumen und 
durchzutesten.

Aber erst seit wir in dieser Zeit einen externen "Aufseher" (Project 
Manager) dabei geholt haben hat sich bei uns eine strukturierte 
Arbeitsweise etabliert, in der sich an strikte design regeln gehalten 
wird. Sicher ist es nicht so toll erst ein Designdocument zu schreiben, 
Testbenches aufzuziehen und DANN erst anzufangen zu programmieren, aber 
es spart am Ende einen Haufen Zeit, Schweiss, manchmal Traenen und man 
versteht es einfach viel besser. Erst dokumentieren und dann 
programmieren erleichtert beides! Das tolle "Code fummeln bis es 
funktioniert" macht leider nur rund 10% des Jobs aus.

Zu deinem Problem, wie man dem beikommt:
Zuerst alles rauskicken was unnoetig ist (z.B. die FiFos), und dann mit 
Modelsim Stueck fuer Stueck alles durchrechnen, bis du den Fehler hast. 
Wenn es Timing probleme sind und der Code an sich funktioniert, musste 
mit Timing Constraints eben alles durchanalysieren. Ist das VHDL modul 
auch fuer die entsprechende Hardware geschrieben worden oder eigentlich 
fuer irgendwas viel schnelleres? Wenn du zumindest weisst was vorn 
reingeht und hinten rauskommen muss, dann kannste dich da durch wuehlen. 
Das kostet sicher Zeit und Muehe, macht auch vielen keinen Spass (mir 
schon), ist aber das Sinnvollste. Und dann dem Kunden sagen dass er 
seine Programmierer/Physiker/wasauchimmer aufn VHDL Basiskursus schicken 
soll um was ueber Coding und Design Guidelines zu lernen.
So Top kann der Mann uebrigens nicht sein wenn sein VHDL Konstrukt a) 
nicht vernuenftig tut was es tun soll und er b) zu faul war oder sich zu 
geil fand ordentlich zu dokumentieren. Code kompliziert machen kann so 
ziemlich jeder, ihn einfach/verstaendlich/uebersichtlich halten ist die 
Kunst

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


Lesenswert?

Berater schrieb:
> Problem: Der Code funktioniert nicht richtig in der realen Umgebung.
> Irgendwas passt mit dem Timing nicht.
Das ist der übliche ausgangspunkt für eine wochenlange Fehlersuche... 
;-)

> Wie erklärt man dem Auftraggeber, dass dieser tolle, intelligente Code
> nicht zu debuggen ist, jedenfalls nicht in vertretbaren Zeiträumen.(?)
Wurden mehrere Takte verwendet?
Wurden asynchronen Resets verwendet?
Kommen evtl. sogar kombinatorische asynchrone Resets vor?
Wenn sowas auftaucht, dann stelle ich SOFORT jede Lobhudelei in Frage, 
und kann mit simpelsten Beispielen die Qualifiktaion des Lobgehuldeten 
zunichte machen.
Und ab diesem Zeitpunkt ist das nicht eine Fehlersuche, sondern ein 
grundlegendes Redesign.

> Warum ist es immer noch so, dass immer wieder Wert auf die Sprache VHDL,
> nicht aber auf das Designen gelegt wird?
Weil viel Know-How zu FPGAs erst in den letzten Jahren aufgebaut wurde, 
die Bücher aber schon lange vorher verfasst wurden. Und für viele 
Faustregeln gibt es noch keine ausreichend dokumentierte Mathematik, so 
dass lieber die alte abstrakte Automatentheorie gelehrt wird, als die 
praktische Umsetzung eines Zählers in Hardware...

> - der Topmann ist wech
Das war offenbar genu der richtige Zeitpunkt zum Absprung... ;-)

> - der Topmann ist wech
> Wie kommt man dem bei?
Vermisstenmeldung an die Polizei?  ;-)

von J. S. (engineer) Benutzerseite


Lesenswert?

> Sicher ist es nicht so toll erst ein Designdocument zu schreiben,
> Testbenches aufzuziehen und DANN erst anzufangen zu programmieren,
> aber es spart am Ende einen Haufen Zeit
Exakt meine Haltung. Ich gehe sogar noch einen Schritt weiter und leite 
die Funktionalität, die man für die Tests und Validierungen in den SPECs 
definiert, direkt in Punkt-für-Punkt Abläufe in Exceltabellen. Aus denen 
kann man dann nicht nur den Datenstom für Modelsim-Filereader sondern 
auch den Ablauf von pipes und statemachines rausziehen und automatisch 
generieren lassen - inklusive Timing.

Ich würde gerne die Frage stellen, ob jemand hier in der Hochschule 
gelernt hat, wie man:

- wann und wie (nicht) einsynchronsiert
- physische von logischen "sets" und "resets" trennt
- asynchron rettet und wann man es bleiben lässt
- eine pipeline entwirft und dokumentiert
- serielle ind parallere Strukturen umdesiged
- die Balance zwischen serial und parallel ermittelt
- mit FiFos die Verarbeitungszeit komprimiert / dekomprimiert
- eine Iteration über Zeit-Flächen-Struktur realisiert
- eine Rekursion implementiert
- eine Formel so umstellt, dass sie VHDL-tauglich wird
- einen Algo so zerlegt, dass er parallelisierbar wird
- synthetisierbarer testcode implementiert und wann
- testbenches optimieren und automatisieren kann
- eine Resource in verschiedenen Zeitebenen mehrfach nutzt

Es geht also nicht um das VHDL, sondern grundsätzlich darum, wie man 
eine digitale Schaltung optimal aufteilt und aufbaut, dass das 
Gesamtergebnis passt und zwar letztlich auch noch unter Berücksichtigung 
von:

- Designaufwand am Arbeitsplatz + Abstimmungsbedarf im Team
- Verifikations- und Validierungsaufwand während Design
- Implementierungsaufwand im FPGA oder später mal ASIC oder anderes FPGA
- Integrationsaufwand des FPGA-Systems in der Umgebung / im System
- Test- und Inbetriebnahmeaufwand des Systems im Feld

Je nachdem, ob man einen Prototypen baut oder einen Kleinserie, eine 
Komponente o.ä. gibt es hier doch recht starke Verschiebungen.

Das alles kommt natürlich erst mit der Erfahrung, aber Digitaldesign im 
eigentlichen Sinne, scheinen die Wenigsten systematisch wirklich erlernt 
zu haben.

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


Lesenswert?

Juergen S. schrieb:
>> Sicher ist es nicht so toll erst ein Designdocument zu schreiben,
>> Testbenches aufzuziehen und DANN erst anzufangen zu programmieren,
>> aber es spart am Ende einen Haufen Zeit
> Exakt meine Haltung. Ich gehe sogar noch einen Schritt weiter und leite
> die Funktionalität, die man für die Tests und Validierungen in den SPECs
> definiert, direkt in Punkt-für-Punkt Abläufe in Exceltabellen. Aus denen
> kann man dann nicht nur den Datenstom für Modelsim-Filereader sondern
> auch den Ablauf von pipes und statemachines rausziehen und automatisch
> generieren lassen - inklusive Timing.

Das klingt interessant. Doch Excel finde ich mittlerweile grausam, da 
ich alles unter Excel gesehen habe, was nicht in Excel sollte.



> Ich würde gerne die Frage stellen, ob jemand hier in der Hochschule
> gelernt hat, wie man:
>
> - wann und wie (nicht) einsynchronsiert
> - physische von logischen "sets" und "resets" trennt
> - asynchron rettet und wann man es bleiben lässt
> - eine pipeline entwirft und dokumentiert
> - serielle ind parallere Strukturen umdesiged
> - die Balance zwischen serial und parallel ermittelt
> - mit FiFos die Verarbeitungszeit komprimiert / dekomprimiert
> - eine Iteration über Zeit-Flächen-Struktur realisiert
> - eine Rekursion implementiert
> - eine Formel so umstellt, dass sie VHDL-tauglich wird
> - einen Algo so zerlegt, dass er parallelisierbar wird
> - synthetisierbarer testcode implementiert und wann
> - testbenches optimieren und automatisieren kann
> - eine Resource in verschiedenen Zeitebenen mehrfach nutzt

fast null. Alles selbst erlernt.

was meinst du eigentlich mit den Punkten?
> - physische von logischen "sets" und "resets" trennt
> - eine Iteration über Zeit-Flächen-Struktur realisiert
da muss ich passen, oder es läuft unter einem anderen Begriff bei mir



> Es geht also nicht um das VHDL, sondern grundsätzlich darum, wie man
> eine digitale Schaltung optimal aufteilt und aufbaut, dass das
> Gesamtergebnis passt und zwar letztlich auch noch unter Berücksichtigung
> von:
>
> - Designaufwand am Arbeitsplatz + Abstimmungsbedarf im Team
> - Verifikations- und Validierungsaufwand während Design
> - Implementierungsaufwand im FPGA oder später mal ASIC oder anderes FPGA
> - Integrationsaufwand des FPGA-Systems in der Umgebung / im System
> - Test- und Inbetriebnahmeaufwand des Systems im Feld
>

Das sind alles Fragen nach der Wirtschaftlichkeit. Ich würde die Aussage 
etwas unterteilen. VHDL st keine Programmierung für eine CPU, sonder es 
wird Hardware geschaffen. Das ist Digitaltechnik!!
Auf der geschaffenen Hardware kann unter Umständen auch Software laufen. 
Wie der Schnitt Software Hardware gehalten werden sollte ist eine ganz 
schwierige Frage und beeinflusst das Design gewaltig.

 Die Algorithmen passen nicht 1:1 mehr, weil Prozesse synchronisiert 
werden müssen und Daten noch eine Gültigkeitsdauer haben.
VHDL wird of als Nebenfach angeboten. Mal bei den Informatikern und mal 
bei den Elektrotechnikern und alles bleibt in den Grundlagen stecken.
Die Dokumentation ist dann immer noch weit entfernt. Auch mathlab ist 
keine Dokumentationsebene.
Am besten wäre UML als Dokumentionsgrundlage -

von Thomas R. (Firma: abaxor engineering) (abaxor)


Lesenswert?

René D. schrieb:
>> Ich würde gerne die Frage stellen, ob jemand hier in der Hochschule
>> gelernt hat, wie man:
>>
>> - wann und wie (nicht) einsynchronsiert
>> - physische von logischen "sets" und "resets" trennt
>> - asynchron rettet und wann man es bleiben lässt
>> - eine pipeline entwirft und dokumentiert
>> - serielle ind parallere Strukturen umdesiged
>> - die Balance zwischen serial und parallel ermittelt
>> - mit FiFos die Verarbeitungszeit komprimiert / dekomprimiert
>> - eine Iteration über Zeit-Flächen-Struktur realisiert
>> - eine Rekursion implementiert
>> - eine Formel so umstellt, dass sie VHDL-tauglich wird
>> - einen Algo so zerlegt, dass er parallelisierbar wird
>> - synthetisierbarer testcode implementiert und wann
>> - testbenches optimieren und automatisieren kann
>> - eine Resource in verschiedenen Zeitebenen mehrfach nutzt
>
> fast null. Alles selbst erlernt.

So ist es. Dafür werden noch massiv Logikminimierungsverfahren gelehrt.

Tom

von D. I. (Gast)


Lesenswert?

Thomas Reinemann schrieb:
> René D. schrieb:

>>> - wann und wie (nicht) einsynchronsiert
>>> - physische von logischen "sets" und "resets" trennt
>>> - asynchron rettet und wann man es bleiben lässt
>>> - eine pipeline entwirft und dokumentiert
>>> - serielle ind parallere Strukturen umdesiged
>>> - die Balance zwischen serial und parallel ermittelt
>>> - mit FiFos die Verarbeitungszeit komprimiert / dekomprimiert
>>> - eine Iteration über Zeit-Flächen-Struktur realisiert
>>> - eine Rekursion implementiert
>>> - eine Formel so umstellt, dass sie VHDL-tauglich wird
>>> - einen Algo so zerlegt, dass er parallelisierbar wird
>>> - synthetisierbarer testcode implementiert und wann
>>> - testbenches optimieren und automatisieren kann
>>> - eine Resource in verschiedenen Zeitebenen mehrfach nutzt
>>
>> fast null. Alles selbst erlernt.


Kann ich nur bestätigen, habe mir das meiste aus dieser Liste auch durch 
Praxisaufgaben erarbeitet.

von Georg A. (Gast)


Lesenswert?

> Es geht also nicht um das VHDL, sondern grundsätzlich darum, wie man
> eine digitale Schaltung optimal aufteilt und aufbaut, dass das
> Gesamtergebnis passt und zwar letztlich auch noch unter
> Berücksichtigung von: <...>

Wobei mir das (als Informatiker) auch etwas kurz gedacht vorkommt. Wenn 
es eine Interaktion mit SW gibt (nicht immer, aber oft hängt das Zeug ja 
an irgendeiner CPU), sehe ich das Hauptproblem beim Design darin, die 
Schnittstellen für beide Ebenen effizient zu gestalten. Das bedingt eine 
gute Interaktion der HW- und SW-Fuzzies bei der Spezifikation, die es 
oft aber nur bei kleinen Klitschen zwangweise (überspitzt "jeder kann 
alles") gibt.

Ich habe es bei Designs schon öfters gesehen, dass da sehr viel Mühe in 
HW-Teile gesteckt wurde, die mit einer Handvoll C-Zeilen in 2min ohne 
Performanceverlust auch machbar gewesen wären. Aber genauso gibt es 
Designs, wo mir der SW-Entwickler leid tut, der die HW-Ansteuerung 
ausbaden muss ;)

> So ist es. Dafür werden noch massiv Logikminimierungsverfahren gelehrt.

Naja, so ein bisschen Rumspielen mit boolscher Algebra, KV und 
Quine-McCluskey sollte man in 1-2 Vorlesungsstunden schon machen, damit 
man mal gesehen hat, was das Zeug kann und wo die Limits liegen. Das 
sollte dann aber auch reichen, ausser man hat Schwerpunkt 
"Logiksynthese" oder sowas...

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


Lesenswert?

Thomas Reinemann schrieb:
> So ist es. Dafür werden noch massiv Logikminimierungsverfahren gelehrt.
Und Halbaddierer auf RTL-Ebene beschrieben und zu Volladdierern 
verknotet. Dabei wird dann aber nicht auf die Wichtigkeit der 
Carry-Chain, deren geschwindigkeitslimitierende Funktion und die 
Umsetzung der Kette in FPGAs eingegangen...

Georg A. schrieb:
> Naja, so ein bisschen Rumspielen mit boolscher Algebra, KV und
> Quine-McCluskey sollte man in 1-2 Vorlesungsstunden schon machen, damit
> man mal gesehen hat, was das Zeug kann und wo die Limits liegen.
Es sollte aber abschliessend der Hinweis kommen, dass diese ganze 
Optimiererei bei bis zu 4 (bzw. 6) Eingängen in FPGAs unnötig ist, weil 
die LUT (oder neu: der Funktionsgenerator) das sowieso direkt abbilden 
kann...

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


Lesenswert?

Das klingt als bräuchten wir eine Selbsthilfegruppe.

Ich gebe auch  Georg A. recht, es gibt auch überzogene Hardware 
Ausführungen, was besser in eine CPU gepasst hätte.

Hier ist es wichtig eine Projektleitung zu haben, da die Sachen von 
mehreren Kollegen entwickelt werden. Wie kann projektübergreifend 
diskutiert werden?
Daran krankt es.
Das sind Diagramme und als Schiedsrichter Testbenches. Eine Testbench in 
einem zu frühen Stadium ist etwas überzogen.

von Digitaler Schlüssel (Gast)


Lesenswert?

> Das klingt als bräuchten wir eine Selbsthilfegruppe.


Die anonymen VHDoLiker

;-)

von J. S. (engineer) Benutzerseite


Lesenswert?

Ob da der Projektleiter der Richtige ist, weiss ich nicht. Es muss 
jemand sein, der breit und tief ausgebildet und lange Erfahrung in allen 
Bereichen hat. Typisch macht das ein Senior System Engineer:

Wenn man solche Systeme hinstellen und partitionieren will, dann gelangt 
man nur zu einer klugen Aufteilung von HW und SW, bzw HW-Abläufen und 
SW-Abläufen, zu Schnittstellen und Interaktionen, wenn man beide Welten 
sehr gut kennt.

Und ja, er muss sie studiert haben!

Denn, wenn ich eins in all den Jahren gelernt und gesehen habe, dann 
das, dass es in der Softwarelandschaft (C, Algorithmik und VHDL-basierte 
Abläufe) ein großer Haufen an Mist zusammengeschustert wird. Da gibt es 
die abenteuerlichsten Konstrukte mit tollen Tricks und "Realisationen", 
für die es längst schlüsselfertige, intelligente Lösungen in der 
Schublade gibt, von denen man unbedingt profitieren und Gebrauch machen 
muss, wenn man einfach, effektiv und stabil entwickeln will.

Das kann man sich nicht alles selber beibringen, weil man das meiste 
nicht irgendwo in der Anschauung sieht oder sich selber ausdenken kann. 
Man muss es gesehen haben, BEVOR man es braucht. Man muss wissen, dass 
es das gibt und ungefähr sehen und schätzen, was es an Zeit und Aufwand 
kostet und was damit möglich ist.

Ich habe immer wieder Leute gesehen, die aus fremden Bereichen der 
Wissenschaft in die Programmierung einsteigen und dann schnell an limits 
kommen. Umgekehrt bekommen selbst eingeschleischte Softwareentwickler es 
einfach nicht hin, in die strukturelle Ebene hineinzudenken.

Wenn man 5 Jahre Maschinenbau studiert hat, kennt man keine 
Digitalschaltungen und deren Eigenheiten und Details bleiben einem 
verborgen. Typische Synch-, Phasen- und Taktprobleme hat man auch nur 
verinnerlicht, wenn man reale Chips vor Augen hat, denn Abstraktheit hin 
oder her: Am Ende klickern da drinnen analoge Transistoren, die nur in 
der vereinfachten Betrachtung diskrete Funktionen aus LUTs darstellen.

Und genau dieses Wissen sorgt dafür, dass man manche Sachen u.U. eben 
nicht in SW nachbilden kann, ein FPGA im Einzelfall nicht taugt oder 
umgekehrt aus technischen Gründen ein "langsamer" DSP verwendet werden 
muss.

von J. S. (engineer) Benutzerseite


Lesenswert?

>Excel
Ich benutze das als schlaues Karopapier. Andere malen sich was auf den 
Zettel- ich zeichne Wiederverwendbares. Das gemeinsame Editieren von 
Varianten, Abläufen und Verzweigungen für physische oder virtuelle 
Derivate und Versionen geht mit COPY&PASTE schneller, als das Malen von 
Bäumchen in Visio :-)

Und Planen und Automatisieren geht auch simpel und einfach, weil man 
leicht Umkopieren, Löschen und Duplizieren kann. Und: Man kann Dinge, 
mit miteinander verknüpft sind, als harte oder weiche Verknüpfung 
belassen und sich eine Alternativversion auf Nachbarblättern 
durchrechnen lassen, bzw Änderungen in der V1-Version automatisiert 
weitergeben, um Konsistenz aufrecht zu erhalten, wo sie nötig ist.

Ein Beispiel aus dem FPGA-Bereich wäre das Halten und Planen der 
Verdrahtungstruktur von Bussen über Platinen und FPGA-Grenzen hinweg, 
inklusive der Namen der Signale an den Stecker, Ports, Entities etc. 
sowie die Versionsplanung für verschiedene Ausbaustufen oder die 
Migrationsplanung unter Nutzung von Chips unterschiedlicher Hersteller.

Ein reales Beispiel mit geänderten Zahlen:

Man denke sich mal eine Struktur aus z.B. 3 x 4 FPGAs, wo sich 10 davon 
50 ähnliche Funktionen teilen, 5 davon weitere 200 
Leitungstreiberfunktionen, wobei jeweils 40 dieser Leitungen durch 
jeweis andere FPGAs redundant getrieben werden können müssen, wegen 
Minderbestückung und alle 12 zusammen auch 1 bestimmte Funktion verteilt 
leisten, manche FPGAs aber auch nur eine einzige Funktion leisten, die 
nur sie beherrschen.

Das Ganze dann für 2 verschiedene Versionen von Boards, wo sich die 
Zuordnungen der Pins teilweise physisch ändern und 2 verschiedene 
Prozessoren / Ansteuerungen, wo sich die Busse und die Timings ändern = 
4 Versionen! Man darf aber nur 3 verschiedene, jeweils unterschiedliche 
FPGA-images verwenden, weil das Flash auf den alten board-Versionen zu 
klein ist und die boards plug-and-meassure fähig sein müssen, alles 
selber erkennen müssen und überall passen sollen.

Das gibt eine Matrix mit wenigstens 4 Dimensionen mit divergenten und 
konvergenten Überlappungen, deren Funktionsvielfalt genau so auf 
virtuelle FPGA-Funktionen gemappt werden muss, dass am Ende jedes FPGA 
eines von 3 images bekommt, welche in Summe die Vereinigungsmenge aller 
Funktionen können, aber pro FPGA jeweils nur die Teile funktionieren, 
die in diesem FPGA benötigt werden, die Summe der so zusammenarbeitenden 
FPGAs aber die gesamt Teilfunktion kann. Das kompliziertes FPGA nutzt 
dann aus seinem Image, welche z.B. 40 Teilfunktionen könnte, z.B. 13, 
dessen Nachbar nur 7. Macht in Summe 20 Funktionsteile (4 
unterschiedliche) von insgesamt >70 insgesamt auf dem board.

Und dann bitte bis Ende der folgenden Woche eine Planungsmethode 
entwickeln, wo alle Funktionen enthalten-, übersichtlich geordnet-, und 
so gruppiert sind, dass die daraus notwendigen virtuellen 
Verdrahtungsoptionen ersichtlich sind und die Vollständigkeit 
sichergestellt werden kann. Ok, hab' ich gemacht.

Ergebnis: Mehrere Designingenieure inkl Projektleiter mit Kinnlade 
unten, automatisch erzeugte "set_location's" für's UCF ohne Tippfehler, 
automatische Summierung der Funktionen, Teilfunktionen, Pins je FPGA, 
Busbreitenwerte für Derivateoption und Darstellung der Zuordnung der 
realen physischen Pins zu virtuellen Kanälen der Software -> 
Programmiertabelle ausleitbar

... und ein Dr. der Mathematik, der sich ein halbes Jahr lang bereits 
mit der Planung des Systems befasst hatte und zu dem Schluss gekommen 
war, man brauche mindestens 2 verschiedene boards mit insgesamt 5 
verschiedenen images.

Meine reale Aufgabe war im Ürigen noch etwas komplexer.

Wenn ich mir überlege, was man davon in den heutigen 
SOC-builder-Systemen und System-Generator-blocksets oder HDL-Designer 
abbilden kann, dann happy digit!

von Bewunderer (Gast)


Lesenswert?

Juergen S., so gut wie du möchte ich auch gerne mal werden...

von in der tat (Gast)


Lesenswert?

absolut.... War eigentlich ein guter thread, jetzt bin ich raus. Gibt 
halt Sympathieträger und Nieten ;-)

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


Lesenswert?

Juergen S. schrieb:
> Man denke sich mal eine Struktur aus z.B. 3 x 4 FPGAs,
> wo sich 10 davon 50 ähnliche Funktionen teilen, 5 davon weitere 200
> Leitungstreiberfunktionen, wobei jeweils 40 dieser Leitungen durch
> jeweis andere FPGAs redundant getrieben werden können müssen, wegen
> Minderbestückung und alle 12 zusammen auch 1 bestimmte Funktion verteilt
> leisten, manche FPGAs aber auch nur eine einzige Funktion leisten, die
> nur sie beherrschen.
Zum Glück habe ich solche Probleme nicht (und ich vermute: auch die 
wenigsten anderen)... ;-)
Aber ich möchte auch behaupten, dass man da einfach auch mal Glück haben 
darf und zum richtigen Zeitpunkt die zündende Idee. Nur: DAS zu lehren 
kann man jetzt wirklich nicht von den Schulen verlangen...  :-o

von Bewunderer (Gast)


Lesenswert?

in der tat schrieb:
> War eigentlich ein guter thread, jetzt bin ich raus. Gibt
> halt Sympathieträger und Nieten ;-)

Wie, wegen mir etwa?

von in der tat (Gast)


Lesenswert?

nein ganz und gar nicht wegen dir, sondern weil ich selbstverliebte 
Fatzkes auf den Tod nicht ausstehen kann..... Und ich war doch wieder im 
Thread ;-)

von J. S. (engineer) Benutzerseite


Lesenswert?

> Zum Glück habe ich solche Probleme nicht (und ich vermute: auch die
> wenigsten anderen)... ;-)
Schon richtig, es ging mir nur darum, einmal zu zeigen, dass man mit 
Excel durchaus einiges machen kann. War vielleicht ein wenig zu 
ausführlich.

Es ging mir aber auch darum, zu verdeutlichen, dass die Komplexität bei 
Entwicklungen mehr in der Planung und im Denkansatz liegt und es nicht 
reicht, einfach nur irgendeine wissenschafliche Ausbildung zu haben und 
sich das Programmieren angeeignet zu haben. Der Hase ganz woanders im 
Pfeffer.

> Juergen S., so gut wie du möchte ich auch gerne mal werden...
Ja, ja ich weiss schon, wenn man D Fakten auspricht, fühlen sich einige 
gleich wieder angegriffen. Nur: ständig auf understatement machen, 
bringt nichts voran. Manchmal muss man auch mal ein wenig Tacheles reden 
und wo sollte man das, wenn nicht in einem Forum? Im direkten Umgang mit 
Kollegen kann man schlecht auf den Putz hauen und der Threadersteller 
ist gut beraten, vorsichtig mit Kritik an Kollegen zu sein.

Was ich zu dem Thema Studium geschrieben habe, sehen viele meiner 
Kollegen aber genau so, besonders, wenn sie sich mit der mittelmäßigen 
Qualität von Zulieferern herumärgen müssen. Heute kommt doch jeder 
zweite Computerbediener auf die Idee, er sei ein guter 
Softwareentwickler, weil er eine Programmiersprache gelernt hat. Seien 
wir mal ehrlich: C-Programmieren könnte so ziemlich jeder, wenn er sich 
damit befasst. Mit Jedermann-Qualität kann man aber keine Systeme in den 
Markt bringen, die um soviel besser sind, als das, was anderorts gemacht 
wird, dass man gut verkaufen kann.

von selbstreflektiert (Gast)


Lesenswert?

http://www.spiegel.de/karriere/berufsleben/0,1518,748287,00.html

P.S.

"Im direkten Umgang mit Kollegen kann man schlecht auf den Putz hauen"
Warum? Doch nicht der tolle Hecht oder keine Eier? Konstruktiv darf und 
soll man das. Nur sich selber über alles stellen kommt halt schlecht an.

von J. S. (engineer) Benutzerseite


Lesenswert?

> Doch nicht der tolle Hecht oder keine Eier?
Nein, sozialkompatibel, freundlich und nett zu Kollegen. Mit Eiern hat 
das nichts zu tun. Wir sind nicht im Rabaukenland.

> Konstruktiv darf und soll man das.
Tue ich, keine Sorge. Ich tue es aber durchs Vorleben, weniger durch 
Diskutieren, weil ich gelernt habe, dass keiner gerne auf die Füsse 
getreten bekommt und es geht auch nur peu a peu voran.

In den harten Fällen, wo man wirklich den Hebel ansetzen müsste und 
nicht drüber hinwegsehen dürfte, ist eh nichts zu machen, weil man 
niemandem im Nachinein eine andere Ausbildung, ein anderes Wissen und 
nicht einmal mehr eine andere Programmier- oder Arbeitstechnik 
beibringen oder auferlegen kann. Man muss dann mit denen klarkommen, die 
man nebenbei hat :-)

Die Kritik setzt weiter vorne an, z.B. bei denjenigen, die immer weniger 
auf Ausbildung schauen, Studienzeiten verkürzen oder "verbatcheln" und 
bei Einstellungen den billigen Jakob bevorzugen.

Ich beziehe mich dabei in jüngster Zeit immer öfters auf Beauftragungen 
an Dienstleister und Drittanbieter, wo man gezwungen ist, den Billigsten 
zu nehmen, der dann seinerseits nur noch leben kann, indem er die 
billigen Quereinsteiger und Anfänger beschäftigt, während andere gut 
ausgebildete Ingenieure und Softwareexperten, (die ich auch zuhauf 
kennengelernt habe) aufgrund ihrer angeblich hohen Gehaltsforderungen 
nichts bekommen und zu ebensolchen Billigtarifen anbieten müssen.

Dies leistet dann somit der allgemeinen Verbilligung Vorschub und es 
lohnt sich immer weniger, eine fundierte Ausbildung anzustreben. Ich 
kenne in der Tat viele sehr gute Entwickler, die sich genau aus diesen 
Gründen aus diesem Bereich abseilen. Qualität ist nicht mehr gefragt in 
diesen Tagen.

von selbstreflektiert (Gast)


Lesenswert?

Ich kann dich schon verstehen - ich gebe dir sogar teilweise Recht.
Aber entweder oder - sich in einem Forum über alle anderen stellen aber 
im persönlichen Kontakt gegenüber nicht durch den 'ich bin besser' 
Gedanken leiten zu lassen das geht meiner Ansicht nach nicht.
Du hast doch bei allen möglichen Gelegenheiten im Hinterkopf mal eben 
die Arbeit eines halben Jahres des Herrn Dr. in einer Woche abreißen zu 
können. Daß dies sozialkompatibel bleibt kann ich mir echt nicht 
vorstellen.
Was heißt 'vorleben'....
Du fühlst dich mindestens eine Stufe besser. Bist das vielleicht sogar, 
dann versuche etwas abzugeben.
Dafür sind Kollegen eben da. ( und zwar solltest du dich dabei auf 
Augenhöhe sehen und nicht als den Besseren. Göttlich bist auch du sicher 
nicht )
Die universitäre Ausbildung und die Ausbildung auf der Fachhochschule 
kann praktische Arbeit und Erfahrung ja schlecht vermitteln sie soll 
dienlich sein, von erfahrenen Leuten weiterlernen zu können.
Auch Lücken sind in meinen Augen keine Schande. Die sind durch Erfahrung 
zu stopfen.

Aber deine Zeilen triefen nur so vor Selbstverliebtheit. Und das erkennt 
man bei seinem Gegenüber. Und davon bekomme ich Ausschlag denn das ist 
extrem unsympatisch. Zumal es sich keiner Leisten kann. Wer ist schon so 
perfekt?

P.S Wann hast du vor dir selber zuletzt einen Fehler eingestanden? Falls 
ich dir unrecht tue und die wirklich ein umgänglicher, hilfsbereiter 
Kollege bist tut mir das aufrichtig leid. Dann entschuldige ich mich für 
die Schublade in die ich dich gepackt habe

von J. S. (engineer) Benutzerseite


Lesenswert?

Du scheinst ja wirklich etwas "selbstreflektiert" zu sein, wenn Du in 
Betracht ziehst, vorschnell geurteilt haben zu können :-)

Ich halte mich durchaus nicht für omnipotent. Schwächen habe auch ich 
auch genug, aber dort präsentiere ich mich nicht als Experte oder 
Ideengeber und überlasse die Führung anderen. Dies tue ich genau weil 
ich gesehen haben, dass ich mir das eine oder andere zwar locker zutraue 
und auch leisten könnte, aber eben nur "auch" und nicht "en top".

Mithin ist das Beispiel des "Dr." genau das Passende, den ihm oblag die 
Führung und Planung im Projekt, weil man dachte, die Promotion macht es 
schon. Denken können reicht.


Nochmal eines zu den Überfliegern:

Sicher ist es richtig, dass es besser läuft, man von einem homogenen 
Team ausgeht. Das Team muss aber hohes Niveu und nicht Mittelmäßigkeit 
darstellen. Daher halte ich den link von oben für äusserst unstimmig.


> Beim Intelligenzquotienten zum Beispiel wird der Mittelwert als 100 definiert.
> Die große Mehrheit der Menschen weist einen IQ zwischen 85 und 115 auf.
Das sind ALLE Menschen, aber nicht alle Fachkräfte. Bei MINT-Studenten 
finden sich sehr wohl Mittelwerte um die 115 - bei manchen Fachbereichen 
auch noch mehr.

> Genies .. gibt es nur sehr wenige; Experten schätzen den Anteil auf jeweils 
zwischen zwei und fünf Prozent.
5% heisst immerhin jeder 20., also einer pro Schulklasse. In der 
Bevölkerung wären es 400.000 Personen. Das würde ich noch nicht "Genie" 
nennen.

Angeblich sind 2% aller Menschen "Hochbegabt", haben also einen IQ von 
>130. Das klingt schon eher nach Genie, heisst aber auch nur wieder 
"jeder 50te".

Jetzt rechnen wir mal:

Im Moment machen etwa 35% eines Jahrgangs Abitur und von denen schließen 
wiederum 30% ein Studium ab, also 10% der Bevölkerung. Damit wäre jeder 
5. Absolvent "hochbegabt". Bei den MINT dürfte der Anteil noch höher 
liegen, sagen wir 25%? - Da nur die oberen 3/4 der MINT-Absolventen in 
ihrem Job arbeiten, haben rund ein Drittel der Ingenieure einen IQ von 
>130.

Selbst wenn die geschätzten Zahlen nicht 100% stimmen, sollte der wahre 
Anteil nicht weit davon weg liegen. Also nix mit "Mittelmass = gut".

Trotzdem hin ich nach wie vor ein Fan einer umfangreichen und fundierten 
Ausbildung. Das Problem: Wer's nicht hat, kennt es nicht und weiss 
manchmal nicht, was ihm fehlt :-)

von Andi (chefdesigner)


Lesenswert?

>Trotzdem hin ich nach wie vor ein Fan einer umfangreichen und
>fundierten Ausbildung.
Vollkommen d'accord. Es scheint heute aber irgendwie Mode geworden zu 
sein, dass branchen- und ausbildungsfremd gearbeitet wird, während 
jedoch eine spezifische Ausbildung eigentlich immer wichtiger wird, weil 
die Anforderungen immer komplexer werden.

Ich frage mich überhaupt, was es für einen Sinn machen soll, 
Studiengänge wie Elektrotechnik und Informatik haarklein in einzelne 
Studienrichtungen aufzuspalten, wenn die Elektronik und Software dann 
von "artfremden" Maschinenbauern geschrieben wird. Im IT-Bereich, wo 
ich inzwischen tätig bin, tummeln sich unendliche Zahlen von 
MB-Absolventen, die mal Werkstoffkunde, Kraftwerkstechnik und was weiss 
ich erlernt haben, nun aber nur noch Datenbanken bezaubern und SW 
entwickeln. Ich habe mir das ganz langsam, beginnend mit einem 
Elektronikstudium und embedded Controllern aufgebaut, bin dann über die 
PC-Anbindung Stück für Stück in die abstrakte C++ - Landschaft migriert. 
Ich hatte auch in all den Jahren zahlreiche Kurse und Seminare. Trotzdem 
behandle ich das Thema noch recht oberflächlich, weil ich eher plane und 
keine kritischen Apps selber mache. Das überlasse ich den Spezialisten.

Als Projektleiter stehe ich aber genau vor dem beschriebenen Problem, 
dass budgetbedingt wenigerqualifizierte Quereinsteiger einen Grossteil 
der kritischen Apps machen und ein Zeug zusammenfummeln, dass es die 
Wildsau graust, wie man hier sagt.

Das betrifft C und VHDL in gleichen Teilen. Als Maschinenbauer oder 
Physiker hat man eben nicht die erweiterten Grundlagen parat und machen 
tun die das ja auch nur, weil sie in ihrem Bereich keinen Job bekommen-, 
und keine Lust aufs Taxi haben:-)

In Deutschland muss ich sagen, geht es aber noch. Ich bin wieder mal für 
eine Firma in Asien tätig und muss mitansehen, wie umgeschulte Landeier 
mit Kartoffelbackground Flugzeugtechnik verkabeln, Hausfrauen zwischen 
den Malzeiten Pfostenstecker einlöten, und 23-jährige Bübchen 
komplizierte Steuersofware basteln, welche angeblich "Master of 
Engineering" sind.

> wurde ein viel zu komplizierter Ansatz verwendet
Mein täglich Brot. Wenn die Jungens ein wenig nachdenken würden, kämen 
ganz andere Module heraus und wir hätten deutlich weniger Aufwand - vor 
allem beim Fehlersuchen.

von Ras F. (rasfunk)


Lesenswert?

Juergen S. schrieb:
> Ich würde gerne die Frage stellen, ob jemand hier in der Hochschule
> gelernt hat, wie man:
>
> - eine pipeline entwirft und dokumentiert
> - serielle ind parallere Strukturen umdesiged
> - die Balance zwischen serial und parallel ermittelt
> - eine Formel so umstellt, dass sie VHDL-tauglich wird
> - einen Algo so zerlegt, dass er parallelisierbar wird

Das gab's bei mir Studium. Technische Informatik an einer TU, mit 
entsprechender Vertiefungsrichtung, noch nicht zu lange her. Aber 
natürlich lässt sich das theoretische Wissen nicht sofort in die Praxis 
übersetzen. Einem Absolventen fehlt einfach die Erfahrung, deswegen ist 
er ja auch günstiger als alte Hasen. Wer aber nach 5 Jahren immer noch 
keine Ahnung hat, muss sich schon fragen lassen, ob er seinen Job 
wirklich gut macht. (Und selbstkritischerweise muss ich auch sagen, dass 
ich mich intensiver mit Methodik und Strukturen beschäftigen könnte - es 
"läuft" halt im derzeitigen Job auch ohne).

> - wann und wie (nicht) einsynchronsiert
> - physische von logischen "sets" und "resets" trennt
> - asynchron rettet und wann man es bleiben lässt

Das wird verschiedentlich in aktuellen Lehrbüchern behandelt.

> - mit FiFos die Verarbeitungszeit komprimiert / dekomprimiert
> - eine Rekursion implementiert
> - synthetisierbarer testcode implementiert und wann
> - testbenches optimieren und automatisieren kann
> - eine Resource in verschiedenen Zeitebenen mehrfach nutzt

Das durfte man sich mit entsprechendem Engagement selbst in Praktika 
beibringen, oder man lernt es auf die harte Tour nach dem ersten 
fehlgeschlagenen Projekt. Es gibt auch ganz hervorragende VHDL-Kurse 
z.B. von Doulos, die gerade auf die Testbench-Geschichten eingehen. Und 
Testbenches stellen bekanntlich 90% des VHDL-Codes.

> - eine Iteration über Zeit-Flächen-Struktur realisiert
Meinst Du Design-Space-Exploration?

> Das alles kommt natürlich erst mit der Erfahrung, aber Digitaldesign im
> eigentlichen Sinne, scheinen die Wenigsten systematisch wirklich erlernt
> zu haben.

Auf jeden Fall muss da viel mehr passieren, vor allem seitdem FPGAs 
omnipräsent sind.

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


Lesenswert?

Ras Funk schrieb:
>> - wann und wie (nicht) einsynchronsiert
>> - physische von logischen "sets" und "resets" trennt
>> - asynchron rettet und wann man es bleiben lässt
> Das wird verschiedentlich in aktuellen Lehrbüchern behandelt.
Welche? Beispiele?
Solange da noch jeder Prozess so aufgebaut ist:
1
   if reset='1' then
2
      --
3
   elsif clk'event and clk='1' then
4
      --
5
   end if;
Dann ist da noch nichts von aktuellen FPGAs und deren internen 
Strukturen zu erkennen. Das geht sogar soweit, dass Synthesewerkzeuge 
solche Konstrukte von sich aus (per Schalter) in synchrone Resets 
umwandeln...  :-o

> Und Testbenches stellen bekanntlich 90% des VHDL-Codes.
Diese Zahl und ihre Bekanntheit wage ich anzuzweifeln...

> Und Testbenches stellen bekanntlich 90% des VHDL-Codes.
Wenn ich mir die allgemein gültige falsche Beschreibung eines Taktes 
ansehe, kann das so nicht stimmen. Wofür gibt es eine Funktion 
rising_edge(), die auch den Zustand vor der Pegeländerung 
berücksichtigt, wenn dann der obige Konstrukt mit 'event genommen wird? 
Mit (clk'event and clk='1') wird z.B. die Simulation bei einem Wechsel 
von 'H' nach '1' einen Takt ausführen. Die Hardware aber nicht...
Kurz: die Simulation entspricht nicht der Hardware und ist damit falsch.

von Ras F. (rasfunk)


Lesenswert?

Hallo Lothar,

ohne einen Reset-Streit vom Zaun brechen zu wollen ;-) aber Altera 
empfiehlt "synchronized asynchronous resets", und die würden in VHDL so 
aussehen wie Dein Beispiel. clk'event bzw. rising_edge mal aussen vor, 
ebenso low/high Aktivität.

Siehe Seite 21 in
www.altera.com/literature/hb/qts/qts_qii51006.pdf

Wegen der Bücher schau ich heute abend nochmal in meine Bibliothek und 
sage Dir die genauen Titel und was empfohlen wird.

Herzliche Grüße!

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


Lesenswert?

Ras Funk schrieb:
> aber Altera empfiehlt "synchronized asynchronous resets",
Und genau DAS und der (mögliche) Unterschied zu anderen FPGA-Herstellern 
wird in keinem der Bücher (soweit mir bekannt) explizit dargestellt...

> aber Altera empfiehlt "synchronized asynchronous resets",
Ja, blöd nur, dass man sich das nicht unbedingt immer merkt und dann 
z.B. sowas schreiben könnte, weil die asynchronen Resets ja so schön 
sind:
1
   if reset='1' or cnt=17 then -- der ultimative Gipfel: ein asynchroner kombinatorischer Reset. Wehe, da kommt ein Glitch!
2
      cnt <= 0;
3
   elsif clk'event and clk='1' then
4
      cnt <= cnt+1;
5
   end if;

Wenn ich mir zudem die Übersicht zur ALM dort ansehe
http://www.altera.com/literature/hb/stratix-v/stx5_51002.pdf
dann erkenne ich nur, dass an den FFs zwar ein CLR angeschlossen ist, 
aber nicht, wie die Verteilung da aussieht, und mit welchem Slack ich 
rechnen muß. In das selbe Horn stossen auch die Altera-Gurus:
http://www.alterauserforums.net/forum/showthread.php?p=3802
http://alteraforum.org/forum/showthread.php?p=16965
Wenn das globale Reset-Netzwerk zu langsam ist, dann geht schon das 
Verlassen des Reset-Zustands schief.

Es ist ganz einfach so, dass der Reset z.B. eines Zählers/einer FSM und 
der Reset eines FPGAs nichts miteinander zu tun haben. Und auch dem 
verlinkten Dokument kann ich keinesfalls entnehmen, dass bei Altera ein 
Zähler asynchron zurückgesetzt werden sollte.
Ein FPGA braucht sowieso keinen Reset. Das hat nach Anlegen der Spannung 
loszulaufen und so lange seine Arbeit zu verrichten, bis die Spannung 
wieder weggenommen wird. Ein Reset kommt in dieser Aufgabenbeschreibung 
nicht vor.

> Wegen der Bücher schau ich heute abend nochmal in meine Bibliothek
> und sage Dir die genauen Titel und was empfohlen wird.
Ich bin gespannt... ;-)

Wenn dabei aber sowas rauskommt, wie in diesem speziell dem Spartan 3 
gewidmeten Buch im Beitrag "Re: Suche VHDL Buch", 
dann dankesehr... :-/

von Ras F. (rasfunk)


Lesenswert?

Hallo Lothar,

das Buch, das ich meinte, heisst "Advanced FPGA Design" von Steve Kilts. 
Da werden die Resets genau auseinandergenommen, mit Empfehlungen wie bei 
Altera. Na gut, der Author arbeitet auch bei denen...

Das zweite Buch such ich Dir auch noch raus.

Zum Thema "FPGA braucht kein Reset" - stimmt! Normalerweise braucht man 
das nicht. Sobald man aber mehrere Clock-Domains hat, und einzelne 
Clocks (z.B. zum Stromsparen) an- und abschalten will, dann sind Resets 
doch sehr lohnenswert. (bevor Diskussionen entstehen: ja, clock gating 
natürlich nur über CCB etc.)

Oder auch, wenn das Design später auf Asics laufen soll. Spätestens da 
kommt man um asynchrone Resets nicht herum.

Im Normal- und Regelfall bin ich völlig bei Dir.

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


Lesenswert?

Ras Funk schrieb:
> Oder auch, wenn das Design später auf Asics laufen soll. Spätestens da
> kommt man um asynchrone Resets nicht herum.
Zum Glück haben die wenigsten mit ASICs zu tun. Denn dort müsste ich dir 
mit den 90% Simulationsaufwand wieder recht geben.. ;-)

von Physiker (Gast)


Lesenswert?

Hallo zusammen,

gut zu erfahren, dass ich wohl lieber Taxi fahren sollte (chefdesigner) 
oder hochkomplexe Codes verfasse, die niemand versteht (Berater) :-D

@chefdesigner:
Gut wenn man klar definierte Feindbilder hat oder.. Versteh ich dich 
richtig, dass es die E-Techniker nach dem Studium automatisch mit C und 
VHDL draufhaben? Die meisten die ich kennenlernen durfte, hatten z.B. 
leider mit Software Revision Control nix am Hut. Da hat man irgendwann 
mal ein zip abgelegt.. Will sagen, egal ob man aus dem Ingenieur- oder 
naturwissenschaftlichen Bereich kommt, im Endeffekt zählt im Job was man 
sich selbst über das Studium hinaus angeeignet. Im Studium sollte man 
vor allem gelernt haben, wie man sich selbst schnell in neue 
Sachverhalte
einarbeitet. Das lernt man in einem breitgefächerten Fach wie Physik auf 
jeden Fall.

@Berater:

>- tolle komplexe Konstrukte
>- hoch dynamische und flexible Struktur
>- viele generics
>- aufs bit genau optimiert
>- jedes sample ausgenutzt

sample oder cycle? Na egal, wo ist das Problem? Ich sehe eigentlich nur 
das Problem, dass es wahrscheinlich keine Spec und keine Doku gibt.
Wahrscheinlich hat dann a) das Projektmanagment versagt, weil man b) 
nicht genuegend Zeit und Geld hatte oder c) schnell Ergebnisse sehen 
wollte "die spec schreiben wir später, wir müssen dem Kunden schnell was 
zeigen können". Ich war schon in diversen Projekten, wo genau das, das 
Problem war. Bei Hinweis auf fehlende Spec und nötige Zeit für 
Dokumentation war dafür eben keine Zeit. Wahrscheinlich war auch nicht 
genügend Zeit für die Inbetriebnahme eingeplant. Ist ja nichts besonders 
neues, dass Code in der Simulation gut funktioniert, aber in der HW 
nicht. Ich hatte am Anfang meiner "FPGA-Karriere" sogar einen Chef, der 
Testbenches und Simulation als Spielerei bezeichnet hat (war auch 
Physiker, allerdings primär Softwareentwickler). Ich kenne übrigens auch 
keine Informatiker, der durch eine Vorlesung C, C++ so gut erlernt 
hätte, dass er damit direkt als Profi im Job anfängt. Welches Personal 
an der Uni soll das auch liefern? Jeder muss wohl erst mal ein paar 
konkrete Projekte in der Industrie gemacht haben um zu sehen, worauf es 
ankommt.

Nochmal zum Anfang, was ist "aus der Art geschlagener Code" ?
VHDL ist eine Hochsprache und als Entwickler sollte man auch von ihren 
Mögliochkeiten Gebrauch machen, sonst kannste dich auch hinsetzen und 
die Schaltungen wieder diskret aufbauen, viel Spass..
Als Berater solltest Du doch eigentlich selbst am besten wissen, wie man 
dem Auftraggeber "beikommt" :-)
Vielleicht erstellst Du jetzt erst mal Coding und Design Guidelines für 
den Kunden.

von Virchowod (Gast)


Lesenswert?

> Will sagen, egal ob man aus dem Ingenieur- oder
> naturwissenschaftlichen Bereich kommt, im Endeffekt zählt im
> Job was man sich selbst über das Studium hinaus angeeignet
Da muss ich widersprechen. Ich habe ein Studium der Elektrotechnik in 
Richtung Datenverarbeitung. Wir haben spezielle Themen des Multitaskings 
auf MCUs und auch CPUs behandelt und auch Unterschiede verdeutlicht. Das 
möchte ich nicht missen. Da gibt es einige Dinge, die man sich nicht so 
einfach aneignen kann. Die muss man schon wissen, bevor man sie 
einsetzt, damit man mit ihnen planen und designen kann. Ausserdem 
finde ich es an dem Notwendigen vorbei studiert, wenn man sich Wissen 
anschafft, dass man später kaum braucht, während man das, was man 
braucht, erst hinter lernen will. Wozu Phyik studieren, wenn man 
Elektronik und Software bauen will? Physiker sind eher im Systemfesign 
und Modelling gefragt.

> als Entwickler sollte man auch von ihren Mögliochkeiten Gebrauch machen
Auch da habe ich eine andere Meinung. Viele Entwickler sehen nur das 
Coden und nicht die Aufwände in der Fehlersuche, der Tests, der Prüfung 
und der Notwendigkeit, dass andere den Code in eigenen Projekten mal 
wiederverwenden sollen. Da ist Einfachheit und Standardisierung gefragt.

>Coding und Design Guidelines
Bei uns in der Firma haben wir sowas! Und es hat sich mit der Zeit auch 
bezahlt gemacht, weil Neue sich leichter einarbeiten können und nach 
Erlernen der guides auch den alten Code besser verstehen. Und unsere 
guides besagen z.b: auf komplexe geniale Konstrukte zu verzichten und 
lieber ausdrücklich auszuprogrammieren. Das sieht manchmal hölzern aus, 
verschwendet mitunter auch Resourcen und Taktzyklen, aber ist zehnmal 
besser portierbar- vor allem Teile und Module des Codes und dies obwohl 
es vorher nicht geplant war, weil das Projekt noch gar nicht zu erkennen 
war.

>lernt man das an der UNI?
Bei uns durchaus. Wir haben in der VL Softwaredesign sog. Designstudien 
angefertigt zu genau diesen Themen. U.a. mit o.g. Ergebnissen! 
Optimierbarkeit, Portierbarkeit und Validierbarkeit unter Beachtung von 
Standards sind heute Gegenstand von Forschung.

Da gibt es noch viel zu tun!

von Michael (Gast)


Lesenswert?

Wenn man mal rechnet, dass wenigstens 50% des Studiums fachspezifisch 
ist (auch der Elektriker studiert ja Physik und Mathe und Grundlagen) 
dan hat einer immerhin über 2000 Lernstunden Vorsprung gegenüber einem 
anderen Fachgebiet, den es erstmal aufzuholen gälte. Das sind im Beruf, 
wenn man nicht nur lernen will, schon einige Jahre. Kommt halt darauf 
an, was einem fehlt.

Es gibt dabei aber noch eine andere Komponente: Warum stellen Firmen 
denn jemanden an eine Arbeit dran, wenn er wenig Kompetenzen hat und 
nicht die richtige Ausbildung? Letztlich zahlen die Firmen nicht gerne 
für Inkompetenz sondern schreien ja den ganzen Tag nach praktischer, 
also ergebnisorientierter Ausbildung.

von T. M. (xgcfx)


Lesenswert?

Lothar Miller schrieb:
> Ein FPGA braucht sowieso keinen Reset. Das hat nach Anlegen der Spannung
> loszulaufen und so lange seine Arbeit zu verrichten, bis die Spannung
> wieder weggenommen wird. Ein Reset kommt in dieser Aufgabenbeschreibung
> nicht vor.

Nicht immer von Xilinx auf alle anderen Hersteller schließen. Wenn ich 
zB einen PCI-Core im FPGA habe, wird der PCI-Reset natürlich verwendet. 
Außerdem gibt es auch Synthesewerkzeuge und FPGAs, denen man keinen 
Initialwert für Signale im Code mitgeben kann bei der Signaldefinition, 
die müssen dann quasi sowieso noch in einen definierten Zustand, also 
"resettet" werden.

von Michael (Gast)


Lesenswert?

Und genau das kann man am Einfachsten synchron machen. Auch bei Asics 
ist es nicht wirklich nötig, unbedingt asynchron zu arbeiten.

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


Lesenswert?

Torsten M. schrieb:
> wird der PCI-Reset natürlich verwendet.
Latürnich wird er verwendet. Ohne jede Frage...  :-/
Nur: ist er auch nötig und wo ist er sinnvoll?

> Außerdem gibt es auch Synthesewerkzeuge und FPGAs, denen man keinen
> Initialwert für Signale im Code mitgeben kann bei der Signaldefinition,
Die sind aber schon älter oder von Actel...
> die müssen dann quasi sowieso noch in einen definierten Zustand, also
> "resettet" werden.
Auf jeden Fall wird bei jedem SRAM-basierten FPGA (und mittlerweile auch 
den meisten CPLDs) beim Laden jedes Flipflop per Handschlag auf einen 
definierten Wert gesetzt. Und alle aktuellen Synthesizer können diese 
Möglichkeit der Initialisierung verwenden (wenn die Hardware es 
hergibt). Diese Initialisierung ist ganz einfach eine Ressource auf dem 
FPGA wie z.B. ein Multiplizierer oder ein RAM. Und die verwendest du 
doch auch, wenn es dir Vorteile bringt. Oder nicht?

> Nicht immer von Xilinx auf alle anderen Hersteller schließen.
BTW: Lattice kann die Initialisierungswerte jetzt auch, seit sie den 
Synthesizer gewechselt haben.

von T. M. (xgcfx)


Lesenswert?

Lothar Miller schrieb:
> Die sind aber schon älter oder von Actel...

Treffer (Actel) ;-)

Damit erübrigt sich auch die Verwendung von irgendwelchen HW-Einheiten 
(außer BRAMs), weil keine vorhanden sind, außer ein 1kbit User-Flash, 
den ich aber nicht benötige, weil er viel zu klein ist :-(

von Michael (Gast)


Lesenswert?

Also halten wir mal fest, dass es bei manchen FPGAs nötig sein könnte, 
Resets und Inits anders zu formulieren. Damit ergibt sich die 
Notwengikeit einen herstellerabhängigen Teil und einen unabhängigen Teil 
des Designs zu definieren, womit wir wieder beim Thema *strukturiertes 
VHDL* wären.

Wird bei euch sowas regelmäßig gemacht?

von T. M. (xgcfx)


Lesenswert?

Wenn nur FPGAs eines einzigen Herstellers eingesetzt werden, ergibt sich 
nicht die Notwendigkeit, herstellerunabhängigen Code zu Schreiben. Was 
nichts daran ändert, dass, bis auf die BRAMs und die oben angesprochenen 
Resets, der von mir "verbrochene" Code auch auf FPGAs anderer Hersteller 
laufen dürfte.

Strukturiertes Design heißt für mich eher, dass man das Design zB in 
kleine, überschaubare Funktionseinheiten aufteilt, diese modular, lesbar 
und verständlich beschreibt und dann in überliegenden Einheiten 
miteinander verbindet. Dass man diese einzelnen Einheiten nach 
Möglichkeit ausgiebig mit jeweils einer eigenen Verifikationsumgebung im 
Simulator testet. Dass man die Einheiten alle mit einem gleichartigem 
Portprotokoll ausstattet, damit man sie schnell und unkompliziert 
zusammenstöpseln kann. Usw. usf ...

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


Lesenswert?

Torsten M. schrieb:
> Lothar Miller schrieb:
>> Die sind aber schon älter oder von Actel...
> Treffer (Actel) ;-)
Also Microsemi...
http://www.actel.com/company/acquisition/
Bin gespannt, was daraus noch wird.

von Berater (Gast)


Lesenswert?

> Wenn nur FPGAs eines einzigen Herstellers eingesetzt werden,
> ergibt sich nicht die Notwendigkeit, herstellerunabhängigen Code
> zu Schreiben.
Das ist natürlich sehr geistreich gedacht. Wenn man nur Bananenbrei 
kochen will braucht man dann folglich auch keine Sortiermöglichkeit nach 
Obstsorten.

Der Punkt ist nur der, dass man nie weiss, womit man in 3 Jahren 
arbeitet.

von T. M. (xgcfx)


Lesenswert?

Lothar Miller schrieb:
> Also Microsemi...
> http://www.actel.com/company/acquisition/
> Bin gespannt, was daraus noch wird.

Wir hatten letztens einen leitenden Ingenieur von Microsemi da, und was 
er vorgestellt hat, sah sehr vielversprechend aus. Vieles schon als HW 
integriert von dem, womit wir uns heute noch in VHDL und als Softcore 
herumschlagen müssen. Das ging viel weiter, als ich erwartet hatte :-)

Berater schrieb:
> Der Punkt ist nur der, dass man nie weiss, womit man in 3 Jahren
> arbeitet.

Und was, wenn man das schon weiß? Außerdem sind die Teile, die 
herstellerspezifisch sind, größtenteils IP-Cores und so nicht zu ändern, 
weil auf den FPGA angepasst ...

von Klaus Falser (Gast)


Lesenswert?

Torsten M. schrieb:
> Berater schrieb:
>> Der Punkt ist nur der, dass man nie weiss, womit man in 3 Jahren
>> arbeitet.
>
> Und was, wenn man das schon weiß? Außerdem sind die Teile, die
> herstellerspezifisch sind, größtenteils IP-Cores und so nicht zu ändern,
> weil auf den FPGA angepasst ...

Ich denke auch, dass es heutzutage kein einziges FPGA Design geben kann, 
das wirklich Hersteller unabhängig sein kann.
Jedes Design in unserer Firma verwendet DCMs, Fifos aus dem Core 
Generator usw. und es wäre wirklich unsinnig darauf zu verzichten.

Wichtig ist, so wie Du geschrieben hast, eine Struktur des Designs, bei 
der man anzupassende Details leicht identifizieren kann.
Meine Sorge bei den benutzten Designs ist aber nicht die Portierbarkeit, 
sondern die Wartbarkeit.
Es ist viel wahrscheinlicher dass jemand anderer ein bestehendes Design 
warten und verstehen muss, als dass ich es von Xilinx auf z.B. Altera 
migrieren muss.
Letztendlich aber hilft eine vernünftige Struktur bei beidem.
Ob man aber einem Programmierer oder Ingenieur wirklich beibringen kann, 
eine Struktur ins Programm zu bringen, bezweifle ich ein bischen. Ich 
glaube, da ist vieles Talent, so wie ein Zeichentalent. Der eine hat's, 
der andere nicht ...

von Michael (Gast)


Lesenswert?

> kein einziges FPGA Design ... wirklich Hersteller unabhängig
Naja, man kann schon mal die RAMs und die IOs kapseln, damit man 
einzelne wrapper tauschen muss und kann. Auch sollten state machines in 
eigene design files. Besonders wichtig ist die Trennung bon Prozessen 
und Verschaltung. Alles, was Komponenten verschaltet bitte in ein 
design, was Signale modifiziert, in ein anderes.


>Ob man aber einem Programmierer oder Ingenieur wirklich beibringen kann
Kann man, kann man! Bei uns haben einige gespukt, gesehen, gelernt, 
gemurrt und gejammert, aber o ganz allmählich gelernt, die Vorzüge zu 
geniessen. Aber es muss von der Designleitung, dem QM und der 
Entwicklungsabteilungen kommen. An den Hochschulen wird es offenbar kaum 
gemacht. Wieso auch, der Prof hat meistens nie industrielle SW gemacht.

von Georg A. (Gast)


Lesenswert?

> Alles, was Komponenten verschaltet bitte in ein
> design, was Signale modifiziert, in ein anderes.

Super, das ist genau die Art von §$%&-Coding Style, der die 
Xilinx-IP-Cores so absolut undurchschaubar macht. Wenn man das wie 
Xilinx noch mit nichtsagenden quasi-automatisch-generierten Kommentaren 
verbindet, hat man also Code in "Industriequalität".

von Andi (chefdesigner)


Lesenswert?

> Alles, was Komponenten verschaltet bitte in ein design,
Das ist aber Standard. Das eine ist Struktur, das andere Funktion. Die 
Struktur kann man in ein grafisches Design überführen, oder aus einem 
solchen beziehen.

von lotte (Gast)


Lesenswert?

ich denke, es ist auch nicht die aufgabe der hochschule, solche sachen 
zu lehren. das ist viel zu kompliziert, um es den studenten beizubringen

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


Lesenswert?

lotte schrieb:
> ich denke, es ist auch nicht die aufgabe der hochschule
Die der Baumschule vielleicht, oder der Fahrschule, oder wie oder was?
> das ist viel zu kompliziert, um es den studenten beizubringen
Ich hoffe zuversichtlich, das war ironisch gemeint!
Allerdings fehlt dann ein Augenzwinkern... :-/

Junge Leute, die voll "im Saft stehen" sollten so was eigentlich 
aufsaugen können wie ein Schwamm. Später im Berufsleben wird so ein 
Lernprozess mindestens um den Faktor 4 verlangsamt, weil man ja noch was 
anderes machen sollte...
Und wenn sie das schon als Student nicht kapieren, dann taugen sie auch 
nicht als Ingenieur (und da können einige wenige Ausnahmen bestenfalls 
die Regel bestätigen).

Was Hänschen nicht lernt, lernt Hans nimmermehr.
Stimmt zwar nicht ganz, aber Hans tut sich recht schwer.

von IsKlar (Gast)


Lesenswert?

>BTW: Lattice kann die Initialisierungswerte jetzt auch, seit sie den
>Synthesizer gewechselt haben.

Diese Aussage ist nicht richtig. Lattice gibt keine Garantie dafür, dass 
Initialisierungswerte nach jedem Power-Up greifen.

VG, IsKlar

von Zeissig (Gast)


Lesenswert?

> Junge Leute, die voll "im Saft stehen" sollten so was
> eigentlich aufsaugen können wie ein Schwamm.
Das wollte ich aber acuh gesagt haben!!! Wo denn, wenn nicht in der Uni 
lernt man die komplexen Dinge?


> Später im Berufsleben wird so ein Lernprozess mindestens um
> den Faktor 4 verlangsamt, weil man ja noch was anderes
Wenn man überhaupt Zeit hat / bekommt, zu lernen. Und dann müsste es ja 
auch noch einen geben, von dem man das Lernen kann. Also braucht es 
wieder ein VHDL-Training.

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.