Ich habe ein Eingangssignal vom ADC-Konverter, das 8 Bits ( std_logic_vector(7 downto 0)
) ist. Ich muss sie in ein 16-Bit-Signal ( std_logic_vector(15 downto 0
) für 16-Bit-Signalverarbeitung in das 16-Bit-System konvertieren.
Wenn der 8-Bit-Wert als vorzeichenbehaftet interpretiert wird (2er-Komplement), dann wird die allgemeine und standardmäßige VHDL-Konvertierungsmethode die IEEE numeric_std-Bibliothek verwenden:
%Vor%Zuerst wird der std_logic_vector in einen vorzeichenbehafteten Wert konvertiert, dann wird die Größenänderung angewendet, wodurch der signierte Wert erweitert wird und das Ergebnis schließlich in std_logic_vector zurückübersetzt wird.
Die Konvertierung ist ziemlich langwierig, hat aber den Vorteil, dass sie allgemein ist und auch dann funktioniert, wenn die Ziellänge später geändert wird.
Das Attribut 'length gibt einfach die Länge des slv_16 std_logic_vectors zurück, also 16.
Bei nicht signierter Darstellung anstelle von signiert, kann dies mit unsigned
anstelle von signed
geschehen, also mit diesem Code:
Der Vollständigkeit halber noch ein anderer Weg, der gelegentlich nützlich ist:
%Vor%Ich musste dies nicht für Vektoren tun, an die ich mich erinnern kann, aber ich hatte das unter komplexeren Umständen nötig: Das Kopieren von nur ein paar relevanten Signalen in eine größere, komplexere Aufzeichnung war einmal.
Tags und Links vhdl