Hallo,
ich stehe wie ein Ochs vorm Berg... VHDL-Probleme wohin ich gucke ;-)
Konkret habe ich ein seltsames Verhalten bei der Umwandlung eines
IP-Core Ausgangs in eine verarbeitbare Vorzeichenbehaftete Zahl.
Es gibt in meinem Projekt ein Xilinx IP-Core FIR-Filtermodul mit
std_logic_vector als Ausgang (der ein signed-signal enthält). Dessen
Ausgang leite ich durch ein eigenes Wrappermodul nach draußen:
1 | dout <= signed(fir3_out);
|
In einem anderen Block wird dann aus diesem Ausgang ein Teil
"herausgeschnitten", damit er bequem versendet werden kann. Welchen Teil
ich dann nehme, ist zur Laufzeit einstellbar (siehe angehängte Grafik)
1 | pcm_data_small <= std_logic_vector(resize(shift_right(pcm_data,scaleFactor),pcm_data_small'length));
|
Irgendwie ist das Ergebnis nun aber immer negativ, mit entsprechenden
Überläufen bei Null falls einzelne Samples positiv sein wollen. Ich bin
mir relativ sicher das der Filter auch positive Ausgangswerte haben
sollte -- es muss also etwas bei meiner Konvertierung daneben gehen...
Sehe ich mir aber die entsprechenden Dateien des Standards an
(numeric_std.vhdl), verstehe ich die Funktion der Umwandelfunktionen
genau so, wie ich sie verwendet habe.
Grüße
Paul