Учебное пособие Москва Издательство Московского государственного университета леса 2012 удк 004. 896(075) Е92 Разработано в соответствии с Федеральным государственным


НазваниеУчебное пособие Москва Издательство Московского государственного университета леса 2012 удк 004. 896(075) Е92 Разработано в соответствии с Федеральным государственным
страница6/10
ТипУчебное пособие
1   2   3   4   5   6   7   8   9   10

3.2.4. JTAG порт
JTAG порт реализует соединение между стендом DE2-70 и инструментальным компьютером. Это соединение используется пакетом Quartus II для загрузки файла программирования в кристалл ПЛИС на плате, посредством чего создаётся процессорная система. Соединение также используется приложением AMP для загрузки программы в процессорную систему и управления её выполнением.

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

Если на инструментальном компьютере используется приложение AMP, то для передачи символьных данных в порт JTAG их следует печатать в терминальном окне приложения, предварительно поместив туда курсор с помощью мыши. Вывод символов в порт JTAG из процессорной системы Nios II будет приводить к отображению их в терминальном окне приложения АМР, выполняющегося на инструментальном компьютере.

Программный интерфейс JTAG порта состоит из двух 32-битных регистров, показанных на рис. 3.10. Регистр, доступный по адресу 0x10001000, является регистром данных. Регистр, доступный по адресу 0x10001004, является регистром управления.


Рис. 3.10 – Регистры порта JTAG UART
Когда символьные данные из инструментального компьютера посылаются в JTAG UART, то они сохраняются в 64-символьном буфере FIFO. Число символов, хранимых в настоящий момент в буфере FIFO, указывается в поле RAVAIL, которое представлено разрядами 31-16 регистра данных. Если буфер FIFO переполнен, то дополнительно посылаемые в него данные со стороны инструментального компьютера будут потеряны. Если данные присутствуют в буфере FIFO, то величина RAVAIL будет больше нуля и 15-ый бит регистра данных RVALID будет равен 1. Для процессора Nios II рассматриваемый буфер будет содержать вводимую им информацию. Поэтому будем называть его принимаемым. То есть он содержит предназначенные для чтения процессором Nios II символы.

Чтобы осуществить чтение символа из вершины буфера FIFO, необходимо прочитать содержимое регистра данных JTAG порта. При этом младшие разряды 7-0 регистра данных будут содержать вводимый символ. Поле RAVAIL при выполнении чтения автоматически уменьшится на единицу, и это уменьшенное значение как раз и будет получено в результате чтения. Если данных в принимаемом буфере FIFO нет, то поле RVALID будет содержать нулевое значение, и результат чтения из разрядов 7-0 регистра данных будет не определен.

Контроллер JTAG UART также включает 64-символьный буфер FIFO, который хранит данные, ожидающие передачи в инструментальный компьютер. Символьные данные загружаются в этот буфер посредством записи в разряды 7-0 регистра данных. Следует заметить, что запись в этот регистр не оказывает никакого влияния на получаемые данные. Размер доступного пространства в текущий момент времени в записываемом буфере FIFO указывается в разрядах 31-16 регистра управления. Это поле WSPACE (см. рис. 3.10). Если буфер FIFO полон, то все данные, в последующем записываемые в регистр данных, будут теряться.

Бит 10 в регистре управления, названный AC, устанавливается в 1, если к JTAG UART был доступ со стороны инструментального компьютера. Этот бит может быть использован для проверки наличия установленного соединения инструментального компьютера с платой DE2-70. Бит АС может быть вновь очищен посредством записи в него 1. Биты регистра управления RЕ, WE, RI, WI обсуждаются в разделе 3.3.2.
3.2.4.1. Использование JTAG UART в программах на языке ассемблер и С
Листинг 5 и листинг 6 содержат простые примеры программ на языке ассемблер и C, которые используют JTAG UART. Обе версии программы выполняют одни и те же функции, т.е. они отправляют текстовую строку в JTAG UART и затем выполняют бесконечный цикл. В этом цикле выполняется чтение символьных данных, полученных из JTAG UART, и запись их обратно в JTAG UART для передачи в инструментальный компьютер. Если программа выполняется с использованием AMP, то любые символы, которые будут печататься с помощью клавиатуры в её терминальном окне, будут возвращены назад, что приведет к появлению их в терминальном окне. Файлы с исходными кодами программ, показанных в листингах 5 и 6, доступны как часть AMP. Эти файлы могут быть найдены в разделе «Sample programs» под именем JTAG UART.
Лпрямая соединительная линия 66истинг 5. Пример программы на языке ассемблер, в котором используется JTAG UART

/*****************************************************************************

* Программа выполняет следующее:

* 1. отправляет символьную строку из текстовой строки в JTAG UART

* 2. считывает данные из JTAG UART

* 3. отправляет считанные данные обратно в JTAG UART

*****************************************************************************/

.text

.global _start

_start:

movia sp, 0x07FFFFFC /* определяем адрес вершины стека */
movia r6, 0x10001000

movia r8, TEXT_STRING /* адрес текстовой строки в r8 */

LOOP:

ldb r5, 0(r8) /* считываем символ из текстовой строки в r5*/

call PUT_JTAG /* вызываем процедуру, которая отправляет символ в JTAG */
addi r8, r8, 1

br LOOP /* переходим на вывод очередного символа */
GET_JTAG:

ldwio r4, 0(r6) /*читаем регистр управления JTAG UART*/

andi r8, r4, 0x8000 /*проверяем, есть ли новые данные*/

beq r8, r0, GET_JTAG /*если данных нет, то ожидаем их появления*/

andi r5, r4, 0x00ff /*получаем данные*/
call PUT_JTAG /*отправляем символ обратно в JTAG UART*/

call GET_JTAG
.end

/*****************************************************************************

* Подпрограмма, которая выводит символы в JTAG UART

* r5 = выводимый символ

* r6 = JTAG UART базовый адрес

*****************************************************************************/

.global PUT_JTAG

PUT_JTAG:

/* сохраняем используемые регистры */

subi sp, sp, 4 /* резервирум место в стеке*/

stw r4, 0(sp) /* сохраняем r4 в стеке */
ldwio r4, 4(r6) /* читаем регистр управления JTAG UART */

andhi r4, r4, 0xffff /* проверяем есть ли место для записи в буфере UART */

beq r4, r0, KONEC /* если места нет, то переполнение буфера */

stwio r5, 0(r6) /* отправляем символ в UART */

OVERFLOW:

/* восстанавливаем содержимое r4 */

ldw r4, 0(sp)

addi sp, sp, 4
ret
/*****************************************************************************/

.data
TEXT_STRING:

.asciz "\nJTAG UART example code\n"
.end

прямая соединительная линия 79


Лпрямая соединительная линия 83истинг 6. Пример программы на языке С, в котором используется JTAG UART

void put_jtag(volatile int *, char);
/********************************************************************************

Программа выполняет следующее:

* 1. отправляет символьную строку из текстовой строки в JTAG UART

* 2. считывает данные из JTAG UART

* 3. отправляет считанные данные обратно в JTAG UART ********************************************************************************/

int main(void)

{

volatile int * JTAG_UART_ptr = (int *) 0x10001000; // базовый адрес JTAG UART
int data, i;

char text_string[] = "\nJTAG UART example code\n> \0"; //текстовая строка
for (i = 0; text_string[i] != 0; ++i) //цикл отправки символов строки в JTAG UART порт

put_jtag (JTAG_UART_ptr, text_string[i]);
while(1)

{

data = *(JTAG_UART_ptr); //читаем символ из порта JTAG UART

if (data & 0x00008000) //проверяем, имеются ли в буфере новые данные

{

data = data & 0x000000FF;

/* echo the character */

put_jtag (JTAG_UART_ptr, (char) data & 0xFF ); // отправляем символ обратно в JTAG UART порт

}

}

}
/*****************************************************************************

* Подпрограмма, которая выводит символы в JTAG UART

*****************************************************************************/

void put_jtag( volatile int * JTAG_UART_ptr, char c )

{

int control;

control = *(JTAG_UART_ptr + 1); // считываем содержимое управляющего регистра JTAG UART

if (control & 0xFFFF0000) //проверяем, имеется ли свободное место в буфере

*(JTAG_UART_ptr) = c; //записываем символ в порт JTAG UART

}

прямая соединительная линия 84


3.2.5. Последовательный порт
Последовательный порт в процессорной системе включает UART, который соединен с соответствующей микросхемой RS232 на плате. Этот UART конфигурируется для передачи восьми битов данных, одного стопового бита, бита нечетности. Он работает со скоростью 115200 бит в секунду. Программный интерфейс последовательного порта состоит из двух 32-битных регистров, показанных на рис. 3.11. Регистр, доступный по адресу 0x10001010, является регистром данных. Регистр, доступный по адресу 0x10001014, является регистром управления.



Рис. 3.11 – Регистры UART последовательного порта
Когда символьные данные пересылаются в процессорную систему через разъем RS232, они сохраняются в 128-символьном буфере FIFO. Как показано на рис. 3.11, число символов RAVAIL, хранимых в текущий момент времени в этом FIFO, представлено в битах 31-16 регистра данных. Если буфер FIFO получаемых данных полный, то дополнительные данные, переданные в процессорную систему, будут потеряны. Когда данные присутствуют в буфере FIFO получаемых данных, то величина бита 15 регистра данных (RVALID) будет равна 1.

Чтобы осуществить чтение символа из вершины буфера FIFO, необходимо прочитать содержимое регистра данных порта UART. При этом младшие разряды 7-0 регистра данных будут содержать вводимый символ. Поле RAVAIL при выполнении чтения автоматически уменьшится на единицу, и это уменьшенное значение как раз и будет получено в результате чтения. Если данных в принимаемом буфере FIFO нет, то поле RVALID будет содержать нулевое значение, и результат чтения из разрядов 7-0 регистра данных UART будет не определен.

Последовательный порт так же включает 128-символьный буфер FIFO, который хранит данные, ожидающие отправки в RS232. Символьные данные загружаются в этот буфер посредством записи в биты 7-0 регистра данных. Запись в регистр данных не оказывает никакого влияния на получаемые данные. Размер доступного пространства в текущий момент времени в заполняемом буфере FIFO указывается в разрядах 31-16 регистра управления. Это поле WSPACE (см. рис. 3.11). Если буфер FIFO заполнен, то все данные, в последующем записываемые в регистр данных, будут потеряны.

Биты регистра управления RE, WE, WI, RI обсуждаются в разделе 3.3.3.
3.2.6. Интервальный таймер
Процессорная система включает таймер, который может быть использован для измерения различных временных интервалов.

Интервальный таймер представляет собой счетчик, в который загружается некоторое значение. Затем счетчик выполняет счет в убывающем порядке до нуля, используя тактовый сигнал частотой 50 МГц, вырабатываемый на плате DE2-70. Программный интерфейс таймера включает шесть 16-битных регистров, показанных на рис. 3.12.


Рис. 3.12 – Регистры интервального таймера

Регистр, доступный по адресу 0x10002000, является регистром состояния таймера. Регистр, доступный по адресу 0x10002004, представляет регистр управления таймером. Назначения битов этих регистров следующее.

Разряд TO (time out) сигнализирует о завершении интервала. Он устанавливается в 1, когда таймер досчитает до нулевой величины. Сигнал TO может быть сброшен посредством записи 0 в этот разряд.

Разряд RUN устанавливается в 1 и остается в этом состоянии все время, пока не завершится текущий интервал. Операция записи в регистр состояния таймера полуслова не оказывает влияния на разряд RUN.

Разряд ITO используется для формирования сигнала прерывания процессора Nios II, которое обсуждается в разделе 3.3.4.

Разряд CONT влияет на дальнейшее поведение таймера. Когда CONT установлен в 1, таймер после достижения нулевого значения вновь перезагрузит заданное начальное значение и продолжит счет вниз автоматически. Но если разряд CONT равен 0, то таймер остановится после того, как его счетчик досчитает до нулевой величины.

Разряды START и STOP могут быть использованы для того, чтобы стартовать или остановить операцию счета таймера, посредством записи 1 в соответствующий бит регистра управления.

Два 16-битных регистра с адресами 0x10002008 и 0x1000200С задают временной интервал таймера посредством задания начального значения для счетчика таймера. В процессорной системе «DE2-70 Media Computer» выполнены установки для таймера, соответствующие периоду 125 мс. Чтобы сформировать такой интервал, стартовая величина счетчика таймера определяется так: 50МГц*125мс=6.25*10^6.

Чтобы определить текущее состояние счетчика таймера, необходимо выполнить запись в регистр таймера по адресу 0x10002010. Эта операция приведет к тому, что текущее состояние 32-битного счетчика будет сохранено в двух 16-битных регистрах таймера по адресам 0x10002010 и 0x10002014. Затем эти регистры могут быть прочитаны процессором обычным образом.
3.2.7. Модуль идентификации системы
Модуль System ID формирует уникальную величину, которая идентифицирует процессорную систему. Инструментальный компьютер, соединенный с платой DE2-70, может получить идентификационный номер процессорной системы, выполняя операцию его чтения через JTAG порт. Затем инструментальный компьютер может проверить величину, возвращенную идентификатором, чтобы убедиться, что именно процессорная система «DE2-70 Media Computer» подключена к нему в настоящее время. Этот процесс позволит инструментальным средствам отладки на главном компьютере, таким как AMP, проверить, что DE2-70 плата содержит требуемую процессорную систему до загрузки и выполнения исполнительного кода программы, скомпилированного для этой системы.


3.3. Исключения и прерывания в процессорной системе
Адрес сброса процессора Nios II в процессорной системе «DE2-70 Media Computer» установлен 0x00000000. Адрес, используемый для всех общих исключений и аппаратных прерываний - 0x00000020. Так как процессор Nios II использует один и тот же адрес для общих исключений и аппаратных прерываний, обработчик исключений должен определить источник исключения, анализируя соответствующий регистр состояния процессора. Табл.3.1 содержит номера запросов прерываний IRQ для каждого устройства ввода/вывода в процессорной системе. Оставшаяся часть этого раздела описывает прерывания, связанные с интервальным таймером, параллельными портами и последовательными портами в процессорной системе. Прерывания для других устройств, приведенных в табл. 3.1, обсуждаются в разделе 3.4.
Таблица 3.1

Номера запросов прерываний от устройств ввода/вывода

процессорной системы

Устройство ввода/вывода

№ прерывания(IRQ)

Интервальный таймер

0

Параллельный порт кнопок

1

Аудиопорт

6

PS/2 (для клавиатуры)

7

PS/2 (для мыши)

17

JTAG

8

Последовательный порт

10

Параллельный порт расширения JP1

11

Параллельный порт расширения JP2

12

1   2   3   4   5   6   7   8   9   10

Похожие:

Учебное пособие Москва Издательство Московского государственного университета леса 2012 удк 004. 896(075) Е92 Разработано в соответствии с Федеральным государственным  iconУчебное пособие Издательство Иркутского государственного технического университета 2012
Тимофеева С. С. Защита литосферы и обращение с опасными отходами : учеб пособие. – Иркутск : Изд-во Иргту, 2012. – 159 с

Учебное пособие Москва Издательство Московского государственного университета леса 2012 удк 004. 896(075) Е92 Разработано в соответствии с Федеральным государственным  iconУчебное пособие Москва «Альтаир» 2010 удк 349. 6(470)(075) ббк 67. 407 Я 7
Негосударственное (частное) образовательное учреждение дополнительного профессионального образования (повышения квалификации) специалистов...

Учебное пособие Москва Издательство Московского государственного университета леса 2012 удк 004. 896(075) Е92 Разработано в соответствии с Федеральным государственным  iconУчебное пособие. М.: Издательство Московского университета, 2004
«Вся Россия», «Моя провинция», «Новости – время местное» и др Представлены также некоторые особенности совместной работы журналистов...

Учебное пособие Москва Издательство Московского государственного университета леса 2012 удк 004. 896(075) Е92 Разработано в соответствии с Федеральным государственным  iconУчебное пособие Москва 2008
Юдин В. П. Профсоюзная работа в школе. Учебное пособие. Москва, Издательство мгоу, 2008. 126 с

Учебное пособие Москва Издательство Московского государственного университета леса 2012 удк 004. 896(075) Е92 Разработано в соответствии с Федеральным государственным  iconУчебное пособие Издательство Казанского (Приволжского) федерального университета 2014
Учебное пособие предназначено для студентов, аспирантов, преподавателей юридических учебных заведений, работников судов, адвокатуры,...

Учебное пособие Москва Издательство Московского государственного университета леса 2012 удк 004. 896(075) Е92 Разработано в соответствии с Федеральным государственным  iconУчебное пособие Издательство Казанского (Приволжского) федерального университета 2014
Учебное пособие предназначено для студентов, аспирантов, преподавателей юридических учебных заведений, работников судов, адвокатуры,...

Учебное пособие Москва Издательство Московского государственного университета леса 2012 удк 004. 896(075) Е92 Разработано в соответствии с Федеральным государственным  iconУчебное пособие для бакалавров направления подготовки 230700. 62...
Учебное пособие для бакалавров направления подготовки 230700. 62 «Прикладная информатика в области экономики»

Учебное пособие Москва Издательство Московского государственного университета леса 2012 удк 004. 896(075) Е92 Разработано в соответствии с Федеральным государственным  iconПермский филиал Факультет бизнес-информатики Кафедра информационных...
Описание процесса разработки системы поддержки принятия решений в управлении персоналом 38

Учебное пособие Москва Издательство Московского государственного университета леса 2012 удк 004. 896(075) Е92 Разработано в соответствии с Федеральным государственным  iconУчебно-методическое пособие Красноярск сфу 2012 удк 625. 7: 338(075) ббк 65. 315. 373
Г12 Экономика отрасли (Экономика дорожного строительства): учебно-методическое пособие [Текст] / сост. В. В. Гавриш, Е. В. Гуторин....

Учебное пособие Москва Издательство Московского государственного университета леса 2012 удк 004. 896(075) Е92 Разработано в соответствии с Федеральным государственным  iconУчебно-методическое пособие Красноярск сфу 2012 удк 625. 7: 338(075) ббк 65. 315. 373
Г12 Экономика отрасли (Экономика дорожного строительства): учебно-методическое пособие [Текст] / сост. В. В. Гавриш, Е. В. Гуторин....

Вы можете разместить ссылку на наш сайт:


Все бланки и формы на filling-form.ru




При копировании материала укажите ссылку © 2019
контакты
filling-form.ru

Поиск