Hallo,
ich bitte um Durchsicht dieses Codes. Ich habe ihn aus einem VHDL-Buch
übernommen und geändert.
Damit soll folgendes erreicht werden:
wenn alle Bits des Vektors rx_packet_rdy_s '1' sind, soll send_flag '1'
werden, sonst soll send_flag '0' bleiben. Habe mein Design, das den Code
enthält, schon synthetisiert und alles läuft wie erwartet (sieht bis
jetzt zumindest so aus), aber so ganz sicher bin ich mir bei dem Code
trotzdem nicht. Ist es in Ordnung so? Wenn nicht, wie macht man das
richtig? Wenn ja, kann man das anders/besser machen?
Danke!
Lothar Miller schrieb:> aber es ist nur 3 Bits lang: "111".
Stimmt, Denkfehler von mir! Hab gemeint, wenn SPI_NUMBER = 4.
Wenn das hier geht
> (rx_packet_rdy_s'range => '1')
dann soll theoretisch auch z.B. so was gehen (5 => '1'), ergibt dann
"11111", oder?
noips schrieb:> dann soll theoretisch auch z.B. so was gehen (5 => '1'), ergibt dann> "11111", oder?
Nein.
Denn ein range ist immer (a to b) oder (c downto d).
Keine Ursache.
Da fällt mir noch was ein: mit 'range lassen sich ganz elegant Schleifen
programmieren, bei denen egal ist, ob sie mit to oder downto
signalen aufgerufen werden:
Erinnert im Prinzip an meine allererste Version, nur ohne Variable und
der Bereich für a anders angegeben. Was bewirkt hier "exit"? Kenne das
im Zusammenhang mit VHDL noch gar nicht.
noips schrieb:> Was bewirkt hier "exit"?
Was legt der Name von exit nahe?
> Kenne das im Zusammenhang mit VHDL noch gar nicht.
Auch ich kenne einiges von VHDL noch nicht... ;-)
> Was legt der Name von exit nahe?
In C wird der Schleifendurchlauf abgebrochen, wenn eine Bedingung
erfüllt ist. Aber in VHDL? Da gibt es meines Wissens keine
Schleifendurchläufe in dem Sinne. Zumindest nicht in Hardware. Die
Simulation ist schon eine andere Welt.
noips schrieb:> Aber in VHDL?> Da gibt es meines Wissens keine Schleifendurchläufe in dem Sinne.
Wenn es eine Schleife gibt, dann gibt es auch Durchläufe... ;-)
Das Ergebnis ist allerdings ganz was anderes als bei einer prozeduralen
Programmiersprache.
> Ich meine damit, auch ohne exit-Statement würde ich diesen Code> als fehlerfrei sehen.
Richtig: er würde hier das selbe Ergebnis herausbekommen. In anderen
Fällen käme auch was anderes raus:
1
process(vektor)
2
variablei:integer;
3
begin
4
i:=0;
5
foriinvektor'rangeloop
6
ifvektor(a)='0'then
7
idx<=i;
8
exit;-- mit exit: die Position der "ersten" 0 wird gefunden
9
endif;-- ohne exit: die Position der "letzten" 0 wird gefunden
10
i:=i+1;
11
endloop;
12
endprocess;
> diesen Code
Es ist kein Code.
Es ist eine Beschreibung, nämlich eine Hardwarebeschreibung.
Lothar Miller schrieb:> Es ist kein Code.> Es ist eine Beschreibung, nämlich eine Hardwarebeschreibung.
Ja, "Code" klingt eher nach Programmiersprache. Man kann darüber
streiten, ob man die Hardwarebeschreibung in VHDL einen Code nennen kann
oder nicht. Ich meine, immer wenn irgendwelche Dinge mit vereinbarten
Zeichen(folgen) beschrieben werden, kann man von einem Code sprechen.
Wenn man bei Google "vhdl coding style" eingibt, bekommt man 38.500
Treffer.
noips schrieb:> Wenn man bei Google "vhdl coding style" eingibt, bekommt man 38.500> Treffer.
Wenn ich "armani coding style" eingebe bekomme ich 28.000 Treffer...
Wenn ich "vhdl beschreibung" eingebe, bekomme ich 38.000 Treffer...
Wenn ich "vhdl programm" eingebe, dann gibts immerhin schon 83.000
Treffer...
;-)
> kann man von einem Code sprechen.
Ein Code war mal etwas Verschlüsseltes, oder etwas, das zum Entschlüssln
von Verschlüsseltem zu brauchen war, oder etwas, das jemandem Zugang
irgendwohin verschafft hat...
> ... würde ich diesen Code als fehlerfrei sehen ...
Es dauert nicht viel länger und ist dem Akronym "Very High Speed
Integrated Circuit *Hardware Description Language*" angemessen, wenn du
statt dessen einfach sagst:
... würde ich diese Beschreibung als fehlerfrei sehen ...
Aber sei's drum... ;-)
Lothar Miller schrieb:> Wenn ich "armani coding style" eingebe bekomme ich 28.000 Treffer...
und ich nur 1 Treffer, und zwar diesen Thread, von der Werbung mal
abgesehen. Eingabe mit Einführungszeichen vorausgesetzt.
Bei Suche nach "vhdl programm" (mit Einführungszeichen) bekomme ich nur
2350 Treffer.
noips schrieb:> und ich nur 1 Treffer
Google ist eben auch nicht mehr das, was es mal war.
Was mich in letzter Zeit extrem nervt, wenn Seiten gefunden werden, die
meinen Suchbegriff gar nicht enthalten, sondern nur (im Kontext gesehen)
enthalten könnten :-(
Duke
Duke Scarring schrieb:> Was mich in letzter Zeit extrem nervt, wenn Seiten gefunden werden, die> meinen Suchbegriff gar nicht enthalten
Was mich überaus nervt, ist, dass gar nicht das gesucht wird, was ich
will, sondern das, was Google meint, das ich wollten könnte. Und
insbesondere, dass es keine Wildcards mehr gibt. Das kann sogar EBAY
noch besser...
Lothar Miller schrieb:> dass es keine Wildcards mehr gibt.
Wann gab's die? Das wußte ich gar nicht, oder konnte es auch nicht
wissen, weil ich Google noch nicht kannte.