Hi, ich will mal mit VHDL lernen anfangen und wollte nur wissen wie "schwer" das so ist. Ich kenne C/C++ und kann damit gut umgehen? Kann man es etwa auch so beschreiben - vom Umfang her? gruß Mm
oooh je, ich kenne sowohl C/C++ als auch VHDL und ich muss sagen das sind zwei ganz verschiedene Welten. Also ich finde C/C++ ja eigentlich ganz einfach und der Umstieg in die Denkweise von VHDL ist mir sehr schwer gefallen, nicht nur dass die Syntax eine ander ist, nein auch die ganze Denkweise ist wesentlich anderst. Also ich denke dir wird es auch nicht einfach fallen, insbesondere weil es nicht sehr viele Informationen im I-Net gibt. Zu Büchern kann ich nix sagen da ich keines habe, nur Schulungsunterlagen. Also am besten ist es du machst einen VHDL Kurs oder so
Kann ich nur bestätigen, das ist ganz furchtbar. Besonders wenn man vorher schon mit C/C++ zu tun hatte. Probleme machen die Sachen einfach wegen der Parallelität. Bei allen Programmiersprachen ist es eben einfac h eine sequentielle Abfolge. Beispiel eine for-Schleife. Bei C wird es nacheinander durchlaufen, bei VHDL läuft eben alles parallel ab. Da kommt man am Anfang absolut nicht drauf klar.
VHDL ist eine Hardwarebeschreibungssprache und keine Programmiersprache. Man beschreibt damit digitale Hardware und programmiert sie nicht. Ein programmierbarer Logikbaustein (FPGA,CPLD) ist kein Prozessor, in dem ein Programm "abläuft". "Programmierbar" heissen diese Bausteine deshalb, weil man die interne Verschaltung ihrer digitalen Logikblöcke verändern kann. Wenn Du VHDL lernen willst, musst Du über digitale Hardware Bescheid wissen. Dein C/C++-Wissen wird Dir da nicht viel weiterhelfen.
Also ich muss sagen das ich recht schnell in VHDL reingefunden habe. Hatte vorher nur basiswissen von C++ und gute Digitaltechnik kentnisse. Wie schon geschrieben wurde ist die Digitaltechnik dabei sehr wichtig. Wenn man da keine Ahnung hat, dürfte es schwierig werden. Als informationsquelle haben mir neben dem Internet 2 Bücher gedient: 1) "Designers Guide to VHDL" müsste das erste gewesen sein, bin mir aber nicht ganz sicher. 2) CAE-gestützte IC-Entwurfsmethoden (ISBN: 3827295505). Das hatte ich noch von einer anderen Vorlesung an der UNI "übrig". Da geht es nur "nebenbei" um VHDL. Viel lern man natürlich wenn man sich fertige "Routinen" ansieht (hat mir jedenfalls geholfen).
IMHO sind C/C++ Kenntnisse hinderlich für den Einstieg in Logikentwurf. Die Probleme sind umschiffbar, wenn man sich erst zuletetzt an den Editor setzt und VHDL hackt. Zuerst muss das datenblatt der anzusteuerenden Peripherie (das was am FPGA dranklemmt) verstanden haben. Dann muss das Blockschaltbild stehen. Daraus muss der datenpfad (Multiplexer, register etc) und der Kontrolpfad (FSM,Counter) abgeleitet werden. Nun kann man sich frühestens dem VHDL-Coding widmen. Anschliessend muss man sich den ganzen restlichen FPGA kram hinwenden (constraints, pinning). VHDL macht IMHO 10% des FPGA-entwirfs aus. Nicht zeitlich aber vom benötigten Hintergrundwissen. 50 % des angewandeten Wissens steckt im verständiss von dig. Hardware allgemein, der rest ist FPGA Interna und tool-wissen. Der Tödliche Fehler besteht in der Denkfolge: Ich kann C, VHDL ist ähnlich, also kann ich schon 80% des Handwerks. Das ist so wenn man auf den Everest will und glaubt alles mit Internetrecherche nach einem Billigflug nach Kathmandu erledigt zu haben. Vorschlag: verstehe das Blockschaltbild eines uC wie zum Atmel AVR, programmieren den in Assembler und stell dir vor welche FlioFlops jetzt schalten. Wenn du dann in VHDL einsteigst gehts erheblich leichter.
" Vorschlag: verstehe das Blockschaltbild eines uC wie zum Atmel AVR, programmieren den in Assembler und stell dir vor welche FlioFlops jetzt schalten. Wenn du dann in VHDL einsteigst gehts erheblich leichter." Also sowas für einen Einstieg in VHDL vorzuschlagen grenzt ja schon an Größenwahn, oder aber man will keine "neuen" in dem Kreis haben. An den Postersteller: Such Dir einige kleine Schaltungen aus (FF,Schieberegister,Counter) und bau die mal irgendeinem kleinen CPLD auf. Taster ran, LED ran, evtl. Quarzoszillator ran und los geht's. Im Webpack gibt es auch Vorlagen für die einzelnen Baugruppen. Also, keine Angst und loslegen. ts
Ich glaube, FPGAküchle hat schon so vielen geholfen, daß es nicht ganz fair ist, ihm zu unterstellen, er möchte keinen neue im Kreis haben. Das Beispiel mit dem AVR ist wirklich ein bischen übertrieben, aber Kenntnisse in Digitaltechnik sind die Voraussetzung für VHDL. Wer nicht weiss, was ein Flip-Flop ist und wie man es verwendet, sollte nicht mit VHDL anfangen.
Hallo ich als VHDL Anfänger und C,C++,Python ... alter Hase insbesondere Richtung Systemprogrammierung bin im Moment die Syntaxphase durch. Ich hab früher mir auch Ada mal angeschaut insofern ist mir das leicht gefallen. Das mit Parallität im Entwurf(Denken) ist so eine Sache ... im Grunde genommen, hat man als Programmierer auch (mach einer sehr oft sogar) damit zu tun. zB Synchronisation zwischen Threads, welche constraints für eine Funktion gelten, wenn diese kmalloc mit GFP_KERNEL aufruft und sich möglicherweise schlafen lägt. Oder was im Processkontext läuft und was nicht. Wie gesagt, mach einer als Programmierer kann ein Lied davon singen. Mein Problem mit VHDL ist deswegen technischer Natur .. wie werden die event's intern im Simulator abgearbeitet, was für constraints und undefined behavieur hat man bei welchen Konstrukten. Aber ich bin da gerade mittendrin :) Schöne Grüsse, Daniel
#Das Beispiel mit dem AVR ist wirklich ein bischen übertrieben, aber #Kenntnisse in Digitaltechnik sind die Voraussetzung für VHDL. Wer nicht #weiss, was ein Flip-Flop ist und wie man es verwendet, sollte nicht mit #VHDL anfangen. Jungs, gut das Ihr mich "großenwahnsinnig" nennt oder als einen Hardwerker brandmarkt der Softwerker aus seiner Ecke vergraulen will. Sonst verliert auf dem Schlachtfeld der Digitalentwicklung schon mal die Bodenhaftung. Mal ein bißchen Jugenderinnerung wie ich mich zu VHDL geprügelt habe: Ich habe ET studiert und privat ein bisserl C gehackt. Die C-kenntnisse waren bei den ersten VHDLentwürfen (während Praktikum) ziemlich hinderlich. Es lief zwar durch den Compiler aber da ich alles mit C verglich war die Hardware gräulich oder genauer gesagt es liess sich nicht synthetisieren. War beim Praktikum auch egal weil die nur Code für einen verteilten Simulator wollten (so was wie modelsim im Netzwerk statt auf einem einsamen PC). Zwar kriegt man VHDL-Code durch den VHDL simulator wenn man denkt wie: -libraries sind so was wie #includes -generics sind so was wie #defines -if und for sind identisch zu C aber auch das hat mit hardware nix zu tun. Dann habe ich mir die VLSI-prozessorentwurf Vorlesung in die Ohren blassen lassen. Jetzt wurden die Blockbilder verständlich und ich wusste was mit Datenpfad anzufangen. Dann hat man Assembler programmiert und register wurden verständlich sowie ein Stück vom Steuerwerk (Sprung ist Neuladen eines counters, Flags sind kombinatorisch aus dem Ausgangsregister der ALU abgeleitet). Der Durchbruch kam beim Diplom, VHDL,AlteraFPGA und asynchrones RAM. Ich hatte VHDL_Code zum anpassen und einen Kollegen der mir geduldig den ganzen Alteraflow erklärte ("im ACF stellst du das pining ein, hier musst Du ein constraint setzten, bei signalen über Taktgrenzen musst du synchronisieren"). Das war eigentlich das Wichtigste, einen Kollegen der einem alles mal vorführt sonst würde ich heute noch Doku lesen. Apropo lesen, entscheident ist ein "Synthese Coding Style", also auf welchen Teil von VHDL habe ich mich zu beschränken, das da wirklich Hardware rauskommt. Irgendwann gings an Modelle schreiben, also Code für die Simu der die Nicht- FPGA Hardware simuliert. Hier kann man wirklich alles wie ein C-Programmierer ausprobieren, es wird ja nicht durch die Synthese gepresst. Nun waren die C-kenntnisse hilfreich, nicht mehr hindernissreich. Nur FF zu kennen halte ich für den VHDL Einstieg nicht ausreichend. damit kann man nicht viel machen IMHO. Aber vielleicht erleichtert es den Einstieg ein paar wenig komplexere Standardchips nachzubauen. Also einen counter mit Siebensegmentdecoder, oder ein LED-Lauflicht. Fand ich aber nicht besonders befriedigend. Und Prozesorren als Hardware zu verstehen ist nicht so "Hardcore" wie es scheint, siehe Eigenbau-CPU http://mycpu.mikrocontroller.net/index2.htm Oder eine klassiche Funkuhr ohne Microcontroller und so: http://www.fuhs.biz/dcf77.shtml Nun aber Schluss!
FPGAküchle ...entschuldige das "größenwahnsinnig", Deine Bezeichnung Harscore hätte wohl eher gepaßt. Ich bin auch von dem Fall ausgegangen, daß der, der es lernen will, zunächst mal eine Ansammlung vonn TTL- oder CMos-IC ersetzen will, und das dann auf einem kleinen CPLD beginnt. Kleine Schritte, die einem aber die prinzipielle Vorgehehnsweise zeigt, und bei denen man Fehler auch noch leicht erkennen und beseitigen kann. Mich hätte das zumindest abgeschreckt, hätte man mir erzählt, die implementierung eines Softcores ist die Voraussetzung für den Einstieg in VHDL. Nix für ungut.. ts
HAllo, also ich will dann auch nochmal meinen Senf dazu geben. Im Rahmen meines Studiums ist mir VHDL so manches Mal über den Weg gelaufen. Es ist eine Verhaltenssprache, Du beschreibst also wie sich die Hardware verhalten soll... Du hast Schnittstellen (entities) und das Verhaltensmodell in einer .vhd Datei... Ich kann da nur empfehlen das Buch VHDL-Synthese (Reichard, Schwarz aus dem Oldenbourg Verlag 3-486-25809-5)durchzuarbeiten und mal bei xilinx vorbeizuscheuen. Das ISE Web-PAck ist frei für die entwicklung (komplette Entwicklungsumgebung + ModelSim als Simulator) und der ich nenn es mal "Compiler" ist auch sehr gut, man muss sich nur an ein Paar grundregeln halten... Ich empfehle dazu das "In depth Tutorial" von Xilinx. Das alles zusammen ist hervorragend zum Selbststudium geeignet. Eines noch hinterher, du musst , um effizient zu Coden, tatsächlich ein bisschen Ahnung von Gatterstrukturen haben, denn so musst Du denken... Es ist haarig da einzusteigen, wenn man so wie ich ganz gut Hochsprachen Programmieren kann. Viel Erfolg und gutes Gelingen
Hallo, ich persönlich hab auch schon mehrere Jahre mit Programmiersprachen wie Pascal, C/C++, Basic, verschiedene Assembler usw programmiert und fand es sehr schwierig in VHDL reinzukommen. Ich fand nicht wirklich die Denkweise kompliziert, weil ich eigentlich schon mehr Wissen in Digitaltechnik habe - ich fand es aber richtig schwierig, dass man zB IFs eigentlich nur innerhalb von Prozessen anwenden darf/soll und andere Eigenheiten von VHDL. Dachte echt ich würde es nie lernen :-) Genaugenommen bin ich immer noch ein Newbie, obwohl ich mittlerweile schon was nicht ganz-triviales gebaut habe - es wird aber noch lange dauern, bis ich wirklich sagen kann, dass ich VHDL "kann". Aber das ist so wie mit dem Autofahren ... Wenn man mal weiß wie man schaltet, Gas gibt und bremst, dann kann man sich auf das eigentliche Fahren konzentrieren und muss nicht mehr über die Bedienung des Autos nachdenken. Die Basics sind meistens komplex zu erlernen - aber sobald man das mal begriffen hat, gehts schnell voran. Mfg Thomas Pototschnig
Hallo zusammen Also das beruhigt mich ja ungemein, daß es andere gibt, die da auch so Probleme haben in VHDL einzusteigen. Ich komme von der Hardwareseite. Mein Problem war nicht die Sprache als solche, sondern Fragen wie: wie stelle ich das Timing sicher (Gatter A muß vor Gatter B schalten, und zwar um x ns). Wie erzeugt man überhaupt ein definiertes Timing. Wie beginne ich ein Projekt und wie behalte ich die Übersicht? Das sich nur ca. 20 % des VHDL Codes überhaupt synthesisieren lassen erfährt man auch nur am Rande. Ich habe früher einmal einen CPLD von Lattice programmiert, allerdings mit Schaltplan, wo ich längst nicht diese Probleme hatte. Schaltpläne finde ich auch heute noch sympathischer, sehe aber auch, daß man bei 5000.000 Gattern auf einem Chip nicht mehr weit damit kommt. Habe einen ganzen Zoo an Büchern und Tutorials, White papers, Appl. papers etc. überflogen, um mir eine Übersicht zu verschaffen. Ich stimme FPGAküchle in seinen Ausführungen vollkommen zu, da ich es ähnlich gemacht habe. Zum Lernen habe ich mir erst einmal das Starterkit Spartan 3E (Xilinx) von Trenz elctronic für 179 gekauft. Das hat auch AD/DA-Wandler und deckt einen ziemlich großen Bereich an möglichen Anwendungen ab. Dazu kann man bei Xilinx einige Anwendungen (Stichwort: PicoBlaze, ein Softcore embedded Controller, solltest Du Dir unbedingt anschauen) herunterladen, die speziell für dieses Kit geschrieben wurden. Nichts triviales wie Halbadder und ähnliches, sondern richtig professionelles Zeug wie Einlesen AD-Werte, Ausgabe DA-Werte, Einlesen eines OnBoard Encoder (zum Verändern von Parametern), Ausgabe von Zeichen auf dem Onboard LCD-Display etc. Für das Geld also eine richtig runde Sache, zum Einstieg genau das richtige. Ich habe kein Board gefunden, was einen ähnlichen Leistungsumfang für das Geld bietet. Falls Du Literaturhinweise brauchst, kann ich Dir einige geben, auch pdf's über VHDL (sehr bauchbar!)zum runterladen habe ich eine ganze Menge. Gruß Peter
Hallo Peter, ich plane auch demnächst in VHDL einzusteigen und hätte gern deine PDFs (Links?)... (FPGAküchle hat es doch nicht geschafft, mir Angst zu machen, trotz vorhandener C-Kenntnisse ;-) (wenn ich länger brauche, dann brauche ich halt länger... Geduld schadet nie) Dankeschön :o) p.s. beim Stöbern habe ich Folgendes gefunden: http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=39&No=14&Revision=018&PartNo=1#section evtl. Meinungen zu diesem Board? Gruß David
Kann zum Einstieg nur das "LiveDesign" Evaluation Board empfehlen. Wird soweit ich weiß von Altium vertrieben und kostet 100 $. http://www.altera.com/products/devkits/partners/kit-alt-live-design.html Hat jede Menge Peripherie und man kann schön alles Stück für Stück ausprobieren. Vom einfachen Addierer bis zum integrierten 32 Bit RISC Softcore Prozessor mit externen RAM und Grafikausgabe. Beispielprojekte von der einfachen Schaltung bis zum komplexen System sind auch dabei. Grüße
Ich habe früher Studenten betreut, die ihre Diplom/Studienarbeit mit VHDL gemacht haben. Leute, die aus der C/C++ Ecke kamen haben meistens sehr schnell die sehr mächtigen Konstrukte, die VHDL bietet, genutzt. Das gab dann zwar recht schnelle Resultate (zumindest in der Simulation), leider war der Gate Count, wenn es sich denn synthetisieren liess, entsprechend hoch. Ausserdem wusste bei Problemen mit der Netzliste kein Mensch, wie das synthetisiert wurde. Studenten, die aus der Assembler Ecke oder ohne Vorkenntnisse kamen hatten es da viel einfacher, weil die sich auf die elementaren Konstrukte beschränkt haben, bei denen man ziemlich gut erkennt, wie viel Gatter das ergibt und wie die Struktur aussieht. Da kann man dann auch das Timing im VHDL wesentlich besser optimieren. Eigentlich müsste man mit Verilog anfangen, das bietet diese ganzen Konstrukte gar nicht :-) Und ganz wichtig: Synchrones Design ist das allerwichtigste. Am Anfang neigen viele dazu, an der Stelle mal etwas zu schluren, mal schnell einen kleinen Takt oder eine asynchrone Schleife einzuführen etc. Das rächt sich und führt dann zu Problemen wie z. B. dieses hier: "Mein Problem war nicht die Sprache als solche, sondern Fragen wie: wie stelle ich das Timing sicher (Gatter A muß vor Gatter B schalten, und zwar um x ns). Wie erzeugt man überhaupt ein definiertes Timing." Wenn man solche Probleme als Anfänger hat, hat man sich entweder übernommen (Man sollte nicht gerade mit einem DDR Interface oder so anfangen) oder man hat einen ungünstigen Ansatz, den man dringend überarbeiten sollte. Gruss Axel
Die großen Schwierigkeiten kommen doch meist davon, dass einigen meinen ein FPGA wäre so was wie ein beschleunigter Prozessor, und ich brauche meine Algorithmus nur von C(C++) auf VHDL umzuschreiben und dann läuft er noch schneller. VHDL (oder Verilog) ohne Hardware-Kenntnisse und ohne die Kenntnisse einer (generischen) FPGA Architektur kann nie etwas gescheites werden. Meine bescheidene Meinung Klaus
Ich bin auch von C/Cpp zu VHDL gekommen, und ich fand das nicht so schwer. Grund: Ich habe alles als Zustandsautomaten programmiert, da kommt man auch mit C-Kenntnissen weit!
Zum Initialbeitrag Eine ganz gute Uebersicht gibt auch die Literatur die im "Hamburg VHDL archive" verlinkt ist und online verfuegbar. Im Rahmen einer Vorlesung ueber Hardware-Software-Codesign und der zugehoerigen Uebungen habe ich im SS2005 einmal mit einem Altera Max gearbeitet, die Vorlesungsfolien sind noch online zu finden. Persoehnlich hatte ich nicht das Gefuehl bei den Uebungen von C++ oder C Kenntnissen behindert zu werden, vermute allerdings das Du weniger vom Syntax als von Methoden objektorientierter Programmierung ausgehst. VHDL ist eine Hochsprache die (mit den entsprechenden Kompilern und Simulatoren) benutzt wird um aus Verhaltens und Strukturbeschreibungen Konfigurationen fuer Programmierbare Logikbausteine zu erzeugen. FPGA's sind die Klasse von Logikbausteinen die Dir , aufgrund der internen Struktur, die groesste Freiheit dabei geben. Wenn Du VHDL nicht nur just for Fun lernen willst, sondern ein konkretes Ziel umsetzen willst wuerde ich Dir empfehlen zu pruefen ob sich dieses auch mit applicationsspezifischen Prozessoren oder Systems-on-a-Chip also z.B. Microcontrollern (z.B. AVR's von Atmel) erreichen laesst, die sich in C oder C++ programmieren lassen. Gruss JS
Nachtrag: Wer lieber C programmiert kann natuerlich mal nach sowas: C-To-VHDL High-Level Synthesis Tool googlen. Allerdings kenne ich keine Erfahrungsberichte darueber.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.