Помощь в написании студенческих работ
Антистрессовый сервис

Программно-математическое обеспечение устройства специализированного вычислительного телеметрического

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Принципы, используемые в первом процессоре, применяем и здесь. Так как память, переключаемая между процессорами, то карта памяти сохраняется и для второго процессора. Процесс выдачи происходит по запросам от СТИ, не зависимо от режима работы. Так как в различных режимах работы БЦВС состав и структура кадра отличаются, поэтому продолжаем отслеживать режим работы БЦВС. При переключении памяти… Читать ещё >

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

ПРОГРАММНО-МАТЕМАТИЧЕСКОЕ ОБЕСПЕЧЕНИЕ УСТРОЙСТВА СПЕЦИАЛИЗИРОВАННОГО ВЫЧИСЛИТЕЛЬНОГО ТЕЛЕМЕТРИЧЕСКОГО

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

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

1. Назначение УСВТ

вычислительный телеметрический кадр программный

Разрабатываемое программное обеспечение (ПО) предназначено для устройства специализированного вычислительного телеметрического (УСВТ) С-13 165. Данное УСВТ используется в ракетоносителях типа СОЮЗ как промежуточное устройство в телеметрической системе ракетоносителя. Задачей УСВТ является сбор информации с кодовых линий бортовой аппаратуры системы управления (БАСУ), формирование телеметрического кадра цифровой информации и передача данной информации в систему телеметрической информации (СТИ). СТИ после чего производит окончательное формирование телеметрической информации и передает ее на землю по средствам радиоканала. Время приема и передачи информации ограничивается циклом работы бортовой центральной вычислительной системы (БЦВС). Состав информации зависят от режима работы ракетоносителя. Ракетоноситель имеет 3 основных режима работы: комплексные регламентные проверки (КРП), основная программа предстарта (ОПС) и собственно сам полет — основной режим (ОР).

2. Описание УСВТ и принцип работы

УСВТ представляет собой 3-х канальный приемник и 2-х канальный передатчик. Первый и второй передатчик обрабатывают информацию со всех трех входных каналов. Прием информации со всех входных каналов на один выходной канал организован на процессоре ВЦ1865ВМ2, который является отечественным аналогом процессора фирмы Texas Instruments TMS320C25. ВЦ1865ВМ2 имеет ту же самую технологию, структуру и систему команд, что и зарубежный процессор, поэтому используется то же самое программное обеспечение для разработки и отладки программ. Передача информации на один выходной канал так же организована на процессоре ВЦ1865ВМ2. Схемотехникой УСВТ взаимодействие между процессорами организовано по средствам переключаемой внешней ОЗУ (оперативно запоминающее устройство). Таким образом, приемник и передатчик работают независимо друг от друга, т. е. один процессор накапливает входную информацию во время одного цикла работы системы, второй процессор производит обработку и передачу информации, накопленной в предыдущем цикле. Переключение ОЗУ происходит после приема данных, сообщающих об окончании цикла работы. Информация, циркулирующая в кодовой магистрали, представляет собой командные слова (КС) и слова данных (СД). Слова 16-разрядные.

3. Исходные данные

3.1 Основные технические требования

вычислительный телеметрический кадр программный

УСВТ должен решать следующие задачи:

· Формировать служебное слово УСВТ по результатам самоконтроля

· Формировать и выдавать в СТИ кадр заданной структуры с произвольным содержанием и длительностью по включению питания до момента поступления входной информации

· Осуществлять сбор информации из магистральных кодовых линий связи БАСУ за интервал времени между поступлением из БЦВС в УСВТ КС «Конец выдачи в СТИ»

· Формировать кадр заданной структуры и составом информации в соответствии с разделами 3.2, 3.3, 3.4

Структура выходного кадра УСВТ должна быть следующая:

· Три маркерных слова с кодом 0хFFFF

· Слово данных при КС «Конец выдачи в СТИ»

· Служебное слово УСВТ

· Информационные слова кадра УСВТ Длительность кадра УСВТ равна интервалу времени между поступлением в УСВТ первых командных слов после массива с КС «Конец выдачи в СТИ».

Начало считывания выходного кадра УСВТ должно соответствовать моменту прихода первого КС после массива с КС «Конец выдачи в СТИ».

УСВТ должен сформировать признак «Конец выдачи в СТИ», если на его вход не поступил КС «Конец выдачи в СТИ», при условии наполнения по входу прибора 1200 слов. Сформированный признак «Конец выдачи в СТИ» является условием для формирования маркера кадра.

При длительности цикла БЦВС (60±1) мс и частоте считывания информации в СТИ 12,8 кГц объем информации, передаваемой в СТИ в выходном кадре прибора, составляет 376−387 16-разрядных слов.

Информационный состав кадра УСВТ определяется в зависимости от режима работы БАСУ, признаки которого содержаться в 16−12 разрядах СД при КС «Конец выдачи в СТИ»:

· Режим КРП — 10 100

· Режим ОПС — 100

· Режим ОР (Временной интервал t0 — t0) — 1 110

· Режим ОР (Временной интервал t0 — tk) — 111XX

Требования к информационному составу приведены в ИД на программно-математическое обеспечение (ПМО) УСВТ, в данной пояснительной записке к курсовой работе не приводиться по причине коммерческой тайны.

Прибор должен анализировать признак режима работы БАСУ в каждом кадре для режимов КРП и ОПС. Анализ режима работы в каждом кадре для режима ОР не требуется.

Выдача в СТИ информации последнего зарегистрированного в приборе слова кадра обеспечивается поступлением из БАСУ КС «Конец выдачи в СТИ».

3.2 Требования к информационному составу кадра УСВТ при КРП

Информационный состав кадра УСВТ при КРП одинаковый для первого и второго выходных потоков УСВТ приведен в таблице 1.

Таблица 1 — Структура и состав кадра для одного потока УСВТ при КРП

Номер слова в кадре

Содержание слова

Маркер (FFFF)

Маркер (FFFF)

Маркер (FFFF)

СД при КС «Конец выдачи в СТИ»

Служебное слово УСВТ

Номер кадра

Первое слово I канала БЦВС

Последнее слово I канала БЦВС

Первое слово II канала БЦВС

Последнее слово II канала БЦВС

Первое слово III канала БЦВС

Последнее слово III канала БЦВС

На выход УСВТ должна быть передана вся информация (КС, ОС, СД) трех каналов обмена между БЦВС и СУ, циркулирующая в магистралях. Порядок слов в кадре должен соответствовать порядку их поступления на вход УСВТ.

Допускается не контролировать цифровую информацию, циркулирующую в магистралях обмена БЦВС с абонентами, в течении 1 мс после прихода СД при КС «Конец выдачи в СТИ».

УСВТ должен сформировать порядковый номер кадра и передать его в шестом слове кадра. Начало счета кадров с момента поступления информации на вход УСВТ после включения питания.

3.3 Требования к информационному составу кадра УСВТ при ОПС

Информационный состав кадра УСВТ приведен в таблице 2 для первого и второго выходных потоков УСВТ.

Таблица 2 — Структура и состав кадра УСВТ при ОПС

Выход УСВТ

1 поток

2 поток

Номер слова в кадре

Содержимое слова

Маркер (FFFF)

Маркер (FFFF)

Маркер (FFFF)

Маркер (FFFF)

Маркер (FFFF)

Маркер (FFFF)

СД командного слова «Конец выдачи в СТИ»

Служебное слово УСВТ

Номер кадра

Обменная информация из I канала БЦВС

Обменная информация из II и III каналов БЦВС

Нечетные массивы расчетной информации

Четные массивы расчетной информации

Обменную информацию с КС AE06 ввести в состав выходного кадра УСВТ с 3-х каналов.

3.4 Требования к информационному составу кадра УСВТ при ОР

Информационный состав кадра УСВТ при ОР, номера слов кадра БЦВС (из состава массивов КС E220), включенных в состав кадра УСВТ, временные интервалы контроля разовых параметров и логико-временная диаграмма работы БЦВС приведены в исходных данных. В ПЗ не приводится по причине коммерческой тайны и большого объема информации, носящей чисто технический характер.

4. Разработка программно-математического обеспечения УСВТ

4.1 Разработка программного обеспечения первого процессора (прием информации)

Всю входную информацию, поступающую на УСВТ условно можно разделить на 5 групп, если не считать деление на каналы БЦВС. В каждой группе информация объединяется по первым пяти битам командного слова — они имеют одинаковую кодировку: E000, 9800, C800, 4000 и A800. Так же необходимо сохранять порядок поступление слов на вход УСВТ, поэтому всю входную информацию необходимо сохранять по порядку их поступления. Прием информации осуществляется по сигналам внешних прерываний, причем для КС предусмотрено одно внешнее прерывание, для СД другое внешнее прерывание. Так же для предотвращения случайных помех по входу при включении всей аппаратуры необходимо предусмотреть запрет каких либо действий в течении 10 секунд после включения питания. Так же у процессора есть возможность хранить данные в своей ПЗУ (памяти программ) и загружать эти данные в память данных. У процессора еще имеется возможность перехода в памяти программ по адресу, находящемуся в аккумуляторе, т. е. переход к необходимым местам программы, адреса которых можно хранить в памяти программ в виде константы. В процессоре имеется 8 регистров общего назначения, которые позволяют производить обращение к ОЗУ, операции сравнения, участвовать в операциях условного перехода и подчиняются операциям инкремента и декремента. ОЗУ картирована. Первые адреса занимают вектора прерывания и различные регистры процессора, затем идет нулевой банк ОЗУ, к которому имеется доступ из любого уровня доступа (в нем обычно размещают своеобразный стек при обработке прерываний и глобальные переменные). Затем идет остальная часть ОЗУ, которая используется при работе программы. Для условного обозначения конца кадра в ОЗУ или пользовательской таблицы в ПЗУ используется кодировка FFFF.

Исходя из выше сказанного, организуем ОЗУ, ПЗУ и программу следующим образом:

· Поделим ОЗУ на 3 зоны по 1200 слов в каждой для хранения входной информации. Каждая зона для отдельного потока.

· Так же выделим 5 зон для хранения адресов каждого из 5 групп КС. Для каждой зоны максимальное количество КС в одном цикле приведено в ИД.

· Создадим таблицу в ПЗУ, в которой будут храниться адреса процедур сохранения ссылок на КС-ы каждой группы.

· Используем счетчик таймер для организации 10-секундной задержки по включению питания.

· Организуем обработку прерываний.

Таким образом получаем 4 основных куска программы:

· Начальная инициализация, очистка ОЗУ, настройка таймера на отсчет 10 секунд, разрешение прерываний от таймера, запрет внешних прерываний, настройка регистров и переменных.

· Обработка прерывания по таймеру, после отсчета 10 секунд отключение таймера и разрешение внешних прерываний.

· Обработка внешнего прерывания по КС. Сохранение трех потоков в ОЗУ, сохранение адресов пришедших КС в соответствующую группу, проверка на наличие КС «Конец выдачи в СТИ», в случаи отсутствия данного КС формирование собственного признака по переполнению.

· Обработка прерывания по СД. Сохранение в памяти трех потоков в ОЗУ, проверка на наличие конца цикла БЦВС, обозначение конца кадра.

Таблица с адресами функций обработки КС и деления их по группам построена так, что при прибавлении адреса начала таблицы к выделенным по маске старшим 5 битам КС, сдвинутым в право на 11 разрядов попадаем на ячейку, в которой хранится адрес процедуры обработки КС соответствующей группы. Блок-схемы программы приведены в приложении 2. Карта памяти приведена в приложении 1. Исходный текст программы на языке ассемблера приведен в приложении 4.

4.2 Разработка программного обеспечения второго процессора (передача)

Принципы, используемые в первом процессоре, применяем и здесь. Так как память, переключаемая между процессорами, то карта памяти сохраняется и для второго процессора. Процесс выдачи происходит по запросам от СТИ, не зависимо от режима работы. Так как в различных режимах работы БЦВС состав и структура кадра отличаются, поэтому продолжаем отслеживать режим работы БЦВС. При переключении памяти генерируется внешнее прерывание. По запросу от СТИ генерируется прерывание от последовательного порта ввода / вывода. Исходя из циклограмм, логико-временных диаграмм, структуры и состава выходного кадра в различных режимах работы БЦВС составляются таблицы, в которых указаны функции обработки данных и функции их инициализации в том порядке, в котором необходимо их запускать. Так же составляются функции вызова этих таблиц в зависимости от режима, в котором находится БЦВС. В функциях производиться полный перебор таблицы с функциями, по окончании таблицы программа переходит в бесконечную петлю. Так же в функциях используется переход в бесконечную петлю по определенным условиям. Вся программа строится на двух потоках. Первый поток работает в фоновом режиме и подготавливает данные для передачи, запускается по прерыванию, генерируемого в момент переключения ОЗУ и работает вплоть до бесконечной петли. Второй поток производит непосредственную выдачу подготовленных данных в заданной последовательности. Второй поток работает по прерываниям, генерируемым по запросам от СТИ. В случаи, если данные закончились, а запросы продолжаются, происходит выдача нолей. Вся программа построена на условных и безусловных переходах, а так же переходах по адресам, которые задаются в ходе работы процессора в таблицах и определенных переменных.

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

· Сохраняем в стек статусные регистры, аккумулятор, регистры общего назначения

· Загружаем контекст процедур выдачи

· Переходим по адресу, содержащемся в определенной переменной на соответствующую процедуру

· По окончанию процедуры переходим на завершение обработки прерывания.

· Сохраняем в стек контекст процедур выдачи

· Загружаем регистры общего назначения, аккумулятор, статусные регистры, выходим из прерывания.

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

· Определение режима работы БЦВС

· Выбор функций для обработки данных

· Загрузка адресов в определенные переменные для последующих процедур и процедур выдачи данных.

· Переход на обработку данных

· После завершения переход в бесконечную петлю в ожидании следующего кадра Так же некоторые параметры накапливаются в течении длительного времени, т. е. на протяжении нескольких кадров. В частности параметры системы спутниковой навигации. Поэтому в конце ОЗУ выделена специальная область памяти, которая является хранилищем, и заполняется по мере прихода данных от кадра к кадру. Соответственно выдача этих параметров производиться в определенное время, что учтено в функциях и таблицах.

Блок-схемы программы второго процессора, приведенные в приложении 3, являются обобщенными, описывают алгоритм в общих чертах. Исходный код программы, приведенный в приложении 5, так же является не полным, ввиду коммерческой тайны таблиц и параметров, передаваемых в телеметрии.

Заключение

В процессе написания программы происходила отладка по частям на симуляторе с использованием имитационных данных. Так же производилась отладка программы на автономном рабочем месте программиста с использованием реального прибора и того же имитационного материала. По завершению отладки, была произведена отработка на центральном моделирующем комплексе и комплексном стенде с использованием реального оборудования, используемого в ракетоносителе. УСВТ прошла данную отработку без ошибок, что говорит о верности написания ПМО УСВТ. Полученная информация при отработке на комплексном стенде и центральном моделирующем комплексе соответствует контрольным данным.

Список используемой литературы

1. ИД на разработку ПМО УСВТ

2. ТЗ «Устройство специализированное вычислительное телеметрическое

Приложение 1

Карта памяти

A

B

C

D

E

F

1 КАНАЛ

2 КАНАЛ

8B4

3 КАНАЛ

D64

BEGIN_OF_PR

INDEX_OF_4000

12DC

INDEX_OF_C800

INDEX_OF_9800

13B8

INDEX_OF_E000

INDEX_OF_A800

ССН

2A0

2B0

2C0

2D0

2E0

2F0

3A0

3B0

3C0

3D0

3E0

3F0

4A0

4B0

4C0

4D0

4E0

4F0

5A0

5B0

5C0

5D0

5E0

5F0

6A0

6B0

6C0

6D0

6E0

6F0

7A0

7B0

7C0

7D0

7E0

7F0

8A0

8B0

8C0

8D0

8E0

8F0

9A0

9B0

9C0

9D0

9E0

9F0

A00

A10

A20

A30

A40

A50

A60

A70

A80

A90

AA0

AB0

AC0

AD0

AE0

AF0

B00

B10

B20

B30

B40

B50

B60

B70

B80

B90

BA0

BB0

BC0

BD0

BE0

BF0

C00

C10

C20

C30

C40

C50

C60

C70

C80

C90

CA0

CB0

CC0

CD0

CE0

CF0

D00

D10

D20

D30

D40

D50

D60

D70

D80

D90

DA0

DB0

DC0

DD0

DE0

DF0

E00

E10

E20

E30

E40

E50

E60

E70

E80

E90

EA0

EB0

EC0

ED0

EE0

EF0

F00

F10

F20

F30

F40

F50

F60

F70

F80

F90

FA0

FB0

FC0

FD0

FE0

FF0

10A0

10B0

10C0

10D0

10E0

10F0

11A0

11B0

11C0

11D0

11E0

11F0

12A0

12B0

12C0

12D0

12E0

12F0

13A0

13B0

13C0

13D0

13E0

13F0

14A0

14B0

14C0

14D0

14E0

14F0

15A0

15B0

15C0

15D0

15E0

15F0

16A0

16B0

16C0

16D0

16E0

16F0

17A0

17B0

17C0

17D0

17E0

17F0

18A0

18B0

18C0

18D0

18E0

18F0

19A0

19B0

19C0

19D0

19E0

19F0

1A00

1A10

1A20

1A30

1A40

1A50

1A60

1A70

1A80

1A90

1AA0

1AB0

1AC0

1AD0

1AE0

1AF0

1B00

1B10

1B20

1B30

1B40

1B50

1B60

1B70

1B80

1B90

1BA0

1BB0

1BC0

1BD0

1BE0

1BF0

1C00

1C10

1C20

1C30

1C40

1C50

1C60

1C70

1C80

1C90

1CA0

1CB0

1CC0

1CD0

1CE0

1CF0

1D00

1D10

1D20

1D30

1D40

1D50

1D60

1D70

1D80

1D90

1DA0

1DB0

1DC0

1DD0

1DE0

1DF0

1E00

1E10

1E20

1E30

1E40

1E50

1E60

1E70

1E80

1E90

1EA0

1EB0

1EC0

1ED0

1EE0

1EF0

1F00

1F10

1F20

1F30

1F40

1F50

1F60

1F70

1F80

1F90

1FA0

1FB0

1FC0

1FD0

1FE0

1FF0

Приложение 2

Исходный текст ПО первого процессора

CHANEL .set 2

KC_END_CYCLE .set 0E221h

SIZE_OF_I .set 1200

BEGIN_OF_I .set 404h

BEGIN_OF_PR .set BEGIN_OF_I+SIZE_OF_I*3

INDEX_OF_4000 .set BEGIN_OF_I+SIZE_OF_I*3+200

INDEX_OF_C800 .set BEGIN_OF_I+SIZE_OF_I*3+365

INDEX_OF_9800 .set BEGIN_OF_I+SIZE_OF_I*3+420

INDEX_OF_E000 .set BEGIN_OF_I+SIZE_OF_I*3+495

INDEX_OF_A800 .set BEGIN_OF_I+SIZE_OF_I*3+530

WORD1 .set 60h

WORD2 .set 61h

WORD3 .set 62h

PR_KS .set 63h

PR_END .set 64h

PREV_KS .set 65h

PREV_ADR .set 66h

VAR1 .set 67h

VAR2 .set 68h

sect «vect»

B BEGIN_PROG

B INT_IC

B INT_KC

text

INT_KC

DINT

IN PR_KS, 0

OUT 64h, 0Ch

LAC PR_END

BZ m_NEXT_KADR

ZAC

SACL PR_END

OUT 60h, 1

m_NEXT_KADR

RPTK 20

NOP

if CHANEL = 1

IN WORD1,0

IN WORD2,2

IN WORD3,1

endif

if CHANEL = 2

IN WORD2,0

IN WORD3,2

IN WORD1,1

endif

OUT 64h, 8h

LAC WORD1

CMPL

SACL *, 0, AR6

if CHANEL = 1

SACL VAR2

endif

LAC WORD2

CMPL

SACL *+, 0, AR7

if CHANEL = 2

SACL VAR2

endif

LAC WORD3

CMPL

SACL *+, 0, AR0

LAC VAR2,5

SACH VAR1

LAC VAR1

APAC

TBLR VAR1

LAC VAR1

BACC

TBL_KS

word m_INDEX_OTHER; 0h

word m_INDEX_OTHER; 1h

word m_INDEX_OTHER; 2h

word m_INDEX_OTHER; 3h

word m_INDEX_OTHER; 4h

word m_INDEX_OTHER; 5h

word m_INDEX_OTHER; 6h

word m_INDEX_OTHER; 7h

word m_INDEX_4000; 8h

word m_INDEX_OTHER; 9h

word m_INDEX_OTHER; Ah

word m_INDEX_OTHER; Bh

word m_INDEX_OTHER; Ch

word m_INDEX_OTHER; Dh

word m_INDEX_OTHER; Eh

word m_INDEX_OTHER; Fh

word m_INDEX_OTHER; 10h

word m_INDEX_OTHER; 11h

word m_INDEX_OTHER; 12h

word m_INDEX_9800; 13h

word m_INDEX_OTHER; 14h

word m_INDEX_A800; 15h

word m_INDEX_OTHER; 16h

word m_INDEX_OTHER; 17h

word m_INDEX_OTHER; 18h

word m_INDEX_C800; 19h

word m_INDEX_OTHER; 1Ah

word m_INDEX_OTHER; 1Bh

word m_INDEX_E000; 1Ch

word m_INDEX_OTHER; 1Dh

word m_INDEX_OTHER; 1Eh

word m_INDEX_OTHER; 1Fh

word 0FFFFh

m_INDEX_OTHER

MAR *+

EINT

B m_END

m_INDEX_4000

LARP AR4

SAR AR0,*+, AR0

MAR *+

EINT

B m_END

m_INDEX_C800

LARP AR3

SAR AR0,*+, AR0

MAR *+

EINT

B m_END

m_INDEX_9800

LARP AR2

SAR AR0,*+, AR0

MAR *+

EINT

B m_END

m_INDEX_A800

LARP AR5

SAR AR0,*+, AR0

MAR *+

EINT

B m_END

m_INDEX_E000

LARP AR1

SAR AR0,*+, AR0

MAR *+

LAC VAR2

XORK KC_END_CYCLE

BZ m_INDEX_E000_END

EINT

B m_END

m_INDEX_E000_END

LACK 1

SACL PR_END

EINT

B m_END

INT_IC

DINT

IN PR_KS, 0

OUT 64h, 0Ch

LAC PR_END

SUBK 1

BLEZ m_NEXT_KADR_IC

ZAC

SACL PR_END

OUT 60h, 1

m_NEXT_KADR_IC

RPTK 20

NOP

if CHANEL = 1

IN WORD1,0

IN WORD2,2

IN WORD3,1

endif

if CHANEL = 2

IN WORD2,0

IN WORD3,2

IN WORD1,1

endif

OUT 64h, 8h

LAC WORD1

CMPL

SACL *+, 0, AR6

if CHANEL = 1

SACL VAR2

endif

LAC WORD2

CMPL

SACL *+, 0, AR7

if CHANEL = 2

SACL VAR2

endif

LAC WORD3

CMPL

SACL *+, 0, AR0

LAC PR_END

XORK 1

BNZ m_IC_END_KADR

LAC VAR2

CALL END_KADR1

LAC VAR2

ANDK 0F800h

XORK 0A000h

BNZ m_OPS_END

ZAC

SACL PR_END

OUT 60h, 1

EINT

B m_END

m_OPS_END

LAC VAR2

ANDK 0F800h

XORK 02000h

BNZ m_IC_END_KADR_E000

ZAC

SACL PR_END

OUT 60h, 1

EINT

B m_END

m_IC_END_KADR_E000

LAC PR_END

ADDK 1

SACL PR_END

m_IC_END_KADR

SAR AR0, VAR1

LAC VAR1

SBLK 900+BEGIN_OF_I

BLZ m_NOT_MORE

LALK 1234h

CALL END_KADR

m_NOT_MORE

EINT

B m_END

BEGIN_PROG

DINT

LDPK 0

LACK 3h

SACL 4h

RSXM

LARP AR1

LRLK AR1,200h

LRLK AR0,2000h

ZAC

m1 SACL *+

CMPR 1

BBNZ m1

ZAC

SACL PR_END

LRLK AR1,1FFFh

SACL *

LRLK AR7, BEGIN_OF_I+SIZE_OF_I*2

LRLK AR6, BEGIN_OF_I+SIZE_OF_I

LRLK AR0, BEGIN_OF_I

LRLK AR5, INDEX_OF_A800

LRLK AR4, INDEX_OF_4000

LRLK AR3, INDEX_OF_C800

LRLK AR2, INDEX_OF_9800

LRLK AR1, INDEX_OF_E000

LALK TBL_KS

SACL VAR1

LT VAR1

MPYK 1

OUT 64h, 8h

RPTK 200

NOP

IN WORD1,0

LARP AR0

EINT

m_END

NOP

B m_END

END_KADR

LARP AR7

LRLK AR7,400h

SACL *+

SAR AR0, VAR1

LAC VAR1

SBLK BEGIN_OF_I

SACL *, 0, AR5

LALK 0FFFFh

SACL *, 0, AR4

SACL *, 0, AR3

SACL *, 0, AR2

SACL *, 0, AR1

SACL *, 0, AR0

LRLK AR7, BEGIN_OF_I+SIZE_OF_I*2

LRLK AR6, BEGIN_OF_I+SIZE_OF_I

LRLK AR0, BEGIN_OF_I

LRLK AR5, INDEX_OF_A800

LRLK AR4, INDEX_OF_4000

LRLK AR3, INDEX_OF_C800

LRLK AR2, INDEX_OF_9800

LRLK AR1, INDEX_OF_E000

ZAC

SACL PR_END

OUT 60h, 1

RET

END_KADR1

LARP AR7

LRLK AR7,400h

SACL *+

SAR AR0, VAR1

LAC VAR1

SBLK BEGIN_OF_I

SACL *, 0, AR5

LALK 0FFFFh

SACL *, 0, AR4

SACL *, 0, AR3

SACL *, 0, AR2

SACL *, 0, AR1

SACL *, 0, AR0

LRLK AR7, BEGIN_OF_I+SIZE_OF_I*2

LRLK AR6, BEGIN_OF_I+SIZE_OF_I

LRLK AR0, BEGIN_OF_I

LRLK AR5, INDEX_OF_A800

LRLK AR4, INDEX_OF_4000

LRLK AR3, INDEX_OF_C800

LRLK AR2, INDEX_OF_9800

LRLK AR1, INDEX_OF_E000

RET

Приложение 5

Исходный текст ПО второго процессора

ref m_PAR_NULL, m_MARK, m_INDEX

global XINT, INT0

INT_ST0 .set 60h

INT_ST1 .set 61h

INT_ACC_H .set 62h

INT_ACC_L .set 63h

INT_P_H .set 64h

INT_P_L .set 65h

INT_T .set 66h

INT_AR0 .set 67h

INT_AR0_WORK .set 68h

INT_AR7 .set 69h

INT_AR7_WORK .set 6Ah

SIZE_OF_I .set 1200

BEGIN_OF_I .set 404h

BEGIN_OF_PR .set BEGIN_OF_I+SIZE_OF_I*3

INDEX_OF_4000 .set BEGIN_OF_I+SIZE_OF_I*3+200

INDEX_OF_C800 .set BEGIN_OF_I+SIZE_OF_I*3+365

INDEX_OF_9800 .set BEGIN_OF_I+SIZE_OF_I*3+420

INDEX_OF_E000 .set BEGIN_OF_I+SIZE_OF_I*3+495

INDEX_OF_A800 .set BEGIN_OF_I+SIZE_OF_I*3+530

CONST_OR .set 0E000h

CONST_KRP .set 0A000h

CONST_OPS .set 02000h

CONST_OPS1 .set 02600h

CONST_OR_MASP .set 07000h

QUEUE_SIZE .set 800h

ADR_BEGIN_QUEUE .set 1500h

ADR_END_QUEUE .set ADR_BEGIN_QUEUE+QUEUE_SIZE

; LABEL

ref m_OUT, m_OR_CONTROL_PAR

global m_END_XINT

; VARIABLE

ref STATUS, TEST

ref C_8T, C_4T, C_16T, C_32T

ref VAR1, VAR2, VAR3

ref STATUS_PAR, KADR_WORD_COUNT

ref ADR_9800, ADR_A800, ADR_E220, ADR_C800

ref MARK_COUNT, ADR_ROW, ADR_ROW_PAR

ref BEGIN_QUEUE_PAGE1, END_QUEUE_PAGE1, EMPTY_PAGE1, ENABLE_PAGE1, EXTERN_PAGE1

ref BEGIN_QUEUE_PAGE2, END_QUEUE_PAGE2, EMPTY_PAGE2, ENABLE_PAGE2, EXTERN_PAGE2

ref KADR, STREAM_COUNT, KADR_NUM, NEXT_KS_KC, VAR_SINGLE_C6, VAR_SINGLE_C628, VAR_SINGLE_C632

; TABLE

ref TBL_KRP, TBL_KRP_TEST

ref TBL_C0

ref TBL_C0_PAR

ref TBL_C1

ref TBL_C1_PAR

ref TBL_C2

ref TBL_C2_PAR

ref TBL_C3

ref TBL_C3_PAR

ref TBL_C41

ref TBL_C41_PAR

ref TBL_C42

ref TBL_C42_PAR

ref TBL_C5

ref TBL_C5_PAR

ref TBL_C61

ref TBL_C62

ref TBL_C6_PAR

ref TBL_OPS

sect «vect»

B BEGIN_PROG

B INT0

space 24*16

B XINT

text

INT0

DINT

LALK 0FFFFh

CALL m_OUT

ZAC

SACL KADR_WORD_COUNT

LALK 1

SACL MARK_COUNT

LARP AR1

LRLK AR1, BEGIN_OF_I-4

LAC NEXT_KS_KC

ANDK 0E000h

XORK CONST_OR

BNZ m_CHECK_KRP

LALK m_MARK

SACL STATUS

LAC NEXT_KS_KC

SACL VAR2

ANDK 0Fh

SACL VAR1

LAC *

SACL NEXT_KS_KC

m_CHECK_OR_C1

LAC VAR1

ADLK TBL_E000_ACTION

TBLR VAR1

LAC VAR1

BACC

TBL_E000_ACTION

word m_NOT_CLEAR; 0

word m_E001; 1

word m_E002; 2

word m_E003; 3

word m_E004; 4

word m_E005; 5

word m_E006; 6

word m_E006; 7

word m_E006; 8

word m_NOT_CLEAR; 9

word m_E005; a

word m_E006; b

word m_NOT_CLEAR; c

word m_NOT_CLEAR; d

word m_NOT_CLEAR; e

word m_NOT_CLEAR; f

m_E001

LAC KADR

ADDK 1

SACL KADR

LALK TBL_C1

SACL ADR_ROW

LALK TBL_C1_PAR

SACL ADR_ROW_PAR

LALK m_OR_CONTROL_PAR

SACL STATUS_PAR

EINT

BACC

m_E002

LALK TBL_C2

SACL ADR_ROW

LALK TBL_C2_PAR

SACL ADR_ROW_PAR

LALK m_OR_CONTROL_PAR

SACL STATUS_PAR

EINT

BACC

m_E003

LALK TBL_C3

SACL ADR_ROW

LALK TBL_C3_PAR

SACL ADR_ROW_PAR

LALK m_OR_CONTROL_PAR

SACL STATUS_PAR

EINT

BACC

m_E004

LRLK AR1, INDEX_OF_E000

LARP AR1

LAC *

XORK 0FFFFh

BZ m_NOT_CLEAR

LAR AR1,*

ADRK 31+1

LAC *

ANDK 10h

BNZ m_CHECK_OR_C41

LALK TBL_C41

SACL ADR_ROW

LALK TBL_C41_PAR

SACL ADR_ROW_PAR

LALK m_OR_CONTROL_PAR

SACL STATUS_PAR

EINT

BACC

m_CHECK_OR_C41

LALK TBL_C42

SACL ADR_ROW

LALK TBL_C42_PAR

SACL ADR_ROW_PAR

LALK m_OR_CONTROL_PAR

SACL STATUS_PAR

EINT

BACC

m_E005

LALK TBL_C5

SACL ADR_ROW

LALK TBL_C5_PAR

SACL ADR_ROW_PAR

LALK m_OR_CONTROL_PAR

SACL STATUS_PAR

EINT

BACC

m_E006

LRLK AR1, INDEX_OF_E000

LARP AR1

LAC *

XORK 0FFFFh

BZ m_NOT_CLEAR

LAR AR1,*

ADRK 28+1

LAC *

ANDK 10h

BNZ m_CHECK_OR_C62

LALK m_MARK

SACL STATUS

LALK TBL_C61

SACL ADR_ROW

LALK TBL_C6_PAR

SACL ADR_ROW_PAR

LALK m_OR_CONTROL_PAR

SACL STATUS_PAR

EINT

BACC

m_CHECK_OR_C62

LALK m_MARK

SACL STATUS

LALK TBL_C62

SACL ADR_ROW

LALK TBL_C6_PAR

SACL ADR_ROW_PAR

LALK m_OR_CONTROL_PAR

SACL STATUS_PAR

EINT

BACC

m_CHECK_KRP

LAC *

ANDK 0FE00h

XORK CONST_KRP

BNZ m_CHECK_OPS

m_NOT_CLEAR

LAC *

SACL NEXT_KS_KC

LARP AR4

LRLK AR4, INDEX_OF_E000

LAR AR4,*

LAC *

XORK 0E246h

BZ m_KRP_TEST

LALK TBL_KRP

SACL ADR_ROW

LALK m_MARK

SACL STATUS

LALK m_PAR_NULL

SACL STATUS_PAR

EINT

BACC

m_KRP_TEST

LALK TBL_KRP_TEST

SACL ADR_ROW

LALK m_MARK

SACL STATUS

LALK m_PAR_NULL

SACL STATUS_PAR

EINT

BACC

m_CHECK_OPS

LAC *

ANDK 0FE00h

XORK CONST_OPS

BNZ m_CHECK_OR_MASP

LAC *

SACL NEXT_KS_KC

LALK TBL_OPS

SACL ADR_ROW

LALK m_MARK

SACL STATUS

LALK m_PAR_NULL

SACL STATUS_PAR

EINT

BACC

m_CHECK_OR_MASP

LAC *

ANDK 0FE00h

XORK CONST_OR_MASP

BNZ m_CHECK_OR_MASP__1

B m_CHECK_OR_MASP__2

m_CHECK_OR_MASP__1

LAC NEXT_KS_KC

ANDK 0FE00h

XORK CONST_OR_MASP

BNZ m_CHECK_OR_E007

m_CHECK_OR_MASP__2

LAC *

SACL NEXT_KS_KC

ZAC

SACL C_4T

SACL C_16T

LALK TBL_C0

SACL ADR_ROW

LALK TBL_C0_PAR

SACL ADR_ROW_PAR

LALK m_MARK

SACL STATUS

LALK m_OR_CONTROL_PAR

SACL STATUS_PAR

EINT

BACC

m_CHECK_OR_E007

LAC *

ANDK 0E000h

XORK CONST_OR

BNZ m_NOT_CLEAR

LAC *

ANDK 0Fh

XORK 6

BNZ m_NOT_CLEAR

LAC NEXT_KS_KC

ANDK 0Fh

XORK 7

BNZ m_CHECK_OR_E0071

LAC *

SACL NEXT_KS_KC

B m_E006

m_CHECK_OR_E0071

LAC NEXT_KS_KC

ANDK 0Fh

XORK 8

BNZ m_NOT_CLEAR

LAC *

SACL NEXT_KS_KC

B m_E006

m_INT0_M1

B m_INT0_M1

XINT

DINT

LDPK 0

SST1 INT_ST1

SST INT_ST0

SACH INT_ACC_H

SACL INT_ACC_L

SPM 0

SPH INT_P_H

SPL INT_P_L

MPYK 1

SPL INT_T

SAR AR0, INT_AR0

LAR AR0, INT_AR0_WORK

SAR AR7, INT_AR7

LAR AR7, INT_AR7_WORK

LDPK 4

LAC STATUS

BACC

m_END_XINT

LAC KADR_WORD_COUNT

ADDK 1

SACL KADR_WORD_COUNT

LDPK 0

SAR AR7, INT_AR7_WORK

SAR AR0, INT_AR0_WORK

LT INT_P_L

MPYK 1

LT INT_T

LPH INT_P_H

ZALS INT_ACC_L

ADDH INT_ACC_H

LST1 INT_ST1

LST INT_ST0

LAR AR0, INT_AR0

LAR AR7, INT_AR7

LDPK 4

EINT

RET

BEGIN_PROG

DINT

LDPK 0

if SIM = 1

LACK 9h

endif

if SIM = 0

LACK 21h

endif

SACL 4h

LDPK 4

SXF

FORT 0

SFSM

RTXM

RSXM

LARP AR1

LRLK AR1,200h

LRLK AR0,1FFFh

ZAC

m1 SACL *+

CMPR 1

BBNZ m1

LRLK AR1,01FFFh

LALK 1

SACL *

LALK 7000h

SACL NEXT_KS_KC

LALK 0FFFFh

SACL KADR

ZAC

SACL KADR_NUM

SACL EXTERN_PAGE1

SACL EXTERN_PAGE2

SACL C_4T

SACL C_8T

SACL C_16T

SACL VAR_SINGLE_C6

SACL VAR_SINGLE_C628

SACL VAR_SINGLE_C632

LALK ADR_BEGIN_QUEUE

SACL BEGIN_QUEUE_PAGE1

SACL BEGIN_QUEUE_PAGE2

SACL END_QUEUE_PAGE1

SACL END_QUEUE_PAGE2

LALK m_AAAA_5555

SACL STATUS

LALK m_PAR_NULL

SACL STATUS_PAR

ZAC

CALL m_OUT

EINT

m_CYCLE

NOP

B m_CYCLE

TBL_TEST_KADR

word 0FFFFh

word 0FFFFh

word 0FFFFh

word 0E03Fh

word 05678h

word 0AAAAh

word 05555h

word 0AAAAh

word 05555h

word 0AAAAh

word 05555h

word 0AAAAh

word 05555h

word 0AAAAh

word 05555h

word 0AAAAh

word 05555h

word 0AAAAh

word 05555h

word 0AAAAh

word 05555h

word 0AAAAh

word 05555h

word 0AAAAh

word 05555h

word 00000h

m_AAAA_5555

ZAC

SACL VAR1

LALK m_AAAA_5555_BGN

SACL STATUS

m_AAAA_5555_BGN

LACK 26

SUB VAR1

BLEZ m_AAAA_5555

LALK TBL_TEST_KADR

ADD VAR1

TBLR VAR2

LAC VAR2

CALL m_OUT

LAC VAR1

ADDK 1

SACL VAR1

B m_END_XINT

Показать весь текст
Заполнить форму текущей работой