|
Моделирование NiosII в ModelSim |
|
|
|
Feb 18 2017, 20:08
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 6-01-17
Пользователь №: 94 893

|
Проблема такая. Есть задача - выполнить элементарные действия на NiosII, получить диаграммы путем моделирования, как итог (проверка) работы. Платы нет, и скорее всего не будет. Перечислю инструменты: 1. Quartus Prime 16.1 Lite Edition 2. ModelSim - Intel FPGA 10.5b (Quartus Prime 16.1) Опишу сначала что есть: Создаю проект в QP16.1 семейства Cyclone IVE устройство пока "Auto selected by the fitter". Так же при создании проекта во вкладке EDA tools settings выбираю Simulation - ModelSim-Altera - VHDL. Дальше собираю в Qsys: NiosII (classic) processor самый простой с дебаггером 1ур. память On-chip Memory (Ramrom) с размером 65536b. (на всякий случай) pio output pio input оба на 8 бит. при генерации ставлю галки Create HDL - VHDL, создаю .bsf и создаю simulation model - VHDL. Так же создаю тут в qsys тестбенч на vhdl. Прикреплю скрин. Опять в QP16.1: Создаю .bdf и собираю там вышесозданный .bsf с входами и выходами. Прикрепляю к проекту файл *.qip, ставлю .bdf на top-level и компиллирую, ошибок нет. Еще скрин прикреплен Eclipse: Создаю NiosII Application and BSP from template, прикрепляю .sopcinfo и создаю blank_project. Добавляю сишник с кодом CODE #include "altera_avalon_pio_regs.h" #define PIO_IN_BASE 0x1000 #define PIO_OUT_BASE 0x1010 //Скопировал адреса с system.h
int main() { while(1) { IOWR_ALTERA_AVALON_PIO_DATA(PIO_OUT_BASE, 1); } return 0; } Generate bsp Build project и еще make targets - build - mem_target_generate Создается elf и hex. Теперь нужно промоделировать, по коду понятно, что я просто хочу увидеть клок, резет и единицу на выходе. Подскажите пожалуйста как и где увидеть правильные "волны"?
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 20 2017, 18:00
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 6-01-17
Пользователь №: 94 893

|
ну проект рабочий, инструкция понятная. однако например файл wave.do был там изначально, как его сформировать непонятно. таким способом свой проект прогонял, диаграммы ничего не показывают. может я немного не так сформировал вопрос. мне нужно что бы pio_out что то давал на диаграммы
|
|
|
|
|
Feb 21 2017, 18:35
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(lostbegan @ Feb 20 2017, 21:00)  ну проект рабочий, инструкция понятная. однако например файл wave.do был там изначально, как его сформировать непонятно. таким способом свой проект прогонял, диаграммы ничего не показывают. может я немного не так сформировал вопрос. мне нужно что бы pio_out что то давал на диаграммы После выполнения 8 пункта из вышеприведённой доки (рисунок), выполняете в консоли команду elab_debug, вытаскиваете необходимые линии/порты и запускаете симуляцию. Цитата(lostbegan @ Feb 18 2017, 23:08)  при генерации ставлю галки Create HDL - VHDL, создаю .bsf и создаю simulation model - VHDL. Так же создаю тут в qsys тестбенч на vhdl. Прикреплю скрин. В Qsys пункт меню Generate -> Generate Testbench (согласно доке).
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 22 2017, 05:46
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 6-01-17
Пользователь №: 94 893

|
Цитата(AVR @ Feb 20 2017, 19:43)  Ведь это самый кайф - расколоть такой орех самому. Не такой уж и кайф) много времени провел в попытках, результата мало, итога как такового нет, это немного напрягает. В Qsys пункт меню Generate -> Generate Testbench (согласно доке). - это так и делал, тб генерировал
|
|
|
|
|
Feb 22 2017, 06:41
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Далее п 8 на рисунке, команда в консоли elab_debug и т.д., как написал выше и всё увидите Все сделано согласно приведённой доке: Код #include <stdio.h> #include "system.h" #include "altera_avalon_pio_regs.h"
int main() { while(1) { IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, 0xAA); IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, 0x55); }
return 0; } Настройки Run Configurations - третий рисунок
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 23 2017, 09:49
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 6-01-17
Пользователь №: 94 893

|
>>Далее п 8 на рисунке, команда в консоли elab_debug и т.д., как написал выше и всё увидите
п8 я так понимаю это RunAs-NiosII ModelSim. Далее насчет консоли вопрос? имеется в виду надо в скриптовый файл написать elab_debug. Тот который msim_setup.tcl? Просто как таковой консоли я не вижу
И еще вопрос, в Run configurations у меня стоит сссылка на ModelSim, а у вас на Questa SIM, это другой софт или просто часть Modelsim?
|
|
|
|
|
Feb 23 2017, 10:25
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(lostbegan @ Feb 23 2017, 12:49)  п8 я так понимаю это RunAs-NiosII ModelSim. Да Цитата(lostbegan @ Feb 23 2017, 12:49)  Далее насчет консоли вопрос? имеется в виду надо в скриптовый файл написать elab_debug. Тот который msim_setup.tcl? Просто как таковой консоли я не вижу Можно и в скрипт, но я в консоли вводил, эта команда "выбирает пункт меню из скрипта" msim_setup.tcl. после выполнения команды elab_debug вытаскиваете нужные вам линии (второй рисунок) и запускаете симуляцию (команда в консоли run XXX us).
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 23 2017, 10:35
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 6-01-17
Пользователь №: 94 893

|
Цитата(doom13 @ Feb 23 2017, 11:25)  Да
Можно и в скрипт, но я в консоли вводил, эта команда "выбирает пункт меню из скрипта" msim_setup.tcl.
после выполнения команды elab_debug вытаскиваете нужные вам линии (второй рисунок) и запускаете симуляцию (команда в консоли run XXX us). все в принципе понятно, подобное делал, только без elab_debug. Только у меня ModelSim виснет. просто окошко закрывается с ошибкой. думаю стоит переустановить
|
|
|
|
|
Feb 23 2017, 11:22
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Вот что получается в итоге: 1. Кнопка "Run As -> Nios II ModelSim" выполняет следующее Код ... cd obj/default/runtime/sim/mentor/ && "C:/questasim64_10.4a/win64/vsim" -gui -do "do load_sim.tcl; ld; " , где C:/questasim64_10.4a/win64/ - директория установки симулятора на моём ПК 2. ld - команда описанная в файле obj/default/runtime/sim/mentor/msim_setup.tcl, включает в себя dev_com, com, elab: Код #msim_setup.tcl ... alias ld " dev_com com elab " ... 3. Вместо elab (Elaborates the top-level design) нужна команда elab_debug (Elaborates the top-level design with the novopt option), которую и запускаем из консоли. 4. Далее вытаскиваем нужные сигналы (можно оформить это запуском *.do файла). 5. Запускаем симуляцию - команда run Цитата(lostbegan @ Feb 23 2017, 12:49)  И еще вопрос, в Run configurations у меня стоит сссылка на ModelSim, а у вас на Questa SIM, это другой софт или просто часть Modelsim? Другой
|
|
|
|
|
Feb 23 2017, 12:49
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 6-01-17
Пользователь №: 94 893

|
поставил тоже квестасим. Работает, окна не зависают. Генерирую тб в qsys - не simple, а standart. Напомню что выходы PIO у меня экспортированы. Далее все делаю как вы описывали, даю ссылку эклипсу на .spd, жму RUN, открывается questa. Генерирует, пишу elab_debug, опять генерирует и остается вот это (скрин1). Добавляю все объекты на волну, даю шагов столько, чтобы резет отработал, и хоть убей PIO не реагируют (скрин2) код тот, что вы писали, точно такой же
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 24 2017, 09:52
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 6-01-17
Пользователь №: 94 893

|
Я думаю дело не в этом. Скорее всего что то сделал не так. Я даже просматривал 2ms. Тактовый сигнал при отображении на экране был сплошной толстой зеленой полосой, но PIO так и не отозвался. Так же было и раньше, такое чувство, что не хватает какой то мелочи
|
|
|
|
|
Feb 24 2017, 10:27
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 6-01-17
Пользователь №: 94 893

|
к прошлому посту. Дабы не быть голословным, прикрепляю скрин. Полоска клока толстая изза масштабирования, означает что очень много синхросигналов. К вашему вопросу. Код CODE #include <stdio.h> #include "system.h" #include "altera_avalon_pio_regs.h" //#define PIO_0_BASE 0x41000
int main() { while(1) { IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, 0xAA); IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, 0x55); }
return 0; } PIO у меня два, на вх и вых. (скрин2) ну и оба они экспортированы. Это видно на рис в первом посте данной темы
Эскизы прикрепленных изображений
|
|
|
|
|
Feb 24 2017, 11:56
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 6-01-17
Пользователь №: 94 893

|
Да, system.h смотрел. Теперь заработало!!!! Путаница была, это два аналогичных проекта. просто в том я неправильно генерировал (не было elab_debug) а тут и правда вх/вых перепутал. Спасибо вам огромное! Помогли донабрать недостающие крупицы. Очень благодарен
Попробовал заводить через переменные, константы. Все отлично работает. Еще раз спасибо! Раз уж заработало. То задам еще вопрос. Возможно ли в теории сделать следующее. К примеру на Qsys я собрал ту же систему и создал схему BDF, на ней есть экспортированный вход PIО. Реально дать в него какой нибудь сигнал, который дальше в прошивке ниос обработать и так же вывести на PIO_OUT в виде диаграмм? Стоит ли к этому двигаться, или без платы нет смысла
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|