Mam 14-bitowy ADC . Jednak patrząc na arkusz danych (patrz tabela 2 na stronie 5), efektywna liczba bitów (ENOB) jest zawsze mniejsza niż 12 bitów.
Dlaczego mój DAC twierdzi, że jest 14-bitowym ADC, skoro ma tylko 12-bitową dokładność? Po co mieć dwa dodatkowe bity, jeśli są bez znaczenia?
Odpowiedzi:
Zostałeś oszukany!
14-bit mówi o marketingu, a sprzęt daje ci to, więc powiedzą, że nie masz na co narzekać. Tuż nad ENOB w arkuszu danych podaje numery SINAD (sygnał do szumu i zniekształceń). To 72 dB, a 1 bit odpowiada poziomowi 6 dB, więc 72 dB to w rzeczywistości 12 bitów. 2 najniższe bity to szum.
Możliwe jest wyszukiwanie danych, które są niższe niż poziom szumu, ale wymaga bardzo dobrej korelacji, co oznacza, że musi być bardzo przewidywalna.
źródło
Załóżmy, że chcemy zmierzyć stałe napięcie tak dokładnie, jak to możliwe, używając ADC, który zwróci wartość 8-bitową dla każdego pomiaru. Załóżmy ponadto, że ADC jest określony, aby kod N był nominalnie zwracany dla napięć między (N-0,5) / 100 a (N + 0,5) / 100 woltów (więc np. Kod 47 nominalnie reprezentowałby coś między 0,465 a 0,475 wolty). Co należy mieć na wyjściu ADC, jeśli jest ono zasilane napięciem ustalonym wynoszącym dokładnie 0,47183 wolta?
Jeśli ADC zawsze wyprowadza wartość reprezentującą zdefiniowany powyżej zakres, w którym mieści się wejście (w tym przypadku 47), to bez względu na to, ile odczytów wykonasz, wartość będzie wyglądać na 47. Rozwiązanie czegoś drobniejszego niż to byłoby niemożliwy.
Załóżmy, że zamiast tego ADC skonstruowano tak, aby do każdego odczytu dodawano losową wartość „ditheru” liniowo rozłożoną od -0,5 do +0,5 przed zamianą na liczbę całkowitą? W tym scenariuszu napięcie 47,183 woltów zwróci odczyt 48, około 18,3% czasu, a wartość 47 pozostałych 81,7% czasu. Jeśli obliczyć średnio 10 000 odczytów, należy oczekiwać, że będzie to około 47,183. Ze względu na losowość może być nieco wyższa lub niższa, ale powinna być całkiem blisko. Zauważ, że jeśli weźmiesz wystarczającą liczbę odczytów, możesz osiągnąć dowolny poziom oczekiwanej precyzji, chociaż każdy dodatkowy bit wymagałby więcej niż podwojenia liczby odczytów.
Dodanie dokładnie jednego LSB rozproszonego liniowo ditheringu byłoby bardzo miłym zachowaniem dla ADC. Niestety wdrożenie takiego zachowania nie jest łatwe. Jeśli dithering nie jest liniowo rozłożony lub jeśli jego wielkość nie jest dokładnie jednym LSB, ilość rzeczywistej precyzji, jaką można uzyskać z uśredniania, byłaby poważnie ograniczona, bez względu na to, ile próbek zostanie użytych. Jeśli zamiast dodawać jeden LSB losowo rozmieszczonej losowości, dodaje się wiele wartości LSB, osiągnięcie określonego poziomu dokładności będzie wymagało więcej odczytów niż byłoby wymagane przy idealnej losowości jednego LSB, ale ostateczny limit dokładności, który można osiągnąć poprzez wykonanie dowolnej liczby odczytów będzie znacznie mniej wrażliwy na niedoskonałości źródła ditheringu.
Zauważ, że w niektórych aplikacjach najlepiej użyć ADC, który nie ditheruje jego wyniku. Jest to szczególnie prawdziwe w okolicznościach, w których bardziej interesuje nas obserwowanie zmian wartości ADC niż samych wartości precyzyjnych. Jeśli ważniejsze jest szybkie rozwiązanie różnicy między jednostką +3 jednostki / próbką a szybkością wzrostu jednostki +5 / próbki, niż wiedza, czy napięcie w stanie ustalonym wynosi dokładnie 13,2 czy 13,4 jednostek, ADD nie dithering może być lepszy niż dithering jeden. Z drugiej strony, użycie ADC z ditheringiem może być pomocne, jeśli ktoś chce mierzyć rzeczy dokładniej niż pozwala na to pojedynczy odczyt.
źródło
Lekcja bonusowa: Naprawdę dostajesz 14 bitów precyzji , ale tylko 12 bitów dokładności .
źródło
Dodatkowe zastrzeżenie ... czasami naprawdę chcesz losowości .
Na przykład:
W aplikacjach kryptograficznych (bezpieczeństwo / autentyczność) wymagana jest czysta „niemożliwa do wymyślenia” losowość. Korzystanie z LSB konwertera (tych poniżej poziomu szumu) jest szybkim sposobem na generowanie liczb czysto losowych.
Gdy sprzęt ADC jest dostępny do innych celów (czujniki i tym podobne), jest to szybki i łatwy sposób na zainicjowanie bezpiecznej komunikacji. Możesz wzmocnić efekt, maksymalizując wzmocnienie wzmacniacza wejściowego, jeśli jest dostępny (wiele MCU oferuje taką funkcję) i przesuwając wejście.
Losowość ADC wynika przede wszystkim z dwóch fizycznych zasad: hałasu kwantyzacji i hałasu termicznego.
Efekty te mają próg na poziomie makroskopowym. Na przykład liczby wystarczająco oddalone od granicy bitów nie muszą być zaokrąglane, a zatem nie występują błędy kwantyzacji ani losowość. Szum termiczny nie wpływa na bardziej znaczące bity konwersji w większości scenariuszy.
Po rozszerzeniu widać, że zmienianie parametrów konwersji (czas próbkowania, głębokość, częstotliwość, napięcie odniesienia) wpłynie na zmianę losowości wyników poprzez przesunięcie progu losowości (zwiększenie go przez podniesienie lub zmniejszenie przez obniżenie progu ). Podobny efekt osiąga się poprzez zmianę parametrów środowiskowych / systemowych (temperatura, zasilanie itp.).
To powiedziawszy, wiele udanych komercyjnych generatorów liczb losowych opiera się na tej technice, ponieważ efekty zewnętrzne tylko zmniejszają losowość - w żadnym wypadku nie eliminują jej (fizycznie niemożliwe).
Możesz zrekompensować zmniejszenie losowości, wykonując więcej konwersji i dodając wyniki. Ten proces rozszerzenia bitów (konkatenacji małych bitów konwersji) jest wykorzystywany w kluczach STM32 Nucleo, FST-01 (w tym NeuG 1.0), rodzinie urządzeń LEg Grang i wielu innych.
Urządzenia Grang generują bity poprzez konwersję z prędkością ponad 400 milionów konwersji na sekundę (1 bit na konwersję). Jeśli wykonasz wystarczającą liczbę konwersji, możesz zagwarantować wysoką losowość nawet w obliczu warunków otoczenia.
źródło