Проектирование цифрового сглаживающего фильтра

В наши дни, развитие цифровых устройств происходит гигантскими шагами. Очевидно и преимущество применения цифровой обработки сигнала наряду с аналоговым: улучшается помехозащищенность канала связи, бесконечные возможности кодирования информации. Применение микропроцессоров в радиотехнических системах существенно улучшает их массогабаритные, технические и экономические показатели, открывает широкие возможности реализации сложных алгоритмов цифровой обработки сигналов.

Микропроцессоры находят применение при решении широкого круга радиотехнических задач, таких как построение радиотехнических измерителей координат, сглаживающих и экстраполирующих фильтров, устройств вторичной обработки сигналов, специализированных вычислительных устройств бортовых навигационных комплексов, устройств кодирования и декодирования сигналов, весовой обработки пачечных сигналов в радиолокации, различного рода измерительных устройств и т.п. К таким устройствам относятся и цифровые фильтры, для которых стало возможным построение разнообразных частотных характеристик путём их аналитической задачи. При этом реализуемы и фильтры традиционных типов: нижних частот, верхних частот , полосовые и режекторные.

Цифровой фильтр относится к особому типу фильтров и призван убирать из сигнала импульсные проявления (пики и щелчки), сглаживая их. Импульс имеет широкий (в идеале бесконечный) частотный спектр, однако острота его формы определяется именно высокочастотными составляющими.

Фильтр должен быть выполнен на основе МП комплекта К1821 при использовании ЦАП 1108ПА1. МП комплект К1821 состоит из микросхем: К1821ВМ85 - микропроцессор, К1821РФ55 – ПЗУ (емкость – 2 Кб; два 8-разрядных порта ввода-вывода), К1821РУ55 – ОЗУ (емкость –256 байт; два 8-разрядных и один 6-разрядный порты ввода-вывода, встроенный счетчик-таймер).

Входной сигнал цифровой, преобразуется в аналоговый, ЦАП на микросхеме 1108ПА1А.

После прихода сигнала с периферийного устройства (ПУ) на порт ввода в дополнительном цифровом коде на ПУ выдаётся сигнал квитирования. Частота дискретизации FД = 1.2 кГц, разрядность входного сигнала 8. Обработка должна происходить в реальном масштабе времени.

Проектируемое устройство, его базовая конфигурация должны содержать минимальные аппаратные и программные средства, достаточные для выполнения поставленной выше задачи обработки.


Анализ и формализация задачи

Согласно техническому заданию разностное уравнение имеет следующий вид:

Тогда обобщённая структура, описывающая работу фильтра выглядит следующим образом:

где  - входные отчёты , - выходные отчёты, - задержка на ,  и  - коэффициенты.

=1.0 =-0.1 = 1.0 =0.64

=1.4 = 0.5 = 0.5

Коэффициенты  нужны, для того чтобы не было переполнения в восьми разрядах двоичного числа, с которым оперирует процессор. Расчёт  производится следующим образом:


Как видно, фильтр должен держать в памяти семь отсчётов одновременно и оперировать с ними, производя арифметические операции.

Произведём внесение коэффициентов  в скобки и получим следующие выражения:

Из формул видно что, для формирования выходного отчёта необходимо использовать текущее значение входного отчёта и его предыдущие значения. Для хранения входных, выходных, предыдущих значений отсчетов и промежуточных результатов вычисления необходимо выделить область памяти в ОЗУ.

После программы инициализации, т.е. после настройки работы, таймер начинает формировать импульсы следующие с частотой дискретизации, которые поступают на вывод STB A (PC2) порта С работающего в информационном режиме. В этом режиме через выводы PC0, PC1, PC2 происходит обмен управляющими сигналами для порта А .

По переднему фронту импульса на линии STB A формируется сигнал BF (PC1) "буфер полон" который используется в качестве сигнала квитирования. По заднему фронту импульса STB A формируется сигнал INTR (PC0) который является сигналом прерывания.

С приходом сигнала запроса прерывания RST 7,5 процессор переходит в режим обслуживания прерываний. Соответственно программе обслуживания прерываний 7,5 производится считывание данных из порта ввода А.Затем процессор начинает обрабатывать данные в соответствии с заданным алгоритмом. По окончанию вычислений процессор выдаёт данные в порт В. И процесс повторяется вновь.

Входные отсчеты поступают на шину данных микропроцессора в виде 8-разрядного параллельного дополнительного кода с частотой Fд=1.2 кГц, которая формируется таймером. На выходе устройства стоит ЦАП, преобразующий код в аналоговый сигнал-ток.

Микросхема умножающего ЦАП К572ПА1Б предназначена для преобразования 12-разрядного двоичного кода на цифровых входах в ток на аналоговом выходе пропорциональный значениям кода.

Анализируя выше приведённые уравнения видно что в нашем алгоритме должны использоваться операции умножения на константу и сложения. Где операция умножения реализуется путём сдвига значения переменной и суммирования.

Техническое задание требует чтобы на выходе устройства действовало напряжение (-3…+3) В. Следовательно, для преобразования тока на выходе ЦАП в напряжение (-3…+3) В необходимо дополнительное устройство. Таким устройством может послужить операционный усилитель (ОУ).

Обработка отсчетов производится программой, хранящейся в ПЗУ. Размер одного цикла программы должен быть таким, чтобы к моменту прихода следующего отсчета устройство закончило обработку предыдущего и находилось в состоянии готовности.

Общий алгоритм функционирования устройства и его описание

При включении питания фильтр должен быть настроен на соответствующую работу. Для этого используется программа инициализации. В ПЗУ должны быть заложены данные о конфигурации и синхронизации устройства. При включении питания на адресной шине микропроцессора устанавливается начальный адрес 0000, поэтому программу инициализации следует располагать, начиная с этого адреса.

Вторым этапом работы обобщённого алгоритма является основная программа- алгоритм фильтрации. Таким образом, обобщённый алгоритм функционирования устройства имеет вид:

Инициализация устройства включает в себя следующие этапы:

1. Установка маски прерываний

2. Настройка портов ввода-вывода

3. Организация стека

4. Настройка таймера

После программы инициализации, т.е. после настройки работы, таймер начинает формировать импульсы следующие с частотой дискретизации, которые поступают на вывод STB A (PC2) порта С работающего в информационном режиме. В этом режиме через выводы PC0, PC1, PC2 происходит обмен управляющими сигналами для порта А .

По переднему фронту импульса на линии STB A формируется сигнал BF (PC1) "буфер полон" который используется в качестве сигнала квитирования. По заднему фронту импульса STB A формируется сигнал INTR (PC0) который является сигналом прерывания. С приходом сигнала запроса прерывания RST 7,5 процессор переходит в режим обслуживания прерываний. Соответственно программе обслуживания прерываний 7,5 производится считывание данных из порта ввода А.Затем процессор начинает выполнение основной программы. Основная программа, содержащая в себе алгоритм фильтрации производит операции над выборками, поступающих с внешнего устройства на порт ввода, в соответствии с заданным алгоритмом. По окончанию вычислений процессор выдаёт данные в порт вывода В. И процесс повторяется вновь.

Режим прерываний

Методология построения системы прерываний ВМ85 подчинена архитектуре ВМ80, однако число возможных источников прерываний на аппаратном уровне увеличено с одного до пяти. Наряду с типовым векторным запросом INTR (INT для ВМ80) введены ещё четыре, имеющие фиксированные векторы прерываний. Это означает, что при появлении соответствующего запроса управление передаётся на ячейку с фиксированным адресом приведённом в таблице 1:

Таблица 1: Описание прерываний процессора ВМ85

ИмяПриоритетСтартовый адресВид сигнала
TRAP124CHПереход из 0 в 1, затем в 1
RST 7.523CHПереход из 0 в 1
RST 7.5334CH1
RST 7.542CH1
INTR5Вводится при подтверждении прерывания1

Из таблицы видно, что стартовые адреса подпрограмм обслуживания прерываний находятся в области точек входа по команде RST n, n=0-7, но расположены посередине между ними. Это разъясняет ряд наименований , принятых для запросов RST n.5, n=5-7.

Все запросы, за исключением TRAP, могут быть запрещены или разрешены одновременно с помощью команд EI, DI, управляющих общим флагом разрешения прерываний IEN. Существует также возможность раздельного маскирования запросов типа RST независимо др. от друга, которое выполняется с помощью команды SIM. По команде SIM обеспечивается установка нового состояния маски в соответствии с содержимым аккумулятора. При выполнении этой команды содержимое аккумулятора интерпретируется следующим образом.

А7А6А5А4А3А2А1А0
SODSDEN--R 7.5MSENM 7.5M 6.5M 5.5

M 7.5, M 6.5, M 5.5 – маски соответствующего прерывания

MSEN – разрешение установки маски прерываний

R 7.5 – бит, сбрасывающий триггер, где фиксируются запрос внешнего прерывания по входу RST 7.5

SDEN – Разрешение вывода данных, которые находятся в разряде A7

SOD – данные предназначенные для вывода через линию SOD

Установленная маска запрещает соответствующее прерывание. Смена маски в соответствии с А0-А2 выполняется только при разрешении её установки: MSEN=1. В противном случае функция установки маски подавляется.

Текущее состояние масок прерываний может быть прочитано по команде RIM.

При включении источника питания или пуске МП все индивидуальные маски устанавливаются, а флаг разрешения прерывания IEN сбрасывается, что приводит к запрету прерываний. Приём какого – либо запроса на прерывание тоже вызывает общее запрещение всех маскируемых прерываний, но при сохранении состояния индивидуальных масок. Кроме этого запрос TRAP сохраняет и состояние флага общего разрешения, которое может быть прочитано только после первой команды RIM. Вторая команда даёт результат текущего состояния маски, показывающего общий запрет прерываний.

В нашем случае маскирование с помощью режимного слова имеет вид:

Установка маски осуществляется по команде SIM. При этом режимное слово находится в аккумуляторе.

Настройка портов ввода-вывода

В качестве порта ввода и порта вывода в данной конфигурации используются соответственно порты А и В микросхемы РУ55. Порты А и В одинаковы, и каждый из них содержит 8-битовый регистр для буферного запоминания пересылаемого байта данных. Все разряды портов А и В используются для ввода и вывода параллельно, т.е. невозможна установка направления передачи для каждого разряда.

В зависимости от содержания РУС каждый порт (А и В) может работать в двух режимах: простого ввода – вывода ( без обмена управляющими сигналами) или ввода – вывода с квитированием сообщения ( с обменом управляющими сигналами). В режиме 0-го программируемого параллельного интерфейса (ППИ) порт С может осуществлять ввод- вывод параллельно по шести линиям.

Режим с квитированием сообщений соответствует режиму 1 ППИ. В этом случае линии порта С разбиваются на две группы , одна из которых обеспечивает обмен управляющими сигналами для порта А, а другая для порта В.Варианты использования линий порта С и соответственно организация работы всех портов представлены в следующей таблице:


Линии порта СВарианты использования линии
ALT 3ALT4
РС 0INTR AINTR A
РС1BF ABF A
РС2STB ASTB A
РС3Порт выводаINTR B
РС4То жеBF B
РС5>> STB B

Примечание: Вариант ALT1 соответствует использованию всех линий порта С в качестве портов ввода, а вариант ALT2 – в качестве портов вывода.

где INTR A/INTR B (Interrupt Request)- запрос прерывания по порту A/B;

BF A/BF B (Buffer Full) – буфер порта А/В полон/заняты

STA A/STA B (Strobe)- строб записи, соответствующий порту А/В

Временные диаграммы , поясняющие обмен управляющими сигналами при работе портов А и В в режиме с квитированием сообщений, представлены на рисунке:

Временная диаграмма работы порта А(В) со стробированием в режиме ввода

По переднему фронту импульса на линии STB A, который формируется таймером, формируется сигнал BF (PC1) "буфер полон" который используется в качестве сигнала квитирования. По заднему фронту импульса STB A формируется сигнал INTR (PC0) который является сигналом прерывания.

С приходом сигнала запроса прерывания RST 7,5 процессор переходит в режим обслуживания прерываний. Соответственно программе обслуживания прерываний 7,5 производится считывание данных из порта ввода А.Затем процессор начинает обрабатывать данные в соответствии с заданным алгоритмом. По окончанию вычислений процессор выдаёт данные в порт В. И процесс повторяется вновь.

Сигналы BF и INTR остаются активными до выполнения микропроцессором команды IN PORT, по которой содержимое буферного регистра порта А вводится МП по сигналу RD. С началом импульса RD сбрасывается сигнал INTR , а с его окончанием – сигнал BF. Таким образом , сигнал BF =1 сохраняется в течении всего времени обращения к буферному регистру и хранению данных в нём. Сигнал INTR=1 сохраняется, пока записанный в регистр байт данных ожидает ввода в МП.

Если в МПС используется система прерываний, то выход INTR соединяется с соответствующим входом прерывания. Если она не используется, то МП может получить информацию о наличии сигнала прерывания и о состоянии других управляющих сигналов путём чтения слова состояния из РСС и анализа его содержимого.

Таким образом, использование управляющих сигналов при вводе или выводе данных позволяет не терять байты из-за того, что МП не ввёл вовремя байт из порта или же вывел очередной байт в порт до того, как внешнее устройство считало предыдущий байт.

Режим работы портов, а также управление таймером состоит в том, что в регистр управляющего слова записывается байт формат которого имеет следующий вид:


Биты D0, D1 управляющего слова задают направление передачи данных через порты А и В;

Биты D2,D3 определяют вариант использования порта С;

Биты D4,D5 разрешают или запрещают выработку сигналов прерывания INTR;

Биты D6,D7 содержат код TM2,TM1 команды управления таймером.

В нашем случае этот байт будет равен:

Актуально: