реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Closed TopicStart new topic
> Моделирование NiosII в ModelSim
lostbegan
сообщение Feb 18 2017, 20:08
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 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.

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









Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Feb 18 2017, 22:00
Сообщение #2


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



AN351: Simulating Nios II Embedded Processor Designs
AN351 Software Files


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
lostbegan
сообщение Feb 20 2017, 18:00
Сообщение #3


Участник
*

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



ну проект рабочий, инструкция понятная. однако например файл wave.do был там изначально, как его сформировать непонятно. таким способом свой проект прогонял, диаграммы ничего не показывают. может я немного не так сформировал вопрос. мне нужно что бы pio_out что то давал на диаграммы
Go to the top of the page
 
+Quote Post
AVR
сообщение Feb 20 2017, 18:43
Сообщение #4


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(lostbegan @ Feb 20 2017, 21:00) *
ну проект рабочий, инструкция понятная. однако например файл wave.do был там изначально, как его сформировать непонятно. таким способом свой проект прогонял, диаграммы ничего не показывают. может я немного не так сформировал вопрос. мне нужно что бы pio_out что то давал на диаграммы

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

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

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


--------------------
Go to the top of the page
 
+Quote Post
doom13
сообщение Feb 21 2017, 18:35
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 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 (согласно доке).
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
lostbegan
сообщение Feb 22 2017, 05:46
Сообщение #6


Участник
*

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



Цитата(AVR @ Feb 20 2017, 19:43) *
Ведь это самый кайф - расколоть такой орех самому.


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

В Qsys пункт меню Generate -> Generate Testbench (согласно доке). - это так и делал, тб генерировал
Go to the top of the page
 
+Quote Post
doom13
сообщение Feb 22 2017, 06:41
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 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 - третий рисунок
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
lostbegan
сообщение Feb 23 2017, 09:49
Сообщение #8


Участник
*

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




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

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

И еще вопрос, в Run configurations у меня стоит сссылка на ModelSim, а у вас на Questa SIM, это другой софт или просто часть Modelsim?
Go to the top of the page
 
+Quote Post
doom13
сообщение Feb 23 2017, 10:25
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 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).
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
lostbegan
сообщение Feb 23 2017, 10:35
Сообщение #10


Участник
*

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



Цитата(doom13 @ Feb 23 2017, 11:25) *
Да


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


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

все в принципе понятно, подобное делал, только без elab_debug. Только у меня ModelSim виснет. просто окошко закрывается с ошибкой. думаю стоит переустановить
Go to the top of the page
 
+Quote Post
doom13
сообщение Feb 23 2017, 11:22
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 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?

Другой
Go to the top of the page
 
+Quote Post
lostbegan
сообщение Feb 23 2017, 12:49
Сообщение #12


Участник
*

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



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


код тот, что вы писали, точно такой же
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
doom13
сообщение Feb 24 2017, 09:41
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(lostbegan @ Feb 23 2017, 15:49) *
Добавляю все объекты на волну, даю шагов столько, чтобы резет отработал, и хоть убей PIO не реагируют (скрин2)

На моём рисунке (Сообщение #7) время анализа 200 мкс и тактовая 125 МГц и PIO начал "моргать" где-то ~120 мкс после старта.
Go to the top of the page
 
+Quote Post
lostbegan
сообщение Feb 24 2017, 09:52
Сообщение #14


Участник
*

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



Я думаю дело не в этом. Скорее всего что то сделал не так. Я даже просматривал 2ms. Тактовый сигнал при отображении на экране был сплошной толстой зеленой полосой, но PIO так и не отозвался. Так же было и раньше, такое чувство, что не хватает какой то мелочи
Go to the top of the page
 
+Quote Post
doom13
сообщение Feb 24 2017, 10:02
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Как настроен PIO в Qsys и какой код выполняет Nios?
Go to the top of the page
 
+Quote Post
lostbegan
сообщение Feb 24 2017, 10:27
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 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)
ну и оба они экспортированы. Это видно на рис в первом посте данной темы
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
doom13
сообщение Feb 24 2017, 10:50
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



По Вашему рисунку настроек PIO в Qsys получается, что PIO_0 - это вход.

Что-то с именами напутано:
1) Если смотреть на рисунки в первом сообщении в system.h должны быть дефайны PIO_OUT_BASE и PIO_IN_BASE
2) Если смотреть на последний рисунок с настройками Qsys, то в system.h должны быть дефайны PIO_BASE (output) и PIO_0_BASE (input)
Go to the top of the page
 
+Quote Post
lostbegan
сообщение Feb 24 2017, 11:56
Сообщение #18


Участник
*

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



Да, system.h смотрел. Теперь заработало!!!! Путаница была, это два аналогичных проекта. просто в том я неправильно генерировал (не было elab_debug) а тут и правда вх/вых перепутал. Спасибо вам огромное! Помогли донабрать недостающие крупицы. Очень благодарен

Попробовал заводить через переменные, константы. Все отлично работает. Еще раз спасибо!
Раз уж заработало. То задам еще вопрос. Возможно ли в теории сделать следующее.
К примеру на Qsys я собрал ту же систему и создал схему BDF, на ней есть экспортированный вход PIО. Реально дать в него какой нибудь сигнал, который дальше в прошивке ниос обработать и так же вывести на PIO_OUT в виде диаграмм? Стоит ли к этому двигаться, или без платы нет смысла
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 19:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.0155 секунд с 7
ELECTRONIX ©2004-2016