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

 
 
> NIOS для начинающих
AlexBel
сообщение Oct 12 2009, 17:47
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 12-10-09
Пользователь №: 52 894



Имею девборду Altera DE1 (Cyclone II 2C20). Хотел бы своими руками "пошшупать" NIOS. Где-нибудь можно найти что-то типа "курса для начинающих", желательно с использованием DE1? Чтобы и теория была и практика и доступные пониманию новичков примеры. Конечная цель - создание "железа" с SDRAM и видеоконтроллером и разработка софта под него.
Go to the top of the page
 
+Quote Post
43 страниц V  « < 36 37 38 39 40 > »   
Start new topic
Ответов (555 - 569)
lostbegan
сообщение Jan 6 2017, 17:03
Сообщение #556


Участник
*

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



Здравствуйте, уважаемые. Есть вопрос, подведу издалека. Ранее в рамках бакалаврской выпускной разрабатывал немаленький проект по средствам языка VHDL в Altera Quartus II. Не было ничего особенно хитрого, несколько десятков ФБ, написанных на VHDL, которые побитово перемножали числа. Два автомата - управляющий и исполнительный. Работу проверял обычными в Q2 встроенными средствами - файлом диаграмм, которые подтверждали правильность функционирования. Научный рук. остался тот же и дал тему разработать проект с применением процессора NiosII, что я, что он пока очень смутно представляем что это за штука такая. Пытался читать английские инструкции, инструкции, переведенные на наш язык (огромное спасибо переводчику) ,нашел несколько так сказать тестовых проектов, и все они сводятся к зажиганию диодов на прожженной плисине. Вопрос в следующем, сейчас проект должен быть на что то вроде перемножении плавающих точек или даже матриц, пока точно не решено, возможно ли без покупки стенда создать процессор в SopcBuilder (фб для QII *.vhd), написать в него какую нибудь прошивку в IDE, и средствами QII бросить туда например числа (в пины), внутри прошивки перемножить, отпустить на output и сделать те же диаграммы? Возможно ли это?
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Jan 6 2017, 18:09
Сообщение #557


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

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



Цитата(lostbegan @ Jan 6 2017, 20:03) *
Возможно ли это?
Возможно!
Только для моделирования надо использовать среду ModelSim-Altera.
Ну и Qsys вместо SOPC Builder'а (по нынешним-то временам).


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
AVR
сообщение Jan 7 2017, 13:28
Сообщение #558


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

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



Цитата(lostbegan @ Jan 6 2017, 20:03) *
Вопрос в следующем, сейчас проект должен быть на что то вроде перемножении плавающих точек или даже матриц, пока точно не решено, возможно ли без покупки стенда создать процессор в SopcBuilder (фб для QII *.vhd), написать в него какую нибудь прошивку в IDE, и средствами QII бросить туда например числа (в пины), внутри прошивки перемножить, отпустить на output и сделать те же диаграммы? Возможно ли это?
Да, это более чем реально, я такое делал. Для этого надо создать максимально простейшую систему на базе Nios 2, сделать ей "generate", затем Nios EDK создать простую программу дергающую выводами и сгенерировать ELF/HEX файл прошивки, затем в основном проекте назначить получившейся реализации этот файл прошивки.

Была бы реальная плата, прошивку можно было бы залить на лету, но в симуляции можно без проблем назначить этот файл как я написал выше.

P.S.
Можно поинтересоваться, что за ВУЗ, преподаватели которого имею такой свежий взгляд на вещи? sm.gif


--------------------
Go to the top of the page
 
+Quote Post
lostbegan
сообщение Jan 7 2017, 14:29
Сообщение #559


Участник
*

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



Цитата(AVR @ Jan 7 2017, 13:28) *
Да, это более чем реально, я такое делал. Для этого надо создать максимально простейшую систему на базе Nios 2, сделать ей "generate", затем Nios EDK создать простую программу дергающую выводами и сгенерировать ELF/HEX файл прошивки, затем в основном проекте назначить получившейся реализации этот файл прошивки.

Была бы реальная плата, прошивку можно было бы залить на лету, но в симуляции можно без проблем назначить этот файл как я написал выше.

P.S.
Можно поинтересоваться, что за ВУЗ, преподаватели которого имею такой свежий взгляд на вещи? sm.gif


Ижевский государственный тех. университет, факультет ИВТ. Спасибо большое за ответы, может быть где нибудь есть какие нибудь методички или примеры на похожие темы?
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jan 7 2017, 14:50
Сообщение #560


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Stewart Little @ Jan 6 2017, 21:09) *
Возможно!
Только для моделирования надо использовать среду ModelSim-Altera.
Ну и Qsys вместо SOPC Builder'а (по нынешним-то временам).

Для отладки в симуляторе можно числа читать-писать из/в файл.
А для отладки в железе, можно для простоты дела числа наверняка можно сразу же записать в память, а результат выдавать на UART...

Цитата(lostbegan @ Jan 7 2017, 17:29) *
какие нибудь методички или примеры на похожие темы?

Если хотите, можем поговорить об этом по скайпу...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
lostbegan
сообщение Jan 7 2017, 16:28
Сообщение #561


Участник
*

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



Цитата(iosifk @ Jan 7 2017, 15:50) *
Если хотите, можем поговорить об этом по скайпу...


Разумеется, любая информация поможет. Логин в скайпе: lostbegan
Go to the top of the page
 
+Quote Post
lostbegan
сообщение Jan 8 2017, 13:55
Сообщение #562


Участник
*

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



Цитата(AVR @ Jan 7 2017, 14:28) *
...затем Nios EDK создать простую программу дергающую выводами и сгенерировать ELF/HEX файл прошивки, затем в основном проекте назначить получившейся реализации этот файл прошивки.


Если не трудно, можно развернутее. конкретно интересуют моменты:
1. простую программу дергающую выводами - что значит дергающую? использующая данные с пинов? какого типа должны быть значения?
2. в основном проекте назначить получившейся реализации этот файл прошивки - имеется в виду непосредственно в QII назначить файл?
Go to the top of the page
 
+Quote Post
lostbegan
сообщение Jan 10 2017, 12:16
Сообщение #563


Участник
*

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



Вообще существует ли пример проекта без участия Usb - бластера, диодов и самой платы? Какой нибудь элементарный, где например на схеме NIOS принимает значения, меняет (хоть элементарно инкрементирует значение одноразово) и дает что то на выход?
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Jan 10 2017, 12:40
Сообщение #564


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

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



Цитата(lostbegan @ Jan 10 2017, 15:16) *
Вообще существует ли пример проекта без участия Usb - бластера, диодов и самой платы? Какой нибудь элементарный, где например на схеме NIOS принимает значения, меняет (хоть элементарно инкрементирует значение одноразово) и дает что то на выход?

Пример чего?

Когда Вы работаете с Nios II, то у Вас есть:
1. аппаратная часть проекта, которая выполняется в Qsys (а ранее в SOPC Builder);
2. программная часть проекта (т.е. исполняемый код Nios II), который создается в Nios II SBT.

Даже если Вы собираетесь только моделировать, то Вам необходимы обе эти части.
При создании аппаратной части Вы можете сделать и тестбенч для моделирования.
А при создании программной часть - dat-файл, который будет инициализировать модель памяти при симуляции. И запускать симулятор Вы можете прямо из-под Nios II SBT.

В простейшем случае аппаратная часть может содержать только процессор и память; те "диоды", о которых вы пишете - это, скорее всего обычный PIO (периферия).

А USB Blaster нужен только для того, чтобы загрузить проект (обе его части!!!) в реальное железо (и отлаживать его там).


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
lostbegan
сообщение Jan 10 2017, 13:01
Сообщение #565


Участник
*

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



Цитата(Stewart Little @ Jan 10 2017, 13:40) *
Пример чего?

Когда Вы работаете с Nios II, то у Вас есть:
1. аппаратная часть проекта, которая выполняется в Qsys (а ранее в SOPC Builder);
2. программная часть проекта (т.е. исполняемый код Nios II), который создается в Nios II SBT.

Даже если Вы собираетесь только моделировать, то Вам необходимы обе эти части.
При создании аппаратной части Вы можете сделать и тестбенч для моделирования.
А при создании программной часть - dat-файл, который будет инициализировать модель памяти при симуляции. И запускать симулятор Вы можете прямо из-под Nios II SBT.

В простейшем случае аппаратная часть может содержать только процессор и память; те "диоды", о которых вы пишете - это, скорее всего обычный PIO (периферия).

А USB Blaster нужен только для того, чтобы загрузить проект (обе его части!!!) в реальное железо (и отлаживать его там).


Насчет Sopc, Qsys понятно. SBT это я так понимаю старый IDE, для прошивки, тоже понятно. То что обе части будут обязательно участвовать тоже ясно. Что такое тестбенч в теории понимаю, но пока не прощупал. Что такое бластер и плата я тоже представляю. Но я не могу никак понять как набор аппаратной и программной части собрать в единое целое. При создании проекта прошивки он запрашивает информацию о ранее созданном процессоре в SOPC, есть контакт. прошивка вроде потом генерирует файл памяти, ну видимо тоже есть контакт. Пробел в том что я хочу собранный в SOPC NIOS разместить на схеме Quartus и чтобы он мог принимать какие то значения от внешних блоков на той же схеме. Я абстрактно представляю это так - я создаю какой нибудь функциональный блок, который например формирует число 3. Передает его в раннее созданный мной в sopc блок НИОС, там он эти значения как то принимает, и видимо в теле программного кода к примеру прибавляет к 3 еще 3. И выводит полученное число опять же в какой нибудь ФБ или обычный OUTPUT. Это вообще возможно или я сказки придумываю?
Go to the top of the page
 
+Quote Post
AVR
сообщение Jan 10 2017, 13:44
Сообщение #566


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

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



Цитата(lostbegan @ Jan 8 2017, 16:55) *
Если не трудно, можно развернутее. конкретно интересуют моменты:
1. простую программу дергающую выводами - что значит дергающую? использующая данные с пинов? какого типа должны быть значения?
2. в основном проекте назначить получившейся реализации этот файл прошивки - имеется в виду непосредственно в QII назначить файл?

1. Для этого к системе надо добавить блок GPIO, и уже через него дергать при помощи специальных функций (или регистров процессора напрямую). Я как раз (чисто случайно) делаю проект в котором Nios2 чисто для отладки воткнул, вечером смогу подсказать конкретнее по программе.
Как сделать систему тоже могу подсказать, отвечу на любые конкретные вопросы.
2. Возможно я ошибаюсь, кажется мои слова справедливы лишь ядра Microblaze в среде Xilinx ISE. Но я подозреваю что в Quartus II это аналогично.


--------------------
Go to the top of the page
 
+Quote Post
lostbegan
сообщение Jan 10 2017, 13:50
Сообщение #567


Участник
*

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



Цитата(AVR @ Jan 10 2017, 14:44) *
1. Для этого к системе надо добавить блок GPIO, и уже через него дергать при помощи специальных функций (или регистров процессора напрямую). Я как раз (чисто случайно) делаю проект в котором Nios2 чисто для отладки воткнул, вечером смогу подсказать конкретнее по программе.
Как сделать систему тоже могу подсказать, отвечу на любые конкретные вопросы.


Где можно найти информацию по этим "специальным дергающим" функциям?
Если можете предложить помощь, буду рад совершенно любой информации, пока все никак не может собраться в общую картину
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Jan 10 2017, 13:58
Сообщение #568


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

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



Цитата(lostbegan @ Jan 10 2017, 16:01) *
Пробел в том что я хочу собранный в SOPC NIOS разместить на схеме Quartus и чтобы он мог принимать какие то значения от внешних блоков на той же схеме. Я абстрактно представляю это так - я создаю какой нибудь функциональный блок, который например формирует число 3. Передает его в раннее созданный мной в sopc блок НИОС, там он эти значения как то принимает, и видимо в теле программного кода к примеру прибавляет к 3 еще 3. И выводит полученное число опять же в какой нибудь ФБ или обычный OUTPUT. Это вообще возможно или я сказки придумываю?

Тут Вы перемудрили.
Передать какую-либо величину в процессор проще всего через стандартное периферийное устройство - UART, PIO, и т.п. Тут ничего изобретать не надо - бесплатная библиотека наиболее ходовых периферийных устройств уже имеется в Qsys. Создаете систему с нужной Вам периферией (т.е. процессор+память+периферия) и все. Это все вместе - один модуль, который Вы можете использовать в квартусовском проекте.
Дальше все просто - приняли байт из периферийного устройства, обработали его, и выдали, например, в другое периферийное устройство (предупреждение - моделировать UART/SPI/I2C/<и т.п.> будет геморройно, лучше для начала PIO ограничиться).


Цитата(lostbegan @ Jan 10 2017, 16:50) *
Где можно найти информацию по этим "специальным дергающим" функциям?
Если можете предложить помощь, буду рад совершенно любой информации, пока все никак не может собраться в общую картину

Вся необходимая документация живет вот тут: https://www.altera.com/products/processors/support.html


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
AVR
сообщение Jan 10 2017, 14:04
Сообщение #569


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

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



Цитата(lostbegan @ Jan 10 2017, 16:01) *
Насчет Sopc, Qsys понятно. SBT это я так понимаю старый IDE, для прошивки, тоже понятно. То что обе части будут обязательно участвовать тоже ясно. Что такое тестбенч в теории понимаю, но пока не прощупал. Что такое бластер и плата я тоже представляю. Но я не могу никак понять как набор аппаратной и программной части собрать в единое целое. При создании проекта прошивки он запрашивает информацию о ранее созданном процессоре в SOPC, есть контакт. прошивка вроде потом генерирует файл памяти, ну видимо тоже есть контакт. Пробел в том что я хочу собранный в SOPC NIOS разместить на схеме Quartus и чтобы он мог принимать какие то значения от внешних блоков на той же схеме. Я абстрактно представляю это так - я создаю какой нибудь функциональный блок, который например формирует число 3. Передает его в раннее созданный мной в sopc блок НИОС, там он эти значения как то принимает, и видимо в теле программного кода к примеру прибавляет к 3 еще 3. И выводит полученное число опять же в какой нибудь ФБ или обычный OUTPUT. Это вообще возможно или я сказки придумываю?

Да, сам Nios2 в ПЛИСовом проекте добавляется как еще один модуль:
Код
wire [31:0] out_value;
my_nios2_cpu CPU(
.clock(clockNmhz),
.reset(reset), // линия сброса
.gpio_in(32'd3), // число "три" на входу
.gpio_out(out_value)
);
Отрабатывает программа (много тактов clockNmhz) и на шине out_value мы видим число "шесть".
Можно работать с одним GPIO блоком (параллельные линии ввода-вывода), но новичку я бы посоветовал использовать один только как входной, а второй только как выходной. При создании системы с Nios 2 также следует вызвать в менюшке assign addresses и оно само правильно раскидает блоки в адресом пространстве Nios2.

В самом же блоке my_nios2_cpu крутится прошивка (ELF/HEX/что угодно), и сформирована она должна быть в среде Eclipse (например). Там создается новый workspace и затем File->(new/create)->"Application and BSP" (как-то так). Указываем путь до файла SOPC (или *.qsys) и создаем там BSP-проект и hello world программку-пример. Всё это создастся автоматически. Затем мы собираем проект BSP и приступаем к редактированию программки своей (не BSP).

Там мы настраиваем при помощи доступа к регистрам процессора направления работы блоков GPIO (части процессора Nios2), считываем вход gpio_in (это допустим блок GPIO_0) видим там 3, прибавляем тройку и выводи в gpio_out (блок GPIO_1). Чтение с GPIO фактически это будут как беззнаковые числа, можно читать их в переменные типа unsigned int. При генерации BSP мы получили файлы system.h и ряд других - вот они то и содержат адреса блоков GPIO в адресом пространстве Nios2. Собрав проект программки получаем прошивку (тот самый ELF или HEX), которую (другие подскажут) подсовываем в главном ПЛИСовом проекте как прошивку для процессора.

Далее запускаем симуляцию - как? Это отдельный вопрос, причем в отличие от САПР фирмы Xilinx, на мой взгляд у Altera это делается слишком сложно в самой среде и поэтому я бы попытался запустить в отдельно запущенном Modelsim Altera(Intel) Starter Edition.

В общих чертах всё именно так. Но я прекрасно понимаю что просто так по моим словам этого не сделать, придется много разбираться. Примеров в интернете очень много, ведь по ним я и учился, по статьям всяким с картинками. Но по сути всё предельно просто, главное уловить суть и тогда всё что касается процессоров типа Nios2 и Microblaze будет казаться примитивным.


--------------------
Go to the top of the page
 
+Quote Post
lostbegan
сообщение Jan 10 2017, 14:06
Сообщение #570


Участник
*

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



Цитата(Stewart Little @ Jan 10 2017, 14:58) *
Создаете систему с нужной Вам периферией (т.е. процессор+память+периферия) и все. Это все вместе - один модуль, который Вы можете использовать в квартусовском проекте.
Дальше все просто - приняли байт из периферийного устройства, обработали его, и выдали, например, в другое периферийное устройство (предупреждение - моделировать UART/SPI/I2C/<и т.п.> будет геморройно, лучше для начала PIO ограничиться).


то есть процессор+память можно обставить двумя PIO на вх/вых и программно в прошивке с них бросать данные, обрабатывать и посылать на второй PIO. Потом моделировать в modelSim? Тогда Quartus как участвует? BlockSchematicFile вообще предполагается при таком раскладе?
Go to the top of the page
 
+Quote Post

43 страниц V  « < 36 37 38 39 40 > » 
Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


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


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