2016-10-13 7 views
-2

Das könnte eine dumme Frage sein, aber ich würde gerne einen 8-Bit-Vektor in einen 16-Bit-Vektor einfügen, bevor ich ihn verschiebe.Platzieren eines 8-Bit-Vektors in einen 16-Bit-Vektor

Im Moment habe ich dies:

data  <= "000" & DATA_IN & "00000"; 

, die perfekt funktioniert, aber ich möchte in der Lage, den Ort zu wählen, wo die Daten mit Generika (oder vielleicht auch in Zukunft dynamisch) platziert wird.

Ich habe versucht:

data  <= ((15 - (start_from_output-1)) DOWNTO (15 - (start_from_output-1) - (channels_in_use-1)) => DATA_IN , OTHERS => '0'); 

aber das gibt den Fehler:

ERROR:HDLCompiler:1728 - "E:/Projects/VHDL/PHASED_ARRAY_0-4/switch.vhd" Line 69: Type error near data_in ; current type std_logic_vector; expected type std_ulogic 

Wenn ich es

data  <= (7 DOWNTO 0 => DATA_IN, others => '0'); 

der gleiche Fehler auftritt, zu vereinfachen.

Hat jemand irgendwelche Vorschläge, wie man das löst?

Antwort

0

Sie können wie eine Zuordnung tun:

data <= (OTHERS => '0'); 
data((15 - (val-1)) DOWNTO (15 - (val-1) - (val2-1)) <= data_in; 

Wenn ich Sie richtig verstehe es wird die gleiche Arbeit tun, aber es wird nur innerhalb eines Prozesses arbeiten. Außerhalb des Prozesses erhalten Sie mehrere Treiberfehler.

+0

Das hat funktioniert! Vielen Dank! – Xinq

Verwandte Themen