Forum: FPGA, VHDL & Co. Syntaxfrage VHDL


von Stefan K. (stefan82)


Lesenswert?

Hallo zusammen,
hab mal wieder eine Frage und im Forum leider noch nix gefunden, ...

Data_int sei ein 30bit STD_Logic_Vector:
1
-- libs etc.
2
3
if (rst = '1') then
4
   Data_int <= (others => '0')
5
   .
6
   .
7
   .
8
elsif (...) then
9
end if; 
10
11
-- weitere Prozeduren

Meine Frage:
bewirkt die Syntax <= (others '0') wirklich exakt das gleiche wie ein 
dreißig bittiges auf 0 setzen àla Data_int <= "000...000"; ?
Könnte mir den Befehl vllt. zufällig jemand "ausformulieren?
Also diese (others ...) Anweisung hab ich nun schon öfter gelesen, 
verstehe aber nicht so recht was dabei wirklich geschieht.

Thx & ru

von Stefan K. (stefan82)


Lesenswert?

Ok, ok, ...

obige Frage hat sich glaub ich grade bereits erledigt. Habe doch noch 
was gefunden (allerdings nicht hier im Forum) ...

Also bitte ich um Korrektur wenn ich mit folgender Erklärung falsch 
liege:

Die beiden Anweisungen:
1
bsp_signal <= "0000";
2
-- oder
3
bsp_signal <= (others => '0');

bewirken absolut das Gleiche.
Vorteil von der "Others"-Variante ist scheinbar, dass ich damit 
variabler arbeiten kann und zum Beispiel später auch entscheiden kann, 
dass mein Signalvektor nur 2bit oder aber 100bit breit ist. Others 
bewirkt in diesem Fall immer ein zurück setzen aller Bits des bsp_signal 
Vectors auf '0'.

Hoffe mal die Erklärung stimmt soweit... sonst bitte Korregieren!

THX and ru

von Der Besucher (Gast)


Lesenswert?

Nur zur Ergänzung:

  bsp_signal <= "1000";
und
  bsp_signal <= (3 => '1', others => '0');

sind auch identisch.

Dann versteht man auch warum das eigentlich "others" heisst.

von Stefan K. (stefan82)


Lesenswert?

Danke für deine Ergänzung!
Wollte diese erkenntnis auch grade noch ergänzen aber da bist du mir 
wohl zuvor gekommen :)

Gruß Stefan

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.