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

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> nios2 на ките Cyclone II для чайников, простейший проект
Vasily_A
сообщение Feb 6 2008, 12:36
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 1-03-05
Из: Калуга, СССР
Пользователь №: 2 957



есть альтервский "Cyclone II FPGA Starter Development Kit", установлен квартус 7.0 с двд от кита (с правленой лицензией, полный, не веб) и все что ставится по умолчанию. есть примеры с цд от кита.
cii_starter_nios.v скачал...

уважаемые гуру, может кто поделится простейшим проектом - типа вывести в rs232 "хелло ворд" и помигать светодиодиком?

пока не могу сообразить, как "С" исходник к проекту прицепить...
прошу прошения за возможную нечеткость формулировок.
Go to the top of the page
 
+Quote Post
RHnd
сообщение Feb 6 2008, 13:22
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Цитата(Vasily_A @ Feb 6 2008, 15:36) *
есть альтервский "Cyclone II FPGA Starter Development Kit", установлен квартус 7.0 с двд от кита (с правленой лицензией, полный, не веб) и все что ставится по умолчанию. есть примеры с цд от кита.
cii_starter_nios.v скачал...

уважаемые гуру, может кто поделится простейшим проектом - типа вывести в rs232 "хелло ворд" и помигать светодиодиком?

пока не могу сообразить, как "С" исходник к проекту прицепить...
прошу прошения за возможную нечеткость формулировок.

Нужно установить Nios IDE и создать в нем проект.
Go to the top of the page
 
+Quote Post
Vasily_A
сообщение Feb 6 2008, 13:52
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 1-03-05
Из: Калуга, СССР
Пользователь №: 2 957



Цитата(RHnd @ Feb 6 2008, 16:22) *
Нужно установить Nios IDE и создать в нем проект.


я слегка криво сформулировал...

чтоя делаю:
из примеров беру "cii_starter_nios" (брал и то что было изначально, и пересобирал сам), это, как я понял, "железная" часть системы - проц с переферией и памятью. заливаю получившийся .sof в кит - начинают моргать 7-ми сегментные индикаторы.

далее я я запускаю niosIIide, создаю проект на базе шаблона с "хелло ворд", указывая system_0.ptf из cii_starter_nios директории - этим, судя по всему, я говорю компилятору о своем железе.

смотрю make-файл - все так и есть.

делаю билд-алл, все проходит нормально.

потом пытаюсь запустить на плате кита: run - run as - nios II hardware, происходит загрузка через USB-бластер с остановкой процессора, но при верификации выдается ошибка по памяти в 400000-40F0DB

как я понял, это несовпадение железа (то что в квартусе сделано) с пониманием этого железа у компилятора-линкера...

подскажите именно по этой DK-CYCII-2C20N плате, с чего начать, чтоб получилось взаимопонимание у компилятора и квартуса?
Go to the top of the page
 
+Quote Post
RHnd
сообщение Feb 6 2008, 14:25
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



У меня все почти работало из проблем. Что приходит в голову:
1) Проверить свойства библиотеки - где долен размещаться код программы, данные, стек, куча и т.п..
2) В СОПС проверить, какой переферии соответствуют указанные адреса. Возможно, пересобрать.
3) В system.h проверить соответствие переферия-адреса тому, что указано в сопсе.
Go to the top of the page
 
+Quote Post
Vasily_A
сообщение Feb 6 2008, 14:41
Сообщение #5


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 1-03-05
Из: Калуга, СССР
Пользователь №: 2 957



Цитата(RHnd @ Feb 6 2008, 17:25) *
У меня все почти работало из проблем. Что приходит в голову:
1) Проверить свойства библиотеки - где долен размещаться код программы, данные, стек, куча и т.п..
2) В СОПС проверить, какой переферии соответствуют указанные адреса. Возможно, пересобрать.
3) В system.h проверить соответствие переферия-адреса тому, что указано в сопсе.


вопросы такие:
работали именно с DK-CYCII-2C20N платой?
создавали свой проект с ниосом, или использовали готовый "cii_starter_nios"?
а документация на пример из кита "cii_starter_nios" существует, или и так должно быть все понятно?
Go to the top of the page
 
+Quote Post
RHnd
сообщение Feb 6 2008, 14:56
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Цитата(Vasily_A @ Feb 6 2008, 17:41) *
вопросы такие:
работали именно с DK-CYCII-2C20N платой?
создавали свой проект с ниосом, или использовали готовый "cii_starter_nios"?
а документация на пример из кита "cii_starter_nios" существует, или и так должно быть все понятно?

Да, именно эта плата. Она у меня как основной отладочный стенд. smile.gif
В основном - свой проект с ниосом. Когда пришла плата, еще не было выложенно на сайте альтеры недостающего файла. Так что пришлось по по образцу сопса создавать свой ниос. Потом, когда файл выложили, вроде запускал и их фирменный пример. Я же тогда, как и сейчас, учился только. Повсюду тыкался, так что уже и не помню, что сразу пошло, а где экспериментировал.
Документации, афаир, нету. Это же не ниос-плата.

Вот еще подумал - проверьте в проекте unused pins. Попробуйте as input tristated.
Go to the top of the page
 
+Quote Post
Vasily_A
сообщение Feb 6 2008, 16:16
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 1-03-05
Из: Калуга, СССР
Пользователь №: 2 957



Цитата(RHnd @ Feb 6 2008, 17:56) *
Да, именно эта плата. Она у меня как основной отладочный стенд. smile.gif
В основном - свой проект с ниосом. Когда пришла плата, еще не было выложенно на сайте альтеры недостающего файла. Так что пришлось по по образцу сопса создавать свой ниос. Потом, когда файл выложили, вроде запускал и их фирменный пример. Я же тогда, как и сейчас, учился только. Повсюду тыкался, так что уже и не помню, что сразу пошло, а где экспериментировал.
Документации, афаир, нету. Это же не ниос-плата.

Вот еще подумал - проверьте в проекте unused pins. Попробуйте as input tristated.


Какие версии софта? у меня квартус 7.0 из кита.
может поделишся минимально рабочим проектом с ниосом?

ОПА! заработало! прошил в плату тайм-лимитед версию .sof (ту что сам собрал), и пример написал мне "хелло от ниоса2" в окне j-тага.

осталось понять как собрать полноценный (не тайм-лимитед) вариант...
Go to the top of the page
 
+Quote Post
RHnd
сообщение Feb 6 2008, 16:18
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Хм. Вообще, тайм-лимитид зависит от лицензии на ниос и не зависит от сборки. В комплекте к этой плате лицензии на ниос нет, только демонстрационная тайм-лимитид версия.
Go to the top of the page
 
+Quote Post
Vasily_A
сообщение Feb 6 2008, 16:43
Сообщение #9


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 1-03-05
Из: Калуга, СССР
Пользователь №: 2 957



Цитата(RHnd @ Feb 6 2008, 19:18) *
Хм. Вообще, тайм-лимитид зависит от лицензии на ниос и не зависит от сборки. В комплекте к этой плате лицензии на ниос нет, только демонстрационная тайм-лимитид версия.


лицензия у меня леченая, но может недолеченная...

кто может пояснить, где посмотреть тип лицензии, и что делать, чтоб плата могла работать автономно?

задачка у меня такая - брать с кодека сигнал (примерно звукового диапазона), анализировать его, и выдавать результат на ком-порт. естественно, рядом стоящего компа с запущенным квартусом не планируется sad.gif

изначальная проблема, судя по всему, в кривом примере в ките от альтеры - если самособраный ограниченый .sof стартует с ноликами на индикаторах, то готовый от альтеры рисует там дергающийся мусор.
Go to the top of the page
 
+Quote Post
prog_sun
сообщение Feb 6 2008, 17:16
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 139
Регистрация: 12-10-07
Пользователь №: 31 308



Цитата
есть альтервский "Cyclone II FPGA Starter Development Kit", установлен квартус 7.0 с двд от кита (с правленой лицензией, полный, не веб) и все что ставится по умолчанию. есть примеры с цд от кита.

У меня вот этот пример.
Kits\CycloneII_Starter_Kit-v1.0.0\Examples\CII_Starter_demonstrations\CII_Starter_NIOS
При заливке проца в плату, семисегментные индикаторы не выставлялись в нули. И некотороые красные и зеленые светодиоды загорались.

Скачал с терастика их демонстрашку, они одинаковы но не знаю почему то с терастиком у меня не было проблем.
\Kits\DE1_CD_v06\DE1_demonstrations\DE1_NIOS - без проблем процессор залился в плату, на семисегментном индикаторе все нули, ни один из светодиодов не горит. Так понял это начальная установка. Или у кого то по другому? После загружаю программу, сначала посмотри hello led что из примеров nios2ide, поставив там свои базовые адреса. Потом написал программу и помигал светодиодами, вот код на си
4. Включение любых переключателей от SW0 до SW7 включает светодиоды от LEDG0 до LEDG7.
#include <stdio.h>
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
char ch;

int main()
{
while (1)
{
ch =IORD_ALTERA_AVALON_PIO_DATA(0x00481050);
IOWR_ALTERA_AVALON_PIO_DATA(0x00481020, ch);

}

return 0;
}

вместо этого 0x00481050 поставь свой адрес переключателя
а вместо вот этого 0x00481020 - адрес светодиода
Адреса брал из первой страницы SOPC Buildera, там где схема соединений нарисована.
Если не хочешь цифры писать зайди в system.h и посмотри как обозначаются переключатели и светодиоды. И их впиши вместо цифр. Просто когда писал программу не знал этого, а когда заработало все не захотел в этой программе ничего менять и оставил так. smile.gif

Вот нашел где я вместо цифрового адреса вставил его обозначение LED_PIO_BASE

5.пересчет светодиодов не виден, быстро выставляются все светодиоды в единицу.
#include <stdio.h>
#include "system.h"
#include "altera_avalon_pio_regs.h"
int main ()
{
int i;
printf("Hello from Nios II!\n");
for(i=0;i<256;i++) {
IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE,i);
}
return 0;
}
#############################################################
6.способ создания задержки
void delay(void)
{
volatile int i;
i=0;
while (i<400000) i++;
}
###############################################################
7.пересчет светодиодов уже виден.
#include <stdio.h>
#include "system.h"
#include "altera_avalon_pio_regs.h"

int main()
{int i;
printf("Hello from Nios II!\n");
for(i=0;i<256;i++) {
volatile int j;
j=0;
while (j<400000) j++;
IOWR_ALTERA_AVALON_PIO_DATA(0x00481020,i);
}
return 0;
}

почему то в седьмом примере обратно поставил цифровой адрес , не помню почему вроде и так и так работает, в блокноте у меня записаны те программы которые заработали.
Go to the top of the page
 
+Quote Post
Vasily_A
сообщение Feb 6 2008, 20:19
Сообщение #11


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 1-03-05
Из: Калуга, СССР
Пользователь №: 2 957



Спасибо!
скачал DE1_CD_v06.zip посмотрю что там интересного...
Go to the top of the page
 
+Quote Post
Vasily_A
сообщение Feb 7 2008, 13:27
Сообщение #12


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 1-03-05
Из: Калуга, СССР
Пользователь №: 2 957



некий промежуточный результат:

system_0.ptf и DE1_NIOS.sof из DE1_CD_v06.zip оказались работоспособными, а отличие от альтеровских.

написал простенький пример (ориентируясь на prog_sun):

#include <stdio.h>
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
void delay(void);
//-------------------------------------------------------
int main()
{
int i;
int n=0;
printf("Hello from Nios II!\r\n");
while(1)
{
for(i=0;i<256;i++)
{
IOWR_ALTERA_AVALON_PIO_DATA(LEDG_BASE,i);
delay();
printf("n=%d\r\n",n);
n++;
}
}
return 0;
}
//-------------------------------------------------------
void delay(void)
{
volatile int i;
i=0;
while (i<500000) i++;
}
//-------------------------------------------------------

откомпилировал, залил - результат порадовал: в ком-порт на скорости 115200 выдается все что ожидается, светодиодики моргают.

закрыл ниос-иде, запитал плату от лабораторного блока, вытащил ЮСБ из платы - работает!
ест по 7.5в от блока 420ма.

планы на ближайшее будущее:
1. собрать проц с таймерами, интерфейсом к кодеку, умножителями и, возможно, вга.
2. научиться запускать это все с пзу.
3. написать обработку сигнала - сначала на базе БПФ точек на 32, а далее по результатам на железе.

если у кого есть опыт по пунктам 1 и 2, подскажите более простой путь (если бы не конфа, я с альтеровским китовым софтом так и завяз бы...)

Сообщение отредактировал Vasily_A - Feb 7 2008, 13:31
Go to the top of the page
 
+Quote Post
RHnd
сообщение Feb 7 2008, 15:36
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



1-2) Читайте доки, пробуйте.
3) Расчеты на Ниосе? Нееее.... Лучше сразу пишите для железа и оформляйте как периферийный модуль для ниоса.
Go to the top of the page
 
+Quote Post
Vasily_A
сообщение Feb 7 2008, 16:09
Сообщение #14


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 1-03-05
Из: Калуга, СССР
Пользователь №: 2 957



Цитата(RHnd @ Feb 7 2008, 18:36) *
1-2) Читайте доки, пробуйте.
3) Расчеты на Ниосе? Нееее.... Лучше сразу пишите для железа и оформляйте как периферийный модуль для ниоса.


доки вещь хорошая...
в идеале надо получить такой вариант: прошитый в конфигурационное пзу ниос, и задачку для ниоса, по старту системы копируюшуюся из флеша в SRAM или SDRAM и оттуда стартующюю.

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

подобная задачка при работе под виндой, написаная на дельфи (но с плавучкой), с визуализацией и по 8-ми каналам сразу давала на П4-2ГГц 8% загрузки...

для железа DSP-обработку я наверное пока морально не готов делать, да и оперативно менять сложней. задачка такая - стальная струна, около нее датчик (типа магнитофонной головки), и надо определять, находится струна внутри или снаружи азрозольного факела. соответственно система нужна обучаемая...
Go to the top of the page
 
+Quote Post
RHnd
сообщение Feb 7 2008, 17:45
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Цитата(Vasily_A @ Feb 7 2008, 19:09) *
доки вещь хорошая...
в идеале надо получить такой вариант: прошитый в конфигурационное пзу ниос, и задачку для ниоса, по старту системы копируюшуюся из флеша в SRAM или SDRAM и оттуда стартующюю.

Тут даже думать особо не придется. Там автоматически встраивается загрузчик, копирующий при запуске код из флеш/конф. пзу/где еще он лежит в sram/sdram/где еще он там будет во время исполнения. Все это достаточно просто настраивается в свойствах системной библиотеки.

Цитата(Vasily_A @ Feb 7 2008, 19:09) *
а чем плох ниос для рассчетов? аппаратные умножители ипользовать он может?
если загнать все - код и данные в SRAM, и сконфигурировать проц на "быстрый" вариант - неужели слабая числомолотилка получится? считать в целочисленном варианте, 32 разряда должны позволять.

подобная задачка при работе под виндой, написаная на дельфи (но с плавучкой), с визуализацией и по 8-ми каналам сразу давала на П4-2ГГц 8% загрузки...

Да не то чтоб плох. Просто не предназначен. И умножители использовать будет, и загнать все в срам можно, и кеш кода/кеш данных сделать - все равно не то. Если собираетесь писать на C, то лучше сразу брать DSP контроллер. А если хотите быстро/сильно/веселей и взяли FPGA, то и использовать нужно именно ее ресурсы, а не встраиваемого контроллера. Хотя, попробуйте - может, под конкретное требуемое быстродействие и влезет.
Где-то на форуме обсуждалась применимость ниоса. И, в целом, пришли к выводу, что его основная задача - координировать между собой самописную переферию. Плюс, ее тестировать. Плюс, реализоывать некоторые вещи, которые в виде FSM слишком тяжко делать. Например, Ethernet.

Следует отметить, что это все - сугубо мое дилетантское мнение. Сейчас придут гуру и все расскажут. smile.gif

Цитата(Vasily_A @ Feb 7 2008, 19:09) *
для железа DSP-обработку я наверное пока морально не готов делать, да и оперативно менять сложней. задачка такая - стальная струна, около нее датчик (типа магнитофонной головки), и надо определять, находится струна внутри или снаружи азрозольного факела. соответственно система нужна обучаемая...

Да там не сильно сложно, главное начать. По поводу оперативной замены и задачи - я понятия не имею, что есть азрозольный факел, но, похоже, Вы хотите получить некоторый адаптивный алгоритм идентификации и даже, возможно, управления (струну будете дергать?). Правильное решение таких проектов, на сколько я знаю, начинается либо с моделирования в том же MatLab, либо с написания работающего алгоритма для компа (С++, дельфи). На сколько я понял, алгоритм на дельфи уже реализован, все отлажено? Тогда что Вы собираетесь оперативно менять по ходу аппаратной реализации?
Go to the top of the page
 
+Quote Post

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

 


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


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