Многокаскадный биквадратный фильтр
MULTISTAGE BIQUAD FILTER

Настоящее изобретение относится к области вычислительной техники и может быть использовано для цифровой обработки дискретных сигналов в устройствах электронной техники.
Известен цифровой фильтр [патент RU №2096911, опубл. 20.11.1997г.] в корректирующий сигнал которого дополнительно вводится составляющая, обусловленная округлением постоянных коэффициентов путем умножения промежуточной переменной на величину ошибки округления каждого коэффициента. Цифровой фильтр содержит штанговый генератор, регистры сдвига, сумматоры, умножители, N блоков коррекции, входной сумматор, блок округления.
i
Недостатком данного устройства является большое количество расчетных операций, необходимое для получения выходного сигнала устройства в i-м такте y, и большой объем памяти, необходимой для хранения постоянных коэффициентов и промежуточных значений.
Известен способ цифровой рекурсивной полосовой фильтрации и цифровой фильтр для реализации способа [патент RU №2579982, опубл. 10.14.2016г.], содержащий блок умножения, сумматор, блок хранения выборочных значений сигнала, блок хранения коэффициентов, мультиплексор, четыре регистра и блок управления.
Недостатком данного устройства является наличие большого объема памяти, необходимой для хранения промежуточных значений.
Наиболее близким по совокупности признаков к предлагаемому многокаскадному цифровому фильтру является многокаскадный IIR-фильтр и распараллеленная фильтрация данных таковым [патент RU №2599970 от 20.10.2016г.], содержащий буферную память, по меньшей мере два каскада биквадратных фильтров, содержащие первый каскад биквадратного фильтра и следующий каскад биквадратного фильтра; и контроллер, связанный с каскадами биквадратных фильтров и сконфигурированный для утверждения единого потока команд как в первый каскад биквадратного фильтра, так и в следующий каскад биквадратного фильтра, при этом указанный первый каскад биквадратного фильтра и указанный следующий каскад биквадратного фильтра действуют независимо и параллельно в ответ на поток команд, при этом первый каскад биквадратного фильтра связан с памятью и сконфигурирован для выполнения биквадратной фильтрации на блоке из N входных дискретных значений в ответ на поток команд с целью генерирования промежуточных значений и для утверждения промежуточных значений в памяти, при этом промежуточные значения включают подвергнутую фильтрации версию каждого из по меньшей мере подмножества входных дискретных значений, и при этом следующий каскад биквадратного фильтра связан с памятью и сконфигурирован для выполнения биквадратной фильтрации на буферизованных значениях, извлекаемых из памяти в ответ на поток команд, с целью генерирования блока выходных значений, при этом выходные значения содержат выходное значение, соответствующее каждому из входных дискретных значений в блоке из N входных дискретных значений, и буферизованные значения содержат по меньшей мере некоторые из промежуточных значений, сгенерированных в первом каскаде биквадратного фильтра в ответ на блок из N входных дискретных значений.
Недостатком прототипа является наличие большого объема памяти и большое количество расчетных операций, необходимых для выполнения биквадратной фильтрации на блоке из N входных дискретных значений и для выполнения биквадратной фильтрации на буферизованных значениях, из-за использования в каскадах биквадратных фильтров биквадратного фильтра со структурой, известной как «Транспонированная форма II» (Лайонс, Р. Цифровая обработка сигналов: Второе издание. Пер. с англ. – М. : ООО «Бином-Пресс», 2006. – С. 248, рис. 6.22, d).
Задачей изобретения является уменьшение объема памяти, а также увеличение скорости расчета выходных значений за счет уменьшения количества расчетных операций.
Поставленная задача достигается за счет введения в каждый из каскадов биквадратных фильтров умножителя цепи прямой связи, сумматора, первого и второго умножителей цепи обратной связи и первого и второго регистров сдвига цепи обратной связи, при этом вход умножителя цепи прямой связи является информационным входом каскада биквадратного фильтра, выход умножителя цепи прямой связи соединен с первым входом сумматора, вход первого регистра сдвига цепи обратной связи соединен с выходом сумматора, вход первого умножителя цепи обратной связи соединен с выходом первого регистра сдвига цепи обратной связи, выход первого умножителя цепи обратной связи соединен со вторым входом сумматора, вход второго регистра сдвига цепи обратной связи соединен с выходом первого регистра сдвига цепи обратной связи, вход второго умножителя цепи обратной связи соединен с выходом второго регистра сдвига цепи обратной связи, выход второго умножителя цепи обратной связи соединен с третьим входом сумматора, при этом выход сумматора является информационным выходом каскада биквадратного фильтра, при этом упомянутые умножитель цепи прямой связи, сумматор, первый и второй умножители цепи обратной связи и первый и второй регистры сдвига цепи обратной связи действуют в ответ на поток команд, поступающих от контроллера, выход которого соединен с входом команд каскада биквадратного фильтра.
Предложен многокаскадный биквадратный фильтр для цифровой обработки дискретных сигналов в устройствах электронной техники.
На чертеже представлена структурная схема предлагаемого многокаскадного биквадратного фильтра, где:
1 – буферная память;
2 – контроллер;
3.1, 3.2, …, 3.M – каскады биквадратных фильтров с порядковыми номерами соответственно 1, 2, …, M где M – это общее число каскадов биквадратных фильтров, не менее двух, при этом, каждый из M каскадов биквадратных фильтров содержит:
4 – умножитель цепи прямой связи;
5 – сумматор;
6 – первый умножитель цепи обратной связи;
7 – второй умножитель цепи обратной связи;
8 – первый регистр сдвига цепи обратной связи;
9 – второй регистр сдвига цепи обратной связи.
Многокаскадный биквадратный фильтр работает следующим образом.
Входные данные поступают на вход многокаскадного биквадратного фильтра поочередно блоками из N входных дискретных значений X(n), где:
N – целое число, большее или равное 1;
n – целое число, обозначающее порядковый номер конкретного входного значения в блоке и принимающее значения от 1 до N.
J
Поступивший блок из N входных дискретных значений X(n) сначала записывается в буферную память 1, где также будет храниться M блоков из N промежуточных значений X(n), где
J – целое число, обозначающее порядковый номер одного из каскадов биквадратных фильтров 3.1, 3.2, …, 3.M и принимающее значения от 1 до M.
J
J
M
0
J-1
J-1
Каждый из M блоков из N промежуточных значений X(n) является результатом работы соответствующего каскада биквадратного фильтра 3.J, при этом каждое из N промежуточных значений X(n) в упомянутых блоках соответствует входному дискретному значению X(n) с тем же самым порядковым номером n в блоке из N входных дискретных значений X(n), при этом блок из N промежуточных значений X(n), получаемый от последнего каскада биквадратного фильтра 3.M, одновременно является блоком из N выходных значений Y(n) многокаскадного биквадратного фильтра. Для удобства записи процесса работы каждого из каскадов биквадратных фильтров 3.J, блок из N входных дискретных значений X(n) будет в дальнейшем обозначаться как блок из N промежуточных значений X(n). Каждый из каскадов биквадратных фильтров 3.J, в ответ на поток команд, поступающий от контроллера 2, поочередно выполняет операцию чтения из буферной памяти 1 каждого из промежуточных значений X(n), начиная с первого X(1), и осуществляет процесс фильтрации в следующей последовательности:
J-1
0.J
1) умножение промежуточного значения X(n) на коэффициент b, содержащийся в памяти умножителя цепи прямой связи 4.J;
J
2.J
2) умножение промежуточного значения X(n-2), хранящегося во втором регистре сдвига цепи обратной связи 9.J, на коэффициент a, содержащийся в памяти второго умножителя цепи обратной связи 7.J;
J-1
0.J
J
2.J
3) сложение величин X(n)·b и X(n-2)·a, полученных в пп. 1 и 2 соответственно, сумматором 5.J;
J
4) сохранение промежуточного значения X(n-1), хранящегося в первом регистре сдвига цепи обратной связи 8.J, во второй регистр сдвига цепи обратной связи 9.J;
J
1.J
5) умножение промежуточного значения X(n-1), хранящегося в первом регистре сдвига цепи обратной связи 8.J, на коэффициент a, содержащийся в памяти первого умножителя цепи обратной связи 6.J;
J-1
0.J
J
2.J
J
1.J
J
6) сложение величин (X(n)·b + X(n-2)·a) и X(n-1)·a, полученных в пп. 3 и 5 соответственно, сумматором 5.J, с целью получения промежуточного значения X(n);
J
7)  сохранение промежуточного значения X(n), полученного в п. 6, в первый регистр сдвига цепи обратной связи 8.J;
J
8) запись промежуточного значения X(n), полученного в п. 6, в буферную память 1;
J-1
J
J
J
J
J-1
при этом необходимо учитывать, что, если, с момента начала работы многокаскадного биквадратного фильтра, блок из N входных дискретных значений X(n) не является первым, то есть перед ним на вход многокаскадного биквадратного фильтра поступал другой блок из N входных дискретных значений X’(n), то, при осуществлении процесса фильтрации над промежуточным значением X(1), значения, хранящиеся в первом регистре сдвига цепи обратной связи 8.J и втором регистре сдвига цепи обратной связи 9.J, будут равны X’(N) и X’(N-1), при этом промежуточные значения X’(N) и X’(N-1) соответствуют входным дискретным отсчетам X’(N) и X’(N-1) из упомянутого другого блока из N входных дискретных значений X’(n), в противном случае, при осуществлении процесса фильтрации над промежуточным значением X(1), значения, хранящиеся в первом регистре сдвига цепи обратной связи 8.J и втором регистре сдвига цепи обратной связи 9.J, будут равны нулю.
M-1
M
После того, как последний каскад биквадратного фильтра 3.M, завершит процесс фильтрации последнего промежуточного значения X(N) путем записи в буферную память 1 соответствующего промежуточного значения X(N), многокаскадный биквадратный фильтр передает на выход блок из N выходных значений Y(n), после чего содержимое буферной памяти 1 очищается, и многокаскадный биквадратный фильтр переходит в режим ожидания поступления на вход следующего блока из N входных дискретных значений.
Эффективность предлагаемого многокаскадного биквадратного фильтра подтверждается примером практической реализации в виде программы для микроконтроллера STM32F373CC, написанной на языке программирования С:
- тактирующая частота микроконтроллера 64 МГц;
- частота дискретизации 10,245 кГц;
- количество каскадов 3 шт.;
- частота среза каждого из каскадов биквадратных фильтров 25 Гц;
- формат хранения данных float (число с плавающей запятой);
- разрядность 32 байта;
- коэффициенты, хранящиеся в памяти умножителей каждого из каскадов биквадратных фильтров:
0.J
b = 0,000232545276630021,
1.J
a = 1,977787148814540000,
2.J
a = –0,978031163575954000.
В представленном примере практической реализации для вычисления блока из 10 выходных значений на основе соответствующего блока из 10 входных дискретных значений реализованному многокаскадному биквадратному фильтру требуется 1568 байт памяти и 536 тактов машинного времени, что соответствует времени вычисления, равному 8,375 мкс.
Многокаскадному фильтру, соответствующему прототипу, для аналогичного вычисления требуется 1696 байт памяти и 760 тактов машинного времени, что соответствует времени вычисления, равному 11,875 мкс.
Таким образом, предложенные введения дополнительных элементов и новой схемы соединений в многокаскадном биквадратном фильтре позволило уменьшить объем памяти и увеличить скорость расчета выходных данных.