Hallo,
Mein Ziel ist es 16 bit ADC Daten auf dem PC darzustellen.
Die Daten kommen von einem ADS1606 ueber einen ICE40 FPGA und landen
dann in einer C# App.
Etwas laeuft schief mit den Daten, ich glaube es liegt an meiner
Umwandlung vom Zweierkomplement zu binaeren Darstellung.
So liefert der ADC mir die Daten:
0x7FFF[FS]
0x0001[1]
0x0000[0]
0xFFFF[-1]
0x8000[-FS]
Und so wollte ich sie haben:
0xFFFF[FS]
0x0000[-FS]
So wandele ich die Daten mit VHDL um:
1 | library ieee;
|
2 | use ieee.std_logic_1164.all;
|
3 | use ieee.numeric_std.all;
|
4 | ...
|
5 | TEMP <= std_logic_vector(unsigned(not(DATA_IN)) + 1);
|
Im Anhang sieht man, dass die negative Halbwelle um die Haelfte nach
unten muss und die positive Halbwelle um die Haelfte nach oben.
Dann wuerde es stimmen.
Ich gebe einen Sinus auf den ADC.