Forum: FPGA, VHDL & Co. VHDL Ausgangsvektor


von Jele D. (jele_d)


Angehängte Dateien:

Lesenswert?

ich soll die Ausgangsverktor angeben . mit X "5"

 AUSW AHL = “000“
 AUSW AHL = “001“
 AUSW AHL = “010“
 AUSWAHL = “011“
 AUSW AHL = “100“
 AUSW AHL = “101“

: Verschoben durch Moderator
von Gustl B. (-gb-)


Angehängte Dateien:

Lesenswert?

Ja nun, man schreibe sich eine Testbench, siehe Anhang.

Alles Gute, Alles Liebe (-:

von Gustl B. (-gb-)


Lesenswert?

Und sonst kann man das lösen indem man Schritt für Schritt auflöst was 
da steht.

constant K : std_logic_vector(0 to 7) := o"6" & '0' & '1' & o"5";

o bedeutet Oktal, also 3 Bits, o"6" ist also 110. K ist dann "11001101".

VEKTOR_1 <= ('1' & X"5" & '0');

x bedeutet Hexadezimal, also 4 Bits, x"5" ist 0101. VEKTOR_1 ist dann 
"101010".

VEKTOR_2 <= ('1', K(4) and K(6), K(4), '0', '0', K(7) xor '1');

Da kann man K von oben einsetzen und die Logikfunktionen auflösen. 
VEKTOR_2 ist "101000".

Bei der "Schleife" kann man sich einen Buchstaben nach dem Anderen 
angucken. Erstmal nur A:

SCHLEIFE : for I in 0 to 5 generate
   A(I) <= '1' when (VEKTOR_1(I) <  VEKTOR_2(I)) else '0';
end generate;

Das kann man auch schreiben als:

A(0) <= '1' when (VEKTOR_1(0) <  VEKTOR_2(0)) else '0';
A(1) <= '1' when (VEKTOR_1(1) <  VEKTOR_2(1)) else '0';
A(2) <= '1' when (VEKTOR_1(2) <  VEKTOR_2(2)) else '0';
A(3) <= '1' when (VEKTOR_1(3) <  VEKTOR_2(3)) else '0';
A(4) <= '1' when (VEKTOR_1(4) <  VEKTOR_2(4)) else '0';
A(5) <= '1' when (VEKTOR_1(5) <  VEKTOR_2(5)) else '0';

Und weil VEKTOR_1 und VEKTOR_2 konstant sind, kann man auch das auflösen 
in:

A(0) <= '1' when ('0' <  '1') else '0';
A(1) <= '1' when ('1' <  '0') else '0';
A(2) <= '1' when ('0' <  '1') else '0';
A(3) <= '1' when ('1' <  '0') else '0';
A(4) <= '1' when ('0' <  '0') else '0';
A(5) <= '1' when ('1' <  '0') else '0';

Jetzt kann man den Operator ausführen und bekommt:
A(0) <= '1';
A(1) <= '0';
A(2) <= '1';
A(3) <= '0';
A(4) <= '0';
A(5) <= '0';
Oder A ist "000101".

Das macht man dann noch für die anderen B, C, D, E, F mit dem Ergebnis:
B = 010101
C = 010000
D = 101111
E = 111010
F = 101010

Damit weiß man dann auch, was bei dem
with AUSWAHL select
rauskommt.

Eine Testbench zu schreiben ist hier aber der deutlich schnellere Weg.

von Markus F. (mfro)


Lesenswert?

Gustl B. schrieb:
> Damit weiß man dann auch, was bei dem
> with AUSWAHL select
> rauskommt.

...und hat seine Hausaufgaben fertig, ohne auch nur im Geringsten den 
eigenen Kopf angestrengt oder irgendwas kapiert zu haben.

von Kali (Gast)


Lesenswert?

Markus F. schrieb:
> ...und hat seine Hausaufgaben fertig, ohne auch nur im Geringsten den
> eigenen Kopf angestrengt oder irgendwas kapiert zu haben.

... was dazu führen wird, dass er aus der Kurve fliegt und auf dem Gras 
neben den anderen herläuft. Er kann den nächsten Baustein auch nicht 
selber lösen und ist raus.

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.