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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Nios+SRAM, максимальная скорость???CS&WE?
ROMЫ4
сообщение Sep 28 2009, 17:58
Сообщение #1


Участник
*

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



Уважаемые знатоки NIOSа,помогите мне пожалуйста!
Собрал nios+sram.Поставил самое производительное ядро.Потом написал на Си простенькую программку передачи нуля и единички в SRAM.
Посмторел осциллографом CS и WE и удивился,что скорость маленькая((((использовал 80Мгц).
Может кто знает как разгоняется она????или какие нибудь есть настройки для этого!????
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Sep 28 2009, 23:04
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(ROMЫ4 @ Sep 29 2009, 00:58) *
Уважаемые знатоки NIOSа,помогите мне пожалуйста!
Собрал nios+sram.Поставил самое производительное ядро.Потом написал на Си простенькую программку передачи нуля и единички в SRAM.
Посмторел осциллографом CS и WE и удивился,что скорость маленькая((((использовал 80Мгц).
Может кто знает как разгоняется она????или какие нибудь есть настройки для этого!????

поподробнее желательно. SRAM внешняя, какой тип? картинки из SOPC-билдера и с осциллографа не помешают (маленькая скорость это сколько?). код программы опять же. так на вскидку 2 версии: или в компоненте SRAM тайминги криво настроены, или по шине avalon кто-то еще данные гоняет. можно SignalTap-ом посмотреть шину.
Go to the top of the page
 
+Quote Post
ROMЫ4
сообщение Sep 29 2009, 10:44
Сообщение #3


Участник
*

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



1)Собрал nios(самое производительное ядро) и скомпелил,ошибок нет.(использовал SRAM IDT71V416).
2)Дальше скомпелил весь проект в квартусе.
3)Создаю проект в Nios IDE и компелирую проект полностью.
вот программа:
Код
#include "count_binary.h"

#define LED_PIO_BASE 0x00003000
#define EXT_RAM_BEGIN   0x00100000

unsigned int i;

int main(void)
{
    i = 0;
    while(1)
    {
      
        *(unsigned int*)EXT_RAM_BEGIN =0;
        *(unsigned int*)EXT_RAM_BEGIN =1;
    }
    
    return 0;
}

4)потом пять лезу в квартус и компелирую весь проект.
5)Сейчас решил загрузить конфигурацию в EPCS.Все грузится.
6)хочу проверить сигналы CS и WE,но уже осциллограф ничего не показывает.
Почему не пойму?? crying.gif
может что я не так в Nios IDE?

Сообщение отредактировал Omen_13 - Sep 29 2009, 20:47
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Sep 30 2009, 02:02
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



давайте не так быстро smile.gif шаги 4 и 5 пока лишние.
попробуйте собрать проц без кэшей, есть подозрение, что вот это "*(unsigned int*)EXT_RAM_BEGIN =0; *(unsigned int*)EXT_RAM_BEGIN =1;"
он делает в кэш-памяти. кстати, выложите еще настройки линкера.

upd:
проверил на циклоне3(стартер-кит), так и есть пишет в кэш. если сделать так
Код
#include <sys/alt_cache.h>
#include <alt_types.h>
...
alt_u32 *p;
p=alt_remap_uncached(EXT_RAM_BEGIN,4);
while(1);
{
    *p=0;
    *p=1;
}

то будет писать в off-chip memory. на всякий случай проект прилагаю.
упс, не влез. вот он
Go to the top of the page
 
+Quote Post
dim99
сообщение Sep 30 2009, 05:08
Сообщение #5


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

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Интересно, а почему нельзя написать следующим образом:

IOWR_32DIRECT(ALT_SRAM_BASE, offset, data);
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Sep 30 2009, 06:06
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(dim99 @ Sep 30 2009, 12:08) *
Интересно, а почему нельзя написать следующим образом:

IOWR_32DIRECT(ALT_SRAM_BASE, offset, data);

можно и так. alt_remap_uncached() удобно использовать, если какие-нибудь структуры в памяти лежат. тогда доступ по указателю легко сделать.
все это в 5 томе квартус-хендбука расписано.
Go to the top of the page
 
+Quote Post
ROMЫ4
сообщение Oct 5 2009, 16:33
Сообщение #7


Участник
*

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



Уважаемые гуру Niosa. Подскажите ,пожалуйста где я могу почитать про библитоетки и их функции,комманды для Nios-a. А то что-то трудновато пока дается его изучение?
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Oct 5 2009, 16:51
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Так а в "начале начал" посмотреть ??
Думаю ЭТО решит все вопросы cool.gif
Go to the top of the page
 
+Quote Post
ROMЫ4
сообщение Oct 11 2009, 18:23
Сообщение #9


Участник
*

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



Попробовал Nios_s посмотрел осциллографом cs и wr и не понял как он работает?(пробовал программу,предложенную выше).Хотелось бы узнать длительность cs,wr,rd на нем и на Nios_f?И вообще как он работатет с памятью?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 12 2009, 14:38
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(ROMЫ4 @ Oct 12 2009, 01:23) *
Попробовал Nios_s посмотрел осциллографом cs и wr и не понял как он работает?(пробовал программу,предложенную выше).Хотелось бы узнать длительность cs,wr,rd на нем и на Nios_f?И вообще как он работатет с памятью?

тайминги можно посмотреть в SOPC-билдере. Nios_s и Nios_f скорее всего работают одинаково, за исключением кеширования. ну последний еще м.б. еще пачками может считывать, надо в настройках проца смотреть.
Go to the top of the page
 
+Quote Post
ROMЫ4
сообщение Oct 12 2009, 17:46
Сообщение #11


Участник
*

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



Так вот я не пойму,во время cs проходит 8 импульсов(т.е. мы посылаем наши 1 и 0). Нопочему именно 8?каков смысл работы?хотелось бы узнать может он пошустрее с памятью работает чем мультикор?это было бы радостно)
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 12 2009, 22:55
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(ROMЫ4 @ Oct 13 2009, 00:46) *
Так вот я не пойму,во время cs проходит 8 импульсов(т.е. мы посылаем наши 1 и 0). Нопочему именно 8?каков смысл работы?хотелось бы узнать может он пошустрее с памятью работает чем мультикор?это было бы радостно)

тут надо на шину Avalon смотреть, кто ее еще кроме контроллера памяти дергает. а насчет кто кого шустрее, надо четко задачу формулировать, что делать проц должен.
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Oct 13 2009, 08:44
Сообщение #13


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

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



Цитата(ROMЫ4 @ Oct 12 2009, 21:46) *
Так вот я не пойму,во время cs проходит 8 импульсов(т.е. мы посылаем наши 1 и 0). Нопочему именно 8?каков смысл работы?хотелось бы узнать может он пошустрее с памятью работает чем мультикор?это было бы радостно)

Опишите свою систему подробнее:
1. Какую память используете - только внешнюю SRAM, или On-chip RAM тоже?
2. Где у Вас располагается кодовый сегмент (т.е. откуда выбирается исполняемый код)? Куда указывает вектор сброса процессорного яда?
3. Какова разрядность Вашей внешней SRAM?
Думаю, что если Вы для себя выясните эти вопросы, то и сами со своей проблемой разберетесь smile.gif


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
confflex
сообщение Oct 14 2009, 17:50
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 19-11-05
Пользователь №: 11 082



Я, как и ROMЫ4, создавший эту тему, "удивился,что скорость маленькая". К сожелению понятных ответов я не увидел, может ROMЫ4 спрашивал как то не так? Спрошу тогда я по-своему, может кто знает?
Отсимулировал я проект работы с SSRAM, который выложил vadimuzzz, и получил при тактовой частоте 80 MHz следующее
Прикрепленное изображение

Также отсимулировал сборку NIOSa-fast, кот. меня ещё больше интересует: тактовая 50МГц, память программ и данных в SDRAM 16-бит, обмен с асинхронной SRAM, обмен для примера происходит так:
while (1)
{
IOWR_32DIRECT(SRAM_0_BASE, 0, 9);
IOWR_32DIRECT(SRAM_0_BASE, 4, 10);
IOWR_32DIRECT(SRAM_0_BASE, 8, 11);
IOWR_32DIRECT(SRAM_0_BASE, 12, 12);

IORD_32DIRECT(SRAM_0_BASE, 0);
IORD_32DIRECT(SRAM_0_BASE, 4);
IORD_32DIRECT(SRAM_0_BASE, 8);
IORD_32DIRECT(SRAM_0_BASE, 12);
}
Получил следующие результаты:
Прикрепленное изображение

В связи с этим вопросы:
1) Можно как-то ускорить обмен с SRAM без DMA? Понимаю, что больше всего обмен тормозит 16-бит память программ и данных, думал, что кэширование инструкций как-то эффективней будет работать. Может что не так делаю?
2) Как работать с ДМА? Пробовал пример из Quartusa 9.0 memtest.c, что то не заработало. Может кто покажет, как надо сделать программу отдельно для записи в SRAM и отдельный пример для чтения из SRAM.
Go to the top of the page
 
+Quote Post
dim99
сообщение Oct 14 2009, 19:16
Сообщение #15


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

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Простите, можно вопрос: приведенные графики моделирования где были сделаны, это model sim ?
Go to the top of the page
 
+Quote Post
confflex
сообщение Oct 14 2009, 19:33
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 19-11-05
Пользователь №: 11 082



Цитата(dim99 @ Oct 14 2009, 23:16) *
Простите, можно вопрос: приведенные графики моделирования где были сделаны, это model sim ?

да
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 14 2009, 23:02
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(confflex @ Oct 15 2009, 00:50) *
2) Как работать с ДМА? Пробовал пример из Quartusa 9.0 memtest.c, что то не заработало. Может кто покажет, как надо сделать программу отдельно для записи в SRAM и отдельный пример для чтения из SRAM.

вот пример http://www.altera.com/support/examples/nio...celeration.html
Go to the top of the page
 
+Quote Post
ROMЫ4
сообщение Oct 15 2009, 19:31
Сообщение #18


Участник
*

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



Уважаемые знатоки Nios-a,хочу спросить Вас следущее:
Есть плата,на ней циклон и внешняя SRAM(8-ми разрядная). Т.к. сам Nios 32-х разрядный, а память 8-ми разрядная хотелось бы научиться писать и читать из памяти. Для этого нужно:
1)подключаю ядро;
2)внутреннюю память(ROM);
3)Tri-State bridge;
Дальше я так думаю надо писать проект на vhdl, который бы помог "соеденить"память(SRAM) и Nios.
Может кто встречался с такой задачей?
Можете подсказать алгоритм как правильно научить писать и читать в 8-и разрядную память(SRAM) с помощью Nios2?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 15 2009, 22:51
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(ROMЫ4 @ Oct 16 2009, 02:31) *
3)Tri-State bridge;
Дальше я так думаю надо писать проект на vhdl, который бы помог "соеденить"память(SRAM) и Nios.
Может кто встречался с такой задачей?

Tri-State bridge именно это и делает. надо еще компонент SRAM создать в SOPC Builder`е. тут написано как: http://www.alteraforum.com/forum/showthread.php?t=6255
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Oct 16 2009, 08:49
Сообщение #20


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

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



Цитата(ROMЫ4 @ Oct 15 2009, 23:31) *
Дальше я так думаю надо писать проект на vhdl, который бы помог "соеденить"память(SRAM) и Nios.

Не надо ничего писать!
Надо читать - спецификацию шины Avalon и описание SOPC Builder'а .
Для подключения внешней SRAM к Avalon Tristate Bridge нежно сделать компонент на основе заготовки (template).
Запускайте Component Editor, выбирайте Template, далее Avalon Tristate Slave, и описывайте разрядности Вашей SRAM. Также нужно поставить галку, что даный компонент - это память (не помню точно, на какой закладке - посмотрите сами).
И все. Никаких чудес. Все остальное за Вас сделает SOPC Builder.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
ROMЫ4
сообщение Oct 21 2009, 17:48
Сообщение #21


Участник
*

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



Кто-нибудь подскажет на счет следующего:хочу попробовать соеденить ниос и микроконтроллер(к примеру мк51).Как это можно сделать?с помощью какого интерфейса?и реально сделать так, чтобы микроконтроллер грузил данные в ниос, а он в свою очередь записывал их во внешнюю память? smile3046.gif
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 21 2009, 22:43
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(ROMЫ4 @ Oct 22 2009, 00:48) *
Кто-нибудь подскажет на счет следующего:хочу попробовать соеденить ниос и микроконтроллер(к примеру мк51).Как это можно сделать?с помощью какого интерфейса?и реально сделать так, чтобы микроконтроллер грузил данные в ниос, а он в свою очередь записывал их во внешнюю память? smile3046.gif

конечно, реально. если больших претензий по скорости нет, можно соединить по SPI или UART (что там у 51-го из периферии есть?)
Go to the top of the page
 
+Quote Post
ROMЫ4
сообщение Oct 22 2009, 17:35
Сообщение #23


Участник
*

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



Вот схема микроконтроллера.Думаю, что можно осуществить связь между Nios и им по SPI.
Правильно ли я делаю:
1)создаю ядро.
2)далее подсоеденяю к нему внешюю память.
3)добавляю SPI;
4)в Nios ID написал программку по заполнению SRAM.
А как можно сделать, чтобы микроконтроллер был мастером?
что-то пока не получается crying.gif
Не могли бы Вы помочь с последовательностью действий laughing.gif
За ранее спасибо rolleyes.gif
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 22 2009, 22:48
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(ROMЫ4 @ Oct 23 2009, 00:35) *
А как можно сделать, чтобы микроконтроллер был мастером?

когда добавляете компонент в SOPC, можно выбрать master/slave. ну и тайминги настроить. Quartus Handbook, 5-й том.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
ROMЫ4
сообщение Oct 23 2009, 16:16
Сообщение #25


Участник
*

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



Хотелось бы побыстрее скорость.можно ли это реализовать?у меня на плате микроконтроллер соеденен с плис ножками wr,rd,data,ale,int.
Можно ли,каким-нибудь образом организовать байтовую пересылку напрямую из микроконтроллера в Nios.
может с помощью интерфейса Avalon ST Sourse и Avalon ST sink?Там вроже можно настроить передачу и прием даных.
Что-то пока на ум не приходит,что между ними должно быть crying.gif
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Oct 23 2009, 16:42
Сообщение #26


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

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



Цитата(ROMЫ4 @ Oct 23 2009, 20:16) *
Хотелось бы побыстрее скорость.можно ли это реализовать?у меня на плате микроконтроллер соеденен с плис ножками wr,rd,data,ale,int.
Можно ли,каким-нибудь образом организовать байтовую пересылку напрямую из микроконтроллера в Nios.
может с помощью интерфейса Avalon ST Sourse и Avalon ST sink?Там вроже можно настроить передачу и прием даных.
Что-то пока на ум не приходит,что между ними должно быть crying.gif

Ну Вам же русским языком ответили, что "между ними" должен быть Avalon Master. Этого мастера вы должны создать сами. Как это сделать - читайте документацию. Ссылки я приводил. Не стоит гнаться за лаврами очередного "не читателя" smile.gif
За Вас тут Ваш проект никто делать не будет.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Oct 23 2009, 22:51
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(ROMЫ4 @ Oct 23 2009, 23:16) *
Хотелось бы побыстрее скорость.можно ли это реализовать?у меня на плате микроконтроллер соеденен с плис ножками wr,rd,data,ale,int.
Можно ли,каким-нибудь образом организовать байтовую пересылку напрямую из микроконтроллера в Nios.
может с помощью интерфейса Avalon ST Sourse и Avalon ST sink?Там вроже можно настроить передачу и прием даных.
Что-то пока на ум не приходит,что между ними должно быть crying.gif

ну вроде договорились же, что это будет SPI smile.gif. вот и добавьте его в SOPC.
http://www.altera.com/literature/hb/nios2/n2cpu_nii51011.pdf
Go to the top of the page
 
+Quote Post
ROMЫ4
сообщение Oct 24 2009, 16:38
Сообщение #28


Участник
*

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



Спасибо всем за помошь.Попробую по-разному. smile3046.gif
Go to the top of the page
 
+Quote Post

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

 


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


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