Клиначёв Николай Васильевич

Модель сигма-дельта АЦП
или о том, как Попугаю проглотить 38 Удавов +
один удавский хвостик, который можно и не считать

До знакомства с принципом работы сигма-дельта (ΣΔ) АЦП разберемся, почему при аналого-цифровом преобразовании за эталонную величину принимают большую из двух сравниваемых. Другими словами, почему в мультике о знаменитой четверке всех героев надо мерить в Удавах. Сравним величины погрешностей. Пусть определить длину эталона мы можем с точностью до попугайского крылышка (на нашей линейке для измерения эталона одно деление равно длине попугайского крылышка). Если эталон – Попугай, то он (эталон) определен с точностью +/-30% (положим длина крылышка составляет 30% от роста Попугая). Тогда результат измерения длины Удава составит 38+/-11,4 [Попугая]. Если эталон – Удав, то он (эталон) определен с точностью +/-(30/38)%. Тогда результат измерения роста Попугая составит (1+/- 0,008)/38 [Удава]. Таким образом показано, что измерения в Удавах Г_О_Р_А_З_Д_О ТОЧНЕЕ. Отметим, что реальной причиной описанного факта является наличие помех в любых электронных схемах. Поэтому создать источник опорного напряжения заданного класса точности легче, если его номинальная величина 2,5 В, а не 2,5/2N В (где N – разрядность АЦП).

Вновь привлечем героев мультфильма и разберемся с принципом работы ΣΔ АЦП, т.е. ответим на вопрос как же Попугаю, не отобедав 38 раз Удавом (в нашим случае – чуть меньше) выяснить свой рост. Займемся поочередным перекладыванием Попугая и Удава. Отметим, что красная отметка роста Попугая всегда увеличивает координату по горизонтали. А Удава эталонной длинны мы укладываем так, чтобы текущая координата была ближе к начальной, см. рис.1.

Измерение Попугая в Удавах
Рис. 1

Очевидна периодичность общей картины. Опишем математически раскладку на первом периоде:

9(П+У) + 10(П-У) =< 0
19П =< 1У
П =< У/19 – (максимальная оценка роста Попугая в Удавах),

(9+1)(П+У) + (10+1)(П-У) >= 0
21П >= 1У
П >= У/21 – (минимальная оценка роста Попугая в Удавах)

где: П – рост Попугая, У – длинна "эталонного" Удава.
Заметим, что в демонстрируемом примере за период общей картины текущая координата приблизилась, но не сравнялась с нулевой отметкой, см. увеличенное изображение на рис. 1. Поэтому мы и записали два неравенства. На последующих периодах ситуация будет аналогичная, но увеличится точность оценки роста Попугая, что эквивалентно повышению разрешения в данном методе АЦ-преобразования (см. табл. 1).

Таблица 1
Период
п.п.
Два неравенства составленных,
для двух тактов в конце периода
Упрощенные
неравенства
Оценка роста
Попугая
Разрешение
(дискрета)
1 9(П+У) + 10(П-У) =< 0
(9+1)(П+У) + (10+1)(П-У) >= 0
19П =< 1У
21П >= 1У
П =< У/19
П >= У/21
1/19-1/21
2 (2*9)(П+У) + (2*10)(П-У) =< 0
(2*9+1)(П+У) + (2*10+1)(П-У) >= 0
38П =< 2У
40П >= 2У
П =< У/19
П >= У/20
1/19-1/20
3 (3*9)(П+У) + (3*10)(П-У) =< 0
(3*9+1)(П+У) + (3*10+1)(П-У) >= 0
57П =< 3У
59П >= 3У
П =< У/19
П >= У/19,6(6)
1/19-1/19,6(6)
4 (4*9)(П+У) + (4*10)(П-У) =< 0
(4*9+1)(П+У) + (4*10+1)(П-У) >= 0
76П =< 4У
78П >= 4У
П =< У/19
П >= У/19,5
1/19-1/19,5
5 (5*9)(П+У) + (5*10)(П-У) =< 0
(5*9+1)(П+У) + (5*10+1)(П-У) >= 0
95П =< 5У
97П >= 5У
П =< У/19
П >= У/19,4
1/19-1/19,4
6 (6*9+1)(П+У) + (6*10+1)(П-У) =< 0
(6*9+2)(П+У) + (6*10+2)(П-У) >= 0
116П =< 6У
118П >= 6У
П =< У/19,3(3)
П >= У/19,6(6)
1/19,3(3)-1/19,6(6)

Если обратить внимание на упрощенные неравенства в таблице 1, то можно увидеть, что слевой стороны – общее число перекладываний на момент определения результата, а справой – значение суммы знаков текущих координат. Таким образом, результат измерения есть функция текущего среднего значения признака знака в описанной процедуре АЦ-преобразования.

Оставим нашу знаменитую четверку и представим модель ΣΔ АЦП построенную в пакете VisSim. Проще рассмотреть модель по частям. Каждый ΣΔ АЦП состоит из ΣΔ модулятора и цифрового фильтра, который реализуется на буфере ячеек памяти, суммирующих схемах и регистрах сдвига.

Структурная схема сигма-дельта модулятора

gif-file, 2KB

На неинвертирующий вход сумматора подана измеряемая величина. После сумматора включен интегратор с добротностью по скорости равной 1000. Далее нелинейный блок моделирует компаратор без гистерезиса (out=1 при in>0; out=-1 при in<0). Устройство выборки хранения здесь выполняет роль стробируемого D-триггера, который управляет инверсией источника опорного напряжения U_ref=1. Значение выхода УВХ присваивается переменной CODE. Тактовая частота модулятора 1000 Гц

Рис. 2

Рисунок 2 демонстрирует явное подобие процессов в ΣΔ модуляторе той ситуации, которая была создана с привлечением героев мультика. Еще раз обратим внимание на то, что переменная CODE (синий график) принимает только два значения и не меняется между тактами модулятора, поэтому дальнейшая ее обработка возможна цифровым устройством. Напомним надо выявить среднее значение этой последовательности, что может быть реализовано низкочастотным фильтром.

Цифровой фильтр для ΣΔ АЦП

gif-file, 2KB

Для наглядного сравнения дискретная последовательность CODE поступает на три фильтра. Верхний непрерывный фильтр выполняет усреднение, используя интегратор (второй интегратор рассчитывает текущее время). Нижние, дискретные трехкаскадные фильтры по сути одинаковы, имеют подобные АЧХ вида (sin(x)/x)3, но разное время установления и полосу. Частота дискретизации фильтров 1000 Гц

Рис. 3

Рисунок 3 наглядно демонстрирует переходные и периодические процессы в дискретном фильтре ΣΔ АЦП. Отметим, что увеличение ячеек памяти в фильтре (на рис. 3 с 20 до 125) пропорционально увеличивает время установления фильтра (время обновления данных), но уменьшает амплитуду низкочастотных колебаний в фильтре, которые вызваны низкочастотной девиацией периодического процесса в ΣΔ модуляторе (см. отличия в уравнениях для шестого периода в табл. 1 и поясняющую увеличенную область на рис. 1 для того же периода).

Процессы в дискретном фильтре мы моделировали с помощью передаточной функции (блок "transferFunction"), но можно и написать программу на Паскале или Си++, подключив динамическую библиотеку с помощью блока "userFunction". Не описывая технологию создания динамически загружаемой библиотеки, которая может быть вызвана программой VisSim, приведем текст главной процедуры реализующей один каскад дискретного фильтра, см. табл. 2 и рис. 4.

Таблица 2
var x20, y, y1 : double; { вспомогательные переменные "dll"-модели }
buffer : array [0..19] of double;
procedure Shift_Buffer;
  var i : integer;
begin
  for i:=19 downto 1 do
  buffer[i]:=buffer[i-1]
end;

{/************ Это базовая процедура в DLL ****************************/}
{/************ Вызывается VisSim-ом на каждом шаге моделирования ******/}
procedure myF(var P:Global; var inV:InVector; var outV:OutVector); export; stdcall;
begin
  { Расчеты, выполняемые на каждом шаге моделирования }
  if inV[0]>=0.5 then { проверили наличие импульса дискретизации }
  begin
    x20:=buffer[19]; Shift_Buffer; buffer[0]:=inV[1];
    y1:=y;
  end;
  y:=(inV[1]-x20)+y1;
  outV[0]:=y;
end;

Структурная схема дискретного фильтра написанного на языке Паскаль
для модели ΣΔ АЦП

gif-file, 2KB

Рис. 4

Для первого из дискретных фильтров (см. рис. 3) частотная характеристика изображена на рис. 5. Видно, что первая частота режекции составляет 50 Гц. Это означает, что помеха от сети электроснабжения на входе АЦП не перекрывающая динамический диапазон интегратора в ΣΔ модуляторе на результат преобразования существенного влияния оказывать не будет. Эти и другие исследования ΣΔ АЦП вы можете выполнить сами, в процессе самостоятельного ознакомления с пакетом VisSim.

АЧХ трех каскадов цифрового фильтра ΣΔ АЦП включенных последовательно

gif-file, 2KB

Рис. 5

С НОВЫМ ГОДОМ!

30.12.2000