Смекни!
smekni.com

Проектирование цифрового корректирующего фильтра (стр. 2 из 5)

Коэффициент усиления будет равен:


Т.о. если задать один из резисторов, можно легко вычислить величину двух других.

Рис.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#