Рефераты. Цифровой сглаживающий фильтр

3. Разработка конкретных алгоритмов работы устройства


Как уже оговаривалось, при рестарте микропроцессор начинает исполнять инструкции, находящиеся в области векторов прерываний ПЗУ в зависимости от типа рестарта. При включении питания исполняется команда, записанная в ячейке с адресом 0000(16), а при аппаратном прерывании RST 7.5. - начальный адрес 003С(16). В эти ячейки следует поместить команды безусловного перехода на определенный адрес JMP. В первом случае ссылка осуществляется на программу инициализации, во втором – на основную программу обработки оцифрованного сигнала. Обе программы ориентировочно небольшие по сравнению с размером ПЗУ ( 2кбайт ), поэтому их можно рассредоточить в адресном пространстве. Например, программу инициализации поместить с адреса 0200(16), а основную программу – начиная с адреса 0500(16). Тогда ориентировочная карта памяти выглядит следующим образом:


0000

JMP 0200

0001



003C

JMP 0500

003D



0200

Инициализация

0201


0500

Осн. программа

0501


5000

ОЗУ

5001



7001

Порт А

7002

Порт В

7003




ПЗУ, ОЗУ и порты ввода-вывода имеют одно адрестое пространство, поэтому обращение к ним можно производить с помощью одних и тех же инструкций: LDA (загрузка ) и STA (запоминание). При этом данные соответственно загружаются в аккумулятор и копируется из него.

Алгоритм программы инициализации имеет следующий вид:


Основная программа должна начинаться с загрузки в аккумулятор входного отсчета из порта А. Входные данные, получаемые от АЦП, представлены в беззначном коде (минимальное число 00000000(2), максимальное 11111111(2)). Чтобы перейти к рабочему коду процессора – дополнительному, достаточно прибавить к входному число 80(16) = 10000000(2), это эквивалентно отсечению постоянной составляющей. Далее предстоит умножение числа на коэффициенты и суммирование согласно выражению (1). Для этих целей необходимо хранить предыдущие отсчеты в памяти ОЗУ. Возможен следующий вариант организации оперативной (рабочей) памяти:



Отсчет*0.4

*коэффиц.

Адрес(16)

Xi-4

0.1

5000

Xi-3

1

5001

0.65

5002

0.1

5003

S

 
Xi-2

1

5004

0.65

5005

0.1

5006

Xi-1

1

5007

0.65

5008

0.1

5009

Xi

1

500А

0.65

500В

0.1

500С


ОЗУ начинается с адреса 5000(16) , тут и можно разместить рабочую область. Преобразованный отсчет умножается на 0.4, помещается в ячейку с адресом 500А, далее умножается на 0.65 и помещается в ячейку 500В. Эти два умножения выполняются стандартно – сдвигом множителя и сложением.

Коэффициент 0.4 можно представить в 8-разрядной сетке приближенно: 0.0110011 = 0.25+0.125+0.015625+0.0078125 = 0.3984325. Алгоритм умножения на 0.4:


Аналогично производится умножение на коэффициент 0.65, который в двоичном виде можно представить как 0.1010011 = 0.5+0.125+0.015625+0.0078125=0.6484375.

Как видно, алгоритмы схожи. Деление на два может быть реализовано с помощью арифметического сдвига аккумулятора путем сочетания инструкций RLC, RAR, RAR. Такая последовательность команд исключает потерю знака из 7-го разряда, а значит, может применяться для положительных и отрицательных чисел. Округление представляет собой сложение с элементом, оказавшимся после деления вне разрядной сетки. При арифметическом сдвиге этот элемент переходит во флаг переноса С, следовательно, для округления может быть использована команда сложения с переносом ADC E, где Е – заранее обнуленный регистр, либо ADC B, когда непосредственно за округлением в алгоритме следует сложение с регистром В. Чтобы не потерять множитель-отсчет, перед сложением с регистром В его необходимо сохранить, например, в регистр С, после сложения восстановить в аккумулятор и продолжать операции арифметического сдвига.

Умножение на 0.1 можно выполнить более просто, если учесть, что С(b0+b1+b2+b3+b4)=С(2b0+2b1+b2)=1 – это легко проверить. Домножив обе части равенства на величину преобразованного в дополнительный код отсчета, получим:


Xi = 2Cb0Xi + 2Cb1Xi +Cb2Xi = 2*0.4*0.1Xi + 2*0.4*0.65Xi +0.4Xi


Значение 0.4*0.1*Xi является искомым и должно быть записано в ячейку 500С:

Алгоритм умножения на 0.1 должен реализовать данное выражение, причем исходные данные в числителе известны, если преобразованный отсчет Xi перед умножением на 0.4 сохранить в регистре, например, D. Значение 0.4*0.65*Xi на данном этапе находится в аккумуляторе. Умножение его на 2 можно выполнить последовательностью инструкций RAL, RAL, RRC, ANI 11111110(2) , позволяющей сохранить знак числа и исключить нечетность из-за перехода единицы в нулевой разряд аккумулятора из флага переноса.

Теперь рабочая область ОЗУ подготовлена к суммированию в соответствии с выражением (1), как показано на рис. . Суммируется содержимое ячеек с адресами 500С, 5008, 5004, 5002, 5000. Для этого можно использовать инструкцию ADD M, а в качестве указателя на адреса – регистр HL. После суммирования данные готовы к выводу в порт.

Далее содержимое ячеек 5003 – 500С подлежит переносу на три ячейки вверх – таким образом текущий отсчет становится предыдущим, предыдущий – препредыдущим и т. д. Сдвиг удобно осуществлять парами, используя для этого инструкции LHLD и SHLD.

Последней операцией основной программы является сброс входного триггера входа микропроцессора RST 7.5., после чего вход будет воспринимать сигнал прерывания как команду рестарта микропроцессора. Для сброса триггера просто переустанавливается маска прерываний, описанная выше.

Алгоритм работы основной программы ( алгоритм фильтрации ) выглядит следующим образом:

4. Разработка и отладка программного обеспечения

Программа, реализующая приведенные выше алгоритмы, разработана для микропроцессора КР1821ВМ85. При создании программы использовался в качестве компилятора кросс-ассемблер ASM80, позволяющий с помощью директив и меток, располагаемых в тексте программы, уйти от прямых физических адресов. Для пошагового анализа работы программы, выявления и исправления ошибок в реализации алгоритмов использовался отладчик DEB80. Исходный текст программы, а также ее листинг с указанием физических адресов, приведены ниже. Основная часть программы, реализующая алгоритм фильтрации, занимает ячейки ПЗУ с адреса 0500(16) по 0598(16) включительно, то есть 152 байта памяти. На исполнение основной части программы с момента рестарта RST 7.5. уходит 727 машинных тактов при максимально допустимом числе их N=1000, то есть программа, работая, укладывается в интервал дискретизации с запасом по времени » 25 %, что означает выполнение одного из требований к устройству – обработка сигнала в реальном масштабе времени.

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


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

С целью проверки на переполнение был осуществлен ручной и автоматический расчет работы программы. В качестве исходных принимались два критических случая – минимального и максимального постоянных уровней на входе.

В первом случае от АЦП приходил максимальный отсчет FFh, который после перехода к дополнительному коду принимал значение 7Fh. Далее это значение умножалось согласно алгоритму на 0.4, и результат 33h записывался в ячейку 500А. Он же умножался затем на 0.65 ( результат 23h – в ячейку 500В ) и на 0.1 ( результат 03h – в ячейку 500С ). Перед суммированием эти результаты были занесены в ячейки 5000 – 5009 согласно рис. . В итоге суммирование дало результат, равный входному:   03h + 23h + 33h + 23h + 03h = 7Fh – он и был отправлен в порт В.

Во втором случае входной отсчет имел значение 00h, после преобразования 80h, после умножения - CDh, E0h и FАh в ячейках 500А, 500В и 500С соответственно. Эти же значения помещаются в другие рабочие ячейки, соответствующие алгоритму суммирования. Результат суммирования: FAh + E0h + CDh + E0h + FAh = 81h – был отправлен в порт.

И в том, и в другом случае переполнения не произошло.

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

Ранее уже отмечалось, что заданные коэффициенты представлены округленно: 0.4 как 0.3984325, 0.65 как 0.6484375. Нетрудно показать, что умножение на 0.1 фактически является умножением на 0.1015625. Поэтому реальная амплитудно-частотная характеристика фильтра будет отличаться от заданной с помощью передаточной функции. Однако отличия истинных коэффициентов от заданных столь мало, что реальная АЧХ практически не отличается от заданной, показанной на рис. .

Другим существенным фактором искажений является конечное представление самих отсчетов. Так, после умножения на 0.4, а затем на 0.1, существенными остаются только разряды с 5-го по 7-й, причем 7-й – знаковый. Остальные 5 разрядов по сути отбрасываются, то есть возможна ситуация, когда при изменении значения отсчета в пределах 1Fh результат умножения на коэффициент 0.1 остается неизменным. Это также влияет на погрешность при расчете.

6. Описание принципиальной схемы устройства


Принципиальная схема цифрового фильтра поясняет электрические соединения между отдельными элементами, которыми являются:

1)                 цифровые микросхемы комплекта КР1821, обеспечивающие минимальную конфигурацию микропроцессорной системы;

2)                 микросхема аналогово-цифрового преобразователя;

3)                 микросхема устройства выборки и хранения;

4)                 схема формирования управляющих стробов, состоящая из двух RC-цепей и элементов И-НЕ, использующихся в качестве инверторов;

5)                 операционные усилители, служащие в качестве развязывающих элементов и основа схемы смещения и масштабирования;

6)                 четыре разъема:

а) для входного сигнала ( может использоваться стандартный разъем типа JACK );

б) для вывода параллельного кода отсчета;

в) разъем питающих напряжений и заземления;

г) разъем синхронизации с внешним устройством.

7)                 вспомогательные элементы.


Заключение


В данной курсовой работе был спроектирован цифровой сглаживающий фильтр на основе комплекта микросхем КР1821ВМ85. По результатам разработки фильтра можно выработать следующие рекомендации по диагностике неисправностей в процессе эксплуатации.

1)Если данные не выводятся в выходной порт, необходимо проверить наличие сигнала синхронизации выборки на выходе TOUT ( вывод 6 микросхемы DD3 ), а также его форму и период.

2)Если данные есть, но они явно искажены, возможная причина неисправности заключается в рассогласовании работы цепи формирования управляющих стробов, и необходимо проверить наличие и форму сигналов на входах 22 DD5 и 13 DA3, их соответствие диаграммам.

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

Кроме того, следует проверить наличие аналогового сигнала на выходах операционных усилителей и УВХ, соответствие его требованиям ко входному сигналу АЦП.

В остальных случаях причиной неисправности может являться отказ вспомогательных элементов или микросхем.


Список литературы


1. Рафикузаман М. Микропроцессоры и машинное проектирование микропроцессорных систем: В 2-х кн. Кн.1. Пер. с англ.-М.: Мир , 1988.

2. Р. Токхайм. Микропроцессоры. Курс и упражнения. Пер. с англ. В.Н Грасевиче и Л.А. Ильяшенко. М.: Энергоатомиздат, 1988

3. Щелкунов Н.Н., Дианов А.П. Микропроцессорные средства и системы.- М.: Радио и связь,1989.

4. Федорков Б.Г., Телец В.А. Микросхемы ЦАП и АЦП: функционирование, параметры, применение.- М.: Энергоатомиздат, 1990.

5. Микропроцессорный комплект К1810: Структура, программирование, применение: Справочная книга. Под ред. Ю.М.Казаринова.- М.: Высш. шк., 1990.

6. Программирование для микропроцессора К580: Методические указания к лабораторным работам / РГРТА.; Сост.: В.Н.Локтюхин, Ю.А.Сосулин. Рязань, 1996.

7. Перельман Б.П. Отечественные микросхемы и их зарубежные аналоги : справочник. М: 1998


Страницы: 1, 2, 3



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.