Hallo Zusammen,
ich wundere mich gerade ein bisschen, weil es mir noch nie aufgefallen
ist. Bei folgender Codeschnipsel:
1 | twos_complement_output_assign : if g_data_format = "TWOS_COMPLEMENT" or g_data_format = "twos_complement" generate
|
2 | assign_data_o : mux_data_o <= std_ulogic_vector(resize(signed(s_mux_data_reg), mux_data_o'length));
|
3 | end generate twos_complement_output_assign;
|
s_mux_data_reg ist 14Bit breit (std_ulogic_vector) und enthält Daten
eines AD-Wandlers, mux_data_o ist 16 Bit breit und wird an einen
Prozessor (Zynq PL) weiter geschickt.
In der Simulation (Modelsim) läuft das einwandfrei - wenn das MSB des
Registers "1" ist, werden die beiden Bits von mux_data_o auch auf "1"
gezogen. Ich dachte, das würde auch so durch die Synthese gehen, habe
aber jetzt gesehen, dass die beiden MSBs wegoptimiert werden. Ich kann's
natürlich von Hand mit einem Multiplexter machen, aber es wundert mich
einfach. Ist resize in dem Fall nicht synthesefähig?
Danke und viele Grüße
Achim