Шум квантования и эффективное разрешение

Урок про неизбежную ошибку округления при оцифровке и про то, как она ограничивает качество сигнала.

Ошибка квантования — разница между истинным напряжением и ближайшим уровнем АЦП; она не превышает половины шага: $\lvert e \rvert \le \text{LSB}/2$.

Оцифровка всегда округляет. Это округление — источник «шума квантования», который ограничивает отношение сигнал/шум сверху. Понимание этого предела помогает не требовать от АЦП невозможного.

Максимальная ошибка

Любое истинное напряжение округляется к ближайшему уровню, так что максимальная ошибка — полшага:

$$ e_{max} = \frac{\text{LSB}}{2} = \frac{V_{ref}}{2^{N+1}} $$

def quant_error_mv(vref, bits):
    lsb = vref / 2**bits
    return lsb / 2 * 1000

for bits in (8, 12, 16):
    print(bits, "бит: макс. ошибка", round(quant_error_mv(5.0, bits), 4), "мВ")

Вывод:

8 бит: макс. ошибка 9.7656 мВ
12 бит: макс. ошибка 0.6104 мВ
16 бит: макс. ошибка 0.0763 мВ

Сигнал/шум и ENOB

Для синусоиды на полную шкалу теоретический предел отношения сигнал/шум, определяемый только квантованием:

$$ \text{SNR} \approx 6{,}02\,N + 1{,}76\ \text{дБ} $$

Каждый бит добавляет около 6 дБ. Обратив формулу для реального измеренного SNR, получают ENOB — эффективное число бит, которое честно «работает» с учётом шума.

def snr_db(bits):
    return 6.02 * bits + 1.76

def enob(snr):
    return (snr - 1.76) / 6.02

print("12 бит -> SNR", round(snr_db(12), 2), "дБ")
# реальный АЦП дал SNR 68 дБ:
print("SNR 68 дБ -> ENOB", round(enob(68), 2), "бит")

Вывод:

12 бит -> SNR 74.0 дБ
SNR 68 дБ -> ENOB 10.99 бит

Как работает под капотом

Шум квантования распределён почти равномерно в пределах $\pm \text{LSB}/2$ и ведёт себя как добавленный широкополосный шум. Его можно «размазать» специально добавленным малым шумом (дизеринг) или усреднить несколькими отсчётами — усреднение $M$ отсчётов снижает шум в $\sqrt{M}$ раз и поднимает эффективное разрешение (передискретизация). Поэтому медленный высокоточный измеритель часто берёт много отсчётов и усредняет, выигрывая «лишние» биты у времени.

Частые ошибки

  • Считать, что ошибка квантования равна LSB — на самом деле максимум LSB/2.
  • Ожидать SNR выше теоретического предела $6{,}02N+1{,}76$ дБ — это потолок для данной разрядности.
  • Путать заявленные биты и ENOB — реальная точность обычно ниже.

Итог

  • Ошибка квантования не превышает половины шага: $\text{LSB}/2$.
  • Предел SNR: примерно $6{,}02N + 1{,}76$ дБ, каждый бит — около 6 дБ.
  • ENOB показывает реальное число «честных» бит с учётом шума; усреднение его повышает.
Проверьте себя
1. Чему равна максимальная ошибка квантования?
AОдному LSB
BПоловине LSB
CДвум LSB
DНулю
2. На сколько примерно растёт предел SNR при добавлении одного бита разрядности?
A≈ 1.76 дБ
B≈ 6 дБ
C≈ 20 дБ
Dвдвое