Forum: FPGA, VHDL & Co. Resize nicht synthetisierbar?


von Achim (Gast)


Lesenswert?

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

von Duke Scarring (Gast)


Lesenswert?

Achim schrieb:
> 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?
Ich denke das resize funktioniert.
Die Bit sind mehrfach vorhanden und werden optimiert, aber nicht gleich 
wegoptimiert. Sind denn die beiden MSBs im Zynq-PL bei negativem 
Eingangssignal ok?

Duke

von Achim (Gast)


Lesenswert?

Ich glaube, du hast recht. Ich entwickle hier remote und habe keine 
Hardware zum testen - dabei habe ich mich auf die Aussage vom SW 
Entwickler verlassen. Wenn ich jetzt genau in das Synthese Ergebnis 
reingucke, dann hat Bit 13 das Alias Bit 14 und 15 - ist halt nur ein FF 
dafür gesetzt.

...und wenn ich weiter reingucke, dann glaube ich, dass der ADC von der 
SW nicht in den signed Modus gebracht wurde und nur offset binary Daten 
ausgibt :-/

Hab Dank für den Gedankenanstoß!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.