FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Unterbereich Grundstudium / Technische Informatik

VHDL: Datentypen

VHDL: Datentypen 2004-07-03 15:18
korelstar
Möller schafft es ja immer wieder einen total zu verwirren. Derzeit frage ich mich, was der Unterschied zwischen den Datentypen "Bit" und "std_logic" ist.

In der Musterlösung zu Aufgabe 1.5.4 steht beispielsweise:
ENTITY MUX_4TO1 IS PORT ( in_a, in_b :IN std_logic; in_c, in_d :IN std_logic; sel :IN std_logic_vector(1 DOWNTO 0); dout :OUT std_logic). END MUX_4TO1;



Im Buch steht (natürlich ohne genauer darauf einzugehen):
ENTITY and_gate IS PORT(a, b : IN Bit; c : OUT Bit); END and_gate;

Sind Bit und std_logic als Synonyme aufzufassen? Wenn nicht: wann wird was benutzt?

Re: VHDL: Datentypen 2004-07-03 16:33
TriPhoenix
das ist ganz einfach (wenn es nicht von Möller erklärt wird [img]http://www.fb18.de/gfx/15.gif[/img]):

Bit ist ein Datentyp für ein Bit, der kann 0 und 1 als Wert haben, nicht mehr und nicht weniger. Anders sieht das schon aus bei std_logic, der ist nämlich für einige weitere Fälle gedacht:
zu 0 und 1 kommen dazu die werte U, Z, W, X, L, H, - mit den bedeutungen:
U nicht definiert
Z hochohmig (s.u.)
W schwacher Konflikt (s. L, H)
X starker Konflikt (zwischen 0 und 1)
L schwache 0
H schwache 1
- don't care (der Syntheseprozess darf hinsetzen was er will)

Dieser Typ ist dazu da um vor allem Bussysteme darstellen zu können. Wenn man einen Bus hat, dann müssen mehrere Dinge etwas auf den Bus schreiben, da reicht es nicht, wenn z.B. einer eine 0 schreibt wenn er nichts zu sagen hat, das köntne im realen dann trotzdem Probleme geben. Dafür ist der Zustand 'Z', hochohmig heißt, dass man sozusagen NICHTS schrieben will auf den Bus und jedes andere Signal (z.B. eine 1 von wem anders) übeschreibt das Z. Wenn man sich mal nicht dran hält, bekomtm man in der Simulation gleich ein X an den Kopf. Die Signale L und H modellieren "Open-Source" bzw. "Open-Drain" Ausgänge, beide werden aber von 1 oder 0 überschrieben, wenn soetwas auch noch auf dem Bus liegt. W ist das äquivalent zu X für schwache Logik. Letztendlich gibts noch das U, in Simulationen wird alles mit U initialisiert und wann immer man versucht, etwas mit dem U zu verrechnen kommt immer U raus. Das hat den Vorteil,d ass man garnicht erst anfängt, sich auf uninitialisierte Werte zu verlassen und gleich alles initialisiert.

Nochmal zusammengefasst (anscheinend auf grundlage desselben Buches, das gerade vor mir liegt [img]http://www.fb18.de/gfx/22.gif[/img]) gibts das z.B. auf http://users.etech.fh-hamburg.de/users/reichardt/di_11.pdf

Hoffe das hilft [img]http://www.fb18.de/gfx/28.gif[/img]

Re: VHDL: Datentypen 2004-07-03 16:56
UncleOwen
jetzt machen diese ganzen komischen Symbole, die man im T2-Praktikum so geflissentlich ignoriert hat, plötzlich Sinn… [img]http://www.fb18.de/gfx/7.gif[/img]

Re: VHDL: Datentypen 2004-07-03 17:18
korelstar
Oh je. Da steckt wohl doch mehr dahinter. Vielen Dank für die ausführliche Erklärung. Ob wir das für die Klausur auch brauchen? [img]http://www.fb18.de/gfx/21.gif[/img]

Hab mir gleich mal alle Folien von der Vorlesung heruntergeladen, die du verlinkt hast. Da kann man bestimmt noch mehr lernen.

Toll ist z.b.:
Der VHDL-Code erforder die Einbindung der IEEE-Bibliothek (library- und use-Anweisungen) vor jeder entity, in der die Datentypen std_logic oder std_ulogic verwendet werden.
Nein, Möller hat das in der Musterlösung natürlich nicht gemacht.

Re: VHDL: Datentypen 2004-07-03 18:23
TriPhoenix
Hab mir gleich mal alle Folien von der Vorlesung heruntergeladen, die du verlinkt hast. Da kann man bestimmt noch mehr lernen.

Auf jeden Fall. VHDL ist eiegntlich eine sehr nette Sprache, wie ich mal von einem Mitarbeiter hörte, dass Möller VHDL auf die möglichst abschreckendste Weise eingeführt hat [img]http://www.fb18.de/gfx/28.gif[/img] Man kann, wenn man das systematisch wie eine Programmiersprache lernt, ziemlich gut damit auskommen. Sicherlich ist auch die Zeit dafür etwas knapp in T1/2 zumidnest hatet ich den Eindruck, das wurde EXTREM gehetzt…

Re: VHDL: Datentypen 2004-07-04 21:36
Anonymer User
sel :IN std_logic_vector(1 DOWNTO 0);

müsste es nicht eigentlich:

sel :IN std_logic_vector(3 DOWNTO 0);

heißen, oder hab ich da
'was grundsätzlich falsch verstanden (was bedeutet eigentlich "DOWNTO" und warum nicht "TO" und könnte man nich besser ARRAY…oh man …)

Re: VHDL: Datentypen 2004-07-04 21:45
korelstar
müsste es nicht eigentlich:

sel :IN std_logic_vector(3 DOWNTO 0);

heißen, oder hab ich da 'was grundsätzlich falsch verstanden

Nö. Es geht ja um einen 4-Fach-Multiplexer. D.h. zwischen vier "Daten"-Eingängen soll gewählt werden können. Dazu braucht man eine zwei Bit breite Information, weil sich damit vier Zustände darstellen lassen. Also klingt in meinen Augen 1 DOWNTO 0 recht sinnvoll.

Re: VHDL: Datentypen 2004-07-04 23:25
Anonymer User
Hey Leute,

muss man diese VHDL Syntax so gut drauf haben………da sehe ich wohl schwarz am 16.07……..


Re: VHDL: Datentypen 2004-07-05 01:07
TriPhoenix
(was bedeutet eigentlich "DOWNTO" und warum nicht "TO" und könnte man nich besser ARRAY…oh man …)

Das hat einfach mit der notation zu tun, wenn man 1 downto 0 nimmt, kann man Binärzahlen so schreiben wie es üblich ist, das höchste Bit links, das niedrigste rechts. mit 0 to 1 müsste mans immer verkehrt schreiben.