Лабораторная работа №8 «Разработка процессорного ядра Niosii и программного обеспечения для него» Теоретические сведения icon

Лабораторная работа №8 «Разработка процессорного ядра Niosii и программного обеспечения для него» Теоретические сведения




Скачати 141.08 Kb.
НазваЛабораторная работа №8 «Разработка процессорного ядра Niosii и программного обеспечения для него» Теоретические сведения
Дата конвертації01.11.2012
Розмір141.08 Kb.
ТипЛабораторная работа
джерело
1. /Лабораторная работа7.doc
2. /Описание NiosII/tut_nios2_introduction.pdf
Лабораторная работа №8 «Разработка процессорного ядра Niosii и программного обеспечения для него» Теоретические сведения

Лабораторная работа № 8

«Разработка процессорного ядра NiosII и программного обеспечения для него»


Теоретические сведения.


NiosII – программное процессорное ядро, описанное на языке программирования аппаратуры и предназначенное для реализации в ПЛИС фирмы ALTERA. Для создания «системы на кристалле» к процессорному ядру необходимо добавить дополнительные компоненты – память, порты ввода/вывода, таймер, необходимые интерфейсы. Для этой цели используется специальная утилита, входящая в состав САПР Quartus II - SOPC Builder, позволяющая формировать требуемую архитектуру процессорной системы. Пример одного из вариантов реализации архитектуры процессорного ядра показан на рисунке 1.




Рисунок 1. Пример архитектуры процессорного ядра с Nios II.


Для обмена данными с внешними микросхемами (например – SRAM, SDRAM, Flash и пр.) внутри ПЛИС формируются специальные компоненты – интерфейсные блоки. Они связаны с процессорным ядром с помощью специальной шины – Avalon switch fabric. В состав процессорного ядра могут входить и специализированные блоки: JTAG UART – для обмена информацией с компьютером с помощью загрузочного кабеля (USB-Blaster или ByteBlaster), модуль JTAG Debug – для выполнения отладки программного обеспечения с помощью компьютера. Пользователь может подключать к процессорному ядру как библиотечные компоненты (входящие в состав САПР Quartus II), так и собственные модули.

Для выполнения данной лабораторной работы используется отладочный модуль Nios II Processor Development Kit Cyclone Edition. Исходные данные для работы размещены в папке «ИД для Лаб_8».


Задание 1


  1. Откройте проект niosII_lab.qpf, который располагается в папке с исходными данными к лабораторной работе.

  2. Выполните необходимые настройки для используемого отладочного модуля с помощью командного файла, написанного на языке Tcl. Для этого в меню Tools выберите команду Tcl Scripts…В открывшемся диалоговом окне, в директории Project выберите файл Setup_Cyclone_1C20 и нажмите кнопку Run (рисунок 2). Сохраните проект (File > Save Project).


    Рисунок 2. Настройки для используемого отладочного модуля.



  3. Создаваемый процессорный модуль должен содержать следующие компоненты:
    - процессорное ядро (Nios II CPU);

- память программ, непосредственно подключенная к процессорному ядру (Tightly-coupled on-chip instruction memory);

- контроллер внешней SRAM памяти (External SRAM memory controller);

- контроллер внешней Flash памяти (External Flash memory controller);

- контроллер системной шины с тремя состояниями для обеспечения интерфейса с блоками памяти (Tristate bridge component);

- контроллер последовательного канала связи JTAG UART;

- параллельные порты ввода/вывода для связи с внешними компонентами отладочного модуля – светодиодами, кнопками, семисегментными индикаторами (PIO peripherals);
- системный таймер (System clock timer);

- интервальный таймер (High resolution timer);

- формирователь идентификатора процессорного ядра (System ID peripheral);

- блок фазовой автоподстройки частоты ФАПЧ (PLL).

4. Вызовите утилиту формирования архитектуры процессорного ядра (меню Tools > SOPC Builder…). Укажите имя процессорной системы – niosII и язык описания – Verilog. В открывшемся диалоговом окне (рисунок 3) проверьте системные настройки – семейство ПЛИС Cyclone, тактовая частота – внешняя, 50МГц.


Рисунок 3. Проверка системных настроек.


  1. Добавьте процессорное ядро в проект. В окне системных компонентов выделите Nios II Processor и нажмите кнопку Add. В открывшемся диалоговом окне выберите архитектуру Nios II/s, укажите способ реализации аппаратных умножителей – Logic Elements (рисунок 4).


    Рисунок 4. Настройка процессорного ядра (шаг 1).

  2. На странице Cashes and Memory Interfaces укажите размер кэш-памяти команд 4Кб и укажите, что память команд непосредственно подключается к процессорному ядру (Include tightly coupled instruction master port(s)) (рисунок 5).


    Рисунок 5. Настройка процессорного ядра (шаг 2).



  3. На странице JTAG Debug Module установите режим работы отладочного контроллера, соответствующий третьему уровню (Level 3) (рисунок 6). Нажмите кнопку Finish.


    Рисунок 6. Настройка процессорного ядра (шаг 3).



  4. Внешний вид диалогового окна утилиты SOPC Builder должен выглядеть так, как показано на рисунке 7.


    Рисунок 7. Внешний вид диалогового окна утилиты SOPC Builder.



  5. Подключите к процессорному ядру контроллер системной шины с тремя состояниями. Для этого в перечне устройств в разделе Bridges and Adapters раскройте папку Memory Mapped и выделите компонент Avalon-MM Tristate Bridge. Нажмите кнопку Add…В открывшемся диалоговом окне (рисунок 8) для входных сигналов укажите опцию Registered. Нажмите кнопку Finish.


    Рисунок 8.
    Настройка контроллера системной шины.



  6. В диалоговом окне SOPC Builder переименуйте контроллер системной шины – укажите имя ext_ram_bus. Для этого выделите компонент, нажмите правую кнопку мыши, и в открывшемся контекстном меню, выберите команду Rename (рисунок 9).


    Рисунок 9. Изменение имени контроллера системной шины.



  7. Подключите к процессорному ядру контроллер внешней флэш-памяти. Для этого в перечне устройств в разделе Memories and Memory Controllers раскройте папку Flash и выделите компонент Flash Memory (CFI). Нажмите кнопку Add…В открывшемся диалоговом окне, в строке Presets: укажите микросхему AMD29LV065D-120R (используется в отладочном модуле) как показано на рисунке 10. По умолчанию для данной микросхемы установлены следующие параметры: разрядность шины адреса – 23, разрядность шины данных – 8. Нажмите кнопку Finish. Переименуйте контроллер – ext_flash.


    Рисунок 10. Настройка контроллера внешней флэш-памяти.

  8. Подключите к процессорному ядру контроллер внешней SRAM памяти. Для этого в перечне устройств в разделе Memories and Memory Controllers раскройте папку SRAM и выделите компонент IDT71V416SRAM. Нажмите кнопку Add…В открывшемся диалоговом окне укажите размер используемой памяти, равный 1024 Кб (как показано на рисунке 11). Нажмите кнопку Finish. Переименуйте контроллер – ext_ram.


    Рисунок 11.
    Настройка контроллера внешней SRAM памяти.



  9. С помощью кнопки Move Up диалогового окна SOPC Builder переместите контроллер ext_ram следом за контроллером ext_ram_bus.

  10. Используя колонку Connections диалогового окна SOPC Builder выполните подключение внешних контроллеров флэш- и SRAM памяти к контроллеру системной шины, как показано на рисунке 12.


    Рисунок 12. Подключение к контроллеру системной шины.

  11. Измените свойства контроллера системной шины. Для этого двойным нажатием левой кнопки мыши на контроллере системной шины откройте диалоговое окно его настроек. На странице Shared Signals укажите, что обе микросхемы памяти имеют общую шину адреса (рисунок 13). Закройте диалоговое окно.


    Рисунок 13. Изменение свойств контроллера системной шины.



  12. Подключите к процессорному ядру контроллер последовательного канала JTAG UART. Для этого в перечне устройств в разделе Interface Protocols раскройте папку Serial и выделите компонент JTAG UART. Нажмите кнопку Add…В открывшемся диалоговом окне оставьте все значения без изменений (как показано на рисунке 14). Нажмите кнопку Finish.


    Рисунок 14. Настройки контроллера последовательного канала.

  13. Подключите к процессорному ядру контроллер порта ввода/вывода для семисегментных индикаторов. Для этого в перечне устройств в разделе Peripherals раскройте папку Microcontroller Peripherals и выделите компонент PIO (Parallel I/O). Нажмите кнопку Add…В открывшемся диалоговом окне установите разрядность порта равную 16 бит и направление передачи данных – Output ports only (как показано на рисунке 15). Нажмите кнопку Finish. Переименуйте порт – seven_seg_pio.


    Рисунок 15.
    Настройки порта ввода/вывода для семисегментного индикатора.



  14. Подключите к процессорному ядру контроллер порта ввода/вывода для светодиодов. Для этого в перечне устройств в разделе Peripherals раскройте папку Microcontroller Peripherals и выделите компонент PIO (Parallel I/O). Нажмите кнопку Add…В открывшемся диалоговом окне установите разрядность порта равную 8 бит и направление передачи данных – Output ports only. Нажмите кнопку Finish. Переименуйте порт – led_pio.

  15. Подключите к процессорному ядру контроллер порта ввода/вывода для кнопок. Для этого в перечне устройств в разделе Peripherals раскройте папку Microcontroller Peripherals и выделите компонент PIO (Parallel I/O). Нажмите кнопку Add…В открывшемся диалоговом окне установите разрядность порта равную 4 бит и направление передачи данных – Input ports only. Нажмите кнопку Finish. Переименуйте порт – button_pio.

  16. Подключите к процессорному ядру системный таймер. Для этого в перечне устройств в разделе Peripherals раскройте папку Microcontroller Peripherals и выделите компонент Interval Timer. Нажмите кнопку Add…В открывшемся диалоговом окне установите интервал счета таймера равный 1 мс и способ аппаратной реализации – Full-featured (как показано на рисунке 16). Нажмите кнопку Finish. Переименуйте таймер – sys_clk_timer.


    Рисунок 16.
    Настройки системного таймера.



  17. Подключите к процессорному ядру интервальный таймер. Для этого в перечне устройств в разделе Peripherals раскройте папку Microcontroller Peripherals и выделите компонент Interval Timer. Нажмите кнопку Add…В открывшемся диалоговом окне установите интервал счета таймера равный 1 мкс и способ аппаратной реализации – Full-featured. Нажмите кнопку Finish. Переименуйте таймер – high_res_timer.

  18. Подключите к процессорному ядру модуль формирования идентификатора процессорного ядра. Для этого в перечне устройств в разделе Peripherals раскройте папку Debug and Performance и выделите компонент System ID Peripheral. Нажмите кнопку Add…В открывшемся диалоговом окне оставьте все настройки по умолчанию (как показано на рисунке 17). Нажмите кнопку Finish.


    Рисунок 17.
    Формирователь идентификатора процессорного ядра.



  19. Подключите к процессорному ядру блок фазовой автоподстройки частоты. Для этого в перечне устройств в разделе PLL выделите компонент PLL. Нажмите кнопку Add…В открывшемся диалоговом окне выберите команду вызова генератора мегафункций (Launch Altera’s ALTPLL MegaWizard).

  20. На первой странице генератора мегафункций проверьте следующие настройки – частота внешнего входного тактового сигнала – 50 МГц, настройки выполняются для выходного сигнала с0 (рисунок 18).


    Рисунок 18. Настройки блока ФАПЧ (шаг 1).



  21. На третьей странице генератора мегафункций проверьте следующие настройки – коэффициент умножения входной частоты равен 1, коэффициент деления входной частоты равен 1, фазовый сдвиг выходной частоты равен 0 (рисунок 19).


    Рисунок 19. Настройки блока ФАПЧ (шаг 2).



  22. Все остальные настройки генератора мегафункций оставьте по умолчанию. Нажмите кнопку Finish.

  23. Нажмите кнопку Finish для подключения блока ФАПЧ к процессорному ядру.

  24. В окне Clock Settings диалогового окна SOPC Builder появилась дополнительная тактовая частота pll_c0. Переименуйте ее в sys_clk.

  25. В столбце Clock диалогового окна SOPC Builder для всех устройств, кроме блока ФАПЧ, замените входную тактовую частоту на sys_clk.

  26. В столбце IRQ диалогового окна SOPC Builder установите следующие приоритеты сигналам запросов на прерывание: sys_clk_timer – 0 приоритет (наивысший), high_res_timer – 1 приоритет, jtag_uart – 2 приоритет (самый низкий).

  27. Подключите к процессорному ядру непосредственно соединенную с ним внутреннюю память программ. Для этого в перечне устройств в разделе Memories and Memory Controllers раскройте папку On-Chip и выделите компонент On Chip Memory (RAM or ROM). Нажмите кнопку Add…В открывшемся диалоговом окне укажите тип используемого блока памяти Block type – М4К, разрядность шины данных Data width – 32, общий объем памяти Total Memory Size – 4096 байт, способ доступа – как к двухпортовому ОЗУ (Dual-port access) (как показано на рисунке 20). Нажмите кнопку Finish. Переименуйте блок памяти – tightly_coupled_instruction_memory.


    Рисунок 20.
    Настройки внутреннего блока памяти.



  28. Проверьте, что в качестве тактовой частоты для внутреннего блока памяти используется sys_clk. С помощью кнопки Move up диалогового окна SOPC Builder, переместите внутренний блок памяти, расположив его непосредственно за cpu.

  29. В столбце Connections диалогового окна SOPC Builder выполните подключение внутреннего блока памяти к процессорному ядру. Порт s1 блока памяти должен быть подключен только к порту tightly_coupled_instruction_master_0 процессора, а порт s2 блока памяти – только к порту data_master процессора (рисунок 21).


    Рисунок 21. Подключение внутреннего блока памяти.



  30. Для присвоения базовых адресов устройствам, входящим в состав процессорной системы, в меню System утилиты SOPC Builder выберите команду Auto-Assign Base Addresses. Обратите внимание на сообщение, появившееся в информационном окне:

    Warning: cpu: Generating non-optimal logic for tightly_coupled_instruction_master_0 due to memory map overlap with instruction_master (0x0 - 0x01201fff). For optimal TCM performance, base address of tightly_coupled_instruction_memory should be at least 0x01202000.

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

  31. Измените базовый адрес для внутреннего блока памяти в соответствии с рекомендацией (столбец Base диалогового окна SOPC Builder) и зафиксируйте его (указатель рядом со значением адреса). Повторно сгенерируйте базовые адреса для устройств процессорной системы.

  32. Если все выполнено правильно, то процессорная система должна выглядеть так, как показано на рисунке 22.


    Рисунок 22. Внешний вид процессорной системы.



  33. Укажите размещение стартового адреса программы и таблицы векторов прерывания. Для этого вызовите диалоговое окно настройки процессорного модуля cpu (двойным нажатием левой кнопки мыши на его имени). Из выпадающего меню для Reset Vector выберите значение ext_flash, а для Exception Vector – значение ext_ram (рисунок 23). Нажмите кнопку Finish.


    Рисунок 23. Настройка векторов прерывания процессора.



  34. Перейдите на страницу System Generation утилиты SOPC Builder. Проверьте, что опция Simulation. Create project simulator files осталась не выбранной. Сохраните все настройки процессорной системы (меню File > Save). Нажмите кнопку Generate.

  35. После получения сообщения об успешном завершении создания процессорной системы, закройте утилиту SOPC Builder.

  36. Откройте в САПР Quartus II файл верхнего уровня иерархии niosII_lab.bdf.

  37. Добавьте в файл созданный процессорный модуль (рисунок 24). Он находится в рабочей директории проекта.


    Рисунок 24. Добавление в проект процессорного модуля niosII.



  38. Сохраните файл (меню File > Save). Сохраните проект (меню File > Save Project).

  39. Выполните полную компиляцию проекта.


Задание 2


  1. После успешной компиляции проекта, загрузите его в ПЛИС, установленную на отладочном модуле (конфигурационный файл niosII_lab.sof).

  2. Откройте среду разработки программного обеспечения для встраиваемого процессорного ядра Nios II IDE.

  3. Создайте новый проект для процессорного ядра. Для этого в меню File выберите команду New > Project. В открывшемся диалоговом окне выберите Nios II C/C++ Application и нажмите кнопку Next>.

  4. На следующей странице диалогового окна укажите имя проекта – niosII_training_project. В графе SOPC Builder System PTF File укажите расположение файла описания процессорного модуля niosII.ptf (используйте кнопку Browse…Файл располагается в рабочей директории проекта). В окне выбора шаблона для проекта (Select Project Template) укажите Blank Project (рисунок 25). Нажмите кнопку Next>.


    Рисунок 25. Настройки проекта для разработки программного обеспечения.



  5. На следующей странице выберите настройку Create a new system library named:. Нажмите кнопку Finish. В окне доступных проектов приложения Nios II IDE появятся две новые директории: директория исходных данных проекта (niosII_training_project) и директория системной библиотеки проекта (niosII_training_project_syslib[niosII]).

  6. Добавьте в проект исходный файл simple.c. Он располагается в рабочей директории проекта, в папке software. Для этого откройте проводник, найдите нужный файл и «перетащите» его в директорию исходных данных проекта niosII_training_project (рисунок 26). Для просмотра исходного файла откройте его двойным нажатием левой кнопки мыши на его имени.


    Рисунок 26. Добавление исходного файла в проект.



  7. Выделите директорию системной библиотеки проекта, нажмите правую кнопку мыши и выберите команду Properties из открывшегося контекстного меню. В открывшемся диалоговом окне выберите закладку System Library (рисунок 27).


    Рисунок 27. Настройки системной библиотеки проекта.



  8. Проверьте, что в настройках системной библиотеки проекта функции stdout, stderr, stdin связаны с устройством jtag_uart. В качестве системного таймера выбран sys_clk_timer. Все секции программы располагаются в ext_ram. Нажмите ОК.

  9. Для компиляции проекта выделите рабочую директорию проекта niosII_training_project, нажмите правую кнопку мыши и выберите команду Build Project из открывшегося контекстного меню.

  10. Если компиляция проекта завершилась без ошибок, проверьте работу программы с помощью отладочного модуля. Для этого выделите рабочую директорию проекта, нажмите правую кнопку мыши и выберите команду Run As > Nios II Hardware из открывшегося контекстного меню (рисунок 28).


    Рисунок 28. Запуск программы на отладочном модуле.



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

  12. Перейдите в режим отладки программного обеспечения. Для этого выделите рабочую директорию проекта, нажмите правую кнопку мыши и выберите команду Debug As > Nios II Hardware из открывшегося контекстного меню. Подтвердите разрешение перехода в режим отладки (кнопка Yes). Внешний вид отладочной среды показан на рисунке 29.


    Рисунок 29. Режим отладки программного обеспечения.



  13. Установите точки останова в строке 22 и 37 исходного текста программы (двойное нажатие левой кнопки мыши слева от номера строки). Если номер строки не отображается в текстовом редакторе, в меню Window выберите команду Preferences.. В открывшемся окне раскройте папку General, затем папку Editors и выделите строку Text Editors. В правой части диалогового окна установите опцию Show line numbers (рисунок 30). Нажмите ОК.


    Рисунок 30. Настройка текстового редактора.



  14. Нажмите кнопку запуска программы resume (или клавишу F8). Обратите внимание на изменения переменных buttons и led в окне Variables и на точку останова программы.

  15. Нажмите одну из кнопок на отладочном модуле и, удерживая ее, повторно запустите программу. Что изменилось?

  16. В окне Variables измените текущее значение переменной buttons (задайте ей значение 7). Повторно запустите программу. Что изменилось?

  17. Для выхода из режима отладки в окне Debug выделите элемент Thread[0], нажмите правую кнопку мыши и выберите команду Terminate and Remove из открывшегося контекстного меню (рисунок 31).


    Рисунок 31. Завершение отладки программы.



Задание для самостоятельной работы.


Разработайте свой вариант программы для процессорного ядра niosII. Проверьте ее работоспособность на отладочном модуле.



Схожі:

Лабораторная работа №8 «Разработка процессорного ядра Niosii и программного обеспечения для него» Теоретические сведения iconДокументи
1. /Лабораторная работа ь1 Знакомство с языком программирования Java и интегрированной средой...
Лабораторная работа №8 «Разработка процессорного ядра Niosii и программного обеспечения для него» Теоретические сведения iconЛабораторная работа 7-02 Лабораторная работа 7-02 Вывод документа xml в Internet Explorer с использованием dom xml
Целью работы является разработка сценария на языке JavaScript для вывода содержимого документа xml на дисплей с использованием средств...
Лабораторная работа №8 «Разработка процессорного ядра Niosii и программного обеспечения для него» Теоретические сведения iconЛабораторная работа 7-01 Лабораторная работа 7-01
Целью работы приобретение создания документов xml заданной структуры и содержания
Лабораторная работа №8 «Разработка процессорного ядра Niosii и программного обеспечения для него» Теоретические сведения iconЛабораторная работа 7-03 Лабораторная работа 7-03
Целью работы является приобретение навыков обработки документов xml с использованием языка xslt
Лабораторная работа №8 «Разработка процессорного ядра Niosii и программного обеспечения для него» Теоретические сведения iconИнструкция по загрузке программного обеспечения при помощи пк для терминалов Humax (модели oak)

Лабораторная работа №8 «Разработка процессорного ядра Niosii и программного обеспечения для него» Теоретические сведения iconЛабораторная работа №3 «Численное интегрирование»
Данная лабораторная работа посвящена вычислению определенного интеграла различными численными методами. Все они основаны на том,...
Лабораторная работа №8 «Разработка процессорного ядра Niosii и программного обеспечения для него» Теоретические сведения iconЛабораторная работа №3 Численное интегрирование
Данная лабораторная работа посвящена вычислению определенного интеграла различными численными методами. Все они основаны на том,...
Лабораторная работа №8 «Разработка процессорного ядра Niosii и программного обеспечения для него» Теоретические сведения iconСвой проект свободно распространяемого программного обеспечения: создание, продвижение, проблемы существования

Лабораторная работа №8 «Разработка процессорного ядра Niosii и программного обеспечения для него» Теоретические сведения iconЛабораторная работа №1 Разработка теста контроля оперативного запоминающего устройства
Т. Потом последовательно считываются адреса Ai=A1, Ai=Ak, Ai=A1, Ai=A2, Ai=Ak, Ai=A2, Ai=A3, Ai=Ak, Ai=A3 и так далее пока все пары...
Лабораторная работа №8 «Разработка процессорного ядра Niosii и программного обеспечения для него» Теоретические сведения iconДокументи
1. /Мысли о взаимодействии свободного и частного программного обеспечения.doc
Лабораторная работа №8 «Разработка процессорного ядра Niosii и программного обеспечения для него» Теоретические сведения iconДокументи
1. /Nash/lab1/Лабораторная работа ь1.doc
2. /Nash/lab10/Лабораторная...

Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©on2.docdat.com 2000-2013
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи