Показано с 1 по 4 из 4

Тема: Как правильно рассчитывать искажения АЦП?

  1. #1
    Завсегдатай
    Автор темы
    Аватар для Openreel
    Регистрация
    02.09.2006
    Адрес
    Санкт-Петербург
    Возраст
    50
    Сообщений
    3,434

    По умолчанию Как правильно рассчитывать искажения АЦП?

    Есть статья
    Analog Devices MT-003 TUTORIAL "Understand SINAD, ENOB, SNR, THD, THD + N, and SFDR so You Don*t Get Lost in the Noise Floor
    MT-003.pdf

    Есть исходник на пайтоне по мотивам данной статьи. По нему есть вопросы.

    Берём массив с оцифровкой, значения в вольтах. Убираем постоянку, накладываем на него окно (hanning) и дальше делаем следующее
    sig_window (тип numpy.ndarray) содержит обработанный сигнал
    sig_n - размер массива, кратно 2^n


    Код:
     
    import numpy as np
    ...
       sig_rfft = np.abs(np.fft.rfft(sig_window))
       amp_sp = np.sqrt(2) * sig_rfft / sig_n
       # рассчитываем спектр мощности (Vrms^2)
       pow_sp = np.power(amp_sp, 2)
    amp_sp - должен содержать амплитудный спектр в единицах vrms
    pow_sp - должен содержать спектр мощности

    Умножение на np.sqrt(2) - это понятно, привели амплитудные единицы к действующим(rms).
    Зачем делят спектр на sig_n - это компенсация process gain или что-то другое?

    Дальше идет поиск первой гармоники и остальных, с учетом leakage и собственно расчеты искомых величин. Там все логично, хоть и много нудного кода.
    Вопрос только один - по документу расчет идет на основе амплитудного спектра, а в исходнике всё считают из спектра мощности (и даже децибелы считают по формулам мощности) - в чем подвох? Почему нельзя было считать из амплитудного значения?
    WBR, Michael.
    Цель расчетов - понимание, а не числа (с) Хемминг.

  2. #2
    Завсегдатай
    Автор темы
    Аватар для Openreel
    Регистрация
    02.09.2006
    Адрес
    Санкт-Петербург
    Возраст
    50
    Сообщений
    3,434

    По умолчанию Re: Как правильно рассчитывать искажения АЦП?

    Провел ряд экспериментов с применением np.rfft для детерминированных сигналов, часть вопросов ушло.
    Для расчета уровня сигнала надо брать не один бин, а среднеквадратичную сумму нескольких бинов (с учетом рассеяния) и свойств окна.
    Параметры окна (используются Coherence Gain, Noise Power Bandwidth) специфицированы в том числе для мощности, потому и исходно спектр мощности считают - все равно в квадрат все бины возводить.

    Добился соответствия спектра и сигнала для uniform окна. Fs = 100кГц, сигнал = 1кГц
    Нажмите на изображение для увеличения. 

Название:	uniform.png 
Просмотров:	128 
Размер:	63.6 Кб 
ID:	464327
    Сверху заданный сигнал, снизу спектр, амплитуды равны.

    Тема интересна кому, пробовал кто рассчитать искажения самостоятельно?
    Последний раз редактировалось Openreel; 06.12.2024 в 03:28.
    WBR, Michael.
    Цель расчетов - понимание, а не числа (с) Хемминг.

  3. #3
    Частый гость Аватар для devisangela
    Регистрация
    22.04.2005
    Адрес
    Сидней, Австралия
    Сообщений
    435

    По умолчанию Re: Как правильно рассчитывать искажения АЦП?

    А на рисунке х-оси провильно названы?
    Толя.

  4. #4
    Завсегдатай
    Автор темы
    Аватар для Openreel
    Регистрация
    02.09.2006
    Адрес
    Санкт-Петербург
    Возраст
    50
    Сообщений
    3,434

    По умолчанию Re: Как правильно рассчитывать искажения АЦП?

    Цитата Сообщение от devisangela Посмотреть сообщение
    х-оси провильно названы?
    Правильно, названия к нижнему графику, обе шкалы. Верхний график - исходный сигнал, там рассматривать особо нечего, просто для контроля. По оси х - номер семпла.

    Теперь работает с окном hanning и в децибелах.
    Нажмите на изображение для увеличения. 

Название:	hanning.png 
Просмотров:	117 
Размер:	89.8 Кб 
ID:	464331
    0 дБ временно привязаны к пиковой амплитуде 1В.
    WBR, Michael.
    Цель расчетов - понимание, а не числа (с) Хемминг.

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •