Forum: FPGA, VHDL & Co. Grundlagen VHDL Synthese - Schulung sinnvoll?


von Rico (Gast)


Lesenswert?

Hallo zusammen,

ich arbeite seit einiger Zeit recht intensiv mit VHDL.

Dabei ertappe ich mich immer wieder, dass ich kleine Ungenauigkeiten 
beschreibe, die dann am Ende meine Simulation zerhauen und ich erst 
aufwendig suchen muss, wo das Problem liegt. Dann baue ich einfach eine 
quick and dirty Lösung ein und bin zufrieden... das möchte ich nun 
ändern.

Gerade hatte ich wieder so einen Fall:
Ich habe einen ungetakteten Prozess und wenn enable auf 1 geht, soll der 
output fest auf "111" liegen. Sonst soll er sich anhand der addr 
verhalten.
Ich habe eine Defaultzuweisung - also in meinen Augen sollten beide 
Prozesse identisch sein. Dennoch funktioniert nur der erste und ich habe 
keine Ahnung wieso :(
1
-- so funktioniert es!
2
PROCESS (enable, addr)
3
BEGIN
4
  output <= (OTHERS => '0');
5
  IF enable= '1' THEN
6
    output <= "111";
7
  ELSE
8
    IF addr = "00" THEN
9
      output <= "001";     
10
    END IF;
11
    IF addr= "010" THEN
12
      output <= "001";     
13
    END IF;
14
    IF addr= "10" THEN
15
      output <= "001";
16
    END IF;
17
  END IF;
18
END PROECESS;
1
-- so funktioniert es nicht
2
PROCESS (enable, addr)
3
BEGIN
4
  output <= (OTHERS => '0');
5
  IF enable= '1' THEN
6
    output <= "111";
7
  END IF;
8
  IF addr = "00" THEN
9
    output <= "001";     
10
  END IF;
11
  IF addr= "010" THEN
12
    output <= "001";     
13
  END IF;
14
  IF addr= "10" THEN
15
    output <= "001";
16
  END IF;
17
END PROECESS;

Es könnte daran liegen, dass ich nicht viel Ahnung von Synthese habe. 
Ich habe also selten eine Vorstellung, was ich genau beschreibe und was 
mir die Synthese dann ausspuckt.
Das Thema mit der Defaultzuweisung musste ich auch erst lernen, dass 
ohne die ein Latch entsteht.

Kann jemand einen guten Lehrgang/Kurs empfehlen, wo man solche 
Grundlagen beigebracht bekommt?
So dass ich mir irgendwann selber erdenken kann: Wo liegt also der 
Unterschied in der Hardware zwischen den beiden obigen Prozessen.
Wie würden sich beide unterscheiden, wenn ich bei den IF--THEN bleibe, 
oder alles in eine case-Abfrage stecke?

hat jemand einen Tip für mich, wohin ich mich wenden könnte?
Ich weiß, dass derartige Kurse nicht billig sind, aber ich denke das 
bekomme ich schon geregelt :)

Vielen Dank!
Rico

von pks (Gast)


Lesenswert?

Der if-enable Zweig muss am Ende stehen, damit die Prozesse äquivalent 
sind. Das hat nichts mit der Synthese zu tun, sondern mit dem 
VHDL-Standard.
Ich denke ein Buch tut es auch...

von Leonard Lebewohl (Gast)


Lesenswert?

das liegt nicht am default, sondern daran das die letzte aktive 
zuweisung ausgeführt wird. da das else fehlt wird output entsprechend 
adr gesetzt, egal wo ena steht.

MfG

von Leonard Lebewohl (Gast)


Lesenswert?

das geht gar nicht:
1
END PROECESS;


und da passen die vectorlängen nicht, also mindestens ein IF ist immer 
falsch:
1
  IF addr = "00" THEN
2
  IF addr= "010" THEN
3
  IF addr= "10" THEN



In diesem Fall sollte das lesen und verstehen der warning weiterhelfen.

von blablub (Gast)


Lesenswert?

Ich würde dir auch ein Buch empfehlen. Da lernst du dann auch was VHDL 
wirklich ist und wie man eine HDL benutzt. Ich denke in einem kurs kommt 
zwar viel drann aber das vergisst du dann auch schnell wieder.

Meiner Ansicht nach denkst du noch ein wenig zu viel im 
C-Programmierstil und nicht wie ein Schaltungsentwickler.

lg

von Rico (Gast)


Lesenswert?

Hallo und vielen Dank!

Mhm... ich muss scheinbar noch viel lernen.

Ich hatte mal folgenden Fall:
1
PROCESS (s_signal, INPUT1, INPUT2)
2
BEGIN
3
  s_signal <= v_variable + s_signal;
4
  v_variable := INPUT1 + INPUT2; -- oder irgendwie so
5
END PROCESS;

Hier hatte es nur so funktioniert, weil die Belegung der Variablen im 
Prozess weiter oben als deren Verwendung stehen muss. Daran hatte ich 
mich bis jetzt irgendwie orientiert... scheint aber wieder nicht überall 
zu gelten :)
1
PROCESS (s_signal, INPUT1, INPUT2)
2
BEGIN
3
  v_variable := INPUT1 + INPUT2; -- oder irgendwie so
4
  s_signal <= v_variable + s_signal;
5
END PROCESS;

Naja... habe ich wohl nicht zu Ende gedacht.
Sonst würden die Defaultzuweisungen auch nicht am Anfang, sondern am 
Ende stehen... eigentlich logisch :)


Aber gibt es Lehrgänge, die mich noch etwas tiefer in diese Thematiken 
einsteigen lassen?
Wann entsteht ein Latch?
Wie werden IF und CASE unterschiedlich interpretiert und in Hardware 
umgesetzt?

Danke!
Rico

von Rico (Gast)


Lesenswert?

Leonard Lebewohl schrieb:
> da passen die vectorlängen nicht
Das war nur schnell runtergeschrieben, um das Problem auszuzeigen... da 
ist mir ein Fehler unterlaufen... sry!

blablub schrieb:
> Meiner Ansicht nach denkst du noch ein wenig zu viel im
> C-Programmierstil und nicht wie ein Schaltungsentwickler.
Ich kann nicht programmieren, kann daher auch nicht wie ein 
Programmierer denken.
Ich glaube eher, ich denke zu sehr "parallel" und stolpere dann immer 
wieder darüber, dass die Reihenfolge im Prozess dann doch irgendwo 
entscheidend ist.

von blablub (Gast)


Lesenswert?

Ich würde dir für den Einstieg das Buch "VHDL-Synthese" von Reichardt 
und Schwarz empfehlen...

von blablub (Gast)


Lesenswert?

>Hier hatte es nur so funktioniert, weil die Belegung der Variablen im
>Prozess weiter oben als deren Verwendung stehen muss. Daran hatte ich
>mich bis jetzt irgendwie orientiert... scheint aber wieder nicht überall
>zu gelten :)

Doch das stimmt schon! Wie kommst du darauf dass das nicht allgemein 
gilt?

Siehe:
>Variablenzuweisungen im Process werden sofort ausgeführt. >Signalzuweisungen nur 
geplant
>⇒ im Process sollten grundsätzlich zuerst die Variablenzuweisungen und >dann die 
Signalzuweisungen gemacht werden! Variablen sind nicht nach >außen sichtbar oder 
weiterverwertbar.

D.h. Eine Variable kann im Prozess je nach Ablauf öfters den Wert 
wechseln. Ein Signal wird grundsätzlich nur am ende des Prozesses 
gesetzt und zwar auf den Wert der ihm als letztes zugewiesen wurde.

lg

von Leonard Lebewohl (Gast)


Lesenswert?

Du beschreibst aber dein vhdl problem wie ein Softwerker, nicht wie ein 
Hardware Entwickler. Ein Schaltungsentwickler überlegt was er an 
hardwareblöcken braucht (decoder, FSM, Muxer, encoder, counter, buffer, 
...) und verwendet genau das VHDL-Konstrukt das in synthesise style 
guide  http://www.cis.upenn.edu/~milom/cse372-Spring06/xilinx/sim.pdf 
oder http://www.xilinx.com/itp/xilinx10/books/docs/xst/xst.pdf ) dafür 
vorgesehen ist.


 Es gibt kein default in Hardware, sondern reset, FF-initial values oder 
Minterme. ebenso gibt es keine Zuweisung in hardware sondern ein 
register-load,

Zuweisung und default ist programmierjargon der verwirrt hier mehr als 
er nutzt.

von Philip K. (philip_k)


Lesenswert?

Leonard Lebewohl schrieb:
> Du beschreibst aber dein vhdl problem wie ein Softwerker, nicht
> wie ein
> Hardware Entwickler. Ein Schaltungsentwickler überlegt was er an
> hardwareblöcken braucht (decoder, FSM, Muxer, encoder, counter, buffer,
> ...) und verwendet genau das VHDL-Konstrukt das in synthesise style
> guide  http://www.cis.upenn.edu/~milom/cse372-Spring06/xi...
> oder http://www.xilinx.com/itp/xilinx10/books/docs/xst/xst.pdf ) dafür
> vorgesehen ist.
>
>  Es gibt kein default in Hardware, sondern reset, FF-initial values oder
> Minterme. ebenso gibt es keine Zuweisung in hardware sondern ein
> register-load,
>
> Zuweisung und default ist programmierjargon der verwirrt hier mehr als
> er nutzt.

Sorry, aber so ein Käse...
Man kann sehr wohl in Hardware denken und dabei Code schreiben, der 
keine Textform eines Schematics ist.

von blablub (Gast)


Lesenswert?

VHDL ist aber halt eine "Hardwarebeschreibungs-Sprache"...

Das sollte man sich immer ganz klar bewusst machen und im Hinterkopf 
behalten damit man in etwa weiß was bei der Synthese an Hardware 
generiert wird. Von dem her halte ich das keinen Käse. Wenn man das 
nicht macht kommt auch nix gescheites raus.

Aber davon gibt es wohl unterschiedliche Auffassungen...

von Fpgakuechle K. (Gast)


Lesenswert?

Philip K. schrieb:
> Leonard Lebewohl schrieb:
>> Du beschreibst aber dein vhdl problem wie ein Softwerker, nicht
>> wie ein
>> Hardware Entwickler. Ein Schaltungsentwickler überlegt was er an
>> hardwareblöcken braucht (decoder, FSM, Muxer, encoder, counter, buffer,
>> ...) und verwendet genau das VHDL-Konstrukt das in synthesise style
>> guide  http://www.cis.upenn.edu/~milom/cse372-Spring06/xi...
>> oder http://www.xilinx.com/itp/xilinx10/books/docs/xst/xst.pdf ) dafür
>> vorgesehen ist.
>>
>>  Es gibt kein default in Hardware, sondern reset, FF-initial values oder
>> Minterme. ebenso gibt es keine Zuweisung in hardware sondern ein
>> register-load,
>>
>> Zuweisung und default ist programmierjargon der verwirrt hier mehr als
>> er nutzt.
>
> Sorry, aber so ein Käse...
> Man kann sehr wohl in Hardware denken und dabei Code schreiben, der
> keine Textform eines Schematics ist.

Naja, wenn für Dich schematic die einzige Form ist Hardware zu 
beschreiben, hast du dich offensichtlich noch nie ernsthaft mit 
Digitaltechnik befaßt.

Da gibt es noch Wahrheitstablenne, state charts, LookUptable; Register 
transfer, .... Und für jede diese Beschreibungsform bietet VHDL die 
entsprechende Ausdrucksform: structural, behavioural, Case/select für 
encoder/decoder; arrays of std_logic_vectors für LUT's. Ein/zwei/drei 
process Notationen für state machines, ...


Dagegen irgendwas mit IF -then hinzuschreiben (weil man das so von C 
kennt) und sich dann überraschen lassen, was die synthese daraus macht 
ist das Gegenteil von Hochsprachenbasierten Digitalentwurf.

MfG

von Philip K. (philip_k)


Lesenswert?

Fpga Kuechle schrieb:
> ...
Ich glaube Du hast mich falsch verstanden.

von Johannes O. (jojo_2)


Lesenswert?

Fpga Kuechle schrieb:
> Dagegen irgendwas mit IF -then hinzuschreiben (weil man das so von C
> kennt) und sich dann überraschen lassen, was die synthese daraus macht
> ist das Gegenteil von Hochsprachenbasierten Digitalentwurf.

Wobei der obige Code auch nicht richtig z.B. in C geschrieben 
funktionieren würde.


Ohne alles gelesen zu haben: Dir fehlt einfach das Verständnis und die 
Übung. Ich hab keinen richtigen VHDL-Kurs besucht, sondern nur so einen 
Minikurs an der Uni, wo man sich das meiste selbst beibringen musste.
Der Fehler in deinem Code ist mir aber sofort aufgefallen.
Würde also empfehlen, dass du dir ein gutes Buch kaufst, im Internet 
Tutorials anschaust und dann ein paar Sachen umsetzt, um Übung zu 
bekommen.
VHDL-Schulungen sind meist relativ teuer. Ein Kommilitone (hatte das 
selbe Praktikum an der Uni gemacht) hatte einen Anfängerkurs besucht und 
ihm war eigentlich das meiste schon bekannt.
Folglich solltest du dir die Grundlagen selbst beibringen können. Musst 
du eben ein bisschen Arbeit reinstecken!

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


Lesenswert?

Johannes O. schrieb:
> VHDL-Schulungen sind meist relativ teuer.
Und zudem sind VHDL und FPGA bestenfalls zu 10% deckungsgleich (VHDL 
kann viel mehr als ein FPGA kann, und FPGAs können viel mehr als man mit 
VHDL beschreiben könnte oder möchte). In einer traditionellen VHDL 
Schulung lernst du mit ein wenig Pech viel über Simulation, aber 
ziemlich wenig über die Implementierung von Schaltungen in FPGAs...

von Fpgakuechle K. (Gast)


Lesenswert?

Philip K. schrieb:
> Fpga Kuechle schrieb:
>> ...
> Ich glaube Du hast mich falsch verstanden.

Ja gegenseitige Mißverständnisse sind üblich, ich meine mit
Code wie in Hardware gedacht wie in dem Lehrbuch "HDL chip design".

Schau mal in google, da hat's seitenweise Auszüge, in denen Autor zeigt 
wie man  Grundschaltungen (Encoder, FSM) synthesegerecht in VHDL/Verilog 
schreibt
und welche Netzliste daraus generiert wird. Dann sollte klarer sein, was 
mit Hardwarebeschreibung gemeint ist.

MfG,

von Tom (Gast)


Lesenswert?

Beherrscht man Digitaltechnik durch diverse Kurse an der Uni/Hochschule, 
so kann man sich das Schreiben von synthesefähigem VHDL-Code mit einem 
gutem Buch (Tipp VHDL-Synthese von Reichardt) innerhalb von zwei Wochen 
(Null Vorkenntnisse) selbst beibringen..

Sind die Digitaltechnik-Kenntnisse jedoch nicht vorhanden, dann sollte 
man dort ansetzen.

Möchte man das gesamte Spektrum an VHDL Sprackkonstrukten ausreizen 
(bspw. für komplexe Testbenches), dann ist das Buch der Bücher das von 
Ashenden. Ein super Nachschlagewerk: The Designer's Guide to VHDL.

Einen Grundkurs zu VHDL würde ich mir sparen, lieber nach dem Einlesen 
ein wenig spezieller. Die grundlegenden Fehler, die in dem Codeschipsel 
gemacht wurden passieren mit einem Buch nicht.

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


Lesenswert?

Tom schrieb:
> Beherrscht man Digitaltechnik durch diverse Kurse an der Uni/Hochschule,
> so kann man sich das Schreiben von synthesefähigem VHDL-Code mit einem
> gutem Buch (Tipp VHDL-Synthese von Reichardt) innerhalb von zwei Wochen
> (Null Vorkenntnisse) selbst beibringen..

Das dauert länger. Musst noch nicht verzagen.

Das Neue ist alle Leitungen haben Signale zu jedem Zeitpunkt.

Bei einer Software wird Zeile für Zeile abgearbeitet. Der Rest des Codes 
ist tot in dem Moment. Im FPGA ist jeder Zeitpunkt zubetrachten. Lieber 
ein Signal mit einem Default Wert belegen als ein undefinerter Zustand 
im System. Hier sollten auch Reset Leitungen, in deinem Design 
auftauchen.
Nur so als Gedankenstütze, wie du dein Code unter Kontrolle bekommst.


> Sind die Digitaltechnik-Kenntnisse jedoch nicht vorhanden, dann sollte
> man dort ansetzen.
>
> Möchte man das gesamte Spektrum an VHDL Sprackkonstrukten ausreizen
> (bspw. für komplexe Testbenches), dann ist das Buch der Bücher das von
> Ashenden. Ein super Nachschlagewerk: The Designer's Guide to VHDL.

Das ist kein Werk zum Einstieg.

Besser für dich als Einsteiger Pong P.Chu "FPGA Prototyping by VHDL 
examples".


Du musst auch lernen mit einem VHDL Simulator um zu gehen. Da geht 
schneller ein Licht auf.

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


Lesenswert?

René D. schrieb:
> Besser für dich als Einsteiger Pong P.Chu
> "FPGA Prototyping by VHDL examples".
Da kann man geteilter Meinung sein...
Beitrag "Re: Suche VHDL Buch"

> Du musst auch lernen mit einem VHDL Simulator um zu gehen.
> Da geht schneller ein Licht auf.
Und vor allem: es tut gar nicht weh! Und zudem kann man endlich mal VHDL 
Sprachkonstrukte verwenden, die man nie in ein FPGA rein bekommt... ;-)
Sieh dir das mal an: http://www.stefanvhdl.com/

von hubert (Gast)


Lesenswert?

René D. schrieb:
> Besser für dich als Einsteiger Pong P.Chu "FPGA Prototyping by VHDL
> examples".

Kann ich auch sehr empfehlen. Nach allerlei Versuchen bei VHDL 
einzusteigen, die immer im Sande verlaufen sind, da das ganze sehr 
abstrakt gehandhabt wurde, gingen mir beim Chu (da gibts auch noch ein 
zweites etwas dickeres blaues Buch) doch einige Lichter auf. Ist meiner 
Einschätzung nach ein sehr guter Didakt (anders als so manche deutsche 
Professoren ....).

von Duke Scarring (Gast)


Lesenswert?

hubert schrieb:
> Chu
[...]
> Einschätzung nach ein sehr guter Didakt
Ja, didaktisch nicht ganz schlecht, aber der Beispielcode ist nicht sehr 
profesionell. Leider.

Duke

von Rico (Gast)


Lesenswert?

Hallo zusammen,

ich habe mir VHDL auch komplett selber beigebracht bzw. bin noch dabei. 
Hatte Digitaltechnik an der FH, aber mit anderem Schwerpunkt. Nun bin 
ich über ein FPGA Projekt hier gelandet, wo es mehr Richtung ASICs geht.

Da ich also keine reale Hardware vor mir habe, muss ich zwangsweise 
simulieren. Dabei habe ich meiner Meinung nach schon recht große und 
komplexe Designs umgesetzt und simuliert, die auch gut funktioniert 
haben.

Aber wie schon gesagt ertappe ich mich immer wieder dabei, diese kleinen 
Ungenauigkeiten einzubauen, weil ich einfach nicht weiß, was am Ende 
nach der Synthese daraus "gebaut" wird.
Auch habe ich bisher (selten) schon mit Vairablen gearbeitet, wo dann 
das besagt Problem mit der korrekten Reihenfolge aufgetaucht ist.
Dass ein Signal immer am Ende eines Prozesses zugewiesen wird, war mir 
so in aller Deutlichkeit noch nicht bewusst. Die Frage hat sich bisher 
nicht gestellt - es hat funktioniert. Wenn ich auf solche Probleme stoße 
sicher auch mit viiiel Glück bzw. hat die Simulation dann geholfen.

blablub schrieb:
> VHDL ist aber halt eine "Hardwarebeschreibungs-Sprache"...
> Das sollte man sich immer ganz klar bewusst machen und im Hinterkopf
> behalten damit man in etwa weiß was bei der Synthese an Hardware
> generiert wird.

Und genau das weiß ich eben nicht. Deswegen suche ich etwas Nachhilfe 
auf diesem Gebiet.

Fpga Kuechle schrieb:
> Dagegen irgendwas mit IF -then hinzuschreiben (weil man das so von C
> kennt) und sich dann überraschen lassen, was die synthese daraus macht
> ist das Gegenteil von Hochsprachenbasierten Digitalentwurf.

Das IF-Konstrukt ist meiner Meinung nach eine ganz alltägliche Sache im 
VHDL und Hardwareentwurf. Wieso sollte man darauf verzichten bzw. was 
genau sin die Alternativen, außer case?

Lothar Miller schrieb:
> In einer traditionellen VHDL
> Schulung lernst du mit ein wenig Pech viel über Simulation, aber
> ziemlich wenig über die Implementierung von Schaltungen in FPGAs...

Das ist mit bewusst. In einer VHDL Testbench kann man die tollsten 
Sachen machen, die nie in Hardware funktionieren würden (z.B. after XY 
ns, Defaultzuweisungen etc.). Mir geht es aber in erster Linie um die 
Hardware. Die Testbenches dazu bekomme ich dann schon irgendwie drum 
herum gebaut... dort hat man ja viele Freiheiten, muss nicht auf 
Ressourcen achten etc.
Auch wenn mein Schwerpunkt auf ASICs liegt, muss es dennoch in einem 
FPGA synthetisierbar sein. Auch ein ASIC kann nicht zaubern und hat die 
gleichen logischen Grundelemente wie ein FPGA.

Tom schrieb:
> Tipp VHDL-Synthese von Reichardt

Das Buch kenne ich, damit komme ich aber gar nicht zurecht.
Es werden ein paar Grundlagen beschrieben, wobei aber viele wertvolle 
Informationen ausgelassen werden.
Irgendwann kommen dann FIR Filter und sowas... das sind dann schon 
wieder spezielle Anwendungen, die unter Umständen nicht gebraucht 
werden.
Ich werde mir wohl mal die andere Buchvorschläge hier anschauen.

René D. schrieb:
> Du musst auch lernen mit einem VHDL Simulator um zu gehen. Da geht
> schneller ein Licht auf.

Das habe ich bereits ausführlich gemacht. Ohne Simulation kann ich meine 
Designs nicht testen.

Vielen Dank an Alle!
Rico

von blablub (Gast)


Lesenswert?

Das Buch von Ashenden auch empfehlen!

If - Then ist auch in VHDL durchaus zulässig und sinnvoll, sonst gäb es 
das ja nicht! Was eventuell Sinnvoll sein kann ist sich ein so erzeugtes 
entity auch mal in der grafischen Anzeige darstellen zu lassen. Wenn ich 
mich richtig erinnere wurde da dann auch gezeigt wie sowas in Flip-Flops 
und AND/OR Gattern etc. aufgebaut wird.

Meine letzte Erfahrung mit FPGAs liegt leider schon etwas länger zurück 
deshalb kann ich dir da bei den aktuellen Tools nix genaues sagen. Ich 
lebe jetzt eher in der analogen Welt des Chipdesigns ;)

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


Lesenswert?

blablub schrieb:
> Was eventuell Sinnvoll sein kann ist sich ein so erzeugtes entity auch
> mal in der grafischen Anzeige darstellen zu lassen.
Das nennt sich RTL-Schaltplan und es ist der erste Anlaufpunkt, wenn ein 
Design seltsamerweise langsamer ist als erwartet, oder viel mehr 
Ressourcen braucht...
> Wenn ich mich richtig erinnere wurde da dann auch gezeigt wie sowas in
> Flip-Flops und AND/OR Gattern etc. aufgebaut wird.
So wie die vielen Beispiele im Buch von Reichardt&Schwarz und auch auf 
meiner HP:
http://www.lothar-miller.de/s9y/categories/36-Kombinatorische-Schleife
http://www.lothar-miller.de/s9y/archives/67-Vektor-nach-BCD-kombinatorisch.html
http://www.lothar-miller.de/s9y/archives/59-Vektor-0-downto-0.html
http://www.lothar-miller.de/s9y/archives/65-Vektormanipulation.html
http://www.lothar-miller.de/s9y/archives/58-Totzeit-fuer-H-Bruecke.html

: Bearbeitet durch Moderator
von blablub (Gast)


Lesenswert?

Japp genau das meinte ich, ist halt nur schon ein paar Jahre her ;) Das 
bringt auf jeden Fall viel mehr als ein Kurs. Das was man in einem 3 
Tages Kurs hingeballert bekommt hat man nach spätestens 3 Tagen auch 
wieder vergessen.(Oder man muss seine Notizen nachlesen aber das steht 
dann zu 99% auch im Ashenden)

Kleine Korrektur:
Das Buch von Ashenden würde ich auch empfehlen! :D

von Fpgakuechle K. (Gast)


Angehängte Dateien:

Lesenswert?

Rico schrieb:


> Fpga Kuechle schrieb:
>> Dagegen irgendwas mit IF -then hinzuschreiben (weil man das so von C
>> kennt) und sich dann überraschen lassen, was die synthese daraus macht
>> ist das Gegenteil von Hochsprachenbasierten Digitalentwurf.
>
> Das IF-Konstrukt ist meiner Meinung nach eine ganz alltägliche Sache im
> VHDL und Hardwareentwurf. Wieso sollte man darauf verzichten bzw. was
> genau sin die Alternativen, außer case?


Nun ja , eigentlich ging es mir weniger um das IF -construct als um die 
Vorgehensweise ein gewünschtes Verhalten irgendwie in VHDL zu coden und 
dann zu hoffen das das Synthesetool schon erkennt was gemeint ist und 
die passende Hardware aus dem Hut zaubert. Diesen Gedanken 
weitergedacht, heißt das schon die Anfangsfrage "Was macht die Synthese 
aus meinem Code?" keine optimale Vorgehensweise ist. Besser: "was muß 
ich schreiben, das das Synthese-tool einen Muxer/Encoder/RAM/... in die 
Netzliste aufnimmt?". Also erst Digitaltechnik lernen und dann Synthese.


BTW: Das IF-Construct ist in VHDL nur eine mögliche Beschreibungsform, 
VHDL kennt noch die bedingte Signalzuweisung und  select (concurent also 
außerhalb process) sowie IF und case (nur im process) . Anbei eine Seite 
aus dem Buch "HDL-Chip Design" die am Beispiel eines Muxers zeigt, das 
das IF-construct hier die schlechtere Wahl ist.  (erfodert sensitiovy 
list, langegezogene Beschreibung)

MfG,

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


Lesenswert?

Fpga Kuechle schrieb:
> Anbei eine Seite aus dem Buch "HDL-Chip Design"
Das gefällt mir. Ist der Rest des Buches auch so gut?
Ich suche gerade noch ein Weihnachtsgeschenk für mich...   ;-)

> die am Beispiel eines Muxers zeigt, das das IF-construct hier die
> schlechtere Wahl ist.  (erfodert sensitiovy list, langegezogene
> Beschreibung)
Das Problem liegt hier nicht am if an sich, sondern daran, dass 
Softwareentwickler VHDL machen, und die sind es gewohnt, alles was 
zusammengehört auf Gedeih und Verderb in eine "Funktion" zu packen. Und 
das was der Uniformität einer Funktion in VHDL am Nächsten kommt, ist 
die Procedure. Und dann wird dort alles reingehämmert.

Manche dann meinen auch noch, mit der Sensitivliste irgendwas steuern zu 
können...

: Bearbeitet durch Moderator
von Fpgakuechle K. (Gast)


Lesenswert?

Lothar Miller schrieb:
> Fpga Kuechle schrieb:
>> Anbei eine Seite aus dem Buch "HDL-Chip Design"
> Das gefällt mir. Ist der Rest des Buches auch so gut?
> Ich suche gerade noch ein Weihnachtsgeschenk für mich...   ;-)


Als Einstieg super-buch, behandelt auch simulation/test praxisgerecht. 
Leider seit über 10 Jahren keine Neuauflage und deshalb kaum 
FPGA-Bezüge.
Für mich mit abstand das beste hdl-buch, als Student taten die 197 
Deutsche Mark zwar weh waren aber als Berufsbasis perfekt angelegt.

MfG,

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.