Разработка электрической принципиальной схемы цифрового фильтра и отладка рабочей программы на языке ассемблера, которая будет обеспечивать взаимодействие и работоспособность БИС входящих в состав фильтра, для реализации заданных свойств фильтра.
Аннотация к работе
Разработка и описание общего алгоритма функционирования устройства Разработка и обоснование структурной схемы устройстваПеречень графического материала: схема принципиальная электрическая2 Анализ, формализация и декомпозиция задачи Распределение портов и организация взаимодействия с внешними устройствами.
План
4. Содержание пояснительной записки курсового проекта
4.1. Титульный лист
4.2. Задание на курсовой проект
4.3. Содержание
Введение
4.5. Анализ, формализация и декомпозиция задачи
4.6. Разработка и описание общего алгоритма функционирования устройства
4.7. Разработка и обоснование структурной схемы устройства
4.8. Составление и описание принципиальной схемы устройства
4.9. Разработка и отладка программы на языке ассемблера
4.10. Определение быстродействия, импульсной и переходной характеристик устройства
Список литературы
1. Введение
Цифровые методы обработки информации все более широко внедряются во многие области техники связи и управления, в частности, в область фильтрации сигналов.
Это обусловлено тем, что эти методы обеспечивают значительно более высокую точность по сравнению с методами аналоговой обработки, а также тем, что цифровые устройства надежны и удобны в эксплуатации.
Особо важное место, среди различных методов фильтрации занимают линейные методы; устройства, реализующие цифровые методы фильтрации сигналов, получили название цифровых фильтров. На практике цифровые фильтры реализуются либо в виде программы на универсальной цифровой вычислительной машине, либо в виде специализированного вычислительного устройства с электронными схемами ввода и вывода информации.
По сравнению с аналоговыми фильтрами цифровые фильтры обладают рядом важных достоинств. К ним, прежде всего, относятся высокая стабильность и точность, не зависящие от воздействия внешних условий, простота изменения характеристик и возможность использования в качестве адаптивных устройств; при эксплуатации цифровых фильтров не возникают задачи согласования нагрузок, они могут работать в диапазоне сверхнизких частот; они могут обладать линейными фазовыми характеристиками и т.д.
Важно отметить, что цифровые фильтры практически реализуются на интегральных цифровых логических элементах, вследствие чего они могут быть компактными, недорогими и высоконадежными устройствами. Вместе с тем следует отметить, что в отличие от аналоговых цифровым фильтрам присущи некоторые специфические погрешности, обусловленные дискретизацией и квантованием аналоговых сигналов (при выполнении арифметических операций в вычислительных устройствах).[1]
В задании на курсовой проект даны частота дискретизации, разностное уравнение и коэффициенты фильтра, что в свою очередь определят характеристики фильтра.
2) Разработать рабочую программу на языке ассемблера, которая будет обеспечивать взаимодействие и работоспособность БИС входящих в состав фильтра, для реализации заданных свойств фильтра;
3) Провести заключительный анализ характеристик спроектированного фильтра, и если они не удовлетворяют заданным внести корректировки в рабочую программу.
2. Анализ, формализация и декомпозиция задачи
Формализация задачи при выполнении всех этапов проектирования предполагает представление выполнения функций фильтра на языке логических и математических связей, в виде логических, математических моделей и т.п. Задачей формализации является согласование структурное, логическое, алгоритмическое, электрическое всех аппаратных и программных модулей устройства, обеспечивающее разработку работоспособной электрической схемы (аппаратная часть) и работоспособной программы фильтра, согласованной с аппаратной частью [2].
2.1. Распределение портов и организация взаимодействия с внешними устройствами
В техническом задании на курсовой проект заданы базовый микроконтроллер, АЦП и формат входных и выходных сигналов. Микроконтроллер КР1830ВЕ51 представлен на рис. 1.
рис. 1[3]*
Для ввода и вывода данных будем использовать два двунаправленных порта: P2 - для ввода данных, P0 - для вывода. Необходимо организовать взаимодействие микроконтроллера и внешнего устройства таким образом, что бы готовые данные поступали с заданной частотой дискретизации. Нулевой бит порта P3 (P3.0) будем использовать в качестве линии запуска внешнего устройства. По этой линии на вывод внешнего устройства будет поступать импульс нулевого или высокого (в зависимости от внешнего устройства) уровня. Примем в программе импульс запуска - низкого уровня. Сигнал о готовности входного отсчета будет поступать на вывод P3.2 микроконтроллера. В программе будем считать, что данные готовы, если данный бит равен 0. Примем, что входное внешнее устройство имеет третье состояние выходных портов, тогда для того, что бы входные отсчеты поступили на порт микроконтроллера будем подавать импульс низкого уровня на соответствующий вход внешнего устройства. Выделим для этого линию P3.1. Запуск внешнего устройства целесообразно делать в начале программы, что позволит сэкономить время необходимое для ожидания готовности отсчета. Другими словами внешнее устройство параллельно с выполнением программы подготовит входные отсчеты еще до момента требующего их ввода. Или же, в случае если внешнее устройство не успеет подготовить отсчеты к тому времени, когда в программе предусмотрен их ввод; мы сэкономим время равное времени выполнения программы до этого момента.
В отличие от ввода отсчетов, их вывод осуществляется сразу «по готовности». Заданный в теоретическом задании ЦАП работает в состоянии постоянной готовности. И что бы ЦАП не считывала «неправильные» данные с выходного порта (это связано с тем, что выходной отсчет приходит неравномерно на каждый бит порта), будем формировать импульс считывания поданный на соответствующий вход ЦАП. Выделим для этого линию P1.0.
Для промежуточного хранения данных в микроконтроллере предусмотрено 4 регистровых банка RB0…RB3 по восемь регистров в каждом (R0…R7) (рис. 2).
рис. 2[3]
Регистровые банки переключаются полем RS слова состояния программы PWS. [3]
Выберем для основной программы 1 регистровый банк (RB1). Для рабочей программы определим третий регистровый банк (RB3).
2.2 Выбор режима таймера-счетчика
Для настройки таймера счетчика T/C0 необходимо определить интервал дескретизации: ТД=1/FД=400мкс и количество машинных циклов, укладывающихся на интервале дискретизации: N= ТД/ТМЦ=400.
Следовательно режим с автоматической перезагрузкой (второй режим) не подойдет, т.к. в нем 8-ми разрядная сетка (максимальное количество машинных циклов 256). Поэтому выберем первый режим таймера-счетчика, который использует 16-ти разрядный счетный регистр. При этом перезагрузку 16-азрядного счетчика необходимо будет делать программно перед каждым циклом вычисления.
Запишем в память микроконтроллера число -400(10)=FE70(16)
Time0L <= 70h -Младший байт числа -400 в ДК
Time0H <= FEH -Старший байт числа -400 в ДК
2.3 Масштабирование коэффициентов и упрощение разностного уравнения
Для проектирования фильтра в ТЗ дано его разностное уравнение и соответствующие коэффициенты. Так как ячейка памяти может содержать 8ми разрядно двоичное число, причем старший разряд - знаковый, то необходимо провести округление коэффициентов фильтра до семи разрядов.
При помощи программы Matlab выберем способ округления. Для этого построим АЧХ фильтров при различном округлении (рис. 3) и сравним с АЧХ заданного фильтра. На основе сравнения выберем тот способ, который лучше удовлетворяет ТЗ и виду фильтра (ВЧ).
Возьмем способ округления - отбрасыванием дробной части ( зеленый график) (рис. 4). рис. 3
Т.к. заданные коэффициенты симметричны, то разностное уравнение можно преобразовать к следующему виду:
Такое преобразование разностного уравнения позволит сократить программу вычисления отсчета на 7 циклов.
Необходимо учесть, что в некоторых случая сумма двух отсчетов может переполнить 8ми разрядную сетку. Поэтому примем, что входные отсчеты по модулю меньше 0.5(10). Тогда сумма этих отсчетов не будет приводить к переполнению разрядной сетки.
2.4 Разработка и описание общего алгоритма функционирования устройства
Представим алгоритм функционирования фильтра следующим образом:
Аппаратно- реализуемые операции Программно- реализуемые операции вкл. питания сброс при включении питания
Прерывание от TC/0
Запрос данных
Сигнал о готовности данных
Передача данных
Импульс считывания
Вычисленный отсчет
Выходной аналоговый сигнал
При включении фильтра происходит формирование импульса сброса, который обнуляет счетчик команд и приводит фильтр к исходному состоянию.
При инициализации настраивается таймер счетчик, загружается PSW основной программы, очищаются память выделенная под остчеты, устанавливается вершина стека. Необходимо, чтобы программа инициализации начиналась с нулевого адреса (0000h).
Основная программа представляет собой бесконечный цикл
После идет программа вычисления отсчета. В которой предусмотрено: ввод данных (xn), их обработка, в соответствии с разностным уравнением, и вывод данных (yn).
2.5 Электрическая принципиальная схема фильтра.
По линии 1 происходит запуск внешнего устройства. Линия 2 служит для сообщения от внешнего устройства о готовности входных данных. По линии 4 подается импульс, который заставляет внешнее устройство подать готовые данные на вход микроконтроллера.
Между микроконтроллером и ЦАП существует 2 линии связи: линия номер 5 - служит для выдачи готовых данных с МК, а по линии 6 подается импульс, инициирующий чтение готовых данных ЦАП.
По линии 7 преобразованный в аналоговый сигнал поступает на «Преобразователь выходного сигнала», который преобразует сигнал к заданному виду.
В состав схемы, в соответствии с теоретическим заданием, входит микроконтроллер КР1830BE51 и ЦАП AD9708. Подсоединим к микроконтроллеру кварцевый резонатор с частотой 12 МГЦ, для задания тактовой частоты микроконтроллера. Для его сброса, к входу RST подсоединим RC-цепочку, которая при замыкании ключа будет формировать импульс сброса микропроцессора. Поставим между микроконтроллером и входным устройством буфер К555АП6, служащий для развязки данных, умощнения входного сигнала и повышения помехоустойчивости.
На выходе ЦАП будем использовать дифференциальное включение выходов ЦАП, при котором напряжение UДИФ = UOUT А - UOUT В изменяется в пределах от 0,5 В до -0,5 В. Что бы преобразовать выходное напряжение к заданному виду ((0… 2,5)) необходимо подать напряжение смещения 1.75В и усилить выходной сигнал в 2.5 раза. Для этого используем ДУ AD8072.
Для повышения помехоустойчивости между входным внешним устройством и МК в линии ПУСК, ЧТЕНИЕ, ГОТОВ поставим триггеры Шмитта.
3. Разработка и отладка программы на языке ассемблера
Первым делом необходимо разработать секцию инициализации, которая обязательно должна начинаться с нулевого адреса. В секции инициализации предусмотрим следующие макросы: INITSTECK - инициализация стека, запись вершины стека
INITINT - инициализация прерываний, разрешение всех прерываний и прерываний от таймера счетчика, в частности.
INITTIMER - инициализация таймера, выбор первого таймера/счетчика, выбор первого режима работы, запрет внешнего управления. Выбираем функцию таймера.
INITCOEFF - инициализация коэффициентов, запись констант значений коэффициентов в память (при этом коэффициенты располагаются в памяти последовательно)
INITPSW - инициализация PSW основной программы и программы вычисления отсчетов. В память программы записываются соответствующие значения PSW.
CLEARXN - инициализация отсчетов, очистка памяти выделенной под отсчеты.
RELOADTIMER - инициализация таймера, остановка таймера, загрузка значений младшего и старшего байтов интервала дискредитации.
После инициализации идет основная программа.
MAINPROGRAMM - бесконечный цикл основной программы. Выход по прерыванию от TC0.
Дальше идет секция исполнения, в которой происходит обработка входных данных и вывод их на выходной порт.
RUNACP - макрос запуска внешнего устройства. По линии P3.0 на соответствующий контакт устройства подается импульс нулевого уровня.
RELOADTIMER - то же что и в секции инициализации
SAVEPSW - сохранение PSW основной программы и загрузка PSW рабочей программы.
CHECKACP - проверка готовности данных от внешнего устройства. Если по линии P3.2 установлен 0, то данные готовы.
INPUTDATA - Ввод входных данных. Т.к. выводы внешнего входного устройство имеют третье состояние, то для того что бы данные попали на порт МК, необходимо по линии P3.1 сформировать импульс низкого уровня.
PREPAREDATA - макрос, необходимый для упрощения разностного уравнения. Здесь происходит суммирование отсчетов стоящих у симметричных коэффициентов и запись суммы последовательно в память.
COMPUTESAMPLE - макрос вычисления отсчета. Содержит в себе макрос очистки двухбайтовой суммы и макрос суммирования с ее накоплением.
SHIFTL - сдвиг результата на 1 разряд влево.
OUTPUTDATA - макрос вывода данных. Здесь результат переводится из дополнительного кода в прямой и затем старший байт отправляется на выходной порт. Формируется импульс по линии P1.0, для фиксации выходного отсчета на ЦАП.
PREPARECYCL - последовательный сдвиг отсчетов в памяти.
RELOADPSW - запись PSW рабочий программы и восстановление PSW основной.
;---------------------------------------------------------------------------------------------------------------;Преобразование произведения в дополнительный код
;---------------------------------------------------------------------------------------------------------------;Умножение C накоплением двух чивел, адреса которых находятся в регистрах R0 и R1
;---------------------------------------------------------------------------------------------------------------;Преобразование данных из дополнительного в прямой код
;---------------------------------------------------------------------------------------------------------------;Сохранение PSW основной программы и загрузка PSW программы вычисления отчета
;---------------------------------------------------------------------------------------------------------------;Проверка готовности данных входного внешнего устройства
;---------------------------------------------------------------------------------------------------------------;Сдвиг результата вычисления на 1 разряд в лево
;---------------------------------------------------------------------------------------------------------------;Перевод двухбайтового числа (результат вычисления отсчета) из дополнительного в прямой код
По полученным результатам можно сказать, что программа фильтра работает правильно. Однако при относительно больших значениях, происходит переполнение. Из этого следует вывод, что фильтр будет функционировать только при малых входных отсчетах. Или же следует предусмотреть защиту от переполнения, однако это не входит в задачу курсового проекта.
Заключение
В данном курсовом проекте мной был разработан цифровой, нерекурсивный фильтр высоких частот. В процессе выполнения курсового проекта были выполнены все пункты теоретического задания.
2. Щелкунов Н.Н., Дианов А.П. Микропроцессорные средства и системы. М.: Радио и связь, 1989
3. Соколов Ю.П. Микроконтроллеры семейства MSC-51: Архитектура, программирование, отладка: Учебное пособие / Рязанский государственная радиотехническая академия. Рязань, 2007
4. Сальников Н.И. Цифровые устройства и микропроцессоры: Методические указания к курсовому проекту / Рязанский государственные радиотехнический университет. Рязань, 2007