Перейти к содержанию
    

Моделирование NiosII в ModelSim

Проблема такая. Есть задача - выполнить элементарные действия на 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.

Добавляю сишник с кодом

#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.

 

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

 

 

 

 

 

 

 

 

post-94893-1487445662_thumb.png

post-94893-1487447013_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Меня реально подмывает уже сделать моделирование Nios2 в Modelsim, но будет ли получен академический эффект для автора темы? Ведь это самый кайф - расколоть такой орех самому.

 

Вообще do-файлы это грубо просто последовательность команд, добавление файлов, вывод сигналов, запуск самой симуляции. Он может быть недостаточно полным чтобы запустить.

 

В инете много сайтов типа марсохода с примерами как запустить в Modelsim хотя бы примитивный счетчик и увидеть его сигналы. Заработает счетчик - будет проще Nios2 запустить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

После выполнения 8 пункта из вышеприведённой доки (рисунок), выполняете в консоли команду elab_debug, вытаскиваете необходимые линии/порты и запускаете симуляцию.

 

при генерации ставлю галки Create HDL - VHDL, создаю .bsf и создаю simulation model - VHDL. Так же создаю тут в qsys тестбенч на vhdl. Прикреплю скрин.

В Qsys пункт меню Generate -> Generate Testbench (согласно доке).

post-63539-1487701747_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ведь это самый кайф - расколоть такой орех самому.

 

Не такой уж и кайф) много времени провел в попытках, результата мало, итога как такового нет, это немного напрягает.

 

В Qsys пункт меню Generate -> Generate Testbench (согласно доке). - это так и делал, тб генерировал

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Далее п 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 - третий рисунок

post-63539-1487745399_thumb.jpg

post-63539-1487745407_thumb.jpg

post-63539-1487745632_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

>>Далее п 8 на рисунке, команда в консоли elab_debug и т.д., как написал выше и всё увидите

 

п8 я так понимаю это RunAs-NiosII ModelSim.

Далее насчет консоли вопрос? имеется в виду надо в скриптовый файл написать elab_debug. Тот который msim_setup.tcl? Просто как таковой консоли я не вижу

 

И еще вопрос, в Run configurations у меня стоит сссылка на ModelSim, а у вас на Questa SIM, это другой софт или просто часть Modelsim?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

п8 я так понимаю это RunAs-NiosII ModelSim.

Да

 

Далее насчет консоли вопрос? имеется в виду надо в скриптовый файл написать elab_debug. Тот который msim_setup.tcl? Просто как таковой консоли я не вижу

Можно и в скрипт, но я в консоли вводил, эта команда "выбирает пункт меню из скрипта" msim_setup.tcl.

 

 

после выполнения команды elab_debug вытаскиваете нужные вам линии (второй рисунок) и запускаете симуляцию (команда в консоли run XXX us).

post-63539-1487845211_thumb.jpg

post-63539-1487845538_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да

 

 

Можно и в скрипт, но я в консоли вводил, эта команда "выбирает пункт меню из скрипта" msim_setup.tcl.

 

 

после выполнения команды elab_debug вытаскиваете нужные вам линии (второй рисунок) и запускаете симуляцию (команда в консоли run XXX us).

все в принципе понятно, подобное делал, только без elab_debug. Только у меня ModelSim виснет. просто окошко закрывается с ошибкой. думаю стоит переустановить

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот что получается в итоге:

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

 

И еще вопрос, в Run configurations у меня стоит сссылка на ModelSim, а у вас на Questa SIM, это другой софт или просто часть Modelsim?

Другой

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

 

код тот, что вы писали, точно такой же

post-94893-1487853920_thumb.png

post-94893-1487853967_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добавляю все объекты на волну, даю шагов столько, чтобы резет отработал, и хоть убей PIO не реагируют (скрин2)

На моём рисунке (Сообщение #7) время анализа 200 мкс и тактовая 125 МГц и PIO начал "моргать" где-то ~120 мкс после старта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...