Функционирование рекурсивного цифрового фильтра нижних частот. Определение его быстродействия, импульсной и переходной характеристик. Составление и описание структурной и принципиальной схемы устройства. Разработка и отладка программы на языке ассемблера.
Заданная нам частота дискретизации 2000 Гц, следовательно, каждые 500 мкс от таймера должно поступать прерывание и начинать свою работу подпрограмма обработки отсчета. Построим АЧХ фильтра при различных способах округления коэффициентов. цифровой фильтр частота Он содержит также все сигналы и сообщения, необходимые для взаимосвязи аппаратно-реализуемых и программно-реализуемых операций (сигналы и сообщения, которые обеспечивают взаимодействие аппаратной части фильтра и программы). При инициализации: разрешаются прерывания от таймера 0; в указатель стека SP записывается начальный адрес, с которого начинается стек; таймер настраивается на период переполнения, равный ТД в режиме 1; таймер запускается для формирования непрерывной последовательности импульсов с частотой дискретизации FД, которые используются далее для взятия отсчетов входного сигнала и запуска АЦП (аппаратного узла). Последующие операции (ввод, вывод, преобразование кодов, оперативные обращения к памяти, арифметические преобразования) в каждом цикле работы фильтра выполняются под управлением рабочей программы фильтра.В данной курсовой работе была построена схема цифрового устройства и разработана программа, обеспечивающая работу данного устройства как цифрового фильтра нижних частотЧтение цифрового кода (результата преобразования отсчета входного напряжения) из AD7892 можно осуществить двумя способами: использовать 12-разрядный параллельный интерфейс (чтение параллельного кода) или трехпроводный последовательный интерфейс (чтение последовательного кода). Подается напряжение, подлежащее преобразованию в код. Предназначен для задания входного диапазона АЦП (диапазона изменения напряжения по входу V IN1). Последовательные данные выводятся по спаду 16 импульсов на входе DB4 / SCLK, поступающих после подачи 0 на вход DB3 / . Вход V IN2 должен быть соединен с входом V IN1, (V IN1 = V IN2), опорное напряжение REF IN = 2,5 В, полный перепад входного напряжения V FS = 10 В, шаг квантования входного сигнала по напряжению 1МЗР = V FS / 2 12 = 10 В / 4096 = 2,44 МВ.
План
Содержание
Введение
Анализ, формализация и декомпозиция задачи
Разработка и описание общего алгоритма
Функционирования устройства
Разработка и обоснование структурной схемы устройства
Составление и описание принципиальной схемы устройства
Разработка и отладка программы на языке ассемблера
Определение быстродействия, импульсной и переходной характеристик устройства
Заключение
Список использованных источников
Приложение
Введение
Цифровая обработка сигналов, т.е. обработка сигналов с помощью средств электронной вычислительной техники, стала известна около 35 лет назад. Электронные вычислительные машины тогда были дороги и несовершенны и поэтому их применяли лишь в сложных радиокомплексах, например, при расчете координат и траекторий объектов в радионавигационных системах слежения за космическими объектами, при расчете координат цели в радиолокационных станциях.
В последующие годы благодаря широкому применению транзисторов а затем и развитию микроэлектроники ЭВМ стали совершеннее, дешевле, а главное, компактнее. Появилась возможность использования вычислительной техники в сравнительно простой аппаратуре, например, в специальных радиоприемниках, системах фазовой подстройки частоты, системах телеметрии и т.д. С помощью цифровых устройств можно реализовать очень сложные алгоритмы обработки сигналов, которые трудно, а часто даже невозможно реализовать, используя обычную аналоговую технику. С помощью цифровых методов можно реализовать любой алгоритм обработки сигнала, который может быть описан совокупностью арифметических и логических операций. Точность обработки сигнала цифровыми фильтрами определяется точностью выполняемых расчетов. Она может быть несоизмерима выше точности обработки сигнала в аналоговых фильтрах. Одним из источников погрешности аналоговых фильтров является нестабильность их параметров, вызываемая колебаниями температуры, старением, дрейфом нуля, изменением питающих напряжений и т.д. В цифровых фильтрах эти неприятные эффекты отсутствуют. При разработке цифровых фильтров не возникает задача согласования нагрузок. Недостатком цифровых фильтров является их большая сложность по сравнению с аналоговыми, более высокая стоимость и не очень высокое быстродействие. В последние годы в связи с появлением микропроцессоров цифровая обработка сигналов получила еще более широкое распространение. Для цифровых фильтров стало возможным построение разнообразных частотных характеристик, путем их аналитической задачи. При этом реализуемы и фильтры традиционных типов: нижних частот, верхних частот, полосовые и режекторные.
Анализ, формализация и декомпозиция задачи
В данном курсовом проекте необходимо реализовать рекурсивный цифровой фильтр нижних частот. Основой его служит микроконтроллер КР1830ВЕ51.
Микросхема имеет встроенную память программ (ПЗУ), на корпусе имеется 40 выводов. Имеет 4 двунаправленных восьмиразрядных порта с именами Р0, Р1,Р2,Р3. В качестве порта ввода данных будем использовать порт Р3. Результаты будут выводиться на порт Р1. Порты Р0 и Р2 остаются свободными. К нулевому биту порта Р2 подключим линию запуска АЦП. К первому биту порта Р2 подключим линию ответа АЦП о готовности данных. МК содержит 4 банка данных: 0,1,2,3. Для основной программы возьмем 3 банк. Что бы установить номер нужного нам банка запишем в ячейку памяти D0 (PSW: регистр состояния процессора) число 18h (в шестнадцатиричной форме). Для рабочей программы возьмем 1 банк данных, что бы установить этот банк необходимо в ячейку D0 записать число 08h. В МК встроено 2 восьми разрядных таймера\счетчика. Нам требуется режим таймера. Он может работать в нескольких режимах. Нам наиболее всего подошел бы режим 2 с перезагрузкой, но возникает проблема. Заданная нам частота дискретизации 2000 Гц, следовательно, каждые 500 мкс от таймера должно поступать прерывание и начинать свою работу подпрограмма обработки отсчета. Если перевести число -500 в дополнительный код получим 16-ти разрядное число. Использовать 2 режим мы не можем, так как в этом режиме 8-ми разрядная сетка. Тогда берем 1 режим с 16-ти разрядной сеткой и перед каждым вычислением будем перезагружать таймер.
АЦП заданный в проекте AD7892. Он представляет собой 12-ти разрядный АЦП, работающий от одного источника питания 5 В и реализующий алгоритм последовательных приближений с временем преобразования 1,3 мкс. На кристалле расположены также устройство выборки-хранения (УВХ), источник опорного напряжения 2,5 В (ИОН) и многофункциональный цифровой интерфейс. Для запуска АЦП необходимо подать на логический вход CONVST 1. Переход из 0 в 1переводит УВХ в режим хранения и запускает преобразование. После окончания преобразования на логическом входе EOS 1 переходит в 0, код готов для чтения. Выходной код устройства дополнительный.
Мы должны синтезировать фильтр по его разностному уравнению, так как фильтр рекурсивный то уравнение содержит 2-ве составляющие. Вторая составляющая вычитается из первой, следовательно нам необходимо реализовать 2-ва цикла вычислений. Это крайне не удобно, поэтому внесем знак минус в коэффициенты 2-ой части уравнения.
Сдвинем все коэффициенты на 6 разрядов влево, предварительно представив их в двоичном коде, в результате получим целочисленные значения.
Построим АЧХ фильтра при различных способах округления коэффициентов.
цифровой фильтр частота
Покажем более подробно верхнюю часть графиков.
Цвета выводимых графиков: H1 - синий без округления;
H2 - зеленый fix отброшена дробная часть;
H3 - красный round округление до ближайшего целого;
H4 - голубой floorокругление до ближайшего меньшего целого;
H5 - сиреневый ceilокругление до ближайшего большего целого;
Нам более всего по форме характеристики подходит синий график.
Результаты преобразования коэффициентов выглядят следующим образом: Сумма модулей исходных коэффициентов числителя B1: 0.58877671942898
Внесем знак минус в целочисленные коэффициенты знаменателя A. Получим: -64 62 -55 19
Переведем значения в шестнадцатиричный прямой код:
Разработка и описание общего алгоритма функционирования устройства
Общий алгоритм функционирования фильтра строится на основе выводов и определений, сделанных при анализе задачи, и включает в себя все функции устройства, реализуемые аппаратно и реализуемые программно. Он содержит также все сигналы и сообщения, необходимые для взаимосвязи аппаратно-реализуемых и программно-реализуемых операций (сигналы и сообщения, которые обеспечивают взаимодействие аппаратной части фильтра и программы).
Общий алгоритм функционирования фильтра приведен на рис.2.
Работа фильтра начинается с подачи питания на схему сброса. Импульс, сформированный схемой сброса (аппаратный узел), обнуляет счетчик команд МП и инициирует формирование импульса сброса RESET для установки МП-системы в исходное состояние.
Таким образом запускается программа инициализации МП-системы, которая должна начинаться с нулевого адреса. При инициализации: разрешаются прерывания от таймера 0; в указатель стека SP записывается начальный адрес, с которого начинается стек; таймер настраивается на период переполнения, равный ТД в режиме 1; таймер запускается для формирования непрерывной последовательности импульсов с частотой дискретизации FД, которые используются далее для взятия отсчетов входного сигнала и запуска АЦП (аппаратного узла).
Программа инициализации завершается основной программой МК, которая совершает замкнутый цикл до возникновения прерывания таймера. Последующие операции (ввод, вывод, преобразование кодов, оперативные обращения к памяти, арифметические преобразования) в каждом цикле работы фильтра выполняются под управлением рабочей программы фильтра.
Рис.2
Разработка и обоснование структурной схемы устройства
Для реализации фильтра из аппаратных средств мы имеем: МК вида КР1830ВЕ51 и АЦП вида AD7892. Данный вид АЦП имеет несколько модификаций различающихся по диапазонам изменения напряжения на входе, по заданию на входе мы имеем аналоговый сигнал (-5.. 5)В, следовательно, мы можем воспользоваться модификацией AD7892AN-1 входной диапазон, которой (-5… 5) В и непосредственно, без дополнительных согласований, подать сигнал на АЦП. Логический вход CONVST подключим к нулевому биту порта Р0 МК. Логический вход EOC подключим к нулевому биту порта Р2. Ввод отсчетов с АЦП будем осуществлять на порт Р3, вывод расчетных данных через порт Р1.
Схема представлена в файле Схема.spb.
Составление и описание принципиальной схемы устройства
Опираясь на выводы сделанные в пункте анализ, формализация и декомпозиция задачи, а так же при составлении структурной схемы устройства можем составить принципиальную схему.
Для обеспечения работы микропроцессора подключим его к кварцевому резонатору с частотой 12 МГЦ. Сигнал сброса МК сформируем с помощью RC- цепочки. В качестве источника питания схемы возьмем источник постоянного напряжения номиналом 5В.
Разработка и отладка программы на языке ассемблер
После поступления импульса сброса МК находится в так называемом исходном состоянии, что бы привести МК в рабочее состояние необходимо провести инициализацию. В блоке инициализации нам нужно : 1. Задать режим таймера
2. Разрешить прерывания вообще и от таймера в частности
3. Записать в память значения коэффициентов
4. Очистить ячейки памяти для отсчетов
5. Установить PSW основной и рабочей программ
6. Установить начало стека
7. Запустить таймер
8. Перейти в основную программу
Когда от таймера придет прерывание свою работу начнет рабочая программа вычисления отсчета по разностному уравнению фильтра. Что бы вычислить отсчет нам необходимо: 1. Сохранить PSW основной программы и установить рабочей
2. Запустить АЦП
3. Перезагрузить таймер
4. Принять от АЦП сигнал о готовности отсчета
5. Считать значение отсчета из порта ввода
6. Произвести необходимые вычисления
7. Сдвинуть результат на 2 разряда влево, что бы компенсировать преобразование коэффициентов в целочисленные
8. Переслать результат в порт вывода
9. Сдвинуть отсчеты в памяти
10. Сохранить PSW рабочей программы и установить основной
11. Выйти из программы обслуживания прерываний
При вычислениях отсчета нам нужно сделать: 1. Очистить 2-х байтовый сумматор
2. Установить начальный адрес операндов
3. Установить счетчик циклов
4. Произвести умножение и сложение
5. Увеличить адрес операндов на 1
6. Уменьшить счетчик циклов на1
7. Если счетчик не равен 0, перейти к блоку умножения и сложения
8. Если счетчик равен 0, выйти из макроса
Для того чтобы произвести операции умножения и сложения необходимо: 1. Переслать множители в регистры А и В
2. Определить знак произведения
3. Преобразовать в беззнаковые числа
4. Умножить содержимое регистров А и В
5. Преобразовать произведение в дополнительный код
6. Сложить с содержимым 2-х байтового сумматора
На основании сделанных выводов можем составить блок-схему программы.
Основной Алгоритм рабочей
Алгоритм программы
Вычисление Умножение и сложение отсчета.
Текст программы
*Цифровой фильтр*
*Курсовой проект по дисциплине "Цифровые устройства и микропроцессоры"*
*Код Ic1n3_24*
*Выполнил студентка группы 410 Цветкова Юлия Борисовна*
SPACES ON; Разрешить пробелы между операндами
FILLCHAR 00h;Заполнить промежутки между секциями символами 00
************ ОПРЕДЕЛЕНИЕ КОНСТАНТ ************
Time0:EQUFE70h;установка 400 мкс (FE70h = -400 в дополнительном коде)
Time0L:EQU70h;Младший байт числа FE70 в ДК
Time0H:EQUFEH;Старший байт числа FE70 в ДК
DATAA2:EQU3Eh;Значения коэффициентов
DATAA3:EQUB7h
DATAA4:EQU13h
DATAB1:EQU05h
DATAB2:EQU0Eh
DATAB3:EQU0Eh
DATAB4:EQU05h
Order:EQU07h;Число циклов суммирования (общее число слагаемых)
Shift:EQU02h;Число циклов сдвига
************ НЕПЕРЕМЕЩАЕМЫЕ РЕГИСТРЫ ************
SP:REG81h;Присвоить имя SP указателю стека (ячейка 81h)
IE:REG A8h;Присвоить имя IE регистру разрешения прерываний (ячейка A8h)
TCON:REG88h;Присвоить имя TCON регистру управления таймерами/счетчиками
TMOD:REG89h;Присвоить имя TMOD регистру режима таймеров/счетчиков
PSW:REGD0h;Присвить имя PSW регистру состояния МК
************ НЕПЕРЕМЕЩАЕМЫЕ БИТЫ ************
SIGNA:REGE0h.7;Присвоить имя SIGNA (знак регистра А) старшему биту аккумулятора
SIGNB:REGF0h.7;Присвоить имя SIGNB (знак регистра B) старшему биту регистра В
EA:REGIE.7;Присвоить имя EA биту 7 регистра IE
ITO:REGTCON.0;Присвоить имя IT0 биту 0 регистра TCON
IEO:REGTCON.1;Присвоить имя IE0 биту 1 регистра TCON
TR0:REGTCON.4;Присвоить имя TR0 биту 3 регистра TCON
START:REGP0.0;Присвоить имя START биту 0 порта P0
FIN:REGP2.0;Присвоить имя FIN биту 0 порта P2
P0.1:REGP0.1;Присвоить имя P0.1 биту 1 порта P0
************ ПЕРЕМЕЩАЕМЫЕ РЕГИСТРЫ ************
RSECT;Секция байт, располагается в DSEG b1:DS1;Коэффициенты числителя b2:DS1;
Оценка быстродействия, определение импульсной и переходной характеристик
Для определения быстродействия устройства, которое эквивалентно времени выполнения рабочей программы, установим точку останова в начале программы прерывания и запустим ее на выполнение при положительном и отрицательном отсчетах, предварительно сбросив число машинных циклов.
При подачи положительного отсчета количество циклов равно 306. При отрицательном 316. Различие в значениях объясняется тем, что при отчетах разных знаков программа идет по различным путям.
Время выполнения рабочей программы определим как произведение числа машинных циклов на длительность цикла, в нашем случае 1мкс.
Получаем: При положительном - 306 мкс
При отрицательном - 316мкс
Так как запуск АЦП мы производим в самой программе прерывания, то время преобразования отсчета внутри АЦП можем не учитывать. В пункте анализ, формализация и декомпозиция задачи мы определили период дискретизации. Он равен 500 мкс. Время вычисления отсчета укладывается в этот промежуток, следовательно, программа составлена в этом плане правильно.
Импульсная характеристика построенная с помощью программы MATLAB выглядит следующим образом:
Значения отсчетов импульсной характеристики определенные с помощью программы фильтра выглядят следующим образом: g(t) MATLAB Отсчеты, h Отсчеты, d
0.078 09EC 0.078
0.3100 2480 0.2874
0.4676 36EC 0.43245
0.2866 21F8 0.26747
-0.0369 8440 -0.03346
-0.15062 91CC -0.14013
-0.03353 84C4 -0.03752
0.08656 098C 0.07517
0.07031 071C 0.05597
-0.0157 83DC -0.030388
Они практически совпадают с результатами программы MATLAB.
Переходная характеристика построенная с помощью программы MATLAB выглядит следующим образом:
Значения отсчетов переходной характеристики определенные с помощью программы фильтра выглядят следующим образом: h(t) MATLAB Отсчеты, h Отсчеты, d
0.0781 04EC 0.07812
0.3881 1694 0.35838
0.8557 325C 0.79935
1.1424 4420 1.08134
1.1054 42D8 1.06101
0.9548 39C0 0.91666
0.9212 3818 0.89037
1.0078 3E44 0.98834
1.0781 4244 1.05183
1.0624 40B0 1.02678
Они практически совпадают с результатами программы MATLAB.
По совпадениям импульсной и переходной характеристики можно сказать что фильтр запрограммирован верно.
Оценим устойчивость фильтра: По карте нулей и полюсов полученной также в программе MATLAB можно сказать, что фильтр является устойчивым, так как все полюса лежат в пределах единичной окружности.
Вывод
В данной курсовой работе была построена схема цифрового устройства и разработана программа, обеспечивающая работу данного устройства как цифрового фильтра нижних частот
Список литературы
1. Рафикузаман М. Микропроцессоры и машинное проектирование микропроцессорных систем: В 2-х кн. Пер. С англ. - М.: Мир, 1988.
2. Щелкунов Н.Н., Дианов А.П. Микропроцессорные средства и системы.- М.: Радио и связь,1989.
3. Федорков Б.Г., Телец В.А. Микросхемы ЦАП и АЦП: функционирование, параметры, применение.- М.: Энергоатомиздат, 1990.
4. Цифровые устройства: методические указания к курсовому проекту по дисциплине «Цифровые устройства и микропроцессоры» / РГРТА; составил Н. И. Сальников, Рязань 20002.
5. Перельман Б.П. Отечественные микросхемы и их зарубежные аналоги: справочник. М: 1998
6. Микропроцессорные комплекты интегральных схем: состав и структура. Справочник / Под ред. А.А. Васенкова, В.А. Шахнова. - М.: Радио и связь, 1982.