Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦПОС - Методические указания к курсовому проект...doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
961 Кб
Скачать
☆

3.2. Командный файл компоновки

/* Командный файл компоновки для КИХ фильтра */

-V0 /*версия нулевая*/

-e reset /* задание начального адреса счетчика программ

после загрузки */

-m nrf_in.map /* имя файла с таблицей компоновки */

-o nrf_in.out /* имя выходного файла */

nrf_in.obj /* имена компонуемых файлов */

/* Задание конфигурации памяти проектируемой системы*/

MEMORY

{

/* Определение блоков в памяти программ с заданием их начальных

адресов и длины, блоки не должны перекрываться */

PAGE 0 :

VECS : origin=0x00, length=0x0040

PROG : origin=0x0040, length=0x0300/**/

/* Определение блоков в памяти данных с заданием их начальных

адресов и длины, блоки не должны перекрываться */

PAGE 1 :

: /* предопределенный блок памяти

для размещения регистров процессора, отраженных на память */

REGS : origin=0x0000, length=0x0060

/* выделенные блоки в памяти данных для размещения секций данных

исходной программы */

BLOCK0: origin=0x0100, length=0x0100

BLOCK1: origin=0x0200, length=0x0100

BLOCK2: origin=0x0300, length=0x0100

}

/* указания по размещению секций программы в блоках

заданной выше памяти системы */

SECTIONS

{

/*размещение секции Vectors в блоке памяти

программ VECS начиная с начального адреса блока */

Vectors : {} > VECS PAGE 0

/* секции программы Init_main, Vvod, Filter, Vivod размещаются в блоке памяти программ PROG в друг за другом в указанном порядке начиная с начального адреса блока; они образуют чисто условный модуль Main в выходном файле */

Main: { * ( Init_main)

* ( Vvod)

* (Filter)

* (Vivod)

} > PROG PAGE 0

/* различные секции данных исходной программы размещаются в

выделенных блоках памяти данных */

.data : {} > BLOCK0 PAGE 1

BUFFER2 : {} > BLOCK1 PAGE 1

BUFFER1 : {} > BLOCK2 PAGE 1

}

3.3.Программа реализации рекурсивного фильтра

3.3.1. Прямая форма

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

; Программа реализации БИХ фильтра в прямой форме

.version 50

.global BUFFER2

.mmregs

* Задание значений символов, используемых в программе

OUTPORT .set 51h

INPORT .set 50h

.data

; данные для фильтра

INAD .word 0

OUTAD .word 0

MM1 .word 32768*74/100 ; масштабный множитель первого звена 0,74

.sect "KOF_VAR"

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

; Коэффициенты фильтра, к-ты Ai записываются с противоположным знаком

; Первое звено

B01 .word 32768*2793/10000 ; B01 = 0,2793

B11 .word (32768*307/10000) ; B11 = 0,0307

B21 .word 32768*2793/10000 ; B21 = 0,2793

A11 .word 32768*5586/10000 ; A11 = 0,5586

A21 .word -(32768*8289/10000) ; A21 = -0,8289

; переменные фильтра

; Первое звено

In1 .Word 0 ; входной отсчет

S11 .word 0 ; задержанные входные отсчеты

S21 .word 0 ;

OUT1 .word 0 ; выходной отсчет

S31 .word 0 ; задержанные выходные отсчеты

S41 .word 0 ;

.sect "Vectors"

* Таблица векторов прерываний

B START

B BEGIN ; INT1 внешние прерывания

B BEGIN ; INT2

B BEGIN ; INT3

B BEGIN ; TINT прерывание по таймеру

.sect "Init_main"

* Инициализация процессора и основная программа

START:

* установка режимов работы

SETC INTM ; запрет прерываний на время установки режимов работы

CLRC OVM ; режим переполнения

SPM 1 ; режим сдвига значений при передаче (PREG) -> АЛУ

SETC SXM ; режим расширения знака

LDP #0 ; установка разрешения необходимых прерываний

SPLK #0Fh,IMR

CLRC INTM ; разрешение прерываний

LOOP:

NOP ; основная программа – бесконечная петля ожидания

; прихода запроса на прерывание

B LOOP

* подпрограмма прерывания, которая состоит из трёх основных частей

.sect "Vvod"

* прием очередного отсчета

BEGIN:

LDP #INAD