lostbegan 0 6 января, 2017 Опубликовано 6 января, 2017 · Жалоба Здравствуйте, уважаемые. Есть вопрос, подведу издалека. Ранее в рамках бакалаврской выпускной разрабатывал немаленький проект по средствам языка VHDL в Altera Quartus II. Не было ничего особенно хитрого, несколько десятков ФБ, написанных на VHDL, которые побитово перемножали числа. Два автомата - управляющий и исполнительный. Работу проверял обычными в Q2 встроенными средствами - файлом диаграмм, которые подтверждали правильность функционирования. Научный рук. остался тот же и дал тему разработать проект с применением процессора NiosII, что я, что он пока очень смутно представляем что это за штука такая. Пытался читать английские инструкции, инструкции, переведенные на наш язык (огромное спасибо переводчику) ,нашел несколько так сказать тестовых проектов, и все они сводятся к зажиганию диодов на прожженной плисине. Вопрос в следующем, сейчас проект должен быть на что то вроде перемножении плавающих точек или даже матриц, пока точно не решено, возможно ли без покупки стенда создать процессор в SopcBuilder (фб для QII *.vhd), написать в него какую нибудь прошивку в IDE, и средствами QII бросить туда например числа (в пины), внутри прошивки перемножить, отпустить на output и сделать те же диаграммы? Возможно ли это? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 45 6 января, 2017 Опубликовано 6 января, 2017 · Жалоба Возможно ли это?Возможно! Только для моделирования надо использовать среду ModelSim-Altera. Ну и Qsys вместо SOPC Builder'а (по нынешним-то временам). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 7 января, 2017 Опубликовано 7 января, 2017 · Жалоба Вопрос в следующем, сейчас проект должен быть на что то вроде перемножении плавающих точек или даже матриц, пока точно не решено, возможно ли без покупки стенда создать процессор в SopcBuilder (фб для QII *.vhd), написать в него какую нибудь прошивку в IDE, и средствами QII бросить туда например числа (в пины), внутри прошивки перемножить, отпустить на output и сделать те же диаграммы? Возможно ли это?Да, это более чем реально, я такое делал. Для этого надо создать максимально простейшую систему на базе Nios 2, сделать ей "generate", затем Nios EDK создать простую программу дергающую выводами и сгенерировать ELF/HEX файл прошивки, затем в основном проекте назначить получившейся реализации этот файл прошивки. Была бы реальная плата, прошивку можно было бы залить на лету, но в симуляции можно без проблем назначить этот файл как я написал выше. P.S. Можно поинтересоваться, что за ВУЗ, преподаватели которого имею такой свежий взгляд на вещи? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lostbegan 0 7 января, 2017 Опубликовано 7 января, 2017 · Жалоба Да, это более чем реально, я такое делал. Для этого надо создать максимально простейшую систему на базе Nios 2, сделать ей "generate", затем Nios EDK создать простую программу дергающую выводами и сгенерировать ELF/HEX файл прошивки, затем в основном проекте назначить получившейся реализации этот файл прошивки. Была бы реальная плата, прошивку можно было бы залить на лету, но в симуляции можно без проблем назначить этот файл как я написал выше. P.S. Можно поинтересоваться, что за ВУЗ, преподаватели которого имею такой свежий взгляд на вещи? :) Ижевский государственный тех. университет, факультет ИВТ. Спасибо большое за ответы, может быть где нибудь есть какие нибудь методички или примеры на похожие темы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 7 января, 2017 Опубликовано 7 января, 2017 · Жалоба Возможно! Только для моделирования надо использовать среду ModelSim-Altera. Ну и Qsys вместо SOPC Builder'а (по нынешним-то временам). Для отладки в симуляторе можно числа читать-писать из/в файл. А для отладки в железе, можно для простоты дела числа наверняка можно сразу же записать в память, а результат выдавать на UART... какие нибудь методички или примеры на похожие темы? Если хотите, можем поговорить об этом по скайпу... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lostbegan 0 7 января, 2017 Опубликовано 7 января, 2017 · Жалоба Если хотите, можем поговорить об этом по скайпу... Разумеется, любая информация поможет. Логин в скайпе: lostbegan Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lostbegan 0 8 января, 2017 Опубликовано 8 января, 2017 · Жалоба ...затем Nios EDK создать простую программу дергающую выводами и сгенерировать ELF/HEX файл прошивки, затем в основном проекте назначить получившейся реализации этот файл прошивки. Если не трудно, можно развернутее. конкретно интересуют моменты: 1. простую программу дергающую выводами - что значит дергающую? использующая данные с пинов? какого типа должны быть значения? 2. в основном проекте назначить получившейся реализации этот файл прошивки - имеется в виду непосредственно в QII назначить файл? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lostbegan 0 10 января, 2017 Опубликовано 10 января, 2017 · Жалоба Вообще существует ли пример проекта без участия Usb - бластера, диодов и самой платы? Какой нибудь элементарный, где например на схеме NIOS принимает значения, меняет (хоть элементарно инкрементирует значение одноразово) и дает что то на выход? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 45 10 января, 2017 Опубликовано 10 января, 2017 · Жалоба Вообще существует ли пример проекта без участия Usb - бластера, диодов и самой платы? Какой нибудь элементарный, где например на схеме NIOS принимает значения, меняет (хоть элементарно инкрементирует значение одноразово) и дает что то на выход? Пример чего? Когда Вы работаете с Nios II, то у Вас есть: 1. аппаратная часть проекта, которая выполняется в Qsys (а ранее в SOPC Builder); 2. программная часть проекта (т.е. исполняемый код Nios II), который создается в Nios II SBT. Даже если Вы собираетесь только моделировать, то Вам необходимы обе эти части. При создании аппаратной части Вы можете сделать и тестбенч для моделирования. А при создании программной часть - dat-файл, который будет инициализировать модель памяти при симуляции. И запускать симулятор Вы можете прямо из-под Nios II SBT. В простейшем случае аппаратная часть может содержать только процессор и память; те "диоды", о которых вы пишете - это, скорее всего обычный PIO (периферия). А USB Blaster нужен только для того, чтобы загрузить проект (обе его части!!!) в реальное железо (и отлаживать его там). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lostbegan 0 10 января, 2017 Опубликовано 10 января, 2017 · Жалоба Пример чего? Когда Вы работаете с 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. Это вообще возможно или я сказки придумываю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 10 января, 2017 Опубликовано 10 января, 2017 · Жалоба Если не трудно, можно развернутее. конкретно интересуют моменты: 1. простую программу дергающую выводами - что значит дергающую? использующая данные с пинов? какого типа должны быть значения? 2. в основном проекте назначить получившейся реализации этот файл прошивки - имеется в виду непосредственно в QII назначить файл? 1. Для этого к системе надо добавить блок GPIO, и уже через него дергать при помощи специальных функций (или регистров процессора напрямую). Я как раз (чисто случайно) делаю проект в котором Nios2 чисто для отладки воткнул, вечером смогу подсказать конкретнее по программе. Как сделать систему тоже могу подсказать, отвечу на любые конкретные вопросы. 2. Возможно я ошибаюсь, кажется мои слова справедливы лишь ядра Microblaze в среде Xilinx ISE. Но я подозреваю что в Quartus II это аналогично. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lostbegan 0 10 января, 2017 Опубликовано 10 января, 2017 · Жалоба 1. Для этого к системе надо добавить блок GPIO, и уже через него дергать при помощи специальных функций (или регистров процессора напрямую). Я как раз (чисто случайно) делаю проект в котором Nios2 чисто для отладки воткнул, вечером смогу подсказать конкретнее по программе. Как сделать систему тоже могу подсказать, отвечу на любые конкретные вопросы. Где можно найти информацию по этим "специальным дергающим" функциям? Если можете предложить помощь, буду рад совершенно любой информации, пока все никак не может собраться в общую картину Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 45 10 января, 2017 Опубликовано 10 января, 2017 · Жалоба Пробел в том что я хочу собранный в SOPC NIOS разместить на схеме Quartus и чтобы он мог принимать какие то значения от внешних блоков на той же схеме. Я абстрактно представляю это так - я создаю какой нибудь функциональный блок, который например формирует число 3. Передает его в раннее созданный мной в sopc блок НИОС, там он эти значения как то принимает, и видимо в теле программного кода к примеру прибавляет к 3 еще 3. И выводит полученное число опять же в какой нибудь ФБ или обычный OUTPUT. Это вообще возможно или я сказки придумываю? Тут Вы перемудрили. Передать какую-либо величину в процессор проще всего через стандартное периферийное устройство - UART, PIO, и т.п. Тут ничего изобретать не надо - бесплатная библиотека наиболее ходовых периферийных устройств уже имеется в Qsys. Создаете систему с нужной Вам периферией (т.е. процессор+память+периферия) и все. Это все вместе - один модуль, который Вы можете использовать в квартусовском проекте. Дальше все просто - приняли байт из периферийного устройства, обработали его, и выдали, например, в другое периферийное устройство (предупреждение - моделировать UART/SPI/I2C/<и т.п.> будет геморройно, лучше для начала PIO ограничиться). Где можно найти информацию по этим "специальным дергающим" функциям? Если можете предложить помощь, буду рад совершенно любой информации, пока все никак не может собраться в общую картину Вся необходимая документация живет вот тут: https://www.altera.com/products/processors/support.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 10 января, 2017 Опубликовано 10 января, 2017 · Жалоба Насчет 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 будет казаться примитивным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lostbegan 0 10 января, 2017 Опубликовано 10 января, 2017 · Жалоба Создаете систему с нужной Вам периферией (т.е. процессор+память+периферия) и все. Это все вместе - один модуль, который Вы можете использовать в квартусовском проекте. Дальше все просто - приняли байт из периферийного устройства, обработали его, и выдали, например, в другое периферийное устройство (предупреждение - моделировать UART/SPI/I2C/<и т.п.> будет геморройно, лучше для начала PIO ограничиться). то есть процессор+память можно обставить двумя PIO на вх/вых и программно в прошивке с них бросать данные, обрабатывать и посылать на второй PIO. Потом моделировать в modelSim? Тогда Quartus как участвует? BlockSchematicFile вообще предполагается при таком раскладе? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться