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

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

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

Выполняя программу по шагам, не только можно, но и нужно отслеживать изменение регистров и памяти. Так, результатом выполнения команды MOV A, P1, расположенной по адресу 8006H, является запись кода 00111111b (или 3Fh), находящегося в регистре P1, в регистр аккумулятора (см. рис. 1.9). Выполненные команды отмечаются знаком «+» в левой части строки. Красным цветом выделяется следующая по порядку выполнения команда.

Ход выполнения программы в МК зависит от значений сигналов от внешнего устройства. Для имитации изменения состояний сигналов от периферийного устройства на внешних контактах порта МК нужно во вкладке меню «Peripherals» выбрать «I/O-Ports», за-

тем «Port1».

В исходном состоянии (до начала выполнения программы) в регистре порта P1 находятся одни «1», что соответствует настройке «по умолчанию» всех разрядов порта на ввод (рис. 1.10). После выполнения первой команды, расположенной по адресу 8000H, в окне Р1 отображается записанное в него значение 00111111, а после команды выдачи сигнала подтверждения ввода по адресу 800ЕH ото-

бражается код 01111111 (рис. 1.11).

Рис. 1.10. Исходное состояние порта Р1

Рис. 1.11. Загрузка кода в порт Р1

На рис. 1.12 показано окно кода программы в ситуации, когда после исполнения команды, расположенной по адресу 8010Н, микроконтроллер ждёт снятия сигнала разрешения, т.е. установки нулевого значения на контакте Р1.3.

Для изменения содержимого порта можно либо левой кнопкой мыши установить в нижней строке нужное (в данном случае нулевое) значение на соответствующем контакте порта, либо в окошке «Pins:» записать новое значение (рис. 1.13).

21

Рис. 1.12. Окно кода программы, ожидание снятия сигнала разрешения

Рис. 1.13. Установка кода «0» на контакте 3 порта Р1

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

Теперь о том, как составить программу для того, чтобы её можно было выполнять на МК в составе УЛС.

Несколько усложним задание. Значения результатов вычисления функции от трёх переменных должны засылаться во внутреннюю память данных, начиная с адреса, находящегося в регистре R0 (или R1). Эти регистры имеются во всех четырёх банках данных. Номер

22

банка определяется значением битов 4 и 3 (S1 и S0) в слове состояния PSW. Программа должна выполняться на МК, входящим в состав УЛС. Внешнее устройство имитируется элементами, расположенными в ПЛИС и на стенде. Задать входные сигналы на стенде можно на регистрах 1-3 (12 сигналов), а для индикации имеется 16 светодиодов на индикаторах A, B, C, D, E и F. Подключение этих элементов к некоторой схеме на ПЛИС выполняется с помощью макроэлементов, входящих в библиотеку Maket. Но в составе стенда имеется уже законченная микропроцессорная система с подключенными к микроконтроллеру различными устройствами. Из портов для связи с ПЛИС и через неё с регистрами и индикаторами стенда может использоваться только порт Р4 [3].

Для порта Р4 можно сохранить выбранное ранее распределение разрядов для порта Р1. Данные вычислений должны записываться в память по адресу, находящемуся в регистре R0 (или R1) заданного банка регистров. Номер банка, с которым нужно будет работать, будет задаваться на входах Р4.5, Р4.4 (рис. 1.14).

7

6

 

5

4

3

2

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

P4.6

 

S1

S0

 

P4.3

Z

Y

X

 

 

 

 

 

 

 

 

 

 

 

 

 

Значение функции

Сигнал подтверждения

 

Адрес банка

регистров

 

Сигнал разрешения

 

Значения переменных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выходные

 

 

 

Входныесигналы

 

 

 

сигналы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 1.14. Распределение разрядов порта Р4 между входными и выходными сигналами

Чтобы видеть результат выполнения программы – запись в то или иное место памяти в зависимости от того, с каким банком работает программа, нужно в регистры R0 (или R1), относящиеся к разным банкам, записать разные начальные значения. Однако симулятор dScope не позволяет редактировать содержимое внутренней памяти данных. Потому необходимо в начале программы доба-

23

вить команды начальной загрузки ячеек памяти, которые являются одновременно и регистрами R0 разных банков. Регистр R0 банка 0 – это ячейка памяти с адресом 00h, регистр R0 банка 1 – ячейка с адресом 08h, регистр R0 банка 2 – 10h, регистр R0 банка 3 – 18h [1].

В имеющемся в настоящее время программном обеспечении поддерживаются только символические имена портов, имеющихся в базовой конфигурации МК (порты Р0-Р3). Для обращения к порту Р4 необходимо использовать его адрес, а именно 0C0h. При этом адрес отдельного контакта этого порта, например первого, будет иметь вид 0C0h.1. С учётом сказанного программа будет выглядеть следующим образом(рис. 1.15).

Рис. 1.15. Текст программы

В приведённом тексте программы нет комментариев, но и без этого нетрудно понять, каким образом номер банка регистров с входных контактов порта Р4 передаётся в слово состояния. Возможен и иной вариант организации пересылки. Для банка 0 начальное

24

содержимое регистра R0 следует задавать не 3d, а, например, 60d. Это вызвано тем, что ячейки памяти данных, начиная с адреса 08h, отводятся по стек.

Именно в таком виде и должна быть оформлена программа при подготовке к лабораторной работе.

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

1.4. Порядок отладки микропроцессорной системы на стенде

Для отладки программы и проверки работы реального МК в составе УЛС следует создать в системе Xilinx проект соединения регистров и индикаторов на стенде с контактами порта Р4 через контакты ПЛИС.

Выходы порта Р4 соединяются с контактами ПЛИС, причем с теми же контактами, через которые могут выводиться сигналы на индикаторы А и В (табл. 1.3).

Таблица 1.3

Соотношение контактов порта Р4 и контактов ПЛИС

Контакты

Контакты

Индикаторы

порта Р4

ПЛИС

стенда

0

P14

A0

1

P9

A1

2

P6

A2

3

P3

A3

4

P39

B0

5

P36

B1

6

P27

B2

7

P24

B3

Для создания проекта кроме элементов из библиотеки Maket на схеме должны быть размещены обозначения выходных контактов ПЛИС – OPAD (для МК – это контакты порта Р4, по которым поступают входные сигналы), входных контактов ПЛИС – IPAD (для

25

МК – это контакты порта Р4, на которые поступают выходные сигналы). Этим контактам присвоены соответствующие имена. Между контактами, источниками и приемниками сигналов на ПЛИС располагаются соответствующие буферные элементы – IBUF и OBUF. Эти элементы всегда используются для вывода из ПЛИС или ввода в ПЛИС однонаправленного сигнала (Pad – контактная площадка, которая подсоединена к контакту корпуса ПЛИС – Pin).

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

Из библиотеки элементов извлекается элемент OPAD необходимой разрядности. Этому контакту присваивается имя, номер контакта и тип (рис.1.16):

Reference – своё имя (возможно наименование сигнала или номер контакта порта Р4, например Р4_4);

Name – выбрать LOC;

Description – P39 (для контакта, связанного с контактом

Р4.4).

Рис. 1.16. Окно редактирования элемента OPAD

26

Следует помнить, что состояние источника сигнала при этом одновременно будет отображаться на соответствующем светодиоде индикатора А или В.

Для случая, когда какой-то сигнал (контакт порта Р4) является для ПЛИС входным (для МК – выходным), из библиотеки элементов извлекается элемент IPAD и производятся действия, аналогичные как и для элемента OPAD.

Схема внешнего устройства – источника и приемника сигналов – показана на рис. 1.17.

Рис. 1.17. Схема источника и приемника сигналов– проект, загружаемый в ПЛИС

27

Сигнал, соответствующий выходной функции, и сигнал подтверждения подключены к индикатору С. Этого можно было бы и не делать, так как состояние сигнала на контакте Р4.7 отображается на светодиоде В3, а состояние сигнала на контакте Р4.6 – на светодиоде В2.

Проект должен быть сохранён на сетевом диске U компьютера.

Для отладки программы на УЛС необходимо соблюдать строгую последовательность действий.

1.Выполнить размещение проекта Xilinx на кристалле

(Impleventation).

2.Загрузить проект в УЛС.

Тумблер СТ на лицевой панели УЛС должен находиться в положении ВЫКЛ. Монитор-отладчик УЛС должен быть в исходном состоянии, для этого необходимо нажать на кнопку RESET на лицевой панели УЛС.

Генератор импульсов ГОИ1 на стенде должен быть включен в непрерывном режиме. Для созданного проекта на ПЛИС в этом нет необходимости, но от этого генератора работает и МК, для которого необходим именно этот режим.

3. Загрузить пользовательскую программу в УЛС.

На рабочем столе Windows дважды щёлкнуть мышью на пиктограмме системы:

Откроется главное окно управляющей программы – MCS51 (рис. 1.18).

Рис. 1.18. Главное окно управляющей программы

28

По умолчанию при входе в систему открываются функциональные окна: программное окно (Program Window), окно памяти данных (Data Memory Window). Последнее в данной работе не требуется.

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

Открытие программы и её отображение в программном окне осуществляется по файлу листинга – *.lst, однако код программы, загружаемый в МК, формируется из Hex-файла, в связи с чем необходимо проверить наличие Hex-файла в директории файла листинга!

Код выбранной программы отображается в программном окне

(рис. 1.19).

Рис. 1.19. Программное окно с загруженным кодом пользовательской программы

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

29

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

После открытия программы пользователю становятся доступны кнопкиLoad и Load+Go.

При выполнении функции Load код, представленный в программном окне, загружается в эмулятор постоянного запоминающего устройства (ПЗУ), по результатам загрузки выдаются системные сообщения, становится доступной кнопка Go, при выборе которой происходит запуск на исполнение пользовательской программы, предварительно загруженной в эмулятор ПЗУ.

При выполнении функции Load+Go выполняется загрузка и автоматический запуск пользовательской программы.

Касаясь рассматриваемого примера, программный код которого представлен на рис. 1.19, обратим внимание на присутствие в коде ожидания сигнала разрешения и его снятия. В основном режиме выполнение программы будет приостановлено до момента выдачи сигнала разрешения (в нашем примере на регистре УЛС, см. рис. 1.17). После получения сигнала разрешения выполнение программы автоматически продолжается.

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

Оформления отчёта по лабораторной работе не требуется.

Варианты заданий

Втабл.1.4 приведены варианты заданий, где даны обозначения:

взаписи логической функции:

&– логическое “И”, v – логическое “ИЛИ”, ^ – отрицание; уровня сигнала:

L – низкий, H – высокий.

30

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