VHDL: Auswerten variabler Zahl von Signalen in for-Schleife

Gast #2422372
Lesenswert?
• ▲
▼
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!

1
  
2
process ( rx_packet_rdy_s )
3
   variable flag : boolean;
4
begin                  
5
   flag := true;
6
   for a in 0 to SPI_NUMBER-1 loop
7
     if rx_packet_rdy_s(a) = '0' then
8
        flag := false;
9
     end if;
10
   end loop;
11
   if flag then send_flag <= '1';
12
   else send_flag <= '0';
13
   end if;
14
end process;
Moderator (Firma: Titel) Persönliche Seite #2422539
Lesenswert?
• ▲
▼
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:
1
   process (rx_packet_rdy_s) begin
2
     send_flag <= '1';
3
     for a in  rx_packet_rdy_s'range  loop   -- Bitreihenfolge egal 
4
       if rx_packet_rdy_s(a) = '0' then
5
         send_flag <= '0';
6
         exit;
7
       end if;
8
     end loop;
9
   end process;
Gast #2422577
Lesenswert?
• ▲
▼
> 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.
Moderator (Firma: Titel) Persönliche Seite #2422853
Lesenswert?
• ▲
▼
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
     variable i : integer;
3
   begin
4
     i := 0;
5
     for i in  vektor'range  loop
6
       if vektor(a) = '0' then
7
         idx <= i;
8
         exit;           -- mit exit:  die Position der "ersten" 0 wird gefunden
9
       end if;           -- ohne exit: die Position der "letzten" 0 wird gefunden
10
       i := i+1;
11
     end loop;
12
   end process;

> diesen Code
Es ist kein Code.
Es ist eine Beschreibung, nämlich eine Hardwarebeschreibung.
Gast #2423329
Lesenswert?
• ▲
▼
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.
Moderator (Firma: Titel) Persönliche Seite #2423499
Lesenswert?
• ▲
▼
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...  ;-)
Gast #2423651
Lesenswert?
• ▲
▼
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
Moderator (Firma: Titel) Persönliche Seite #2423730
Lesenswert?
• ▲
▼
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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren