Hab' mir den iCEstick von Lattice besorgt, um damit VHDL zu erlernen. Ich hab' zunächst mal ein lauffähiges, einfaches Beispiel in VHDL für den iCEstick vermisst (anscheinend stellt Lattice nur Beispiele in Verilog für den iCEstick zur Verfügung) und jetzt, wo ich ein solches hinbekommen habe, mag' es nicht so recht weitergehen, weil mir auch nach Lesen einiger Tutorials der Zugang zu VHDL irgendwie noch nicht gelungen ist. Kennt jemand ein Tutorial, das VHDL auch einem ehemaligen Nutzer von LOG/iC, ABEL, CUPL oder AHDL näher bringen kann? Thx -- wer ebenso ein einfaches Demo Projekt in VHDL für den iCEstick vermisst, darf sich gern auf http://www.ultronics.de/de/FPGA.html#iCEstick bedienen.
:
Bearbeitet durch User
Wow - ein dicker Schmöker - beim Durchlesen des Inhaltsverzeichnisses war ja der erste Gedanke, da wird ja genau das behandelt, was ich schon weiß :-) - doch ab Kapitel 16 taucht dann doch "VHDL" auf und läßt hoffen, das dort vielleicht etwas besser meine Lücke zwischen Latches, Flip-Flops, Produktthermen, Set- und Reset-Bedingungen und einer abstrakten Beschreibungssprache geschlossen wird - werd's mir eingehend anschauen. Thx
:
Bearbeitet durch User
U.G. L. schrieb: > Produktthermen Kann man in denen baden? > werd's mir eingehend anschauen. Ich hab das Ding mal überflogen und schon bei dieser Stichprobe einen grundlegenden Verständnisfehler entfeckt: dort wird bei einer vollständig auscodierten FSM ein "when others" Zweig eingefügt. Das ist sinnlos und falsch. Der Term wird sofort wegoptimiert. Siehe das da: http://www.lothar-miller.de/s9y/categories/25-when-others Wenn schon solche simplen Sachen falsch umgesetzt sind... Ich komme zum Schluss: besorg dir mal "VHDL Synthese" von Reichart&Schwarz Ein Tipp: simuliere deine Designs. Der Simulator ist der Debugger für FPGAs. Und sieh dir am Anfang immer wieder mal den RTL Schaltplan deiner VHDL Beschreibung an. Dann kannst du sehen, ob der Synthesizer diene Beschreibung verstanden und ins Gewünschte umgesetzt hat. Such mal hier im Forum nach meinen Postulaten. Die gelten immer noch. Dort im Beitrag "Re: Prozess Problem, ausgabe FPGA entspricht nicht der Simulation" wurde z.B. nicht einsynchronisiert.
:
Bearbeitet durch Moderator
> Digital McLogic Design - Bryan J. Mealy & James T. Mealy:
1 | select
|
2 | |
3 | F3 <= ‘1’ when ‘1’, |
4 | ‘0’ when ‘0’, |
5 | ‘0’ when others; |
"In actuality, the middle clause (“‘0’ when ‘0’”) could
be removed from the solution without changing the meaning
of the statement."
Oder:
"The when others clause is not required but should generally
always be used unless you really know what you’re doing.
You know more what you’re doing later, so for now, always use a
when others clause.."
Das scheint wohl eher sein genereller Stil zu sein.
> Ich komme zum Schluss: besorg dir mal "VHDL Synthese" von
Reichart&Schwarz
Den koennte ich allenfalls bei seiner Schreibart und
inhaltlichen Ausgestaltung als ergaenzende Literatur empfehlen.
Zum Einstieg: Ziemlich ungeeignet.
./. schrieb: > "The when others clause is not required but should generally > always be used unless you really know what you’re doing. > > Das scheint wohl eher sein genereller Stil zu sein. Es ist aber eher schlecht, wenn man anfangs generell was Falsches lernt. Denn viele sehen sich das "später" gar nicht an: > You know more what you’re doing later, so for now, always use a when > others clause.." Aber das mit dem "mach es so und nicht so" ohne weitere Begründung findet sich dort sehr häufig. Ein Beispiel hier zum Thema "don't care" = '-':
1 | One definite drawback of using don’t cares in your VHDL code is that |
2 | some synthesizers and some simulators often times do not handle them |
3 | correctly. Most VHDL-type textbooks recommend not to use don’t care |
4 | symbols in your VHDL models, so beware. |
Dort hätte der Hinweis dazugehört, dass der '-' einfach nur ein Wert eines std_logic ist, genau wie 'U', 'Z', '1' und '0'. Und dass bei einem Vergleich z.B. auf "-10" der zu vergleichende Vektor genau diesen Wert haben muss. Aber in der realen HArdware gibt es eben kein '-', sondern nur '1' und '0' für eine Abfrage (und bestenfalls noch 'H', 'L' und 'Z' für einen Ausgang). Das ist wichtig, weil man laufend darüber stolpern und hinterher mit dem üblichen Fragezeichen im Hirn dastehen wird. ./. schrieb: >> Ich komme zum Schluss: besorg dir mal "VHDL Synthese" > Den koennte ich allenfalls bei seiner Schreibart und > inhaltlichen Ausgestaltung als ergaenzende Literatur empfehlen. Ich würde es umdrehen: dort steht drin, wie man VHDL für ein FPGA schreibt (denn locker 95% des VHDL-Sprachumfangs und der Sprachkonstrukte können NICHT für Hardware genutzt werden...). Und wenn dann Fragen auftauchen, dann nehme ich noch ein Grundlagenbuch dazu. BTW: mich macht extremst(!!) stutzig, dass im gesamten McLogic-Design-Buch kein einziges Mal der Begriff "numeric_std" (oder wenigstens die veraltete "std_logic_arith") auftaucht. Das steht bei mir am Anfang von gut 95% aller meiner Module... Und so ist keines der Beispiele aus dem Buch mit bloßem Kopieren zum Laufen zu bekommen, weil überall (bis auf 4 Beispeile) der Header jedes VHDL Moduls fehlt: "library IEEE;" Und bei diesen 4 Beispielen wird zudem noch der Eindruck vermittelt, jedes Modul müsse in eine eigene Datei. Auch das ist falsch: jedes Modul beginnt mit "library IEEE;", es können aber mehrere Module hintereinander in einer Datei kommen... Ich werfe, wenn es schon unbedingt ein VHDL-Grundlagenbuch sein soll, noch den "Designers Guide to VHDL" von Perter Ashenden ins Rennen: http://xilinx.eetrend.com/files-eetrend-xilinx/forum/201404/7000-11806-the_designers_guide_to_vhdlpeter_j.ashenden.pdf
:
Bearbeitet durch Moderator
Lothar M. schrieb: > ./. schrieb: >> "The when others clause is not required but should generally >> always be used unless you really know what you’re doing. >> >> Das scheint wohl eher sein genereller Stil zu sein. > Es ist aber eher schlecht, wenn man anfangs generell was Falsches > lernt. Denn viele sehen sich das "später" gar nicht an: >> You know more what you’re doing later, so for now, always use a when >> others clause.." ich meine, dass GHDL (Simulator) da eine Warnung schmeisst, wenn die "when others =>" clause fehlt (wg. 9-wertiger Logik). Prinzipiell ist es ja so i.O. und die Synthese kommt damit zurecht. Also ich schreibe da auch immer den others-Fall so hin...
berndl schrieb: > wenn die "when others =>" clause fehlt (wg. 9-wertiger Logik). Richtig, da gibt es bei 2 Bit ja schon 929 = 81 Möglichkeiten. Und meistens ist nur 00, 01, 10 und 11 interessant. Aber ich meinte eben eine vollständig auscodierte FSM mit eigenem Typ. Z.B. sowas wie INIT, IDLE, START, WORK und STOP. Wenn da alle Zustände verwendet sind, dann gibt's keine "others" mehr.
:
Bearbeitet durch Moderator
Lothar M. schrieb: > Z.B. sowas wie INIT, IDLE, START, WORK und STOP. Das stimmt natuerlich auch wieder. Tja, wenn's einfach waere koennte es ja jeder...
Werd' mir "VHDL Synthese" auf jeden Fall auch besorgen - braucht man sich schon mal nicht mit dem Englischen abmühen :-) Thx
:
Bearbeitet durch User
Ich würde dennoch dazu raten, sich den Englishen zu bemühen und auch andere Literatur in Betracht zu ziehen. Ich rate immer zu "Digital Electronics with VHDL (Quartus II Version)". Dort ist in einzigartiger Weise eine Brücke zwischen Software- Digitalschaltungen und dem zugehörigen VHDL geschlagen worden. Habe ich sonst nirgendwo gesehen.
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.