// ===========================================================
//   SD-модулятор (АЦП), SD-ЦАП
// ===========================================================
//   Сброс SD-модулятора и SD-ЦАП
//   PMod    := True;              // Мера на сторону уравновешивания
//   Balans  := Mera - Signal;     // Перевес в сторону уравновешивания
//   SBalans := 0;                 // До этого весы были в равновесии
//   PNum    := 1;                 // Счетчик перевесов в сторону уравновешивания
//   NNum    := 0;                 // Счетчик перевесов в сторону мер
// -----------------------------------------------------------
// ОСНОВНАЯ ФУНКЦИЯ SD-модулятора (АЦП)
// (Сигма-Дельта-алгоритм)
procedure SDMOD();
begin
   if Balans >= 0
   then begin
      // Перевес в сторону уравновешивания
      // Добавить меру на сторону сигнала
      Balans := Balans - (Mera + Signal);
      NNum := NNum + 1;
      PMod := False;
   end
   else begin
     // Перевес в сторону сигнала
     // добавить меру на сторону уравновешивания
     Balans  := Balans + Mera - Signal;
     PNum := PNum + 1;
     PMod := True;
   end;
end;
// ОСНОВНАЯ ФУНКЦИЯ SD-ЦАП
// (Цифровой ФНЧ)
function SDDAC () : double;
begin
   // Основная ступень цифровой фильтрации
   if PNum + NNum > 0
   then Result := Mera * (PNum - NNum) /( PNum + NNum)
   else Result := 0;
   // Дополнительные ступени цифровой фильтрации
   if RqLPF > 0
   then begin
      if PNum + NNum > 0
      then begin
        // Первая ступель дополнительного ФНЧ
        LPF1 := LPF1 + Result;
        Result := LPF1 /( PNum + NNum);
        if RqLPF > 1
        then begin
           // Вторая ступель дополнительного ФНЧ
           LPF2 := LPF2 + Result;
           Result := LPF2 /( PNum + NNum);
        end;
      end;
   end;
end;
