FB18 - Das Forum für Informatik

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

8bit VA

8bit VA 2004-10-03 20:04
Gosi
Habe gerade mal probiert einen 8bit VA in VHDL zu entwerfen.
ENTITY VA IS ... (einfachen 1bit VA) END VA; ARCHITECTURE VA_VERH OF VA IS ... (einfachen 1bit VA) END VA_VERH; ENTITY 8bit_VA IS PORT(a,b : IN std_logic_vector(7 DOWNTO 0); sum : OUT std_logic_vector(7 DOWNTO 0); carry : OUT std_logic); END 8bit_VA; ARCHITECTURE 8bit_VA_VERH OF 8bit_VA IS SIGNAL carry0, carry1, ... , carry6 : std_logic; COMPONENT VA PORT((wie oben)); END COMPONENT; BEGIN fa_0 : VA PORTMAP(a(0), b(0), OPEN, sum(0), carry0); fa_1 : VA PORTMAP(a(1), b(1), carry0, sum(1), carry1); ... fa_7 : VA PORTMAP(a(7), b(7), carry6, sum(7), carry); END 8bit_VA_VERH; CONFIGURATION 8bit_VA_conf OF 8bit_VA IS FOR 8bit_VA_VERH FOR ALL: VA USE ENTITY VA END FOR; END FOR; END 8bit_VA_conf;
Habe ich das richtig verstanden?
Oder habe ich hier nur Müll gemacht?

Re: 8bit VA 2004-10-03 20:19
TriPhoenix
Sieht grob rüber gschaut halbwegs gut aus, nur zwei Dinge

- portmap heißt afair port map, also getrennt ;)
- den ersten carry-Eingang open zu lassen halte ich für gefährlich, gib dem 8-Bit-VA lieber nen carry-Eingang [img]http://www.fb18.de/gfx/28.gif[/img]

Re: 8bit VA 2004-10-03 20:30
georg
Ich denke, das ist im prinzip richtig. Nur ein paar syntaktische Sachen gehen, glaube ich, anders:

- Die COMPONENT innerhalb der 8Bit_VA_Verh Architecture heisst auch VA, ich weiss nicht, ob das erlaubt ist (weil die
entity schon VA heisst).
- Es muss "PORT MAP" statt "PORTMAP" heissen (Leerzeichen muss
rein). Zumindest wird das in der VHDL-Beschreibung von
TAMS so geschrieben. Vielleicht ist PORTMAP auch möglich.
- Ans Ende der "COMPONENT VA" muss noch "is" stehen (wie bei
einer ENTITY)
- Die Zeile der Configuration die die Entity und Architecture
für die VA component angibt (die mit use entity) muss mit
einem Semikolon enden.

tschüs
Georg

<edit>: war wieder jemand schneller :)</edit>

Re: 8bit VA 2004-10-03 20:31
Anonymer User
warum wird folgendes gemacht?

SIGNAL carry0, carry1, … , carry6 : std_logic;

muss man folgendes so machen, oder kann man?

fa_0 : VA
PORTMAP(a(0), b(0), OPEN, sum(0), carry0);
fa_1 : VA
PORTMAP(a(1), b(1), carry0, sum(1), carry1);

fa_7 : VA
PORTMAP(a(7), b(7), carry6, sum(7), carry);

sind ein paar dumme frage, weiß ich, aber hab grad voll die vor-prüfung-angst-phase….

Re: 8bit VA 2004-10-03 20:40
georg
warum wird folgendes gemacht?

SIGNAL carry0, carry1, … , carry6 : std_logic;

Um auszurücken, dass der carry-Ausgang von fa_n verbunden werden soll mit dem carry-Eingang von fa_{n+1}. Eine andere möglichkeit sehe ich hier nicht, weil man sonst bei der Ein- und Ausgangsbelegung die Ausgänge vorher definierter fa_i referenzieren müsste (und mir ist nicht bekannt, wie das geht). Daher die Lösung mit den internen Signalen.

muss man folgendes so machen, oder kann man?

Dies ist halt die Strukturbeschreibung eines 8-Bit Volladdierers, der 8 1-Bit-Volladdierer benutzt. Man kann natürlich auch die Gleichungen direkt eingeben, aber das ist evtl. recht aufwendig bzw. der Aufgabenstellung widersprechend.

Ob es allerdings eine andere Möglichkeit gibt, einen 8-Bit-VA aus 8 1-Bit-VA zu beschreiben, weiss ich nicht (siehe oben).

Re: 8bit VA 2004-10-03 21:19
Gosi
Danke Euch!

Meint ihr ein vergessenes ; oder das mit PORTMAP sind Fehler für die man Punktabzug bekommt? Ich denke für solche Sachen sollte man nur minimalen Abzug bekommen. Oder??

Re: 8bit VA 2004-10-03 21:28
Anonymer User
Dieses std_logic macht mich noch verrückt.
Warum kann ich nicht einfach z.B.:
a,b: IN bit_vector(7 DOWNTO 0) verwenden.
Ähnliches wurde auch schon mal im Forum beim 4-1-MUX gefragt. Nur bin ich nicht wirklich schlauer geworden.
Um es kurz zu machen: Wann std_logic, wann bit?

Re: 8bit VA 2004-10-03 21:53
Gosi
Das ist eine Gute Frage. Habe mal im Internet gesucht. Es gibt manchmal Lösungen mit bit und mit std_logic.

Kann da jemand mehr zu sagen??

Re: 8bit VA 2004-10-03 22:05
Spaceman
Das ist eine Gute Frage. Habe mal im Internet gesucht. Es gibt manchmal Lösungen mit bit und mit std_logic.

Kann da jemand mehr zu sagen??

Tri hatte das ganze schonmal erklärt. Schau mal unter:

http://3773.rapidforum.com/topic=101881105646&search=vhdl

Re: 8bit VA 2004-10-03 22:13
Anonymer User
Das habe ich auch gelesen, aber mir hilft das net weiter. Oder zumindest nicht zu diesem Zeitpunkt :D.
Ich will Fakten, Fakten, Fakten wann std_logic verwendet werden MUSS und wann NICHT.

Re: 8bit VA 2004-10-03 23:14
Spaceman
Das habe ich auch gelesen, aber mir hilft das net weiter. Oder zumindest nicht zu diesem Zeitpunkt :D.
Ich will Fakten, Fakten, Fakten wann std_logic verwendet werden MUSS und wann NICHT.

Denke im Zweifelsfall kann ein std_logic wohl nicht schaden!

Re: 8bit VA 2004-10-03 23:20
korelstar
Herkömmliche Bitoperationen machen mit std_logic wohl wenig Sinn. Denn dann müsste man erstmal definieren, was W XOR X bedeutet. Okay, bitte nicht schlagen, wenn es so eine Definition gibt. Wenn allerdings das Signal durchgeschliffen werden soll, wie bei einem MUX, dann kann std_logic natürlich Sinn machen, damit sich der endgültige Empfänger um die Interpretation der Daten kümmern kann.

So würde ich das jedenfalls benutzen.

Re: 8bit VA 2004-10-04 01:37
TriPhoenix
Ich glaube so die Standardoperation sind alle auf std_logic definiert. bit/bit_vector sind im Prinzip etwas abstraktere Typen, da gibts nur einsen und nullen. std_logic/std_logic_vector sind "realistische" Typen, bei ihnen sind Fälle vorgesehen wie zwei verbundene Eingänge geben 1 und 0 gelichzeitig oder so. std_logic zu benutzen schadet i.A. nicht