Перейти к содержанию
    

Имеется - надо принять поток данных (16 бит) и сложить его во внешнюю память (8 бит), потом соотв прочитать и выдать во внешнее устройство (4 бита). В связи со спецификой решения - все делается на параллельных портах. Результат - крайне низкая скорость. Странно очень для RISC-процессора - на кристалле EP1C3 - при частоте проца 200МГц - длительность импульса (поставил бит в порт-снял бит с порта) - соотв частоте 1МГц. Запись 1 МБ памяти занимает около 2-х секунд!!! :blink: Это так и должно быть? Quartus 4.2 sp 1 + все стандартное из комплекта. Может чего-то не так настроил?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какой именно NIOSII используете? Их не менее трех.

По всей видимости вы используете маленький, так вот у него мипсов в 5 раз меньше тактовой.(В вашем случае 40MHz)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какой именно NIOSII используете? Их не менее трех.

 

И на программу (поставил бит в порт-снял бит с порта) хотелось бы взглянуть(на С или на ассемблере). Из какой памяти исполняется, какой кэш, все ли попадает в кэш (инструкции).

С памятью другой вопрос. Он обсуждался активно на форуме www.niosforum.com/forum.htm

Вот линка, стоит прочитать: http://www.niosforum.com/forum/index.php?showtopic=629

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

 

После чего разработчики добавили в ниос 2 версия 5.0 специальный вид памяти: Tightly Coupled Memory (тесно связаная с ядром).

 

Вот линка на релизные изменения в версии 5.0 http://www.niosforum.com/forum/index.php?s...1651&hl=latency

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Nios не 5 но и не 1-й! Не помню версии - на работе стоит... а инета там нету... :( Ниос в самой мелкой комплектации - естественно без кэша и т.п В ЕР1С3 - особо не втолкаешь - память команд и констант - внутренняя. А на проблемы с внешней памятью наткнулись на евалюшн борде, потому и на параллельных портах. Программка ессно на С - встроенное все, что в комплекте было... . процедура IOWR_... ну и тп.

Попробую кэш прикрутить... может влезет... Хотя даже при такте 40 МГц - должно быстрее работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

длительность импульса (поставил бит в порт-снял бит с порта) - соотв частоте 1МГц. Запись 1 МБ памяти занимает около 2-х секунд!!!

Если посчитать та если у вас на операция записи длится 2 импульса или даже 1, то 1 миллион обращений и вылезает в приведенные вами времена. А чего вы хотели?

 

И что за проблеммы с памятью?

Тот же самый PIO адресуется как ячейка памяти. У NIOS все, что не входит в ядро является памятью.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извеняюсь, немного ошибся (с нисом работаю редко). Но вот как раз намечаетсяновая работа.

 

Проблема на которыю я сослался относиться только к Data Master, но не к Instruction Master.

 

Вопрос в ветке цитировать не буду, но ответ разработчика процитирую (разговор идет про NIOS II ver 1.0):

 

What you're seeing is the result of the Nios data master not being 'latency aware' (the instruction master is, and this allows relatively speedy instruction fetch even with a cache miss). Both master ports on the DMA controller are, and that is why Ken sees the performance he does. In a nutshell, Nios II was really designed to be as simple (small/fast) as possible and deliver best performance when things are cached.

 

PS: Latency aware means that an Avalon master accepts the 'readdatavalid' signal, rather than merely the 'waitrequest' signal as all masters must do.

 

В версии 5.0 немного подшаманили Data Master и привертели Tightly Coupled Memory.

 

А производительность махания битом я сейчас проверю на эвалюхе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Софт проект hello_led

добавлен цикл:

while(1){

IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x01);

IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x00);

}

Плата 1С20 эвалюха, частота 50МГц

HW 1C20 low_cost (код данные из SDRAM, процессор NIOS II/e): период 1.56 мкс.

 

Тоже самое но для HW small (память данных и кода на М4К блоках внутри циклона (всего 2К байт), процессор NIOS II/e): период 800нс

 

При этом для ядра NIOS II/e заявляется 5-7 DMIPS.

По сгенеренному коду мы имеем:

while(1){

IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x01);

60: 00900004 movi r2,16384

64: 00c00044 movi r3,1

68: 10c00035 stwio r3,0(r2)

IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x00);

6c: 00900004 movi r2,16384

70: 10000035 stwio zero,0(r2)

74: 003ffa06 br 60 <alt_main+0xc>

Disassembly of section .comment:

 

За один период выполняется 6 команд. Что соответствует заявленым 5-7 мипсам.

Проект компилился в дебаге. Реально только запись в R2 лишняя, что уменьшило бы цикл до 4 команд.

 

Все "железо" компилилось в квартусе 5.0, настройки проектов не изменялись, все по умолчанию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Понятно - в общем так и есть... Как и описал Major... цикл приблизительно так-же выглядит (а как иначе-то? :))

Наличие кэша и пр влияет незначительно. Быстрее... но чуть-чуть.

В общем - тормоз. И зачем он еще нужен - если только лампочками моргать да клавиатуру сканить... На более серьезные задачи - очень тяжело... А жаль - удобно... Попробовать 5.0 поставить... Хотя если даже на асме писать - такая задержка... Неприемлемо...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нужен, даже в варианте e(economic наверное).

Лампой моргать можно и логику привертеть, так же как и клаву.

Есть рутинные задачи, которые на конечных автоматах запаристо делать, да и понимание их работы со времененм ухудшается (программы медленее "стареют"). Мне обычно мипсы нужны только пиковые, а так все идет неспешно, то что на авре требует 8 мипс на ниосе хватит 2-3 (за счет битности и внешней логики) плюс большое адресное пространство - это для мелких задач. Цена критерием не является. Это моя оценка, сам я использую только варианты s (standart) и f (fast), и при этом весьма доволен.

Ниос мне позволяет делать отложеные решения на этапе проектирования, не заморачиваясь раздачей ног и ресурсов (в локальном смысле). Цена за это своя, но меня она устраивает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Имеется - надо принять поток данных (16 бит) и сложить его во внешнюю память (8 бит), потом соотв прочитать и выдать во внешнее устройство (4 бита). В связи со спецификой решения - все делается на параллельных портах. Результат - крайне низкая скорость. Странно очень для RISC-процессора - на кристалле EP1C3 - при частоте проца 200МГц - длительность импульса (поставил бит в порт-снял бит с порта) - соотв частоте 1МГц. Запись 1 МБ памяти занимает около 2-х секунд!!! :blink: Это так и должно быть? Quartus 4.2 sp 1 + все стандартное из комплекта. Может чего-то не так настроил?

 

1. Могу добавить только, что конвейер 5 ступеней и при каждом JMP, CALL, RET происходит сборс конвейера. Следовательно, все критичные куски надо писать "в лоб", без этих команд.

2. Сделайте ДМА, если это позволяет обработка Ваших данных. Если нужно что-то особенное, то есть пользовательские команды. Небольшой автомат, определяющий готовность данных. Получите скорость близкую к тактовой. Если внешнее устройство - порт MII, то это гораздо проще сделать аппаратно, чем выделять тетрады.

 

Так что либо сидеть со "спецификой", либо как задумано в Niose.

Удачи!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скажите, пожалуйста, а вы за каждый запрограммированный НИОС за лицензию его ядра по 500 долларов выкладываете? Или крэк существует?

После такой беседы о тормознутости НИОСа что-то берет сомнение о его приобретении за такие деньги...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

500 уе стоит годовая подписка.

После окончания срока подписки вам будут не доступны новые версии. все что было до этого будет доступно.

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

Чтобы использовать 5.1 надо покупать подписку.

Для того чтобы понять нужен вам ниос или нет достаточно evaluation версии, пока квартус через jtag видит матрицу, все работает.

Без этого время работы ограничено 30 мин. После чего проц перестает функционировать.

Про лекарство - вроде есть, сам не пользовал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Теперь понятно. Скажите, а как при такой медленной работе Ниоса (1 Мбайт/с записывать) можно на него еще UcLinux ставить? Читал по форуму, что под Линуксом все работает. Это при самом ресурснозатратном варианте Ниоса получается только?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я линукс не пользую.

На форуме ниоса народ активное его обсуждает со всех сторон.

http://www.niosforum.com/pages/forum.php?cat_id=5

 

Для работы с памятью рекомендую использовать DMA.

Да и ядро ставить не economical.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скажите, если не секрет, а что за отладочная плата у Вас? Смотрел альтеровскую родную NIOS-EVALKIT-1C12: там кварцевый генератор на 24 МГц (у Вас 50 МГц). Цена какая? Альтеровскую за 320 долларов предлагают...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...