РЕКУРСИВНЫЙ ЦИФРОВОЙ ФИЛЬТР
RECURSIVE DIGITAL FILTER

Изобретение относится к области обработки цифровых данных с помощью электрических устройств, в частности, может использоваться в электрических автоматических микропроцессорных регуляторах, цифровых интегрирующих, апериодических и дифференцирующих звеньях, а также в любых цифровых алгоритмах и устройствах обработки последовательных цифровых отсчетов, в которых используется операция деления на постоянный целочисленный делитель.
Цель изобретения - повышение точности цифровой фильтрации.
В качестве ближайшего аналога принято изобретение SU 1626335 А1 от 20.09.1988, МПК Н03Н 17/04, опубликованное 07.02.1991 в Бюл. №5, в котором приводится реализация цифрового рекурсивного фильтра низких частот и цифрового интегратора. Особенностью описанных устройств является применение накапливающего сумматора, на первый вход которого подается цифровое значение входного сигнала, на второй вход подается задержанный на один такт остаток от деления, а сигнал с выхода подается на вход блока деления.
Недостатком изобретения SU 1626335 является то, что максимальная относительная погрешность в одном такте целочисленного деления по сравнению с идеальным результатом составляет (1):
<mrow><msup><mi>E</mi><mrow><mo stretchy="false">(</mo><mn>1</mn><mo stretchy="false">)</mo></mrow></msup><msub><mrow /><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow></msub><mo>=</mo><mfrac><mrow><mi>N</mi><mo>−</mo><mn>1</mn></mrow><mi>N</mi></mfrac><mo>,</mo><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mo stretchy="false">(</mo><mn>1</mn><mo stretchy="false">)</mo></mrow>
где N>0 - величина целочисленного делителя (постоянный коэффициент).
Предлагаемое изобретение позволяет уменьшить максимальную относительную погрешность в одном такте целочисленного деления в два раза (2):
<mrow><msup><mi>E</mi><mrow><mo stretchy="false">(</mo><mn>2</mn><mo stretchy="false">)</mo></mrow></msup><msub><mrow /><mrow><mi>m</mi><mi>a</mi><mi>x</mi></mrow></msub><mo>=</mo><mfrac><mrow><mi>N</mi><mo>−</mo><mn>1</mn></mrow><mrow><mn>2</mn><mi>N</mi></mrow></mfrac><mo>.</mo><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mo stretchy="false">(</mo><mn>2</mn><mo stretchy="false">)</mo></mrow>
Технический результат достигается с помощью ввода дополнительного блока коррекции частного и остатка, вход которого соединен со вторым выходом блока деления на постоянный коэффициент, а первый выход соединен с входом второго блока задержки, в третьем сумматоре добавлен третий вход, который соединен со вторым выходом блока коррекции частного и остатка.
На фиг.1 приведена электрическая структурная схема рекурсивного цифрового фильтра. Рекурсивный цифровой фильтр содержит первый, второй и третий сумматоры 1-3, блок целочисленного деления на постоянный коэффициент 4, первый и второй блоки задержки 5, 6; блок инверторов 7; блок коррекции частного и остатка 8.
<mrow><mi>α</mi><mo>=</mo><mfrac><mn>1</mn><mi>N</mi></mfrac></mrow>
При отсутствии элементов 1 и 7 (фиг.1) рекурсивный цифровой фильтр представляет собой интегратор с коэффициентом
, сигнал на выходе которого в каждом такте n описывается рекуррентной формулой (3);
<mrow><msub><mi>y</mi><mi>n</mi></msub><mo>=</mo><msub><mi>y</mi><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow></msub><mo>+</mo><mi>α</mi><mo>⋅</mo><msub><mi>x</mi><mi>n</mi></msub><mo>,</mo><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mo stretchy="false">(</mo><mn>3</mn><mo stretchy="false">)</mo></mrow>
n
где x - цифровое значение входного сигнала.
n
n
<mrow><mi>α</mi><mo>⋅</mo><msub><mi>x</mi><mi>n</mi></msub><mo>=</mo><mfrac><mrow><msub><mi>x</mi><mi>n</mi></msub></mrow><mi>N</mi></mfrac></mrow>
Если значения x и y представлены в памяти вычислительного устройства целыми числами конечной разрядности, а вычисления по формуле (3) производятся по правилам целочисленной арифметики, результат операции
представляется целым N числом, а остаток отбрасывается. При больших значениях N ошибка округления на каждом шаге может достигать значительной величины и накапливаться в ходе вычислений по рекуррентной формуле (3). Для компенсирования ошибки округления в SU 1626335 предложено интегрирование выполнять согласно рекуррентной формуле (4):
<mrow><msub><mi>y</mi><mi>n</mi></msub><mo>=</mo><msub><mi>y</mi><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow></msub><mo>+</mo><mfrac><mrow><msub><mi>x</mi><mi>n</mi></msub><mo>+</mo><msub><mi>δ</mi><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow></msub></mrow><mi>N</mi></mfrac><mo>,</mo><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mo stretchy="false">(</mo><mn>4</mn><mo stretchy="false">)</mo></mrow>
n-1
n-1
где δ - остаток деления x, на N, при этом результат операции деления представляется целым числом, а дробная часть отбрасывается.
При вычислениях по формуле (4) на каждом шаге, вследствие операции отбрасывания дробной части, может возникнуть расхождение с идеальным (аналоговым) вычислением и представлением чисел с неограниченной разрядностью. Максимальная относительная погрешность операции деления на N определяется по формуле (1).
n
n
n
Если в (4) операцию деления с отбрасыванием дробной части частного заменить округлением до ближайшего целого, то максимальную относительную погрешность можно снизить в два раза согласно формуле (2). Операция округления реализуется вводом дополнительного блока коррекции частного и остатка. Направление коррекции частного на каждом шаге определяется в зависимости от величины остатка δ, и осуществляется по следующим правилам. Если значение целочисленного остатка δ превышает половину величины делителя N, то коррекцию частного производят в большую сторону, а частное увеличивают на одну единицу младшего значащего разряда (МЗР), а от остатка вычитают величину делителя. Если остаток δ отрицательный и по абсолютной величине превышает половину величины делителя N, то коррекцию частного производят в сторону меньшего отрицательного целого, при этом частное уменьшают на одну единицу МЗР, а к остатку прибавляют величину делителя. В остальных случаях остаток и частное не корректируют.
Алгоритм работы блока коррекции частного и остатка определяется формулами (5):
<mrow><mrow><mo>{</mo><mtable columnalign="left"><mtr><mtd><msub><mi>q</mi><mi>n</mi></msub><mo>=</mo><msub><mi>z</mi><mi>n</mi></msub><mo>+</mo><mn>1</mn><mo>;</mo><mtext> </mtext><msub><mi>r</mi><mi>n</mi></msub><mo>=</mo><msub><mi>δ</mi><mi>n</mi></msub><mo>−</mo><mi>N</mi><mo>,</mo><mtext> </mtext><mi>е</mi><mi>с</mi><mi>л</mi><mi>и</mi><mtext> </mtext><msub><mi>δ</mi><mi>n</mi></msub><mo>></mo><mfrac><mi>N</mi><mn>2</mn></mfrac><mo>;</mo></mtd></mtr><mtr><mtd><msub><mi>q</mi><mi>n</mi></msub><mo>=</mo><msub><mi>z</mi><mi>n</mi></msub><mo>−</mo><mn>1</mn><mo>;</mo><mtext> </mtext><msub><mi>r</mi><mi>n</mi></msub><mo>=</mo><msub><mi>δ</mi><mi>n</mi></msub><mo>+</mo><mi>N</mi><mo>,</mo><mtext> </mtext><mi>е</mi><mi>с</mi><mi>л</mi><mi>и</mi><mtext> </mtext><msub><mi>δ</mi><mi>n</mi></msub><mo><</mo><mo>−</mo><mfrac><mi>N</mi><mn>2</mn></mfrac><mo>;</mo></mtd></mtr></mtable></mrow><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mtext> </mtext><mo stretchy="false">(</mo><mn>5</mn><mo stretchy="false">)</mo></mrow>
n
n
n
<mrow><msub><mi>z</mi><mi>n</mi></msub><mo>=</mo><mrow><mo>[</mo><mrow><mfrac><mrow><msub><mi>x</mi><mi>n</mi></msub><mo>+</mo><msub><mi>δ</mi><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow></msub></mrow><mi>N</mi></mfrac></mrow><mo>]</mo></mrow></mrow>
где δ - целочисленный остаток, полученный на шаге n;
- целочисленное частное, полученное на шаге n; q - откорректированное частное; r - откорректированный остаток.
<mrow><mi>α</mi><mo>=</mo><mfrac><mn>1</mn><mrow><mn>40</mn></mrow></mfrac></mrow>
0
В качестве поясняющего примера на фиг.2, 3 приведены диаграммы, показывающие результат работы интеграторов, реализованных по схеме ближайшего аналога SU 1626335 (фиг.2) и предлагаемого изобретения (фиг.3). По оси абсцисс отображены номера тактов вычислений, по оси ординат - значения выходов интеграторов. Непрерывной линией показан сигнал на выходе идеального интегратора, точками - его цифровых реализации. В расчетах использовались следующие параметры: коэффициент каждого интегратора
, начальные условия: y=0. Входной сигнал был представлен последовательностью: х=0, 0, 1, 1, 1, ….
Предлагаемое изобретение может быть реализовано как аппаратно, так и программно. Все элементы устройства выполняют операции над целыми числами ограниченной разрядности в какой-либо позиционной системе счисления с положительным целым основанием.