Научная статья на тему 'Пример сквозного проектирования встраиваемой восьмиразрядной микропроцессорной системы на базе ядра семейства PicoBlaze, реализуемой на основе ПЛИС фирмы Xilinx'

Пример сквозного проектирования встраиваемой восьмиразрядной микропроцессорной системы на базе ядра семейства PicoBlaze, реализуемой на основе ПЛИС фирмы Xilinx Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
188
40
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Зотов Валерий

Статья завершает цикл материалов, знакомящих с интегрированной средой разработки и отладки программного обеспечения восьмиразрядных микропроцессорных систем, выполняемых на основе конфигурируемых ядер семейства PicoBlaze [1–7] фирмы Xilinx, pBlaze IDE (Integrated Development Environment) [8–11]. В публикации на конкретном примере показан процесс сквозного проектирования встраиваемой микропроцессорной системы. Данный пример наглядно демонстрирует разработку и отладку программной части в среде pBlaze IDE, а также проектирование аппаратной платформы с помощью САПР серии Xilinx ISE (Integrated Software Environment), включая реализацию и загрузку проекта в кристалл.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Зотов Валерий

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Пример сквозного проектирования встраиваемой восьмиразрядной микропроцессорной системы на базе ядра семейства PicoBlaze, реализуемой на основе ПЛИС фирмы Xilinx»

Валерий ЗОТОВ

[email protected]

Архитектура простейшего контроллера сбора и обработки данных, проектируемого на основе микропроцессорного ядра РкоВ^е и реализуемого в ПЛИС семейства Браггап-З

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

• прием данных, поступающих от двух восьмиразрядных источников (датчиков);

• запись принимаемых данных в сверхоперативное запоминающее устройство (СОЗУ);

• сравнение полученных данных с предельно допустимыми значениями соответствующих параметров и формирование необходимых управляющих сигналов при выходе за границы установленного диапазона;

• отображение информации о выходе принятых данных за пределы зафиксированного диапазона значений для каждого анализируемого параметра;

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

Пример сквозного проектирования встраиваемой восьмиразрядной микропроцессорной системы

на базе ядра семейства PicoBlaze, реализуемой на основе ПЛИС фирмы Xilinx

Статья завершает цикл материалов, знакомящих с интегрированной средой разработки и отладки программного обеспечения восьмиразрядных микропроцессорных систем, выполняемых на основе конфигурируемых ядер семейства PicoBlaze [1—7] фирмы Xilinx, pBlaze IDE (Integrated Development Environment) [8—11]. В публикации на конкретном примере показан процесс сквозного проектирования встраиваемой микропроцессорной системы. Данный пример наглядно демонстрирует разработку и отладку программной части в среде pBlaze IDE, а также проектирование аппаратной платформы с помощью САПР серии Xilinx ISE (Integrated Software Environment), включая реализацию и загрузку проекта в кристалл.

Такой контроллер может применяться в системах сбора данных различного назначения, мониторинга параметров окружающей среды и технологических процессов, автоматизированного управления, безопасности и т. п. Количество каналов принимаемых данных (и, следовательно, контролируемых параметров) при необходимости может быть увеличено в соответствии с требованиями проекта. Максимальное число таких каналов ограничивается, прежде всего, физическими ресурсами кристалла, используемого для реа-

лизации контроллера, и емкостью СОЗУ микропроцессорного ядра. Структурное представление архитектуры разрабатываемой микропроцессорной системы показано на рис. 1. В состав проектируемого контроллера кроме микропроцессорного ядра семейства PicoBlaze входят два входных и четыре выходных параллельных порта ввода/вывода. Входной порт с адресом ADDR_INPORT1 предназначен для считывания информационных данных, поступающих от первого источника (датчика), а порт с адресом ADDR_INPORT2 —

S С ) 11 Э Î 1ЭЭГ

UH \4ПІЇ\

Входной порт ADDR INPORT2

Адрес порта ввода/вывода

Сброс -----

Тактовый сигнал -

18

-тишина команд

IN_PORT [7:0] OUT_PORT [7:0]

INTERRUPT PORTJD [7:0]

RESET READ_STROBE

CLK WRITE_STROBE

INTRRUPT_ACK

INSTRUCTION [17:0] ADDRESS [9:0]

Память программ

INSTRUCTION [17:0] CLK ADDRESS [9:0]

Шина

адреса

-Ї-

Выходной порт ADDR CTRLPORT1

Выходной порт ADDR CTRLPORT2

Выходной порт ADDR ALARM PORT

Выходной порт ADDR EXTPORT

Рис. 1. Архитектура простейшего контроллера сбора и обработки данных, разрабатываемого на основе микропроцессорного ядра PicoBlaze и реализуемого в ПЛИС семейства Spartan-3

от второго. Выходные порты с адресами ADDR_CTRLPORT1 и ADDR_CTRLPORT2 используются для вывода управляющих кодов. К выходному порту с адресом ADDR_ALARM_PORT подключаются светодиодные индикаторы, с помощью которых отображается используемая для визуального контроля информация о выходе полученных данных за пределы допустимого диапазона значений для каждого параметра. Выходной порт с адресом ADDR_EXTPORT предназначен для вывода данных, поочередно считанных из СОЗУ, во внешний (главный) компьютер. Описания компонентов, представляющих параллельные порты ввода и вывода, на языке VHDL (VHSIC Hardware Description Language) будут сформированы в процессе разработки контроллера.

Для реализации контроллера выберем ПЛИС семейства Spartan-3, сочетающие широкие функциональные возможности с невысокой стоимостью. В качестве аппаратного тестового модуля, предназначенного для проверки функционирования разработанного контроллера, воспользуемся отладочной платой из инструментального комплекта Spartan-3 Starter Kit. Подробное описание возможностей комплекта и структуры инструментального модуля приводится в [12]. Кроме того, проектируемый контроллер может быть реализован практически без внесения каких-либо изменений на базе кристаллов более перспективного семейства Spartan-3E, которое в настоящее время уже доступно разработчикам. В ближайшее время ожидается соответствующий инструментальный комплект, включающий отладочную плату, выполненную на основе ПЛИС семейства Spartan-3E.

Создание рабочего каталога для проекта простейшего контроллера сбора и обработки данных, разрабатываемого на основе микропроцессорного ядра PicoBlaze и реализуемого в ПЛИС семейства Spartan-3

Прежде чем приступить к подготовке проекта контроллера, на одном из дисков компьютера создадим с помощью Проводника операционной системой Windows XP/2000 (или управляющей оболочки Total Commander) раздел, предназначенный для хранения всех разрабатываемых проектов, например раздел C:\Project. В нем сформируем новую папку с названием sampled_data_controller, которая будет использоваться в качестве рабочего каталога проекта разрабатываемого контроллера. В эту папку скопируем из архива Kcpsm3.zip файлы исходного описания компонентов микропроцессорного ядра PicoBlaze, реализуемого в ПЛИС семейства Spartan-3, Kcpsm3.vhd и embedded_kcpsm3.vhd, а также шаблоны описания программной памяти ROM_form.vhd, ROM_form.v, ROM_form.coe

и соответствующую версию ассемблера Kcpsm3.exe. Если для интегрированной среды разработки и отладки микропроцессорных программ pBlaze IDE не был создан ярлык на Рабочем столе компьютера, то целесообразно в сформированный рабочий каталог проекта C:\Project\sampled_data_controller поместить копию приложения pBlazIDE.exe. Такое решение обеспечивает быстрый запуск интегрированной среды непосредственно из рабочего каталога проекта, минуя процедуру поиска и открытия папки, в которой находится файл pBlazIDE.exe. После завершения копирования в рабочий каталог проекта всех перечисленных выше файлов приступаем к подготовке управляющей микропроцессорной программы, предназначенной для создаваемого контроллера, с помощью интегрированной среды разработки и отладки программного обеспечения pBlaze IDE.

Разработка программного обеспечения для простейшего контроллера сбора и обработки данных, проектируемого на основе микропроцессорного ядра PicoBlaze и реализуемого в ПЛИС семейства Spartan-3

Для открытия основного окна интегрированной среды разработки и отладки программного обеспечения pBlaze IDE переходим в рабочий каталог проекта C:\Project\sampled_ data_controller, используя Проводник или управляющую оболочку (файловый менеджер) Total Commander (Windows Commander), и активизируем приложение pBlazIDE.exe. Сразу же указываем тип микропроцессорного ядра семейства PicoBlaze, для которого будет создаваться программное обеспечение. Для этого выбираем команду Settings из главного меню основного окна интегрированной среды pBlaze IDE, после чего в появившемся всплывающем меню выделяем строку Picoblaze 3, соответствующую версии микропроцессорного ядра, предназначенной для реализации в ПЛИС семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4 [1, 6]. Затем открываем новое рабочее окно встроенного текстового редактора интегрированной среды pBlaze IDE, нажав кнопку быстрого доступа И, расположенную на оперативной панели управления, или выбрав команду New из всплывающего меню File. Для определения имени создаваемого файла, в который будет записан исходный текст микропроцессорной программы, выполняем команду сохранения содержимого окна на диске Save (Save As) из всплывающего меню File или нажимаем кнопку быстрого доступа И (И). В открывшейся стандартной диалоговой панели в качестве идентификатора создаваемого файла следует ввести строку prog_rom.psm. Использование данного названия для разрабатываемой микропрограммы позволяет избежать переименования компонента программной

памяти в описании проектируемой системы на языке УИБЬ. При этом следует обратить внимание на то, чтобы создаваемый файл был помещен в каталог C:\Project\sam-pled_data_controller. После того как файл успешно сохранен на диске, на вкладке открытого нового окна редактирования автоматически отображается идентификатор prog_rom. Далее в данном окне редактирования с помощью клавиатуры набираем исходный текст микропроцессорной программы на языке ассемблера, который выглядит следующим образом.

; Адреса портов ввода/вывода

ADDR_INPORTl EQU 0

ADDR_INPORT2 EQU 1

ADDR_CTRLPORTl EQU 2

ADDR_CTRLPORT2 EQU 4

ADDR_ALARM_PORT EQU 1

ADDR_EXTPORT EQU 8

; Предельные значения параметров

min_value_1 EQU 10

max_value_1 EQU 100

min_value_2 EQU 15

max_value_2 EQU 110

corr_data_min1 EQU 4

corr_data_max1 EQU 20

corr_data_min2 EQU 5

corr_data_max2 EQU 12

delay EQU 120

; Переименование используемых регистров общего назначения

inform_data EQU s0

diff_data EQU s2

addr_pointer EQU s7

buff_reg EQU s6

count_reg EQU s5

cur_addr_pointer EQU s4

led_reg EQU s1

; Декларация портов ввода/вывода

IN_DATA_PORT1 DSIN ADDR_INPORT1

IN_DATA_PORT2 DSIN ADDR_INPORT2

CTRL_PORT1 DSOUT ADDR_CTRLPORT1

CTRL_PORT2 DSOUT ADDR_CTRLPORT2

ALARM_PORT DSOUT ADDR_ALARM_PORT

EXT_PORT DSOUT ADDR_EXTPORT

; Текст основной микропроцессорной программы

LOAD addr_pointer, 0

channell: IN inform_data, IN_DATA_PORT1

STORE inform_data, addr_pointer

LOAD led_reg, 0

ADD addr_pointer, 1

COMP addr_pointer, 64

JUMP NZ, diff1

LOAD addr_pointer, 0

diffl: LOAD diff_data, inform_data

SUB diff_data, min_value_1

JUMP C, ctrl_min_1

LOAD diff_data, inform_data

SUB diff_data, max_value_1

JUMP NC, ctrl_max_1

LOAD diff_data, 0

JUMP out_ctrl1

ctrl_min_1: ADD diff_data, corr_data_min1

OR led_reg, 8

JUMP out_ctrl1

ctrl_max_1: ADD diff_data, corr_data_max1

OR led_reg, 4

out_ctrl1: OUT diff_data, CTRL_PORT1

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

OUT led_reg, ALARM_PORT

channel2: IN inform_data, IN_DATA_PORT2

STORE inform_data, addr_pointer

ADD addr_pointer, 1

COMP addr_pointer, 64

JUMP NZ, diff2

LOAD addr_pointer, 0

diff2: LOAD diff_data, inform_data

SUB diff_data, min_value_2

JUMP C, ctrl_min_2

LOAD diff_data, inform_data

SUB diff_data, max_value_2

JUMP NC, ctrl_max_2

LOAD diff_data, 0

JUMP out_ctrl2

ctrl_min_2: ADD diff_data, corr_data_min2

OR led_reg, 2

JUMP out_ctrl2

ctrl_max_2: ADD diff_data, corr_data_max2

OR led_reg, 1

out_ctrl2: OUT diff_data, CTRL_PORT2

OUT led_reg, ALARM_PORT

visual_ctrl: LOAD count_reg, delay

delay_count: SUB count_reg, 1

JUMP NZ, delay_count

JUMP channel1

е * 3 a о п р о мм обработки прерывания

ORG $1A5

interrupt_proc: LOAD cur_addr_pointer, addr_pointer

OUT cur_addr_pointer, EXT_PORT

out_mem: FETCH buff_reg, cur_addr_pointer

OUT buff_reg, EXT_PORT

ADD cur_addr_pointer, 1

COMP addr_pointer, cur_addr_pointer

JUMP Z, end_proc

COMP cur_addr_pointer, 64

JUMP NZ, out_mem

LOAD cur_addr_pointer, 0

JUMP out_mem

end_proc: RETI ENABLE

ORG $3FF

JUMP interrupt_proc

VHDL «ROM_form.vhd», «prog_rom.vhd»,

«prog_rom»

В структуре приведенной микропроцессорной программы можно условно выделить три части. В первой части представлены директивы интегрированной среды pBlaze IDE, используемые для определения констант, адресов ввода/вывода, переименования регистров общего назначения и декларации портов ввода/вывода. Вторая часть содержит текст основной микропрограммы на языке ассемблера. В третьей части приведен исходный текст подпрограммы обработки прерывания. Рассмотрим более подробно содержание всех частей представленной выше микропроцессорной программы.

В начале программы с помощью директивы EQU интегрированной среды pBlaze IDE [10] определяются мнемонические обозначения адресов используемых портов ввода/вывода и их числовые значения. В качестве мнемонических обозначений указываются идентификаторы, которые были использованы при описании архитектуры проектируемого контроллера.

Затем, применяя эту же директиву, задаем значения констант, которые применяются в микропроцессорной программе в качестве параметров инструкций. Значения констант min_value_1 и min_value_2 представляют нижние границы допустимого диапазона значений данных, считываемых из первого и второго входного порта соответственно. Значения констант max_value_1 и max_value_2 определяют верхние границы предельно допустимого диапазона входных данных. Константы corr_data_min1, corr_data_max1, corr_data_min2, corr_data_max2 используются при вычислении управляющих кодов, вырабатываемых при выходе принимаемых данных за пределы установленных диапазонов. Значение константы delay устанавливает минимальную величину временного интервала, через который выполняется циклическое чтение данных из входных портов ввода/вывода.

Далее следуют директивы EQU, с помощью которых вводятся мнемонические названия регистров общего назначения, задействованных в разрабатываемой микропроцессорной программе. В регистр inform_data записываются данные, которые считываются из входных портов ввода/вывода. Регистр diff_data используется для вычисления разности между текущим значением входных данных и предельно допустимыми значениями, установленными для соответствующего параметра. Регистр addr_pointer исполняет в основной микропроцессорной программе роль указателя текущего адреса ячейки сверхоперативной памяти, по которому производится обращение к СОЗУ. Регистр cur_addr_pointer предназначен для выполнения аналогичной функции в подпрограмме обработки прерывания. Буферный регистр buff_reg применяется для чтения данных из СОЗУ и последующей их записи в выходной порт ввода/вывода EXT_PORT. Регистр соиП_^ выполняет функцию счетчика времени задержки. В регистр за-

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

В последней группе директив EQU приведены выражения декларации всех портов ввода/вывода, которые используются в разработанной микропрограмме. Идентификаторы IN_DATA_PORT1 и IN_DATA_PORT2 представляют входные порты с адресами ADDR_INPORT1 и ADDR_INPORT2 соответственно, из которых выполняется чтение данных. Для выходных портов с адресами ADDR_CTRLPORT1 и ADDR_CTRLPORT2, предназначенных для вывода управляющих кодов первого и второго каналов, указаны идентификаторы CTRL_PORT1 и CTRL_PORT2 соответственно. Выходному порту с адресом ADDR_ALARM_PORT, к которому подключаются светодиодные индикаторы, присвоен идентификатор ALARM_PORT. Выходной порт с адресом ADDR_EXTPORT, использу-

емый для передачи информации из СОЗУ во внешний (главный) компьютер, объявлен как EXT_PORT.

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

Вслед за исходным текстом основной микропроцессорной программы расположен текст подпрограммы обработки прерывания. Директива интегрированной среды pBlaze IDE ORG $1A5, предписывает транслировать код процедуры обработки прерывания начиная с адреса 1A5. Подпрограмма обработки прерывания выполняет поочередное чтение данных из ячеек СОЗУ и передачу их в выходной порт EXT_PORT. Директива ORG $3FFука-зывает размещение при трансляции кода вектора прерывания по адресу 3FF. Необходимость этого обусловлена архитектурными особенностями микропроцессорных ядер PicoBlaze, предназначенных для реализации на основе кристаллов семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4 [1, 6].

Завершает сформированный текст директива интегрированной среды pBlaze IDE, которая инициирует процесс автоматической генерации файла описания содержимого программной памяти на языке VHDL после трансляции исходного текста микропроцессорной программы на языке ассемблера. В качестве идентификатора файла шаблона описания содержимого ППЗУ микропрограмм на языке VHDL указано название файла ROM_form.vhd, который входит в состав архива модулей используемой версии микропроцессорного ядра PicoBlaze. Имя формируемого файла описания содержимого программной памяти, указанное в рассматриваемой директиве, совпадает с именем исходного файла, отличаясь расширением. В качестве идентификатора модуля программной памяти использовано имя компонента программной памяти в составе VHDL-описания объекта embedded_kcpsm3, включенного в состав архива файлов применяемой версии микропроцессорного ядра PicoBlaze.

После ввода представленного выше исходного текста микропроцессорной программы в окне редактирования нужно вновь сохранить его в файле prog_rom.psm, используя команду Save из всплывающего меню File или кнопку быстрого доступа И. Далее выполним проверку функционирования разработанного программного обеспечения, эмулируя работу проектируемой системы с помощью отладочных средств pBlaze IDE.

Рис. 2. Вид основного окна интегрированной среды pBlaze IDE версии 3.6 после переключения в режим моделирования разработанной микропроцессорной программы

Отладка программного обеспечения для простейшего контроллера сбора и обработки данных, проектируемого на основе микропроцессорного ядра PicoBlaze и реализуемого в ПЛИС семейства Spartan-3

Для трансляции сформированного исходного текста микропроцессорной программы на языке ассемблера и генерации математической модели разрабатываемой системы воспользуемся командой Simulate, которая представлена в одноименном всплывающем меню Simulate, или кнопкой быстрого доступа И, расположенной на оперативной панели управления. Если приведенный выше текст микропрограммы был набран в окне редактора без ошибок, то процесс его трансляции должен завершиться успешно. При этом автоматически генерируется исполняемый код и математическая модель, включающая эмулятор микропроцессорного ядра, программной памяти и используемых портов ввода/вывода, а также файл описания содержимого программной памяти на языке VHDL. При обнаружении ошибок, допущенных в процессе набора текста в окне редактирования, во встроенном окне журнала регистрации сообщений (Log Pane) основного окна интегрированной среды pBlaze IDE будет выведена соответствующая информация с указанием кодового обозначения зафиксированной ошибки [10]. В этом случае нужно отредактировать соответствующую строку исходного текста и вновь повторить запуск процесса трансляции, выполнив операции, перечисленные выше.

В случае успешного завершения трансляции исходного текста микропроцессорной программы интегрированная среда pBlaze IDE автоматически переключается в режим отладки. Окно редактирования исходного текста сменяется окном отладчика, вид которого показан на рис. 2. При этом сформированная математическая модель проектируемой системы находится в начальном состоянии, которое характеризуется сбросом содержимого программного счетчика, флагов регистра состояния и регистров общего назначения. В этом состоянии указатель очередной исполняемой инструкции в окне отладчика расположен в строке исходного текста микропроцессорной программы, содержащей первую исполняемую команду ассемблера микропроцессорного ядра PicoBlaze (рис. 2).

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

контрольную точку целесообразно установить в строке исходного текста, которая содержит метку visual_ctrl. Для этого помещаем курсор на указанную строку исходного текста микропрограммы в окне отладки и выбираем команду Toggle из всплывающего меню Simulate или нажимаем кнопку быстрого доступа 1@ на оперативной панели управления основного окна интегрированной среды pBlaze IDE. Вторую точку останова устанавливаем в строке, которая включает метку out_mem. Прежде чем запустить сеанс моделирования, нужно определить начальное состояние входных портов ввода/вывода IN_DATA_PORT1 и IN_DATA_PORT2. Значения данных, которые поступают в указанные порты ввода/вывода, задаются в двоичном представлении с помощью линеек индикаторов состояния, расположенных в одноименных встроенных панелях в правой части окна отладки (рис. 2). Для определения значения каждого двоичного разряда байта входных данных помещаем курсор на поле соответствующего индикатора и щелчком левой кнопкой мыши выбираем требуемое состояние. Сброшенное состояние индикатора (маркер отсутствует) соответствует нулевому биту в соответствующем разряде байта данных, а установленное (отмеченное маркером) — единичному биту. Каждый щелчок кнопки мыши изменяет состояние индикатора на противоположное. При определении значения байта данных следует помнить, что старшим значащим разрядом является седьмой разряд. Установленное значение байта входных данных отображается в шестнадцатеричной форме справа от линейки индикаторов.

Далее активизируем процесс моделирования выполнения микропроцессорной программы в непрерывном режиме, выбрав команду Run из всплывающего меню Simulate или нажав кнопку быстрого доступа 63, представленную на оперативной панели управления. После приостановления процесса выполнения микропрограммы в первой контрольной точке проводим проверку текущего содержимого выходных портов ввода/вывода CTRL_PORT1, CTRL_PORT2 и ALARM_PORT, регистров общего назначения и ячеек СОЗУ. Далее устанавливаем новые значения данных, поступающих во входные порты ввода/вывода IN_DATA_PORT1 и IN_DATA_PORT2. Затем возобновляем процесс моделирования, повторно воспользовавшись командой Run или кнопкой быстрого доступа ЁЭ. Перечне -ленные операции повторяются для различных комбинаций значений входных данных. Чтобы проконтролировать выполнение всех ветвей разработанной микропроцессорной программы, для каждого входного порта ввода/вывода поочередно задаем значения входных данных, которые соответствуют предельно допустимому диапазону, выходят за нижнюю границу и превышают верхнюю границу этого диапазона. Причем во встроенной информационной панели, которая отображает значения данных, записываемых в выходной порт ALARM_PORT, должно соответствующим образом изменяться изображение светодиодных индикаторов, отражающих состояние младших четырех разрядов. Убедившись в том, что основная микропроцессорная программа функционирует в соответствие с требуемым алгоритмом, переходим к проверке подпрограммы обработки прерывания.

Чтобы смоделировать выполнение процедуры обслуживания прерывания, при очередной остановке в первой контрольной точке установим режим разрешения обработки прерываний. С этой целью переключаем индикатор Enable, который находится во встроенной панели Status (рис. 2), в активное состояние, отмеченное маркером. Для генерации запроса прерывания по фронту сигнала INTERRUPT нужно перевести индикатор Edge, расположенный во встроенной панели Interrupt (рис. 2), во включенное состояние. После этого при продолжении моделирования выполнения микропроцессорной программы с помощью команды Run или кнопки быстрого доступа 13 будет выполнен переход к процедуре обслуживания прерывания. Процесс моделирования подпрограммы обработки прерывания будет автоматически приостановлен при достижении второй контрольной точки. Для оценки корректности выполнения этой подпрограммы следует обратить внимание на состояние светодиодных индикаторов, расположенных во встроенной информационной панели EXT_PORT, которая отображает значения данных, записываемых в одноименный выходной порт. При повторных нажатиях кнопки быстрого доступа 13 или выполнении команды Run содержимое ячеек СОЗУ должно поочередно записываться в указанный выходной порт начиная с адреса последнего обращения. На этом завершается отладка микропроцессорной программы для проектируемого контроллера.

Трансляция исходного текста разработанного программного обеспечения для проектируемого контроллера с использованием ассемблера микропроцессорного ядра PicoBlaze

Прежде чем приступить к проектированию аппаратной части разрабатываемого контроллера, рассмотрим альтернативный способ трансляции сформированного исходного текста программного обеспечения с помощью штатного ассемблера микропроцессорного ядра PicoBlaze, который входит в состав архива файлов, предоставляемого пользователю [7]. При этом следует учесть, что ассемблер не поддерживает директивы интегрированной среды pBlaze IDE, десятичную форму представления значений числовых параметров инструкций, а также формат записи некоторых команд. Поэтому для приведения подготовленного текста микропроцессорной программы в соответствие с требованиями ассемблера необходимо внести в него следующие изменения:

• директивы декларации констант EQU интегрированной среды pBlaze IDE заменить директивами CONSTANT ассемблера микропроцессорного ядра;

• директивы EQU, используемые для переименования регистров общего назначения, поменять на директивы NAMEREG;

• исключить директивы декларации портов ввода/вывода DSIN и DSOUT;

• директивы явного указания адресов размещения команд в программной памяти ORG заменить директивами ADDRESS;

• все числовые параметры инструкций перевести из десятичной формы представления в шестнадцатеричную;

• изменить формат команд ввода/вывода, сравнения двух операндов, чтения и записи данных в СОЗУ;

• удалить директиву генерации файла описания содержимого программной памяти на языке VHDL.

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

; Адреса портов ввода/вывода

CONSTANT ADDR_INPORT1, 00

CONSTANT ADDR_INPORT2, 01

CONSTANT ADDR_CTRLPORT1, 02

CONSTANT ADDR_CTRLPORT2, 04

CONSTANT ADDR_ALARM_PORT, 01

CONSTANT ADDR_EXTPORT, 08

; Предельные значения параметров

CONSTANT min_value_1, 0A

CONSTANT max_value_1, 64

CONSTANT min_value_2, 0F

CONSTANT max_value_2, 6E

CONSTANT corr_data_min1, 04

CONSTANT corr_data_max1, 14

CONSTANT corr_data_min2, 05

CONSTANT corr_data_max2, 0C

CONSTANT delay, 78

; Переименование используемых регистров общего назначения

NAMEREG s0, inform_data

NAMEREG s2, diff_data

NAMEREG s7, addr_pointer

NAMEREG s6, buff_reg

NAMEREG s5, count_reg

NAMEREG s4, cur_addr_pointer

NAMEREG s1, led_reg

; Текст основной микропроцессорной программы

LOAD addr_pointer, 00

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

channell: INPUT inform_data, ADDR_INPORT1

STORE inform_data, (addr_pointer)

LOAD led_reg, 00

ADD addr_pointer, 01

COMPARE addr_pointer, 40

JUMP NZ, diff1

LOAD addr_pointer, 00

diffl: LOAD diff_data, inform_data

SUB diff_data, min_value_1

JUMP C, ctr1_min_1

LOAD diff_data, inform_data

SUB diff_data, max_value_1

JUMP NC, ctrl_max_1

LOAD diff_data, 00

JUMP out_ctrl1

ctrl_min_1: ADD diff_data, corr_data_min1

OR led_reg, 08

JUMP out_ctrl1

ctrl_max_1: ADD diff_data, corr_data_max1

OR led_reg, 04

out_ctrl1: OUTPUT diff_data, ADDR_CTRLPORT1

OUTPUT led_reg, ADDR_ALARM_PORT

channel2: INPUT inform_data, ADDR_INPORT2

STORE inform_data, (addr_pointer)

ADD addr_pointer, 01

COMPARE addr_pointer, 40

JUMP NZ, diff2

LOAD addr_pointer, 00

diff2: LOAD diff_data, inform_data

SUB diff_data, min_value_2

JUMP C, ctrl_min_2

LOAD diff_data, inform_data

SUB diff_data, max_value_2

JUMP NC, ctrl_max_2

LOAD diff_data, 00

JUMP out_ctrl2

ctrl_min_2: ADD diff_data, corr_data_min2

OR led_reg, 02

JUMP out_ctrl2

ctrl_max_2: ADD diff_data, corr_data_max2

OR led_reg, 01

out_ctrl2: OUTPUT diff_data, ADDR_CTRLPORT2

OUTPUT led_reg, ADDR_ALARM_PORT

visual_ctrl: LOAD count_reg, delay

delay_count: SUB count_reg, 01

JUMP NZ, delay_count

JUMP channel1

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

ADDRESS 1A5

interrupt_proc: LOAD cur_addr_pointer, addr_pointer

OUTPUT cur_addr_pointer, ADDR_EXTPORT

out_mem: FETCH buff_reg, (cur_addr_pointer)

OUTPUT buff_reg, ADDR_EXTPORT

ADD cur_addr_pointer, 01

COMPARE addr_pointer, cur_addr_pointer

JUMP Z, end_proc

COMPARE cur_addr_pointer, 40

JUMP NZ, out_mem

LOAD cur_addr_pointer, 00

JUMP out_mem

end_proc: RETURNI ENABLE

ADDRESS 3FF

JUMP interrupt_proc

Для трансляции модифицированной микропроцессорной программы можно запустить сеанс DOS, перейти в созданный рабочий каталог C:\Project\sampled_data_controller и воспользоваться следующей командной строкой.

Kcpsm3.exe prog_rom.psm

Но удобнее активизировать процесс трансляции, используя команду Выполнить (Run) из меню, вызываемого кнопкой Пуск (Start) операционной системы Windows 2000/XP. В появившейся на экране диалоговой панели (рис. 3) с помощью кнопки Обзор активизируем стандартную панель открытия файла, воспользовавшись которой, переходим в созданный рабочий каталог проекта и выбираем исполняемый файл ассемблера Kcpsm3.exe. Затем переключаемся на строку Открыть в диалоговой панели Запуск программы (рис. 3) и дополняем командную строку названием исходного модуля микропроцессорной программы на языке ассемблера prog_rom.psm, используя клавиатуру.

Для исполнения набранной командной строки нажимаем кнопку ОК, расположенную в нижней части диалоговой панели Запуск программы. После этого автоматически открывается окно сеанса DOS, в котором отражается выполнение процесса трансляции. При ус-

Рис. 3. Запуск процесса трансляции разработанной микропроцессорной программы с помощью команды Выполнить (Run) из меню, вызываемого кнопкой Пуск (Start) операционной системы Windows 2000/XP

пешном завершении процесса, в окне сеанса DOS появляется строка KCPSM3 successful, а в рабочем каталоге — сформированные файлы описания программной памяти в различных форматах, в том числе файл prog_rom.vhd. Содержимое этого файла должно быть тем же самым, что и при использовании транслятора интегрированной среды pBlaze IDE, если были выполнены все указанные изменения в исходном тексте разработанной микропроцессорной программы.

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

Окончание следует. Литература

1. Зотов В. Проектирование встраиваемых микропроцессорных систем на основе ПЛИС фирмы Xilinx. М.: Горячая линия — Телеком. 2006.

2. Зотов В. PicoBlaze — семейство восьмиразрядных микропроцессорных ядер, реализуемых на

основе ПЛИС фирмы ХШпх // Компоненты и технологии. 2003. № 4.

3. Зотов В. Система команд микропроцессорного ядра РкоВ1аге, реализуемого на основе ПЛИС семейств БраЛап-П, 8раЛап-1Щ У^ех, У^ех^ // Компоненты и технологии. 2003. № 5.

4. Зотов В. Особенности микропроцессорного ядра РкоВ1аге, предназначенного для применения в проектах, реализуемых на основе ПЛИС семейства У^ех-П // Компоненты и технологии. 2003. № 6.

5. Зотов В. Особенности микропроцессорного ядра РкоВ1аге, предназначенного для применения в проектах, реализуемых на основе ПЛИС семейства ^оЩ^пе^И // Компоненты и технологии. 2003. № 7.

6. Зотов В. Особенности микропроцессорного ядра РкоВ1аге, предназначенного для применения в проектах, реализуемых на основе ПЛИС семейств БраПап-3, У^ех-П и У^ех-ПРЮ // Компоненты и технологии. 2005. № 5-6.

7. Зотов В. Разработка программ на языке ассемблера для семейства микропроцессорных ядер РкоВ1аге // Компоненты и технологии. 2003. № 8.

8. Зотов В. Программирование конфигурационной памяти встраиваемой системы, реализуе-

мой на основе микропроцессорного ядра семейства PicoBlaze в ПЛИС фирмы Xilinx // Компоненты и технологии. 2006. № 2.

9. Зотов В. pBlaze IDE — интегрированная среда разработки и отладки программного обеспечения встраиваемых восьмиразрядных микропроцессорных систем, реализуемых на основе ПЛИС фирмы Xilinx // Компоненты и технологии. 2006. № 3-4.

10. Зотов В. Директивы и сообщения об ошибках интегрированной среды разработки и отладки программного обеспечения встраиваемых восьмиразрядных микропроцессорных систем, реализуемых на основе ПЛИС фирмы Xilinx, pBlaze IDE // Компоненты и технологии. 2006. №5.

11. Зотов В. Разработка и отладка программного обеспечения встраиваемых восьмиразрядных микропроцессорных систем, реализуемых на основе ПЛИС фирмы Xilinx, в среде pBlaze IDE // Компоненты и технологии. 2006. № 6.

12. Зотов В. Инструментальный комплект Spartan-3 Starter Kit для практического освоения методов проектирования встраиваемых микропроцессорных систем на основе ПЛИС семейств FPGA фирмы Xilinx // Компоненты и технологии. 2005. № 7.

i Надоели баннеры? Вы всегда можете отключить рекламу.