(05-01-2011 21:42)sp9fkp napisał(a): Nie bardzo zrozumiałem dlaczego na 16 bitach da się odwzorować tylko 32768 różnych stanów. Przecież przetwornik operuje na wartościach bezwzględnych, bez znaku. To jaką wartość będziemy obrabiać zależy tylko od przyjętej reprezentacji.
Dlatego, że dodatnia liczba całkowita jaką uzyskujemy w przetworniku, czyli tzw. typ "fractional" musi być dla obliczeń DSP zamieniony na typ zmiennoprzecinkowy (rzeczywisty) typu "float", który osiąga wartości dodatnie i ujemne. Dla przykładu w obliczeniach DSP zakres sygnału osiąga wartości od -1 do 1 (0 = brak sygnału, 1 lub -1 = max sygnału). Sygnał, który przetwarzamy jest przecież sygnałem zmiennym, tak jak sinusoida w prądzie zmiennym osiąga wartości dodatnie i ujemne, tak i tutaj.
Amplituda o wartości -1 (-32767) jest tą samą amplitudą co 1 (32767), tylko odwróconą w fazie o 180 stopni.
Sygnał zmienia się w czasie w takt częstotliwości, więc jego amplituda osiąga na przemian wartości dodatnie i ujemne ale jej wartość nigdy nie będzie większa niż połowa pełnego zakresu (jeśli pełny zakres wynosi 65536 = 16 bitów, to jego połowa wynosić będzie 65536 / 2 = 32768 = 15 bitów)
Jak już tak rozpatrujemy procesor dsPIC, to w bibliotece DSP programu MPLab Micrichip-a znajdują się funkcje:
1) float Fract2Float(fractional aVal)
2) fractional Float2Fract(float aVal)
- gdzie fractional, to nic innego jak typ integer (16-bitowy)
które służą do konwersji typu całkowitego na zmiennoprzecinkowy i odwrotnie.
Znajdujemy tam (w pliku "flt2fract.c") np taki zapis:
/* Local defines. */
#define SCALE 1L<<15 /* 2^15 */
#define RANGE 1L<<16 /* 2^16 */
SCALE to skala sygnału i wynosi ona 2 do potęgi 15, a więc 32768
Zachęcam do przestudiowania tych źródeł.
Kiedy sygnał z przetwornika poddajemy obróbce program DSP musi najpierw zamienić (dokonać konwersji) typu całkowitego na zmiennoprzecinkowy, następnie dokonać obliczeń, a na koniec znowu dokonać konwersji otrzymanego wyniku zmiennoprzecinkowego na typ całkowity i wysłać do przetwornika. To są podstawy DSP i zachęcam do poczytania na ten temat.
Trzeba by tu przytoczyć trochę teorii nt. przetwarzania sygnałów ale nie będę was zanudzał tymi wywodami, bo to jest temat bardzo rozległy.
Pozdrawiam,
Krzysiek