Проектирование цифрового фильтра

Особенности применения микропроцессоров в радиотехнических устройствах и построения аппаратной части фильтра. Этапы разработки принципиальной электрической схемы фильтра. Анализ функциональной схемы цифрового фильтра, основные настройки микросхемы AD9708.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид курсовая работа
Язык русский
Дата добавления 13.06.2012
Размер файла 520,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Постановка задачи

микропроцессор радиотехника электрический микросхема

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

В ТЗ на КП частота дискретизации, разрядность данных, типы основных БИС заданы. Заданы также разностное уравнение и значения коэффициентов, которые определяют частотные характеристики фильтра.

Задачей проекта является:

ь разработка принципиальной электрической схемы фильтра;

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

ь анализ характеристик спроектированного фильтра и влияние на них конечной разрядности представления данных и коэффициентов.

Проектирование цифрового фильтра по заданию включает следующие этапы:

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

2) Анализ состояния аппаратной части и программы после включения питания, по сигналу общего сброса;

3) Выполнение настроек в аппаратной части и программе для правильного (предусмотренного поставленной задачей) функционирования фильтра;

4) Анализ работы фильтра в рабочем цикле, конкретизация и детализация функционирования аппаратных и программных модулей;

5) Разработка общего алгоритма функционирования фильтра;

6) Разработка рабочей программы фильтра;

7) Расчёт быстродействия фильтра.

Формализация задачи (определение функций аппаратной части и программы и способов их реализации)

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

Рис.1 Функциональная схема цифрового фильтра

В качестве БИС АЦП выбрана модификация AD7892AN - 1, для которой диапазон изменения напряжения на входе АЦП равен (-5...+5) В, что соответствует техническому заданию и позволяет обойтись без согласующего усилителя на входе АЦП. Для чтения результата преобразования входного напряжения выбран параллельный способ (параллельный интерфейс), как более быстрый и простой (для программной реализации). Поэтому на вывод MODE подано напряжение +5 В. Напряжение +5 В на выводе STANDBY задает стандартный (нормальный) режим энергопотребления.

Для работы АЦП выбран внутренний источник опорного напряжения, поэтому вывод REF O/I оставлен свободным. Вход Vin2 при диапазоне входного напряжения -5...+5 В может быть заземлён или остаться неподключенным (внутри БИС он никуда не подсоединен). Напряжение UВХ подаётся непосредственно на вход Vin1 , поскольку АЦП содержит внутреннюю схему выборки хранения (СВХ). Реализация алгоритма последовательных приближений осуществляется под управлением внутреннего тактового генератора, поэтому внешние тактовые импульсы для работы АЦП не требуются.

Пуск АЦП выполняется путём подачи импульса нулевого уровня на вывод CONVST по сигнальной линии START из МП-системы, поскольку БИС AD7892AN-1 всегда выбрана (вывод CS - заземлен). Импульсы с частотой дискретизации FД = 12кГц для запуска АЦП должны формироваться в МП-системе. Определим для этой функции внутренний аппаратный узел МК - таймер/счётчик Т/С0. Для вывода импульсов запуска АЦП из МК назначим вывод Р1.4 порта Р1 БИС КР1830ВЕ31 (по линии START сигнальной шины В рис.1)

Числовые значения отсчётов (двоичные коды), получаемые путем преобразования входного напряжения, в режиме параллельного интерфейса поступают с частотой дискретизации FД на выводы DB0...DB11. Поскольку, в соответствии с ТЗ, разрядность данных равна 8, параллельная шина для чтения данных XD0... XD7 подключена к старшим выводам чтения 12-разрядного кода отсчета - DB4...DB11. Младшие разряды DB0...DB3 - теряются.

Готовность кода для отсчёта входного напряжения обозначает импульс нулевого уровня на выводе ЕОС, вырабатываемый АЦП после каждого цикла преобразования. Импульсы ЕОС , следующие с частотой дискретизации FД = 12кГц, по сигнальной линии FIN поступают в МП-систему для инициирования операций чтения кода из АЦП с такой же частотой.

Для ввода кода текущего входного отсчёта (xn) и запуска цикла вычисления кода текущего выходного отсчёта (уn) определим режим прерываний МК по линии запроса внешних прерываний INT0.

В цикле чтения данных из АЦП процессор вырабатывает управляющий строб для копирования кода отсчёта xn. Управляющий строб по сигнальной линии RD поступает на вывод RD БИС AD7892AN - 1. В соответствии с требованием ТЗ определим, что код отсчёта xn (XDO... XD7) копируется в аккумулятор процессора через порт РА БИС КР1821РУ55 - по линиям шины E, в режиме простого ввода без квитирования.

Вывод (копирование) кода выходного отсчета yn (YD7… YD0) во входной буферный регистр ЦАП определим через порт PВ БИС КР1821РУ55, в режиме простого вывода без квитирования. Запись кода yn в регистр ЦАП выполняется при поступлении нарастающего фронта управляющего строба WR на вход синхронизации CLOCK. Управляющий строб записи вырабатывается процессором в каждом машинном цикле записи данных во внешнее устройство.

Настройки выводов БИС АD9708

Вывод SLEEP заземлён - работа в нормальном режиме энергопотребления. Вывод REFLO заземлён, вывод REFIO через конденсатор С=0.1 мкФ соединен с аналоговой землей -используется внутренний источник опорного напряжения +1,2 В для получения весовых токов ЦАП. Резистор Rset на входе FS ADJ задает максимальное значение выходных токов ЦАП. Наличие конденсаторов, подключенных к входам СОМР1 и СОМР2, обусловлено требованиями подавления внутренних шумов и надежной работы переключателей тока в ЦАП.

Преобразование выходных токов IoutA и IoutB в выходные напряжения в униполярном режиме работы выхода осуществляется с помощью резисторов нагрузки Rнa и Rнв. Знакопеременное выходное напряжение Uвых=-5В…+5В получается с помощью операционного усилителя с дифференциальным включением входов.

Исходное состояние Фильтра после включения питания

При включении питания в схеме МП-системы вырабатывается импульс сброса RST для МК. По сигналу RST = 1 выполняются следующие действия:

1) программный счетчик и все управляющие регистры МК, кроме PCON, IE, IP - устанавливаются в нулевое состояние;

2) в управляющих регистрах PCON, IE, IP - резервные биты принимают случайные значения, все остальные биты сбрасываются в 0;

3) в указателе стека устанавливается адрес SP = 70 (вершина стека);

4) запрещаются прерывания от всех источников, запрещается работа таймеров/счётчиков, запрещается работа последовательного порта;

5) выбирается банк 0 РОН (текущий банк регистров),

6) порты Р0, Р1, Р2, РЗ настраиваются на ввод для приёма данных;

7) в обоих регистрах SBUF последовательного порта устанавливаются случайные значения.

В БИС РФ55 и РУ55 исходное состояние после включении питания произвольное, так как импульс RST на их входы сброса не поступает.

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

Формализация настроек для инициализации фильтра

Частота синхронизации МК.

Примем частоту задающего кварцевого генератора Fosc = 12 МГц. Длительность машинного цикла при этом равна Тмц = 1 мкс.

Настройка таймера-счётчика Т/С0

Режим работы. По сформулированному выше определению Т/С0 должен работать в непрерывном режиме таймера (без блокирования сигналом INT0) для формирования импульсов с частотой дискретизации FД. Выбираем поэтому режим 2 с перезагрузкой после каждого цикла счёта. Управляющие биты GATE0 = 0, С/Т 0 = 0 и код режима 10 записываются в состав управляющего слова (константа #02) для регистра TMOD при инициализации фильтра - команда MOV 89, #02.

Таблица

Управляющее слово для регистра TMOD (прямой адрес 89)

TMOD.7

TMOD.6

ТМОD.5

ТМOD.4

TMOD.3

TMOD.2

TMOD.1

TMOD.0

х(0)

х(0)

х(0)

х(0)

0

0

1

0

GATE1

С/Т 1

М1.1

М0.1

GATE0

С/Т 0

М1.0

М0.0

Задание частоты дискретизации FД = 12000 Гц. Длительность интервала дискретизации равна Тд = 83 мкс. Количество машинных циклов Тмц, укладывающихся на интервале дискретизации: N = Тд / Тмц = 83, т.е. Т/С0 должен иметь в режиме с перезагрузкой коэффициент счёта kсч = N = 83.

Максимальный коэффициент пересчёта 8-разрядного счётчика (без перезагрузки) равен kМАКС = 28 = 256. Чтобы в режиме суммирования 8-разрядный Т/С0 имел требуемый коэффициент пересчёта kсч = N, при перезагрузке в него должно записываться число Nиcx = kМАКС - N, для рассматриваемого примера Nиcx = 173(10) = AD(16).

Константа #AD, обеспечивающая требуемую частоту дискретизации, при инициализации фильтра должна быть записана для хранения в регистр TH0 (прямой адрес 8С) - команда MOV 8C, #AD.

Пуск Т/С0 осуществляется путём установки в регистре TCON управляющего бита TR0 =1 при инициализации фильтра - команда SETB 8C.

Вывод импульса переполнения Т/С0 для запуска периферийного устройства выполняется по прерыванию от флага TF0, устанавливающегося при переполнении Т/С0. Подпрограмма обработки прерывания от флага TF0 имеет стартовый адрес 000В и содержит команды: CLR 94, SETB 94 - сброс и установка линии Р1.4 (порт Р1), так как исходное состояние линии - 1 (во все защёлки портов при сбросе МК записаны 1, - порты настроены на ввод).

Настройка прерываний

В результате сброса МК при включении питания всем источникам прерываний назначается одинаковый, нулевой приоритет. Поскольку обработка прерываний от таймера Т/С0 и по входу INT0 не могут совпадать по времени, переопределять приоритеты прерываний не требуется.

После сброса МК все прерывания запрещены. Поэтому при инициализации требуется разрешить прерывания вообще (установить бит ЕА = 1), и, в частности, разрешить прерывания от Т/С0 (ЕТ0 = 1) и по входу INT0 (ЕХ0 = 1). Команда записи управляющего слова (константы #83) в регистр IE: MOVA8,#83.

Таблица

Управляющее слово для регистра IE (прямой адрес А8)

IE.7

IE.6

IE.5

IE.4

IE.3

IE.2

IE.1

IE.0

1

0

0

0

0

0

1

1

ЕА

-

-

ES

ЕТ1

ЕХ1

ЕТ0

ЕХ0

Настройка портов БИС КР1821РУ55

Порт РA РУ55 настраивается на ввод, а порт PB- на вывод. Для этого соответствующие биты PA=0 и PB=1 записываются в состав управляющего слова(константа#02) для регистра управляющего слова РУ55. При инициализации фильтра- команды: MOV A, #02, MOV DPTR, #7000 , MOVX @DPTR, A

Таблица

Управляющее слово для РУС РУ55 (адрес 7000)

D7

D6

D5

D4

D3

D2

D1

D0

х(1)

х(0)

х(0)

х(0)

х(1)

х(0)

1

0

ТМ2

ТМ1

IE В

IE A

РС2

РС1

РВ

РА

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

При сбросе МК в указатель стека загружается адрес SP = 70, - во внутренней памяти данных назначается стек (16 ячеек ОЗУ) с начальным адресом 70. Глубина стека достаточна для решаемой задачи, поэтому переопределение стека не требуется.

Формализация определений для рабочего цикла фильтра

Реализация прерываний по входу INT0 .

Прерывание по внешнему входу INT0 выполняет сигнал оповещения ЕОС с выхода АЦП о готовности кода текущего отсчёта xn. По прерыванию INT0 запускается подпрограмма вычисления выходного отсчёта уn (запускается рабочий цикл) цифрового фильтра.

Вектор прерывания по входу INT0 равен 0003. С этого адреса в ПЗУ загружается подпрограмма обслуживания прерывания данного типа.

Согласование кодов АЦП и МК.

Согласование кодов АЦП и МК не требуется, так как выходной код AD7892AN-1 является арифметическим дополнительным кодом и отображает числовые значения входного знакопеременного напряжения.

Форма представления чисел

Представляем числовые значения отсчетов входного сигнала в виде правильной дроби с фиксированной запятой: старший разряд - знаковый, запятая, остальные двоичные разряды - числовые. Таким образом, числовые значения входного сигнала изменяются в диапазоне от -1 до +1.

Коэффициенты разностного уравнения определяем, как 8-разрядные числа без знака:

k1 = 0,9510); kP1 =,11110011 (2) = F3(16) = 0,94921875(10);

Отличие реальных значений коэффициентов (Р) от заданных (Т) предопределяет отличие реальных характеристик фильтра от расчётных.

Хранение текущих данных

Необходимость хранения данных определяется видом заданного разностного уравнения. Для каждого цикла вычисления текущих выходных отсчётов yn требуется использовать выборку входных отсчетов xn, xn-1, и выборку выходных отсчетов yn, yn-1. Все указанные отсчеты должны быть доступны для вычислений, следовательно, должны храниться в памяти МП-системы.

Требуется также вычислять три текущих произведения: p1n =0,95xn, p2n = 0,95yn-1 которые также должны храниться в памяти.

Следовательно, 8 ячеек ОЗУ при составлении программы определим для хранения данных в текущем цикле обработки входного сигнала (в текущем интервале дискретизации).

После вычисления выходного отсчета yn и записи его в ОЗУ, перед приемом нового входного отсчета необходимо сдвинуть отсчеты всех выборок в памяти: n-й отсчет на место n-1-гo. Это требуется для подготовки следующего цикла вычислений.

Масштабирование входных отсчётов

Если при вычислении разностного уравнения при принятом 8-разрядном формате представления данных получен числовой результат, выходящий за пределы -1, +1 имеет место переполнение разрядной сетки.

Для исключения переполнения введем масштабирование (ослабление) входных отсчетов путем их умножения на коэффициент масштабирования kM < 1, при котором вычисление разностного уравнения не дает недопустимого результата.

Коэффициент kM получим, предположив, что отсчеты в разностном уравнении принимают максимальные значения (- 1, + 1) и такие знаки, при которых слагаемые разностного уравнения складываются по модулю, то есть складываются по модулю коэффициенты.

Подставив такие значения в уравнение для вычисления и просуммировав по модулю коэффициенты, получим ynmax = 2.9, что является недопустимым результатом. Отсюда заданный коэффициент масштабирования (число без знака) равен:

kМ = 1/ ynmax = 0.34482758(10); kМР = 0,01011000(2) = 58(16) ? 0.3435(10).

Умножение отсчёта на коэффициент

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

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

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

Согласование кодов МК и ЦАП

Согласование кода МК и кода ЦАП необходимо, так как ЦАП преобразует в ток, смещённый входной код (положительные числа), а арифметический код МК - дополнительный. Для согласования - вычисленный отсчет yn перед выводом на ЦАП суммируется с константой 1000 0000(2).

Напряжение на выходе ЦАП

Для расчёта напряжения на выходе БИС AD9708 используются следующие соотношения:

UMOUT = IOUTFS ·RН; IOUTFS = 32 IREF ; IREF =·UREFIO / RSET ,

где UMOUT - амплитуда напряжения на выходе ЦАП, IOUTFS - ток полной шкалы (максимальный ток) выхода, RН - сопротивление резистора нагрузки для выхода,

IREF - опорный ток, UREFIO - опорное напряжение, RSET - сопротивление внешнего резистора на выводе FS ADJ для задания опорного тока.

Для обеспечения линейного режима внутренних транзисторных источников тока принимаем UMOUT = 0,5 В << ЕП = 5 В и RН = 50 Ом. Из этого следует:

IOUTFS = 10 мА, IREF = 0,31 мА, RSET = 3,9 кОм.

При выбранных параметрах на каждом выходе ЦАП - униполярное напряжение. Для получения предусмотренного ТЗ знакопеременного выходного напряжения следует использовать дифференциальное включение выходов ЦАП, при котором напряжение UДИФ = UOUT А - UOUT В изменяется в пределах от +0,5 В до -0,5 В.

Для получения заданного размаха выходного напряжения используется усилитель на ОУ с дифференциальным входом с коэффициентом усиления kУ = 10.

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

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

Общий алгоритм функционирования фильтра приведен на рис.2. Работа фильтра начинается с подачи питания. Импульс, сформированный схемой сброса (дифференцирующая RC-цепь) при подаче питания, обнуляет программный счетчик МК и инициирует формирование импульса сброса RST для установки МК в исходное состояние. Исходное состояние МК после сброса однозначно определено и его следует учитывать при инициализации МК и МП-системы, в целом.

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

Таймер-счётчик Т/СО (аппаратный узел) в режиме таймера настраивается на период переполнения, равный ТД таймер запускается для формирования непрерывной последовательности импульсов с частотой дискретизации FД.

Разрешаются внутренние прерывания от Т/СО, которые используются для программного формирования импульсов запуска АЦП, и внешние прерывания от входа INT0 - для пуска выполнения рабочего цикла фильтра по сигналу готовности данных от АЦП. Порт РВ РУ55 настраивается на вывод данных, РА РУ55 - на ввод данных из АЦП.. Программа инициализации завершается операцией останова МК.

Из состояния останова МК выводится сигналом внутреннего прерывания от флага TF0 переполнения Т/СО. По данному прерыванию выполняется программный модуль формирования и вывода импульса пуска АЦП. После запуска АЦП программа снова переходит в состояние останова и находится в нем до следующего прерывания по входу INT0 сигналом готовности данных от АЦП.

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

Рис.

Обоснование построения аппаратной части фильтра

Данный цифровой фильтр как МПС содержит в своем составе: набор БИС КР1830ВЕ31, КР1821РФ55, КР1821РУ55, где

1. КР1830ВЕ31- микроконтроллер, выполненный по комплементарной МОП технологии (КМОП);

2. КР1821РФ55- ПЗУ с двумя портами ввода/вывода, работающими в режиме простого обмена;

3. КР1821РУ55- микросхема, в состав которой входят: ОЗУ, таймер, два 8-разрядных (РА и РВ) порта ввода/вывода и один 6-разрядный порт (РС);

АЦП AD7892AN-1, для которой диапазон изменения напряжения на входе АЦП равен(-5 до +5)В, что соответствует техническому заданию и позволяет обойтись без согласующего усилителя на входе АЦП. ЦАП AD9708, и операционный усилитель с коэффициентом усиления 10. Все составляющие МПС удовлетворяют техническому заданию.

AD9708:

Микросхема AD9708 представляет собой 8-разрядный ЦАП, работающий от одного источника питания с напряжением от +2,7 В до +5,5 В. Построен по схеме на транзисторных источниках тока, весовые токи формируются с помощью матрицы R-2R. В качестве опорного источника напряжения может выбираться либо внутренний - с напряжением +1,2 В, либо внешний.

На вход ЦАП подаётся параллельный 8-разрядный код - число без знака. Входной код хранится в буферном регистре ЦАП (регистр-защёлка). Максимальная частота преобразования входных кодов - 125 МГц.

Имеет два токовых выхода: на основном выходе ток пропорционален числовому значению входного кода, на дополнительном (комплементарном) - числовому значению обратного входного кода. Выходной ток полной шкалы (максимальный ток, соответствующий максимальному значению входного кода) может регулироваться от 20 до 2 мА без ухудшения характеристик преобразования. Выходное сопротивление по обоим токовым выходам - более 100 кОм. Токовые выходы могут использоваться в симметричном, несимметричном включении или же как выходы по напряжению.

Потребляемая мощность при напряжении питания +5 В составляет 175 мВт в рабочем режиме или 20 мВт - в режиме пониженного энергопотребления.

Назначение выводов и настройки AD9708:

Таблица

Обозначение вывода

Описание

DB7 ... DB0

1.. .8

Входные биты данных; DB7 - СЗР, DB0 - МЗР

NC

9...14, 25

Не имеют внутренних соединений

CLOCK

28

Тактовый вход регистра-защёлки. Данные фиксируются в защёлке положительным фронтом тактового импульса

REFLO

16

Базовый (нулевой) вывод внутреннего источника опорного напряжения. REFLO = ACOM ("аналоговая земля") -используется внутренний источник +1,2 В; REFLO = = AVDD (напряжение питания аналоговой части) -используется внешний источник опорного напряжения

REFIO

17

Выход внутреннего источника опорного напряжения +1,2 В (при REFLO = ACOM). Вход внешнего источника опорного напряжения (при REFLO = AVdd). Должен быть соединён через конденсатор С = 0,1 мкФ с аналоговой "землёй" (ACOM)

FSADJ

18

Вывод для подключения резистора RSET, задающего максимальное значение выходного тока

IOUTA

22

Выход тока ЦАП. Максимальное значение тока при всех входных битах, равных 1

IOUTB

21

Дополнительный выход тока ЦАП. Максимальное значение тока при всех входных битах, равных 0

ACOM

20

Аналоговая "земля"

DCOM

26

Цифровая "земля"

AVdd

24

Напряжение питания аналоговой части

DVdd

27

Напряжение питания цифровой части

COMP1

19

Должен быть соединён через конденсатор С = 0,1 мкФ с AVdd для подавления внутренних шумов

COMP2

23

Должен быть соединён через конденсатор С = 0,1 мкФ с ACOM для надёжного управления переключателями тока

SLEEP

15

Управление режимом энергопотребления; SLEEP = 1 -режим пониженного энергопотребления

Преобразование выходного тока AD9708 в напряжение может быть произведено с помощью резистора нагрузки. При этом амплитуда выходного напряжения должна быть небольшой. В противном случае транзисторы источников тока могут выйти из линейного режима с высоким выходным сопротивлением (источник тока) и работать в насыщенном режиме с малым выходным сопротивлением.

Для увеличения амплитуды изменения выходного напряжения к выходам AD9708 можно подключать усилители на ОУ в униполярном или дифференциальном включении.

Разработка и отладка программы на языке команд МК

Рабочая программа разработана на основе спроектированного алгоритма функционирования фильтра, результатов анализа и формализации.

Было проведено ассемблирование. Проанализировав содержание листинга программы, устранили возникшие ошибки (внесли исправление в исходный текст, с расширением .asm) и повторили ассемблирование. Далее запустили редактор связей link.exe. Получили выходной файл с расширением .tsk по запросу Parameter - ввели х.

;Распределение памяти ПЗУ (РФ55) 0000h - команда перехода к программе инициализации по сигналу RST;

;0003h - команда перехода к программе вычисления и вывода выходного отсчёта по сигналу на входе INT0 ;

;000Bh - команда перехода к программе формирования импульса запуска АЦП по сигналу переполнения Т/С0;

00A0h … 00CFh - программа инициализации;

00D0h … 00FFh - программа формирования импульса запуска АЦП;

0100h … 07FFh - программа вычисления и вывода выходного отсчёта.

Распределение памяти ОЗУ (ВЕ31) 70h - 7Fh - стек;

30h, 31h - хранение отсчётов xn, xn-1;

40h, 41h - хранение отсчётов yn, yn-1;

50h, 51h - хранение отсчётов p1n, p2n.

Программа "Цифровой фильтр" Автор Чигин А.Ю.

Дата 6.05.2012

Разностное уравнение Yn = 0,95 Xn + Xn-1 - 0,95 Yn-1

Определение символических имён операндов B4: .EQU 94h ;линия P1.4 для вывода импульса запуска АЦП

PA: .EQU 7001h ;порт PA РУ55

PB: .EQU 7002h ;порт PB РУ55

RGRU: .EQU 7000h ;регистр управляющего слова РУ55

SRU: .EQU 02h ;управляющее слово для настройки портов РУ55

TMOD: .EQU 89h ;регистр управления режимами таймеров-счётчиков

STMOD .EQU 02h ;управляющее слово для настройки таймера-счётчика

TH0: .EQU 8Ch ;старший байт Т/С0

STH0: .EQU ADh ;управляющее слово для задания частоты переполнения T/C0

TR0: .EQU 8Ch ;управляющий бит пуска T/C0

IE: .EQU A8h ;регистр разрешения прерываний

SIE: .EQU 83h ;слово разрешения прерываний от T/C0 и входа INT0

B: .EQU F0h ;регистр В

K: .EQU CFh ;коэффициент разностного уравнения

KM: .EQU 61h ;коэффициент масштабирования

X: .EQU 30h ;ячейка хранения отсчёта Xn

X1: .EQU 31h ;ячейка хранения отсчёта Xn-1

Y: .EQU 40h ;ячейка хранения отсчёта Yn

Y1: .EQU 41h ;ячейка хранения отсчёта Yn-1

PR1: .EQU 50h ;ячейка хранения произведения PR1n

PR2: .EQU 51h ;ячейка хранения произведения PR2n

Инициализация по сигналу RST ORG 0000h

LJMP INIT ;переход к программе инициализации ORG 00A0h

INIT: MOV TMOD, #STMOD ;настройка режима Т/С0

MOV TH0, #STH0 ;задание частоты дискретизации

SETB TR0 ;пуск Т/С0

MOV A, #SRU ;настройка порта PA РУ55

MOV DPTR, #RGRU ;на ввод, порта PB РУ55 -

MOVX @DPTR, A ;на вывод

MOV IE, #SIE ;разрешение прерываний

;от Т/С0 и входа INT0

STOP: SJMP STOP ;останов программы

Формирование импульса пуска АЦП по внутреннему прерыванию от Т/С0 ORG 000Bh

LJMP START ;переход к программе формирования импульса пуска АЦП

ORG 00D0h

START: CLR B4 ;сброс бита Р1.4

SETB B4 ;установка бита Р1.4

RETI ;возврат из подпрограммы обработки прерывания

Вычисление выходного отсчёта по сигналу внешнего прерывания от входа INT0, рабочий цикл фильтра

ORG 0003h

LJMP XYOUT ;переход к программе рабочего цикла фильтра ORG 0100h

XYOUT: MOV DPTR, #PA ;ввод отсчёта Xn из АЦП

MOVX A, @DPTR ;через порт РА РУ55 программный модуль масштабирования:

вычисление произведения Xn := KмXn

входной отсчёт - в аккумуляторе, масштабированный отсчёт записать в ячейку ОЗУ

RLC A ;анализ знака Xn

JC M1 ;переход к программе умножения отрицательного отсчёта Xn на Kм

RRC A ;восстановление положительного отсчёта Xn

в аккумуляторе

MOV B, #KM ;вычисление произведения KмXn

MOV X, B ;запоминание масштабированного отсчёта Xn в памяти

SJMP M2 ;переход к продолжению

M1: RRC A ;восстановление отрицательного отсчёта Xn в аккумуляторе

CPL A ;получение положительно-

INC A ;го отсчёта Xn (смена знака)

MOV B, #KM ;вычисление произведения

MUL AB ; KмXn и пересылка

MOV A, B ;в аккумулятор

CPL A ;получение отрицательно-

INC A ;го произведения KмXn (смена знака)

MOV X, A ;запоминание масштабированного отсчёта Xn в памяти

;программный модуль вычисления

;произведения PR1n := KXn

;Xn хранится в ячейке ОЗУ с адресом X

;PR1n записать в ячейку ОЗУ с адресом PR1

M2: MOV A, X ;копирование Xn в аккумулятор и анализ знака

RLC A

JC M3 ;переход к программе умножения отрицательного

;отсчёта Xn на K

RRC A ;восстановление положи;тельного отсчёта Xn

;в аккумуляторе

MOV B, #K ;вычисление произведе-

MUL AB ;ния KXn

MOV PR1, B ;запоминание K Xn

;в памяти

SJMP M4 ;переход к продолжению

M3: RRC A ;восстановление отрица-

;тельного отсчёта Xn

;в аккумуляторе

CPL A ;получение положительно-

INC A ;го отсчёта Xn (смена зна-

;ка)

MOV B, #K ;вычисление произведе-

MUL AB ;ния KXn и пересылка

MOV A, B ;в аккумулятор

CPL A ;получение отрицательно-

INC A ;го произведения KXn

;(смена знака)

MOV PR1, A ;запоминание KXn в памяти

;программный модуль вычисления

;произведения PR2n := KYn-1

;Yn-1 хранится в ячейке ОЗУ с адресом Y1

;PR2n записать в ячейку ОЗУ с адресом PR2

M4: MOV A, Y1 ;копирование Yn-1 в акку-

RLC A ;мулятор и анализ знака

JC M5 ;переход к программе ум-

;ножения отрицательного

;отсчёта Yn-1 на K

RRC A ;восстановление положи-

;тельного отсчёта Yn-1

;в аккумуляторе

MOV B, #K ;вычисление произведе-

MUL AB ;ния KYn-1

MOV PR2, B ;запоминание KYn-1 в памяти

SJMP M6 ;переход к продолжению

M5: RRC A ;восстановление отрицательного отсчёта Yn-1 в аккумуляторе

CPL A ;получение положительно-

INC A ;го отсчёта Yn-1 (смена знака)

MOV B, #K ;вычисление произведения

MUL AB ; KYn-1 и пересылка

MOV A, B ;в аккумулятор

CPL A ;получение отрицательного произведения KYn-1 (смена знака)

INC A

MOV PR2, A ;запоминание KYn-1 в памяти программный модуль вычисления выходного отсчёта Yn = PR1n + Xn-1 - PR2n, слагаемые хранятся в ячейках ОЗУ, результат записать в ячейку ОЗУ и вывести на ЦАП

M6: MOV A, PR1 ;вычисление отсчёта Yn

ADD A, X1 ;и сохранение в памяти

CLR C ;

SUBB A, PR2 ;

MOV Y, A ;

ADD A, #80h ;получение смещённого кода Yn для ЦАП

MOV DPTR, #PB ;вывод смещённого кода

MOVX @DPTR, A ;Yn на ЦАП через порт

РВ РУ55

программный модуль сдвига отсчётов ;в памяти, подготовка следующего рабочего цикла

MOV X1, X ;

MOV Y1, Y ;

RETI ;возврат из подпрограммы обслуживания прерыва- по входу INT0

END

Отладка:

Sun May 6 2012 09:46 Page 1

2500 A.D. 8051 Macro Assembler - Version 4.02a

Input Filename : 917-tgn.asm

Output Filename : 917-tgn.obj

Программа "Цифровой фильтр"

Автор Чигин А.Ю.

Дата

Разностное уравнение Yn = 0,95 Xn + Xn-1 - 0,95 Yn-1

Определение символических имён операндов

0094 B4: .EQU 94h ;линия P1.4 для вывода импульса

запуска АЦП

7001 PA: .EQU 7001h ;порт PA РУ55

7002 PB: .EQU 7002h ;порт PB РУ55

7000 RGRU: .EQU 7000h ;регистр управляющего слова РУ55

0002 SRU: .EQU 02h ;управляющее слово для настройки

;портов РУ55

0089 TMOD: .EQU 89h ;регистр управления режимами

;таймеров-счётчиков

18 0002 STMOD: .EQU 02h ;управляющее слово для настройки

;таймера-счётчика

008C TH0: .EQU 8Ch ;старший байт Т/С0

200AD STH0: .EQU ADh ;управляющее слово для задания

;частоты переполнения T/C0

008C TR0: .EQU 8Ch ;управляющий бит пуска T/C0

00A8 IE: .EQU A8h ;регистр разрешения прерываний

0083 SIE: .EQU 83h ;слово разрешения прерываний

;от T/C0 и входа INT0

00F0 B: .EQU F0h ;регистр В

00CF K: .EQU CFh ;коэффициент разностного уравнения

0061 KM: .EQU 61h ;коэффициент масштабирования

0030 X: .EQU 30h ;ячейка хранения отсчёта Xn

0031 X1: .EQU 31h ;ячейка хранения отсчёта Xn-1

0040 Y: .EQU 40h ;ячейка хранения отсчёта Yn

0041 Y1: .EQU 41h ;ячейка хранения отсчёта Yn-1

0050 PR1: .EQU 50h ;ячейка хранения произведения PR1n

0051 PR2: .EQU 51h ;ячейка хранения произведения PR2n

;Инициализация по сигналу RST

0000 .ORG 0000h

0000 02 00 A0 LJMP INIT ;переход к программе

;инициализации

00A0 .ORG 00A0h

00A0 75 89 02 INIT: MOV TMOD, #STMOD ;настройка режима Т/С0

00A3 75 8C AD MOV TH0, #STH0 ;задание частоты дискретизации

00A6 D2 8C SETB TR0 ;пуск Т/С0

Sun May 6 2012 09:46 Page 2

00A8 74 02 MOV A, #SRU ;настройка порта PA РУ55

00AA 90 70 00 MOV DPTR, #RGRU ;на ввод, порта PB РУ55 -

00AD F0 MOVX @DPTR, A ;на вывод

00AE 75 A8 83 MOV IE, #SIE ;разрешение прерываний

от Т/С0 и входа INT0

00B1 80 FE STOP: SJMP STOP ;останов программы

Формирование импульса пуска АЦП по внутреннему прерыванию от Т/С0

000B ORG 000Bh

000B 02 00 D0 LJMP START ;переход к программе

формирования импульса

пуска АЦП

00D0 .ORG 00D0h

00D0 C2 94 START: CLR B4 ;сброс бита Р1.4

00D2 D2 94 SETB B4 ;установка бита Р1.4

00D4 32 RETI ;возврат из подпрограммы обработки прерывания

Вычисление выходного отсчёта по сигналу внешнего прерывания от входа INT0, рабочий цикл фильтра

0003 .ORG 0003h

0003 02 01 00 LJMP XYOUT ;переход к программе рабочего цикла фильтра

0100 .ORG 0100h

0100 90 70 01 XYOUT: MOV DPTR, #PA ;ввод отсчёта Xn из АЦП

0103 E0 MOVX A, @DPTR ;через порт РА РУ55 программный модуль масштабирования:

вычисление произведения Xn := KмXn

входной отсчёт - в аккумуляторе, масштабированный отсчёт записать в ячейку ОЗУ

0104 33 RLC A ;анализ знака Xn

0105 40 0A JC M1 ;переход к программе умножения отрицательного отсчёта Xn на Kм

0107 13 RRC A ;восстановление положительного отсчёта Xn в аккумуляторе

0108 75 F0 61 MOV B, #KM ;вычисление произведе-

010B A4 MUL AB ;ния KмXn

010C 85 F0 30 MOV X, B ;запоминание масштабированного отсчёта Xn в памяти

010F 80 0D SJMP M2 ;переход к продолжению

0111 13 M1: RRC A ;восстановление отрицательного отсчёта Xn в аккумуляторе

Sun May 6 2012 09:46 Page 3

105 0112 F4 CPL A ;получение положительно-

106 0113 04 INC A ;го отсчёта Xn (смена зна-

107 ;ка)

108 0114 75 F0 61 MOV B, #KM ;вычисление произведе-

109 0117 A4 MUL AB ;ния KмXn и пересылка

110 0118 E5 F0 MOV A, B ;в аккумулятор

111

112 011A F4 CPL A ;получение отрицательно-

113 011B 04 INC A ;го произведения KмXn

114 ;(смена знака)

115 011C F5 30 MOV X, A ;запоминание масштаби-

116 ;рованного отсчёта Xn

117 ;в памяти

118

119 ;программный модуль вычисления

120 ;произведения PR1n := KXn

121 ;Xn хранится в ячейке ОЗУ с адресом X

122 ;PR1n записать в ячейку ОЗУ с адресом PR1

123

124 011E E5 30 M2: MOV A, X ;копирование Xn в аккуму-

125 0120 33 RLC A ;лятор и анализ знака

126 0121 40 0A JC M3 ;переход к программе ум-

127 ;ножения отрицательного

128 ;отсчёта Xn на K

129 0123 13 RRC A ;восстановление положи-

130 ;тельного отсчёта Xn

131 ;в аккумуляторе

132 0124 75 F0 CF MOV B, #K ;вычисление произведе-

133 0127 A4 MUL AB ;ния KXn

134 0128 85 F0 50 MOV PR1, B ;запоминание K Xn

135 ;в памяти

136 012B 80 0D SJMP M4 ;переход к продолжению

137 012D 13 M3: RRC A ;восстановление отрица-

138 ;тельного отсчёта Xn

139 ;в аккумуляторе

140 012E F4 CPL A ;получение положительно-

141 012F 04 INC A ;го отсчёта Xn (смена зна-

142 ;ка)

143 0130 75 F0 CF MOV B, #K ;вычисление произведе-

144 0133 A4 MUL AB ;ния KXn и пересылка

145 0134 E5 F0 MOV A, B ;в аккумулятор

146 0136 F4 CPL A ;получение отрицательно-

147 0137 04 INC A ;го произведения KXn

148 ;(смена знака)

149 0138 F5 50 MOV PR1, A ;запоминание KXn в па-

150 ;мяти

151

152 ;программный модуль вычисления

153 ;произведения PR2n := KYn-1

154 ;Yn-1 хранится в ячейке ОЗУ с адресом Y1

155 ;PR2n записать в ячейку ОЗУ с адресом PR2

156

157 013A E5 41 M4: MOV A, Y1 ;копирование Yn-1 в акку-

158 013C 33 RLC A ;мулятор и анализ знака

159 013D 40 0A JC M5 ;переход к программе умножения отрицательного отсчёта Yn-1 на K

Sun May 6 2012 09:46 Page 4

Lines Assembled : 214 Assembly Errors : 0

Исходные определения и ручной расчёт результатов работы программы: "Цифровой фильтр (фазовое звено)"

Для положительных отсчетов

Разностное уравнение представим в виде:

yn = 0,95xn +xn-1 - 0,95уn-1 = kxn + xn-1 - k уn-1; k = 0,95.

1) Реализуемый коэффициент масштабирования kМР (число без знака) при 8-разрядном формате беззнаковых коэффициентов:

kМ = 1/ ynmax=1/2,9 = 0,34482758(10); kМР =,01011000(2) = 58 (16) ? 0.3435(10).

2) Реализуемый коэффициент разностного уравнения k (числа без знака) при 8-разрядном формате беззнаковых коэффициентов:

k = 0,95(10); kP =,011110011 (2) =F3 (16) = 0,94921875(10);

3) Код АЦП для положительного входного отсчёта максимальной амплитуды (немасштабированный отсчёт):

xn = 0'1111111(2) = 7F(16).

4) Масштабированный входной положительный отсчёт максимальной амплитуды:

xn = kMP xn = , 01011000 (2) · 0'1111111(2) = 58(16) · 7F(l6) = 2B(16) = ,00101011(2=+0, 3359375010).

5) Зададим состояние памяти для положительных входных отсчетов и отрицательных выходных отсчётов максимальной амплитуды:

Таблица

Адрес ячейки памяти

Содержимое ячейки памяти

7001 h (порт РA РФ55)

xn = 7F(l6)

немасштабированный входной отсчет

30h

Вычисляется программой в текущем цикле:

xn = 2B(16) = ,00101011(2)=+0, 3359375010).

масштабированный входной отсчет

31h

xn-1 = 2B(16) = ,00101011(2)=+0, 33593750 (10).

40h

Вычисляется программой в текущем цикле:

yn =7B(16)

41h

yn-1 = D5(16) = ,11010101(2)=-0, 33593750 (10).

50h

Вычисляется программой в текущем цикле:

p1n =28(16)=0,0101000(2)=+0,3125(10)

51h

Вычисляется программой в текущем цикле:

p2n = D8(16)=1,1011000(2)=-0,3125(10)

6) Получим произведение p1n:

p1n = kP xn = F3(16) · 2B(16) =,11110011 (2) · ,00101011 (2) = 28(16) = ,00101000(2)= 0.3125 (10).

7) Получим произведение p2n

|P2n| = kP |yn-1| = F3(16) · 2B(16) =,11110011 (2) · ,00101011 (2) = 28(16)

8) Вычислим выходной отсчёт:

yn = p1n + xn-1 -(-| p2n|) = p1n + xn-1 +| p2n| = 28(16) + 2B(16)+28(16) = 7B(16) = 0'01111011(2) =+0,99310)

Для отрицательных отсчетов

Разностное уравнение представим в виде:

yn = 0,95xn +xn-1 - 0,95уn-1 = kxn + xn-1 - k уn-1; k = 0,95.

1) Реализуемый коэффициент масштабирования kМР (число без знака) при 8-разрядном формате беззнаковых коэффициентов:

kМ = 1/ ynmax=1/2,9 = 0,34482758(10); kМР = 0,01011000(2) = 58 (16) ? 0.3435(10).

2) Реализуемый коэффициент разностного уравнения k (числа без знака) при 8-разрядном формате беззнаковых коэффициентов:

k = 0,95(10); kP =,011110011 (2) =F3 (16) = 0,94921875(10);

3) Код отрицательного отсчёта максимальной амплитуды (немасштабированный отсчёт):

xn = 1,0000000(2) = 80(16).

4) Масштабированный входной отрицательный отсчёт максимальной амплитуды:

xn = kMP xn = ,01011000(2) · 1,0000000(2) = 58(16) · 80(l6) ? 2C(16) = ,0.00101100(2)=+0.34375(10) .

При помощи дополнительного кода: 11010011 + 1

11010100(2) = D4(16) = -0.34375 (10).

5) Зададим состояние памяти для положительных входных отсчетов и отрицательных выходных отсчётов максимальной амплитуды:

Таблица

Адрес ячейки памяти

Содержимое ячейки памяти

7001 h (порт РA РФ55)

xn = 80(l6)

немасштабированный входной отсчет

30h

Вычисляется программой в текущем цикле:

xn = D4(16) = ,11010100(2)= -0.34375 (10).

масштабированный входной отсчет

31h

xn-1 = D4(16) = ,11010100(2)= -0.34375 (10).

40h

Вычисляется программой в текущем цикле:

yn =82(16)

41h

yn-1 = 2С(16) = 0.0101100 (2)= +0.34375 (10).

50h

Вычисляется программой в текущем цикле:

p1n =D7(16)=1.1010111(2)=-0.3203125(10)

51h

Вычисляется программой в текущем цикле:

p2n = 29(16)= 0.00101001(2)=+0.3203125(10)

6) Получим произведение p1n:

|p1n| = kP1| xn| = F3(16) · 2C16) =,11110011 (2) · 0,0101100 (2) ? 29(16) = 0.0101001 (2) =0.3203125 (10).

при помощи дополнительного кода: 11010110 + 1

1.1010111(2) =D7(16) = - 0.3203125 (10).

7) Получим произведение p3n:

|P2n| = kP |yn-1| = F3(16) · 2C16) =,11110011 (2) · 0,0101100 (2) ? 29(16) = 0.0101001 (2) =0.3203125 (10).

при помощи дополнительного кода: 11010110 + 1

1.1010111(2) =D7(16) = - 0.3203125 (10).

8) Вычислим выходной отсчёт:

yn = D7(16) + D4(16)+D7(16) = 82(16) = 10000010 (2) =- 0,99310)

Полученные расчётные значения следует рассматривать как контрольные при сопоставлении с результатами, которые вычисляет программный отладчик. Запустили эмулятор. Файл Emu.exe. В него загрузили файл 917 - tgn.tsk. Вошли в меню редактирования. Загрузили в память МП-системы(DSEG) значения входных и выходных отсчетов, в (XSEG) адрес 7001 загрузили максимальное значение немасштабированного входного отсчёта 7F(16). В пошаговом режиме выполняем рабочий цикл. Видим, что все значения, вычисленные программой, равны расчётным, заполнение памяти соответствует набранной программе PR1 сохраняется в 50, PR2 в 51 DSEG .

Так же для отрицательных отсчетов в ХSEG в ячейку 7001 записали максимальный отрицательный отчет=80(16), видим что все расчетные значения равны значениям вычисленным программой. Программа работоспособна, нет переполнений. Выходной отчет не превышает для положительных 1 и для отрицательных -1.

Вывод: ручной расчет произведен правильно, программа набрана правильно, результаты, полученные в эмуляторе соответствуют результатам, полученным при ручном расчете.

Составление электрической принципиальной схемы и описание функционирования фильтра

Принципиальная схема цифрового фильтра (всепропускающее фазовое звено) содержит следующие компоненты: МК КР1830ВЕ31, ПЗУ КР1821РФ55, ОЗУ KР1821РУ55, АЦП AD7892AN-1, ЦАП 9708, ОУ AD8792 с коэффициентом усиления 5 необходимый для обеспечения заданного размаха напряжения на выходе ЦАП(-5до 5). Вывод yn происходит через порт РB (РУ55) на ЦАП. Подключение микросхемы РУ55 осуществляется стандартным способом. Выдача 8-разрядного кода из ОЗУ на шину адреса данных производится при поступлении управляющего строба /PSEN. Входы управления /RD (чтение) и WR(запись) подключается к соответствующим линиям управления системой магистрали, на которой в зависимости от типа машинного цикла выдаются управляющие стробы /RD (чтение из ПЗУ, порта) или /WR (запись в ПЗУ, в порт).

Работа фильтра начинается с подачи питания. Импульс, сформированный схемой сброса (дифференцирующая RC цепь) при подачи питания, обнуляет программный счётчик МК и инициирует формирование импульса сброса RST для установки МК в исходное состояние. Исходное состояние МК после сброса однозначно определено и его следует учитывать при инициализации МК и МП - системы, в целом.

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

Таймер-счётчик Т/СО (аппаратный узел) в режиме таймера настраивается на период переполнения, равный ТД таймер запускается для формирования непрерывной последовательности импульсов с частотой дискретизации FД. Разрешаются внутренние прерывания от Т/СО, которые используются для программного формирования импульсов запуска АЦП, и внешние прерывания от входа INT0 - для пуска выполнения рабочего цикла фильтра по сигналу готовности данных от АЦП. Порт РВ РУ55 настраивается на вывод на ЦАП, РA РУ55 - на ввод данных из АЦП.. Программа инициализации завершается операцией останова МК.

Из состояния останова МК выводится сигналом внутреннего прерывания от флага TF0 переполнения Т/СО. По данному прерыванию выполняется программный модуль формирования и вывода импульса пуска АЦП. После запуска АЦП программа снова переходит в состояние останова и находится в нем до следующего прерывания по входу INTO сигналом готовности данных от АЦП.

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

Расчет быстродействия фильтра

Быстродействие фильтра в рабочем режиме оценим как время, необходимое для выполнения всех операций, требуемых для получения входного отсчёта, вычисления выходного, выдачи его на периферийное устройство, подготовки следующего цикла. Для проектируемого фильтра это время складывается как сумма затрат времени на преобразование аналогового входного отсчёта в код, обработку прерывания от Т/С0 и обработку прерывания от входа INT0 .

Длительность машинного цикла МК (1 мкс) постоянная, поэтому затраты времени на обработку прерываний можно оценивать количеством требуемых для этого машинных циклов. Число машинных циклов для каждой команды МК приведено в таблице команд.

При расчете суммарного количества машинных циклов для рабочего режима фильтра следует учесть, что разработанная программа содержит разветвления по знаку обрабатываемого отсчёта (команды JC). Умножение отрицательного отсчёта более длительно по времени. Время выполнения рабочего цикла фильтра максимально в том случае, когда все обрабатываемые программой отсчёты - отрицательные.

Таким образом, для выполнения одного цикла работы проектируемого фильтра Tф (с момента прерывания от Т/СО до выхода на метку STOP.) требуется время, равное: ТФ =86 ТМц + Ту=81,3 мкс < Тд=83 мкс, где Тмц =1 мкс - длительность машинного цикла, Ту =1,3 мкс - длительность входного устройства преобразования устройства, Тд =1 / Fд=1/12000 - интервал дискретизации фильтра. Число 86 показывает количество циклов программы необходимых для выполнения всех операций заложенных в программе, вычислении выходного отсчёта, подготовки следующего цикла. Количество циклов считается после того как выполнена инициализация программы (период переполнения Т/С0, пуск Т/С0, разрешение прерываний от Т/С0 и INT0, порт РА РУ55-ввод, порт РВ РУ55 вывод. Все обрабатываемые отсчёты - отрицательные, так как умножение отрицательного отсчёта более длительно по времени.

Таблица

Команда

Число использований в программе

Количество затраченных циклов

MOV DPTR,#data 16

2

4

MOVX A,@DPTR

1

2

MOVX @DPTR,A

1

2

MOV direct,#data

4

8

MOV A,direct

8

8

MOV direct,A

4

4

MOV direct, direct

2

4

RLC A

3

3

JC A

3

6

RRC A

3

3

CPL A

6

6

INC A

6

6

MUL AB

6

24

ADD A, direct

2

2

RETI

2

4

Тип частотной избирательности фильтра. Характеристики для заданных и реальных значений коэффициентов (нули и полюса, АЧХ, ФЧХ)

Заданное разностное уравнение: yn = 0,95xnn-1 +0,95yn-1

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

yn = b0 xn + b1 xn-1 + b2 xn-2 - a1 xn-1 - a2 yn-2

Коэффициенты b0, b1, b2, a1, a2 определяют свойства фильтра.

b0 =0,95; b1 = 1; b2 =0; a1 = 0,95; a2 = 0

Применив z-преобразование к разностному уравнению, получим передаточную функцию H(z), которая описывает свойства фильтра в z-плоскости и при заданных в ТЗ коэффициентах имеет вид:

Передаточная функция имеет один полюс zx1 = -0.95 и один нуль

zo1 = -1.05263

Полюс расположен внутри круга единичного радиуса - фильтр устойчив.

Для получения характеристик фильтра использовался пакет расширения MATHCAD

АЧХ фильтра

Рис.

Рис.

Ограничение длины разрядной сетки (8 разрядов) приводит к погрешности представления коэффициентов, поэтому реализуемая передаточная функция равна


Подобные документы

  • Расчет цифрового и аналогового фильтра-прототипа. Структурные схемы и реализационные характеристики фильтра. Синтез цифрового фильтра в системе программирования MATLAB. Частотные и импульсные характеристики цифрового фильтра, карта его нулей и полюсов.

    курсовая работа [564,8 K], добавлен 24.10.2012

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

    курсовая работа [860,6 K], добавлен 28.11.2010

  • Разработка электрической принципиальной схемы цифрового фильтра и отладка рабочей программы на языке ассемблера, которая будет обеспечивать взаимодействие и работоспособность БИС входящих в состав фильтра, для реализации заданных свойств фильтра.

    курсовая работа [683,2 K], добавлен 21.03.2011

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

    курсовая работа [604,4 K], добавлен 24.10.2012

  • Изучение системы команд МК КР1830ВЕ31, их содержания, способов адресации на примере использования в программе цифрового фильтра. Взаимодействие аппаратной части фильтра и программы. Технология отладки программы с использованием программного отладчика.

    контрольная работа [1,4 M], добавлен 05.03.2011

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

    курсовая работа [774,7 K], добавлен 03.12.2010

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

    курсовая работа [3,3 M], добавлен 13.06.2016

  • Разработка и описание общего алгоритма функционирования цифрового режекторного фильтра на основе микропроцессорной системы. Обоснование аппаратной части устройства. Отладка программы на языке команд микропроцессора. Расчёт быстродействия и устойчивости.

    курсовая работа [266,1 K], добавлен 03.12.2010

  • Разработка схемы электрической принципиальной. Выбор номиналов резисторов, конденсаторов и усилителя. Расчет полосового фильтра. Статистический анализ схемы фильтра (анализ Монте-Карло), обоснование допусков на номиналы. Конструирование платы фильтра.

    курсовая работа [741,2 K], добавлен 14.01.2016

  • Расчет цифрового фильтра нижних частот с конечной импульсной характеристикой. Синтез фильтра методом окна (параболического типа). Свойства фильтра: устойчивость, обеспечение совершенно линейной фазочастотной характеристики. Нахождение спектра сигнала.

    курсовая работа [28,6 K], добавлен 07.07.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.