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

 
 
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

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

 


RSS Текстовая версия Сейчас: 19th June 2025 - 23:07
Рейтинг@Mail.ru


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