Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: NIOS для начинающих
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
gosu-art
ругается на ф-цыю fflush(stdout);
Нажмите для просмотра прикрепленного файла
vadimuzzz
Цитата(gosu-art @ Jul 6 2011, 10:53) *
ругается на ф-цыю fflush(stdout);

скорее всего из-за Small C Library
gosu-art
У меня памяти 32КБ (он чип, внешней нет). Эклипс говорит - маловато будет crying.gif
vadimuzzz
Цитата(gosu-art @ Jul 6 2011, 14:31) *
У меня памяти 32КБ (он чип, внешней нет). Эклипс говорит - маловато будет crying.gif

а для Small C Library fflush() и не нужна, т.к. буферизации нет. printf напрямую шлет
juvf
При генерации процессора в QSys графическое отображение всегда новое. Собираю процессор. Получаю графический блок который размещаю в графической схеме верхнего уровня. Делаю соединения с процессором. Потом что-нибудь в проц добавляю или меняю, проц пересобираю - получаю новое графическое отображение и которого все выводы перетасованы. Приходится по новой разбираться со всеми соединениями. Можно сделать так, чтоб например порядок выводов в epcs контроллере не менялся при перегенерации ниоса, как это было в SOPC-Builder?
vadimuzzz
Цитата(juvf @ Jul 18 2011, 10:10) *
Можно сделать так, чтоб например порядок выводов в epcs контроллере не менялся при перегенерации ниоса, как это было в SOPC-Builder?

дык оно и в билдере такое частенько случалось. выкиньте уже схематик, используйте HDL. Qsys генерит шаблон
juvf
Цитата(vadimuzzz @ Jul 18 2011, 10:51) *
выкиньте уже схематик, используйте HDL.
да я бы с удовольствием........... но указание сверху "Верхний уровень должен быть в схематике" ((
Serhiy_UA
Цитата(juvf @ Jul 18 2011, 06:10) *
....Получаю графический блок....Можно сделать так, чтоб...?

Используйте на всех уровнях HDL, например, verilog. Перешагните этот языковый барьер и забудьте навсегда о графике для проектов на ПЛИС, и у Вас никогда не будет подобных и многих других проблем.
Я давно использую только HDL и большинство так делают: свободы и ясности намного больше…
vadimuzzz
Цитата(juvf @ Jul 18 2011, 12:10) *
да я бы с удовольствием........... но указание сверху "Верхний уровень должен быть в схематике" ((

тогда сделайте промежуточный HDL модуль-обертку, и графическое представление используйте его, а не то, что генерируется автоматически
juvf
Цитата(vadimuzzz @ Jul 18 2011, 11:41) *
тогда сделайте промежуточный HDL модуль-обертку, и графическое представление используйте его, а не то, что генерируется автоматически

О!!! Спасибо за идею!
juvf
А есть инструкция у альтеры (или не у альтеры) как собирать процессор NIOS в Qsys? Например есть подробная инструкция как сделать процессор с DDRII контроллером в SOPC-Builder. А как тоже самое собрать в Qsys?

Попробовал методом тыка - не работает. В sopc ddr добавляю - автоматом подцепляются s1. А в qsys кроме s1 ещё куча всяких сигналов. Куда их подводить? Сделал ход конём: создал процессор в sopc и конвертировал его в qsys-e - проц заработал. А если полностью создаю в qsys-e - не работает. Сравниваю с трансформированным - вроде всё одинаково, но проц не работает.
gosu-art
У меня, например, та же история с прерывания. Ставлю VIC на два прерывания. При генерации bsp в system.h на всех прерываниях стоит -1. В итоге ничего не работает, даже если вручную меняю на нужные.
Если создаю ту же систему в SOPC билдере - работает все нормально. Портирую SOPC-> Qsys - работает! создаю с нуля тоже самое в Qsys- не работает! biggrin.gif

А зачем вообще сделали столько лишних проводов? Tristate вообще мудреный стал.. cranky.gif
juvf
Цитата(gosu-art @ Jul 19 2011, 14:40) *
А зачем вообще сделали столько лишних проводов.
+1
Да ещё и инструкции нет. А в SOCP не работает одновременно epcs и ddr2, только порознь.
vadimuzzz
у меня не было особых проблем с Qsys. работает и ddr2, и epcs. с VIC - да, есть проблема (не смотрел еще на последнем сервис-паке), даже тему создавал http://electronix.ru/forum/index.php?showtopic=90968. если есть проблема с назначением проводов, могу выложить пример проекта
juvf
Цитата(vadimuzzz @ Jul 19 2011, 19:56) *
у меня не было особых проблем с Qsys. работает и ddr2, и epcs.... если есть проблема с назначением проводов, могу выложить пример проекта

А можно ваш проект как образчик посмотреть?

У меня такая проблема.... Написал тест озу ддр2. Разместил всё в ончип. работает. и после вкл питания, и в дебаге. В дебаге наблюдаю в вкладке Memory свою ддр2. пишу в неё, читаю. Потом решил разместить код в ддр2..... пытаюсь дебажить..... при запуске дебага ошибка. elf загружается в ддр, но не проходит верефикацию...... иногда верификация проходит удачно, но дальше ошибка с сообщением
Код
assertion "m_state == STATE_DEBUG" failed: file "nios2oci.cpp", line 237
Using cable "USB-Blaster [USB-0]", device 1, instance 0x00

С тамбурином похожу вокруг платы.... ни чего не меняя с очередной попытки проскочит это место и вроде начнет выполняться программа, но не останавливается на main. где-то выполняется. остановлю руками, попробую прочитать/записать в ддр - работает. Не понятно где косяк.

Думал что не так тайменги выставил в ддрКонтроллере, но когда всё в ончип - работает же. на ночь оставлял тест ддр - ни одного сбоя. А под дебагом грузится в ддр - не работает. Куда копать? Есть смысл ковырять тайменги в контроллере ддр? Или фазу ддр клоков подвигать? И что может быть за глюк?
vadimuzzz
Цитата(juvf @ Jul 21 2011, 13:06) *
Думал что не так тайменги выставил в ддрКонтроллере, но когда всё в ончип - работает же. на ночь оставлял тест ддр - ни одного сбоя. А под дебагом грузится в ддр - не работает. Куда копать? Есть смысл ковырять тайменги в контроллере ддр? Или фазу ддр клоков подвигать? И что может быть за глюк?

очень смахивает на тайминги. хотя по идее там все автоматом, м.б. пути к констрейнам не указаны? в аттаче пример для c3 starter kit
juvf
Не получается в Qsys добавить контроллер SRAM. А в SOPC всё получилось и работает. В Qsys делаю всё по аналогии. получаю ошибки, см рис.
Цитата
Run SOPC Builder to update Qsys
Это как? Запустил я SOPC Builder. Ни чего не обновилось. Может нужно в билдере открыть файл созданный в qsys-e? Но как? там разные расширения, я так понимаю что разные форматы.

Потом должен быть в tri_state_bridge ещё какой-то ресет. А это что за ресет? А этот мост не сам создал, взял готовый из библиотек. Там нет ресета. Почему Qsys просит ресет?
Kuzmi4
2 juvf
не пробовали AVALON компонент использовать вместо мостов?
В приложении моё чЮдо, использую правда в SOPC, но проблем не было laughing.gif
Нажмите для просмотра прикрепленного файла
gosu-art
Там не
Цитата
Run SOPC Builder to update Qsys

а

Цитата
Run SOPC Builder to Qsys upgrade


Это такая кнопочка во вкладке System (если не ошибаюсь).
Вы собрали старый тристэйт, в qsys он из других компонентов состоит.

А кстати! чего там со тристэйт бриджом намутили? Теперь он из трех компонентов варится. wacko.gif
juvf
Цитата(gosu-art @ Aug 30 2011, 21:09) *
Это такая кнопочка во вкладке System (если не ошибаюсь).

Спасибо. Не сразу и поймёшь что это такая кнопка в Qsys-e.

Цитата
А кстати! чего там со тристэйт бриджом намутили? Теперь он из трех компонентов варится. wacko.gif
Действительно намутили.

juvf
В Qsys добавил контроллер SPI мастер. Указал кол-во SS = 2. Генерирую процессор. На выходе получаю процессор у которого выводы описаны как
Код
input  wire        MISO_to_the_spi_ADF4350,           //          spi_ADF4350_external.MISO
        output wire        MOSI_from_the_spi_ADF4350,         //                              .MOSI
        output wire        SCLK_from_the_spi_ADF4350,         //                              .SCLK
        output wire        SS_n_from_the_spi_ADF4350,         //                              .SS_n


вместо
Код
input  wire        MISO_to_the_spi_ADF4350,           //          spi_ADF4350_external.MISO
        output wire        MOSI_from_the_spi_ADF4350,         //                              .MOSI
        output wire        SCLK_from_the_spi_ADF4350,         //                              .SCLK
        output wire        [1:0]SS_n_from_the_spi_ADF4350,         //                              .SS_n


Почему всего 1 чипселект? Бага в квартусе или в кусысе? Или у меня руки кривые?
Fynjisx
biggrin.gif
Цитата(Full41 @ Oct 12 2009, 23:28) *
Все отправил


Мне тоже)
abw26@yandex.ru
Ivan Kuznetzov
Здравствуйте! Нужен пример работы Nios с бесконтроллерным TFT экраном (RGB24, VSYNC, HSYNC, DCLK) , фрейм буфером на SDRAM. Может кто кинет проектом? Все альтеровские примеры (для платы NEEK) используют SGDMA в связке с DDR. По нескольким причинам есть желание применить SDRAM.
vadimuzzz
Цитата(Ivan Kuznetzov @ Oct 30 2011, 00:15) *
Все альтеровские примеры (для платы NEEK) используют SGDMA в связке с DDR. По нескольким причинам есть желание применить SDRAM.

поменяйте в примере ddr на sdr. это по сути единственное изменение. разве что констрейны для sdram придется писать руками (для ddr их генерит визард)
Ivan Kuznetzov
Цитата(vadimuzzz @ Oct 30 2011, 08:33) *
поменяйте в примере ddr на sdr. это по сути единственное изменение. разве что констрейны для sdram придется писать руками (для ddr их генерит визард)

Почитал Embedded Peripherals IP Users Guide там PLL-кой предлагается фазу сигнала тактирования SDRAM сдвигать. Это оно?
vadimuzzz
Цитата(Ivan Kuznetzov @ Oct 30 2011, 13:06) *
Почитал Embedded Peripherals IP Users Guide там PLL-кой предлагается фазу сигнала тактирования SDRAM сдвигать. Это оно?

да, оно
Ivan Kuznetzov
Ширина шины данных SDRAM имеет значение (если я просто поменяю контроллер в сопце на SDR)? У меня данные 8 бит, адрес 12 бит. (HY57V28820H)
vadimuzzz
Внутри системы sopc-builder автоматически все преобразования шин сделает, либо намекнет о необходимости установки адаптера. внешние соединения - ручками
Ivan Kuznetzov
поставил Video Sync Generator, подключил к нему Test Pattern Generator - на выходе Video Sync (Hsync, Vsync, DataValid) - тишина...
Video Sync Generator надо из программы стартовать как-то еще?
Ivan Kuznetzov
свой вопрос снимаю, Video Sync Generator запустился после подачи клока на его вход...
gosu-art
Пытаюсь оживить на своей плате CIII SDRAM (MT48LC32M16A2P-75).
Собрал систему:
Нажмите для просмотра прикрепленного файла
все вектора установил на on_chip_mem.
Далее завожу Eclipce пишу прогу:

Код
#include "sys/alt_stdio.h"
#include "system.h"
#include "io.h"
#include "alt_types.h"

int main()
{
  alt_putstr("Hello from Nios II!\n");

  volatile alt_u16 a[1024];
  alt_u16 i;
  /* Event loop never exits. */


for (i=0;i<=1023;i++)
{

      IOWR_16DIRECT(SDRAM_0_BASE, i, i);

  };
while (1)
  {
for (i=0;i<=1023;i++)
{

      a[i]=IORD_16DIRECT(SDRAM_0_BASE, i);

  };

  };


  return 0;
}


В итоге имеем:
Нажмите для просмотра прикрепленного файла Нажмите для просмотра прикрепленного файла
Может кто подскажет в чем дело?
Если указать вектора на SDRAM, то есно Ниос не стартует rolleyes.gif

Ну и собственно констрейны:
Код
set_time_format -unit ns -decimal_places 3

derive_clock_uncertainty

#**************************************************************
# Create Clock
#**************************************************************

create_clock -name {clk_0} -period 20 -waveform { 0.000 10 } [get_ports {clk_0}]
derive_pll_clocks -create_base_clocks
Stewart Little
Что-то я не понял...
Вы On-Chip RAM тактируете от PLL, а SDRAM от внешнего генератора?
gosu-art
Цитата(Stewart Little @ Dec 13 2011, 11:57) *
Что-то я не понял...
Вы On-Chip RAM тактируете от PLL, а SDRAM от внешнего генератора?

УПС blush.gif не заметил. Сейчас попробую второй чип припаять и попробовать 32х.р. вариант.
UPD: А Fast input/output registers обязательно использовать нужно? Пока так на 100 МГц работает.
gosu-art
Заработал у меня СДРАМ. Ниос грузился, читалось, писалось, но потом все блин сломалось smile3046.gif
Сейчас ситуация такая:
Пока работаю из он-чип памяти. Пишу, читаю как в предыдущем посте и вот что получается:
Нажмите для просмотра прикрепленного файла Нажмите для просмотра прикрепленного файла
Причем если делаю запись по адресу, а потом сразу чтение из данного адреса, то данные правильные.
вот настройки
Нажмите для просмотра прикрепленного файла Нажмите для просмотра прикрепленного файла
gosu-art
Сейчас вроде опять все работает. Но возникли некоторые вопросы.
1. Как активировать Burst режим памяти? Сейчас работа идет одиночными транзакциями (Ниос без кеша данных)
Нажмите для просмотра прикрепленного файла
2. Когда рисовал схему завел DQML, DQMH параллельно на обе микросхемы (16х) можно ли будет при таком раскладе сделать 32х вариант?
vadimuzzz
Цитата(gosu-art @ Dec 19 2011, 12:31) *
Сейчас вроде опять все работает. Но возникли некоторые вопросы.
1. Как активировать Burst режим памяти? Сейчас работа идет одиночными транзакциями (Ниос без кеша данных)

а куда он будет пачки складывать, если кэша нет?

Цитата
2. Когда рисовал схему завел DQML, DQMH параллельно на обе микросхемы (16х) можно ли будет при таком раскладе сделать 32х вариант?

http://imageshack.us/photo/my-images/217/2sdram.png
gosu-art
Спасибо за ответы!
Но поставил кеш, поэкспериментировал с размерами, галочками берст, но так и не удалось увидеть в СигналТапе данного явления rolleyes.gif
Нажмите для просмотра прикрепленного файла
И еще.. в режиме дебага (все выполняется из СДРАМ). шагаю по программе.
Код
#include <stdio.h>
#define len    8000000
int main()
{
volatile unsigned    int a [len+1];
volatile unsigned    int c [len+1];
volatile unsigned    int i;

int n_err=0;
int b=0;

printf("Start SDRAM TEST\n");
printf("Write\n");
    for (i=0;i<len;i++)
    {
        a[i]=i;
        c[i]=0;

    }


Стоит зайти в цикл for так каждый шаг занимает по 5 секунд (из он чип нормально шагает, правда и буфер намного меньше). Если прыгать по брейкпойнтам то все тоже нормально. С чем это может быть связанно?
vadimuzzz
Цитата(gosu-art @ Dec 19 2011, 13:33) *
Но поставил кеш, поэкспериментировал с размерами, галочками берст, но так и не удалось увидеть в СигналТапе донного явления rolleyes.gif

это зависит от версии квартуса, одно время поддержки burst в sdr sdram не было. я сам только в ddr его видел. в спецификациях на текущую версию burst есть
Цитата
Стоит зайти в цикл for так каждый шаг занимает по 5 секунд (из он чип нормально шагает, правда и буфер намного меньше). Если прыгать по брейкпойнтам то все тоже нормально. С чем это может быть связанно?

да, замечал, м.б. не 5 сек, но лагает. списал на тормознутость усб-бластера под линуксом
gosu-art
Чет никак burst не получается. Уже сделал так: Основная память - он чип (все вектора на нее). завожу ДМА на запись в СДРАМ из другой он чип.
Нажмите для просмотра прикрепленного файла Нажмите для просмотра прикрепленного файла

Может какой секрет есть ? rolleyes.gif
Q11.1sp1
wpost
Решил дописать стабильно работающий проект и впоролся в такую ошибку при отладке

Код
.gdbinit: No such file or directory.
Reading symbols from E:/name.elf...done.
info threads
* 1 Thread <main>  _start () at HAL/src/crt0.S:237



с чем это может быть связано? в режиме Run проект работает. Иногда запускается и дебаг но ооочень редко...
Форум альтеры помог найти только собратьев по несчастью... ОС 7 (к сожалению)
Full41
Здравствуйте коллеги, подскажите что за ошибка?
Нажмите для просмотра прикрепленного файла
naliwator
Цитата(Full41 @ Feb 9 2012, 17:41) *
Здравствуйте коллеги, подскажите что за ошибка?

Ошибка сборки BSP.
Попробуйте регенерировать заново.
Full41
Цитата(naliwator @ Feb 9 2012, 16:48) *
Ошибка сборки BSP.
Попробуйте регенерировать заново.

Пытался несколько раз генерировать, переставлял все с нуля, не чего не помогает.
naliwator
Цитата(Full41 @ Feb 9 2012, 17:49) *
Пытался несколько раз генерировать, переставлял все с нуля, не чего не помогает.

Пришлите сообщения из консоли.
Full41
Цитата(naliwator @ Feb 9 2012, 17:09) *
Пришлите сообщения из консоли.

Вот проект тестовый
Нажмите для просмотра прикрепленного файла
naliwator
Цитата(Full41 @ Feb 9 2012, 18:25) *

Похоже вы давно не чистили папку с проектом.
Для генерации BSP вы используете файл CPU.sopcinfo,
а ваша система генерирует CPU_SOPC.sopcinfo.

Последний сгенерировал нормально.
Full41
Цитата(naliwator @ Feb 9 2012, 18:01) *
Похоже вы давно не чистили папку с проектом.
Для генерации BSP вы используете файл CPU.sopcinfo,
а ваша система генерирует CPU_SOPC.sopcinfo.

Последний сгенерировал нормально.

Попробую пересоздать
Pashtet791
Здравствуйте, я полнейший новичок, но так вышло, что сразу попал в пекло на работе. Есть Stratix IV, готовый .ptf - файл. К плате подключена EEPROM AT24C1024 (даташит, очень коротенький: Нажмите для просмотра прикрепленного файла ). Задача такая - записать что-то в эту память и считать оттуда это что-то. На данном этапе хотя бы одно слово, чтобы мне разобраться, что куда. Создал шаблонный проект "hello world", собрал, получил system.h. Все, что мне нужно из system.h, - это:

/*
* i2c_comod configuration
*
*/

#define I2C_COMOD_NAME "/dev/i2c_comod"
#define I2C_COMOD_TYPE "i2c_alt"
#define I2C_COMOD_BASE 0x0240a61c
#define I2C_COMOD_SPAN 4
#define ALT_MODULE_CLASS_i2c_comod i2c_alt

Интерфейс работы с AT24C1024 - два 16-разрядных регистра, объединенных в один. Описание интерфейса (одна страничка): Нажмите для просмотра прикрепленного файла .

В чем проблема - я первый раз в жизни встретился с NIOS, Altera, EEPROM и т.д. Все, что я знаю, это программирование на C++ и университетский курс цифровой схемотехники. Таким образом, если это не составит труда, хотелось бы услышать более разжеванное объяснение в терминах программирования, чего же от меня хотят, т.к. пока что не представляю, как вообще эти регистры интерфейса увязать с самой памятью, то есть проблемы на фундаментальном уровне понимания. Понимаю, как гвозди забивать, но не знаю, куда, и что вообще требуется сколотить. Особо буду рад примерам кода или каким-то ссылкам на то, что мне следовало бы изучить, чтобы понять всё это дело. Еще раз - мне не требуется полноценная программа работы с памятью, только пример записи/считывания слова, чтобы понять фундамент. Дальше сам. Спасибо.
barabek
Цитата(Pashtet791 @ Mar 3 2012, 21:41) *
Здравствуйте, я полнейший новичок,...
В чем проблема - я первый раз в жизни встретился с NIOS, Altera, EEPROM и т.д. Все, что я знаю, это программирование на C++ и университетский курс цифровой схемотехники.

Если Вы правильно описали свой опытто мой совет - начните с мигания светодиодами.
Pashtet791
Цитата(barabek @ Mar 3 2012, 15:50) *
Если Вы правильно описали свой опытто мой совет - начните с мигания светодиодами.


Светодиодами уже мигал. Тут просто не моя инициатива, на работе надо что-то делать, вот дали задание следующее после светодиодов. Парень сказал, что очень легко, но он мне не расскажет, а то мне будет неинтересно. А я прям не знаю, с какой стороны подступиться biggrin.gif
Хвастаться не буду, но обучаемость и интеллект у меня не страдают, так что я чувствую в себе силы в этом разобраться достаточно быстро, вот только нужно вектор движения правильный задать, так как время не ждет.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.