Коэффициент усиления будет равен:
Т.о. если задать один из резисторов, можно легко вычислить величину двух других.
Рис.1
Использовать дополнительные регистры для хранения данных, выдаваемых АЦП, ненужно, поскольку заданный АЦП имеет внутренний трёхстабильный регистр. Однако для корректной подачи сигнала прерывания, свидетельствующего об обновлении данных на выходе АЦП, на вход МП и сброса этого сигнала нам потребуется обычный D-триггер, на тактовый вход которого подается сигнал готовности данных с выхода
АЦП. Триггер должен переключаться в единичное состояние по заднему фронту тактового импульса, т.е. при изменении уровня L-H. Во время поступления сигнала чтения из порта, данные из внутреннего регистра АЦП поступают на шину данных ЦП. Одновременно с этим сбрасывается сигнал прерывания, путем установки триггера в нулевое состояние. Во время обработки ЦП очередного отсчета АЦП должно находиться в 3 состоянии, т.е. не нагружать шину данных ЦП, для чего на вход АЦП должен быть подать сигнал высокого уровня.Для согласованной работы ОЗУ, ПЗУ и ЦП выберем микросхемы памяти, которые имеют несколько разрешающих входов и поддерживают трёхстабильное состояние. Для нашего случая наиболее подходящими являются микросхемы:
· RAM- K537РУ17, имеющая организацию 8192 слов
8 разрядов, а также необходимые нам входы:- выбор микросхемы
- разрешение по выходу
· ROM- К1603РЕ1. Организация- 2048 слов
8 разрядов.Дополнительные входы:
- выбор микросхемы
- сигнал разрешения выхода
Таблицы истинности обеих микросхем и их более подробное описание приведены в приложении.
В связи с тем, что обе микросхемы памяти выполнены по КМОП технологии, можно отказаться от использования буферных регистров КП580ИП82/ИП83 в ЦП, поскольку нагрузочной способности шин адреса (ША) и данных МП вполне достаточно для обеспечения нормальной работы устройства в целом.
Выбор ОЗУ или ПЗУ при поступлении сигнала чтения памяти от ЦП удобней всего осуществить, используя 11-ю линию А11 ША (см. рис.2). При этом обращение к ПЗУ происходит при подаче процессором сигнала чтения памяти и наличия на ША адреса ячейки в диапазоне
. В остальных случаях ПЗУ находиться в 3 состоянии.Для обращения к ОЗУ ЦП должен сформировать сигнал читать (или записать) и на ША выставить адрес ячейки ОЗУ в диапазоне
. В остальных случаях ОЗУ также находиться в 3 состоянии.Для обмена данными с внешним устройством организуем порт вывода, представляющий собой обычный 8- разрядный регистр с защелкой. Сигналом готовности данных внешнему устройству может служить сигнал вывода в порт ЦП.
Анализируя всё выше перечисленное можно составить общую структурную схему устройства.
Рис.2
4. Разработка и обоснование общего алгоритма функционирования устройства и его описание.
При включении питания или перезагрузке цифровое устройство должно автоматически настроиться на работу. Для этого аппаратно реализуется схема запуска, которая обнуляет программный счетчик при запуске устройства или при кратковременном сбое питания. Кроме этого необходимо программно настроить порты ввода- вывода, установить маски прерываний (данная функция не поддерживается МП ВМ80А), организовать стек для хранения данных во время выполнения подпрограмм. Этими задачами занимается программа инициализации.
Вторым этапом работы обобщённого алгоритма является основная программа- алгоритм фильтрации.
Обобщённый алгоритм функционирования устройства представлен на рис.3
Данные в аккумулятор загружаются из порта ввода по приходу сигнала прерывания RST 7. Работать с прерываниями намного выгоднее, чем реализация постоянного опроса порта о факте наличия данных, поскольку при этом снижаются аппаратные затраты и повышается быстродействие устройства. С учетом этого укрупненный алгоритм функционирования основной программы изображён на рис.4
Аппаратно- реализуемые операции Програмно- реализуемые операции
Рис.3
После загрузки данных выполняется основная программа, реализующая алгоритм фильтрации согласно заданному линейно разностному уравнению:Анализируя данное уравнение можно отметить следующее:
· в связи с наличием отрицательных единичных коэффициентов организуем подпрограмму инвертирования знака числа.
процедуру деления на 4 проще всего будет выполнить путём двух последовательных арифметических сдвигов вправо. Арифметический сдвиг выгоднее заменить логическим, поскольку при этом сокращается время выполнения программы. На точность вычислений данный переход не повлияет, поскольку перед выводом данных мы переходим к однобайтовой форме представления чисел.
· поскольку при вычислении очередного значения Y(n) используются четыре предыдущих значения входных отсчетов, выгоднее всего использовать подпрограмму формирования очереди, т.е. сдвига поступающих отсчетов, вызываться, которая будет непосредственно после вывода данных в порт.
· В связи с тем, что используемый нами АЦП выдает данные в прямом коде, после операции ввода необходимо перевести код АЦП в код МП, т.е.в дополнительный код.
· Т.к. по заданию выходные данные требуется представить в обратном параллельном коде, перед выводом данных в порт переведем их из дополнительного в обратный код.
С учетом особенностей используемого МП следует обратить внимание на то что:
· Для повышения точности вычислений, перейдем от однобайтового представления числа к двухбайтовому. Данный переход сделаем сразу после ввода данный из порта.
· Перед выводом данных придется обратно перейти к однобайтовому представлению чисел, т.е. масштабировать полученный результат.
Алгоритм работы программной части синтезируемого устройства изображен на рис.5
Рис.5
5. Разработка программы
По описанному в п.4 алгоритму разработаем программу на языке микропроцессора.
Разрабатываемая программа должна полностью соответствовать требованиям, предъявленным к ней в предыдущих пунктах. Кроме этого, в целях повышения быстродействия, вычисление заданного линейно разностного уравнения должно выполняться с максимальной скоростью, т.е. за наименьшее число машинных тактов.
Текст разработанной программы:
Курсовая работа
на тему: Цифровой корректирующий фильтр
выполнил: ст.гр. 116 Сидорочкин Д.В.
Программа фильтрации сигнала.
исходные данные
линейное разностное уравнение Y(n-2)=[X(n) - X(n-1) + 4X(n-2) - X(n-3)+ X(n-4)]/4 = [X(n) + [- X(n-1)] + [-X(n-4)]]/4 + X(n-2)
частота дискретизации Fд = 6 (кГц)
входной сигнал - аналоговый, диапазон изменения (-4.5..+4.5)В
аналого-цифровой преобразователь - К1108ПВ1
выходной сигнал - 8-разрядный параллельный обратный код
микропроцессор - КР580ВМ80А
Программа на языке ассемблера.
SPACESON
ADRSP:.EQUFFFH
PORTIN1:.EQU001H
PORTOUT:.EQU002H
DATA
X:DW00H
Y:.DW00H
Z:DW00H
XN: DW00H
XN_1:DW00H
XN_2:.DW00H
XN_3: DW00H
XN_4: .DW00H
XN_01: .DW00H
XN_03: .DW00H
S: .DW00H
CODE
;-------------------------------------
;Подпрограмма начальных установок.
BGN:MACRO
LXISP,ADRSP
ENDM
;-------------------------------------
;Подпрограмма ввода числа "X" из порта в аккумулятор и преобразование его в дополнительный код с последующим переводом в 2-х байтное число. Результат записывается по адресу Х.
VVX:MACROX
INPORTIN1
PC_DC
1B_2B
SHLDX
ENDM
;-------------------------------------
;Подпрограмма перевода числа из кода АЦП в дополнительный код.
PC_DC:MACRO
RAL
JNCC1#
CMA
ADI02H
C1#:RAR
ENDM
;-------------------------------------
;Подпрограмма перевода 1-но байтного числа в 2-х байтное.
1B_2B:MACRO
MOVL,A
RAL
SBBA
MOVH,A
ENDM
;-------------------------------------
;Подпрограмма суммирования 2-х чисел, находящихся по адресу X и Y. Результат выводится по адресу Z.
SUM:MACROX,Y,Z
LHLDX
XCHG
LHLDY
DADD
SHLDZ
ENDM
;-------------------------------------
;Деление на 4-е. Делимое находится в регистровой паре HL. Результат выводится по адресу X.
DELEN4:MACROX
MOVA,H
RAR
MOVH,A
MOVA,L
RAR
MOVL,A
MOVA,H
RAR
MOVH,A
MOVA,L
RAR
MOVL,A
SHLDX
ENDM
;-------------------------------------
Перевод 2-х байтного числа в1-но байтное. Исходные данные находятся в регистровой паре HL. Результат находится в аккумуляторе.
2B_1B:MACRO
MOVA,H
RAR
MOVH,A
MOVA,L
RAR
ENDM
;-------------------------------------
;Перевод результата вычислений из дополнительного кода в обратный. Исходные данные и результат находятся в аккумуляторе.
DC_OK:MACRO
RAL
JNCD1#