Разработка корреляционного фильтра. Разработка функциональной схемы, страница 4

M4=192;                                       // шаг 3*Pi/2

IMASK=0x01;                                         // разрешение прерывания от таймера

ICNTL=0x07;                                          // прерывание без вложения, с реакцией на перепад

ENA  TIMER;                             // таймер разрешен  (включен)

DO TAKT UNTIL FOREVER; // бесконечный цикл с тактовой частотой

MR=0;                                            // обнуление первого комплекта накопителя

ENA SEC_REG;                           // переключение на теневые регистры

MR=0;                                          // обнуление второго комплекта накопителя  

DIS SEC_REG;                              //переключение на основные регистры

CNTR=128;                                  // Число проходов цикла

DO DISK UNTIL CE;                  //цикл с частотой дискретизации

IDLE;                                            // ожидание прерывания

DISK:NOP;

AX1=DM(sin);                             // значение функции корреляции 1 сигнала

AY1=DM(cos);                            // значение функции корреляции 2 сигнала

AR= AX1-AY1;                           // 

IF GE jump yes;                           // условие принятия решения

IF LT jump no;

yes: AX0=1;

jump DAL;

no:  AX0=0;

jump DAL;

DAL: IO(port2)=AX0;

TAKT: NOP;                 

3.10 Текст подпрограммы korr.asm

#define sin 0x0147

#define cos 0x0148

.section/pm program;

.GLOBAL korr;

korr:

MX0=IO(PORT1);                  // Чтение из входного порта

MODIFY(I5,M7);

MY0=PM(I5,M5);                   //отсчет sin

MR=MR+MX0*MY0(SS);       // перемножение отсчетов и накопление

DM(sin)=MR1;                          //

ENA SEC_REG;                         // переключение на теневые регистры

MX0=IO(PORT1);                      // Чтение из входного порта

MY0=PM(I5,M4);                     //отсчет cos 

MR=MR+MX1*MY1(SS);       // перемножение отсчетов и накопление

DM(cos)=MR1;                        

DIS SEC_REG;                          //переключение на основные регистры

RTI;                                           // Возврат из подпрограммы


3.11 Результаты выполнения


   3.12 Расчет затрат времени на выполнение программы.

Расчет времени выполнения разработанной программы проводится для того, чтобы убедиться в том, справляется ли процессор с решаемой задачей.

       Программа обработки имеет два цикла: внутренний, выполняемой с частотой дискретизации fд, и внешний, выполняемый с тактовой частотой FТ. Соотношение частот k=fд/Fт.

Период дискретизации определяется прерываниями от таймера. Интервал дискретизации составляет 1/fД, на нём можно разместить fп/fд циклов процессора. После k проходов по внутреннему циклу программа выполняет подпрограммы, находящиеся во внешнем цикле. Их выполнение должно быть обязательно завершено до возникновения очередного прерывания. Отсюда следует, что суммарное время однократного выполнения всех подпрограмм, находящихся и во внутреннем, и во внешнем циклах программы, не должно превышать периода дискретизации.

Время обработки одной инструкции tц=100нс. Всего на выполнение программы MSK потребуется 32 цикла процессора, следовательно, время на выполнение программы t=32*100=3.2мкс. Период цикла обработки с частотой дискретизации: . Время на выполнение программы не превышает периода дискретизации.

Коэффициент использования процессора:

4.Разработка функциональной схемы

4.1 Карта  пространства  ввода/вывода

Карта памяти программы для MMAP=0

Карта пространства ввода/вывода