Forum: FPGA, VHDL & Co. iCEstick/VHDL


von U.G. L. (dlchnr)


Lesenswert?

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
von ./. (Gast)


Lesenswert?

Digital McLogic Design - Bryan J. Mealy & James T. Mealy

von U.G. L. (dlchnr)


Lesenswert?

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
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
von ./. (Gast)


Lesenswert?

> 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.

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


Lesenswert?

./. 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
von berndl (Gast)


Lesenswert?

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...

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


Lesenswert?

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
von berndl (Gast)


Lesenswert?

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...

von U.G. L. (dlchnr)


Lesenswert?

Werd' mir "VHDL Synthese" auf jeden Fall auch besorgen - braucht man 
sich schon mal nicht mit dem Englischen abmühen :-)
Thx

: Bearbeitet durch User
von J. S. (engineer) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.