VHDL direkt vergleichen Vektoren
Ich Frage mich, ob es möglich, direkte Vergleiche zwischen 2 Vektoren mit einander, anstatt nur auf Sie zu schauen, bit by bit.
Beispiel:
entity Comparator is
port(a,b in: std_logic_vector (2 downto 0);
out1, out2 out: std_logic);
end Comparator;
architecture behavioural of Comparator1 is
begin
if a = b then
out1 <= '1'
else if /= then
out2 <= '1'
end if;
end behaviour;
Ist das möglich?
InformationsquelleAutor TheAlPaca02 | 2014-05-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Antwort ja ist, können Sie vergleichen zwei array-Typen des gleichen Typ und Subtyp-Angabe direkt.
Aber dein Beispiel-code ist nicht gültig.
Ist das Ergebnis des Ausdrucks
a=b
ist boolean. Konvertieren Sie das zu std_logic durch die Zuordnungout1
undout2
. Eine if-Anweisung in diesem Zusammenhang werden in eine Prozess-Anweisung. Auch brauchen Sie nicht zwei Ausgänge:Alternative, eine gleichzeitige signal-Zuordnung-Anweisung einer bedingten signal-Zuordnung, die ein äquivalent Prozess zu oben:
Ich denke, dies ist nur gültig in VHDL-2008 :/
Ihr denken ist falsch. Die gleichzeitige conditional signal assignment-statement (wie gezeigt) unterstützt in der ursprünglichen -1987 standard und folgende änderungen. Die sequentielle conditional signal assignment statement eingeführt wurde -2008. Beide Architekturen wurden validiert mit -1993.
mein schlechtes
InformationsquelleAutor user1155120
Können Sie auch
to_integer(unsigned(a))
und bedrohlich, Sie als ganze zahlen.Zum Beispiel:
Bezogen auf diesen link vergleichen kann man nur vergleichen
std_logic_unsigned
oderstd_logic_signed
. Unter der Annahme, dassunsigned(...)
wandeln Sie den Typ richtig nur mitunsigned(...)
(odersigned(...)
) sollte auch funktionieren.InformationsquelleAutor s7s