Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Гуров Проектирование микропроцессорных систем 2010

.pdf
Скачиваний:
125
Добавлен:
16.08.2013
Размер:
2.49 Mб
Скачать

Рис. 2.17. Схема подключения к шине нескольких внешних устройств – приёмников данных(двоичное кодирование адреса)

Подключение внешних устройств к порту Р4

На ПЛИС располагаются также внешние устройства, подключаемые к МК через порт Р4. Если восьми разрядов одного порта оказывается недостаточно, то можно использовать следующие решения. Например, если МК требуется проанализировать состояния четырёх битовых сигналов, а свободно только три разряда порта, то при использовании мультиплексора сначала нужно задать код источника сигнала на адресных входах мультиплексора, а затем опросить выход мультиплексора (рис. 2.18).

Свободные четыре разряда порта Р4 позволяют подключить к МК до восьми битовых сигналов. На адресные входы мультиплексора можно подавать код и с регистра адреса. В этом случае достаточно одного разряда порта Р4. На рис. 2.19 для примера показана

51

схема, которая позволяет при трёх свободных разрядах порта вести битовый сигнал в одну их четырёх точек схемы на ПЛИС.

Рис. 2.18. Схема подключения к порту Р4 нескольких битовых сигналов

Рис. 2.19. Схема ввода в порт Р4 нескольких битовых сигналов

2.3. Последовательность и способы отладки микропроцессорной системы для тестирования АЛУ

Тестирование АЛУ выполняется в двух режимах:

-одиночном при каждом сигнале «Готовность»;

-непрерывном.

И в том, и в другом режиме можно было бы запустить программу и увидеть конечный результат. Но это почти никогда не получается из-за допущенных ошибок (или не работает программа, или АЛУ выдаёт не тот результат).

Ошибки могут возникнуть при проектировании АЛУ (их можно было не заметить ранее из-за тестирования на малом наборе операндов). При их обнаружении придётся исправлять схему АЛУ или

52

её описание на языке VHDL. Для схемного варианта АЛУ можно вывести на индикацию состояние каких-то регистров. Но выполнить проверку работы АЛУ по тактам невозможно.

Ошибки могут быть допущены в программе работы МК, как синтаксические, так и связанные с неверными вычислениями и с неверным формированием сигналов, выдаваемых на внешние устройства.

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

Возможны и схемные ошибки, например такие:

-неправильно составлена схема подключения АЛУ и регистров УЛС к системной шине;

-перепутаны разряды шины;

-перепутаны разряды операндов А и В;

-не с тех разрядов регистра результата взят результат для передачи в МК.

За ошибку иногда принимаются случаи несовпадения результата операции над дробными числами с результатом, вычисленным при помощи другой программы (сказываются погрешности округлений), а также неправильная интерпретация результатов тестирования, когда студенты забывают о том, с какими числами (дробными или целыми) работает АЛУ.

Иногда ошибочная работа системы МПС–АЛУ вызывается неправильным формированием в программе управляющих сигналов – заданием перепадов уровней (0/1 или 1/0) вместо задания импульса

(0/1/0 или 1/0/1).

Для выявления этих ошибок и определения места неисправности нужно убедиться, что:

-операнды выданы в буферные регистры на входе АЛУ верно;

-операнды записались в регистры АЛУ правильно;

-результат получается в регистре результата в нужных разря-

дах;

-выполняется именно та операция, которая задана на пульте УЛС;

-выполняется программа обработки прерываний.

53

Это невозможно проверить с помощью программы dScope. Единственным выходом является отладка МПС на стенде с ис-

пользованием управляющей программы MCS51. Можно использовать следующие режимы выполнения программы: «Основной» и «Останов в КТ» (КТ – контрольная точка).

Режим «Основной» используется в тех случаях, когда необходимо наблюдать только конечный результат работы программы на индикаторах стенда.

Отладка МПС, реализующей программу тестирования АЛУ в ПЛИС, должна выполняться в режиме «Останов в КТ», где можно видеть пошаговое исполнение программы (останов в заданной КТ), наблюдать изменение состояния регистров, аккумулятора, а самое главное отслеживать запись операндов и результата по конкретному адресу. Содержимое внутренней, внешней памяти, а также регистров выводится в соответствующие окна.

Для работы в режиме «Останов в КТ» пользовательская программа должна быть определенным образом подготовлена.

-Необходимо перед каждой командой, которую пользователь хочет отметить как точку контроля, установить пустую команду (NOP). (Естественно, что это ведёт к увеличению объёма программы и изменению времени её работы.)

-В теле программы нужно добавить команды, разрешающие прерывание от внешнего источника (Int 0) и устанавливающие для этого запроса высший приоритет, с помощью вставки в программу следующего кода:

mov ie, #81h mov ip, #01h setb it0

-Для доступа к данному режиму необходимо установить не менее двух контрольных точек.

-Для удобства работы следует отметить контрольные точки на блок-схеме алгоритма.

Отметим одну особенность системы отладки. Она использует таймер Т1 МК, и настройки этого таймера нельзя менять при работе с отладчиком в режиме КТ. В программе МК можно использовать лишь таймер Т0. Как только запускается монитор отладки, он настраивает режим работы таймера Т1 с помощью регистра управления TMOD. Изменить состояния этого регистра путём загрузки в него только значений разрядов, относящихся к таймеру Т0, нельзя.

54

Нужно считать код регистра TMOD в аккумулятор А, логически сложить с требуемым кодом режима таймера Т0, потом отправить содержимое аккумулятора А в регистр.

Далее необходимо выполнить загрузку программы в УЛС (Load) и установить КТ, дважды кликнув левой кнопкой мыши на строке в окне «Program Window». Появление в выделенной строке символов «BP» можно наблюдать на рис. 2.20. Следует помнить, что точкой останова программы является именно комбинация вставленной команды NOP и установленной КТ. Одна команда NOP не может быть контрольной точкой.

В данном режиме доступны следующие функции отладки:

-загрузка пользовательской программы (Load);

-запуск программы, в режиме «Останов в КТ» (Go To BP);

-переход к следующей КТ (Next BP).

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

Как видно из рис. 2.21, после останова в КТ появляется кнопка Next BP. После нажатия данной кнопки выполнение пользовательской программы будет продолжено до очередной КТ. Содержимое памяти регистров обновляется в каждой КТ.

Использование индикаторов стенда при отладке программы и собственно тестировании АЛУ необязательно, однако их подключение в том или ином виде позволяет убедиться, что операнды выданы в буферные регистры на входе АЛУ верно, операнды переписаны в регистры АЛУ правильно, результат получается в регистре результата в нужных разрядах. При тестировании схемного АЛУ индикаторы можно подключать и к внутренним регистрам блока операций или устройства управления.

Можно программу разбить на отдельные участки с номерами 1, 2,… и при входе в каждый участок выводить на индикацию (либо светодиод, либо 7-сегментгный индикатор, либо ЖКИ) номер участка.

55

Рис. 2.20. Программное окно с установленными КТ

Отлаживать программу не совсем просто из-за того, что постоянно изменяются комбинации операндов. Поэтому можно кроме основной программы создать еще несколько тестовых. Это могут быть программы:

- выполнения операций над выбранной парой операндов несколько раз;

-повторения какого-то участка основной программы;

-реализации некоторого упрощенного алгоритма;

56

Рис. 2.21. Программное окно при останове в КТ, вызвавшей прерывание

-циклического выполнения некоторой программы;

-выполнения иных программ (вывод на индикаторы или ЖКИ). Можно загружать каждую программу в память МПС по очере-

ди, но это только удлиняет процесс тестирования. Лучше сразу все тестовые программы учесть в одной программе, в которой ввести команды анализа режима работы (тестирования).

Приведём возможные способы задания нескольких режимов работы системы и её отладки:

57

-задание режимов на регистре УЛС с вводом кода режима через порт Р4;

-задание режимов на регистре УЛС с вводом кода режима через системную шину;

-иной способ.

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

Рассмотрим вариант с использованием клавиатуры. Она уже подключена к системной шине, нажатие одной из цифр вызывает прерывание, после чего обработчик прерывания считывает и распознаёт скан-код нажатой кнопки.

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

Используем какой-либо флаг, например F0, для определения порядка работы программы. Исходное состояние этого флага или состояние после набора какого-то символа, например, «0»: F0=0.

Если при чтении иного скан-кода обработчик обнаруживает, что F0=0, то происходит переход на участок программы ввода параметра, необходимого для выполнения основной программы (кода времени или начального значения операнда). После нажатия символа «F» флаг F0 устанавливается равным «1». В таком случае при чтении иного скан-кода обработчик переходит на участки программы, соответствующие различным тестам в зависимости от введенного символа. Заметим, что коды «0» и «F» вряд ли понадобятся при задании кода времени или начального значения операнда В. Такое решение использования прерывания от клавиатуры для выбора режима тестирования представляет собой подобие разделяемого прерывания (shared interrupts). Порядок действий с клавиатурой УЛС описан в [3].

Приведём пример программы обработки прерывания от клавиатуры при допущениях.

В спроектированной МПС дополнительными внешними устрой- ствами-приемниками информации, подключёнными к системной шине, являются:

-регистры операндов А и В (для записи в них отведён адрес

7FFAh);

-регистр адреса внешних устройств – приёмников информации (для записи в него отведён адрес 7FFBh).

58

К шине внутри ПЛИС подключено четыре источника:

-регистр результата – код в регистре адреса 00h;

-регистры признаков – 01h;

-ПЗУ знакогенератора – 02h;

-регистр УЛС для задания операнда – 03h.

Для чтения с шины внутри ПЛИС выделен адрес 7FFBh.

Для формирования сигнала SNOIN используется разряд порта Р4.7, для сброса – Р4.4.

При инициализации МК флаг F0 устанавливается в «0».

При выполнении основной программы тестирования АЛУ клавиатура используется для ввода величины Т (период мигания индикаторов) в регистр R7.

Для запуска тестовых программ используется нажатие следующих цифр на клавиатуре:

«1» – программа ввода операнда А с регистра УЛС в регистр R3; «2» – программа ввода операнда В с регистра УЛС в регистр R4; «3» – программа отображения кода в А на четырёх 7-сегмент- ных индикаторах (ввод слева) при реализации знакогенератора во

внутренней памяти;

«4» – умножение операнда в R3 на операнд в R4 (отображение операндов и результата на подключённых шкалах индикаторов).

Текст программы обработки прерывания от клавиатуры

ORG

8013h

;обработчик прерывания INT1

 

MOV

DPTR,#7FFFh

 

 

MOV

A,#40h

 

 

MOVX @DPTR,A

;разрешение чтения FIFO клавиатуры

 

JB

F0, LAB1

;проверка режима работы клавиатуры

 

MOV

DPTR, #7FFEh ;клавиатура - для ввода Т

 

MOVX A,@DPTR

;чтение скан-кода

 

CJNE

A, #00h, KK1

;проверка на «0»

 

LJMP

EXIT

 

KK1:

CJNE

A, #01h, KK2

;проверка на «1»

 

MOV

R7,#01h

;вывод в R7 кода «1»

 

LJMP

EXIT

 

KK2:

CJNE

A, #02h, KK3

;проверка на «2»

 

MOV

R7,#02h

;вывод в R7 кода «2»

 

LJMP

EXIT

 

59

KK3:

CJNE

A, #03h, KK4

;проверка на «3»

 

MOV

R7,#03h

 

;вывод в R7 кода «3»

 

LJMP

EXIT

 

 

KK4:

CJNE

A, #04h, KK5

;проверка на «4»

 

MOV

R7,#04h

 

;вывод в R7 кода «4»

 

LJMP

EXIT

 

 

KK5:

CJNE

A, #05h, KK6

;проверка на «5»

 

MOV

R7,#05h

 

;вывод в R7 кода «5»

 

LJMP

EXIT

 

 

KK6:

CJNE

A, #06h, KK7

;проверка на «6»

 

MOV

R7,#06h

 

;вывод в R7 кода «6»

 

LJMP

EXIT

 

 

KK7:

CJNE

A, #07h, KK8

;проверка на «7»

 

MOV

R7,#07h

 

;вывод в R7 кода «7»

 

LJMP

EXIT

 

 

KK8:

CJNE

A, #08h, KK9

;проверка на «8»

 

MOV

R7,#08h

 

;вывод в R7 кода «8»

 

LJMP

EXIT

 

 

KK9:

CJNE

A, #09h, KKA ;проверка на «9»

 

MOV

R7,#09h

 

;вывод в R7 кода «9»

 

LJMP

EXIT

 

 

KKA: CJNE

A, #0Ah, KKB ;проверка на «A»

 

MOV

R7,#0Ah

 

;вывод в R7 кода «A»

 

LJMP

EXIT

 

 

KKB: CJNE

A, #0Bh, KKC ;проверка на «B»

 

MOV

R7,#0Dh

 

;вывод в R7 кода «B»

KKC: CJNE

A, #0Ch, KKD ;проверка на «C»

 

MOV

R7,#0Ch

 

;вывод в R7 кода «C»

 

LJMP

EXIT

 

 

KKD: CJNE

A, #0Dh, KKE ;проверка на «D»

 

MOV

R7,#0Dh

 

;вывод в R7 кода «D»

 

LJMP

EXIT

 

 

KKE:

CJNE

A, #0Eh, KKF ;проверка на «E»

 

MOV

R7,#0Eh

 

;вывод в R7 кода «E»

 

LJMP

EXIT

 

 

KKF:

CJNE

A, #0Fh, EXIT ;проверка на «F»

 

SETB

F0

;установка признака задания теста F0=1

 

LJMP

EXIT

 

 

60

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]