Wie konvertiert man 8 Bit in 16 Bit in VHDL?

7

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.

    
Panpetch Pinrao 03.07.2013, 15:01
quelle

4 Antworten

21

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:

%Vor%     
Morten Zilmer 03.07.2013, 17:19
quelle
4
%Vor%     
Philippe 03.07.2013 15:11
quelle
2

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.

    
Martin Thompson 04.07.2013 11:00
quelle
1

Dies übernimmt die Konvertierung, ohne die Breite der Nullen bearbeiten zu müssen, wenn sich entweder std_logic_vector ändert:

%Vor%     
Guest 27.10.2015 15:29
quelle

Tags und Links