Миландр
https://forum.milandr.ru/

Внешняя SRAM
https://forum.milandr.ru/viewtopic.php?f=34&t=2132
Страница 2 из 2

Автор:  Andrey [ 2015-окт-21 09:24 ]
Заголовок сообщения:  Re: Внешняя SRAM

При чтении команд из внешней шины ядро тратит минимально 4 такта внутренние + WAIT_STATE на внешней шине, если WAIT_STATE=0 то следовательно 6 тактов.
При работе из внутренней памяти на частоте 144 МГц задержка также 6 тактов. Но при выполнении из внутренней памяти есть ускоритель, который при линейной программе работает быстрее, так как вычитывает дополнительные команды. То есть из внешней памяти быстрее никак не получиться.
Во вторых при частоте 144 МГц и WAIT_STATE=0 цикл чтения на внешней шине будет 2 такта, то есть длительность nOE будет порядка 7 нс, такое время порты вряд ли протянут плюс топология платы, так что на такой частоте из внешней памяти работать проблематично. А понижая частоту вы никак не приблизитесь к производительности выполнения программы из внутренней памяти.

Автор:  bioray [ 2015-окт-21 22:15 ]
Заголовок сообщения:  Re: Внешняя SRAM

Andrey писал(а):
При чтении команд из внешней шины ядро тратит минимально 4 такта внутренние + WAIT_STATE на внешней шине, если WAIT_STATE=0 то следовательно 6 тактов.
Два такта берутся из
Длительности WE или OE - 1 такт
Предустановки адреса и данных перед сигналом WE или OE - 1 такт

Таким образом, программа из внешней памяти будет выполняться максимум на 1/6 тактовой частоты контроллера, тоесть для 144 МГц это 24 МГц

А какие задержки существуют в случае выполнения программы из внутреннего ОЗУ?

Автор:  Kohandjo [ 2015-дек-08 09:58 ]
Заголовок сообщения:  Re: Внешняя SRAM

Возникла необходимость использовать сигнал READY на выводе PF2 (ревизия МК - 4). Выставил соответствующий бит USE_READY разрешения опроса PF2 (14 бит в регистре RAM_CYCLESx). Настроил вывод на основную функцию. Однако при подаче разных уровней на ножку МК реакции никакой. Это ошибка МК или я что-то не так настроиваю?

Автор:  Petr [ 2015-дек-15 17:24 ]
Заголовок сообщения:  Re: Внешняя SRAM

Для ревизии 3 и более новых необходимо использовать вывод PF[0].
Для ревизии 1 и 2 необходимо использовать вывод PF[2].

Автор:  transformator [ 2018-окт-03 17:05 ]
Заголовок сообщения:  Re: Внешняя SRAM

Andrey писал(а):
При байтовом обращении:
A[1:0]=00 BE[3:0]=1110
A[1:0]=01 BE[3:0]=1101
A[1:0]=10 BE[3:0]=1011
A[1:0]=11 BE[3:0]=0111
Я пробую читать побайтно память 1645РУ4У на отладочной плате 1986ВЕ1Т. Данные неверные. При этом:
A[1:0]=00 BE[3:0]=1110
A[1:0]=01 BE[3:0]=1110
A[1:0]=10 BE[3:0]=1110
A[1:0]=11 BE[3:0]=1110

Так и должно быть?

Частота процессора 128 МГц. WaitState = 10, WS_Active = 5, WS_Setup = WS_Hold = 3. EBC_MEM_REGION = 0x60000000

Автор:  prostoRoman [ 2018-окт-03 21:12 ]
Заголовок сообщения:  Re: Внешняя SRAM

Режим доступа должен быть байтовый, а тут словный (32 бита) видимо.
EXT_BUS_CONTROL.LOW8 = 1;

Автор:  transformator [ 2018-окт-04 11:42 ]
Заголовок сообщения:  Re: Внешняя SRAM

С сигналами BE0-BE3 разобрался.

Не получается работать с 8-битными данным ни в одном из режимов [LOW16:LOW8]: 00, 01, 10.
Проверяю, сравнивая два массива uint8_t temp[256] и temp2[256].

Результат в temp[256]:
1) low16 = 0, low8 = 0
{20 FF FF FF 20 FF FF FF и т. д.}
2) low16 = 1, low8 = 0
{00 00 00 00 и т. д.}
3) low16 = 0, low8 = 1
{FF F8 F8 F8 F8 F8 F8 F8 и т. д.}

Не понимаю, с 8-битными так можно работать? Или как-то по-другому надо?
uint8_t * ptrRAM;
uint8_t * ptrRAM2;

ptrRAM  = (uint8_t*)(0x60000000);
ptrRAM2 = (uint8_t*)(0x60000000);

// Write RAM
for(i = 0; i < 256; i++)
{
	temp2[i] = i;
	*ptrRAM2++ = temp2[i];
}
		
//Read RAM
for(i = 0; i < 256; i++)
{
	temp[i] = *ptrRAM++;
}

Автор:  prostoRoman [ 2018-окт-04 11:54 ]
Заголовок сообщения:  Re: Внешняя SRAM

проверьте тактирование и настройку ног. покажите весь проект, если что.
покажите осциллограммы.

Автор:  transformator [ 2018-окт-04 16:11 ]
Заголовок сообщения:  Re: Внешняя SRAM

Вроде, осциллограммы нормальные.

Но когда я пишу в ОЗУ по адресу 0x60000000 256 байт число, например, 0х01, при чтении получаю:
F8 01 FD 01 00 01 01 01 00 01 01 01 00 01 01 01 00 01 01 01 ... И так с любым числом.

Режим сейчас low8 = low16 = 0.

Вложения:
RAM.zip [615.53 КБ]
132 скачивания

Автор:  transformator [ 2018-окт-04 16:12 ]
Заголовок сообщения:  Re: Внешняя SRAM

Вложение:
[ attachment ]
WR_BE0_BE1_BE2_BE3.jpg [ 297.29 КБ | 2539 просмотров ]
Вложение:
[ attachment ]
WR_A0_A1.jpg [ 223.5 КБ | 2539 просмотров ]
Вложение:
[ attachment ]
RD_B3.jpg [ 200.76 КБ | 2539 просмотров ]
Вложение:
[ attachment ]
RD_A0_A1.jpg [ 213.81 КБ | 2539 просмотров ]

Автор:  transformator [ 2018-окт-05 10:19 ]
Заголовок сообщения:  Re: Внешняя SRAM

Тактирование портов не забыл:
	/* Enable clock on ports */
	RST_CLK_PCLKcmd(RST_CLK_PCLK_PORTA, ENABLE);
	RST_CLK_PCLKcmd(RST_CLK_PCLK_PORTB, ENABLE);
	RST_CLK_PCLKcmd(RST_CLK_PCLK_PORTC, ENABLE);
	RST_CLK_PCLKcmd(RST_CLK_PCLK_PORTD, ENABLE);
	RST_CLK_PCLKcmd(RST_CLK_PCLK_PORTE, ENABLE);
	RST_CLK_PCLKcmd(RST_CLK_PCLK_PORTF, ENABLE);
А на дате "пила"
Вложение:
[ attachment ]
RD_D1.jpg [ 154.37 КБ | 2502 просмотра ]
Но при записи данные в порядке.

Автор:  prostoRoman [ 2018-окт-05 12:48 ]
Заголовок сообщения:  Re: Внешняя SRAM

transformator писал(а):
А на дате "пила"
Вложение:
RD_D1.jpg
Но при записи данные в порядке.
Проверьте непосредственно на ногах ОЗУ эти же сигналы (RD, WR, D1). Это я вспомнил, что где-то в отладочной плате какого-то МК или в самом модуле расширения с ОЗУ был косяк... Думается, всё дело в "пиле" =)

Автор:  transformator [ 2018-окт-05 15:57 ]
Заголовок сообщения:  Re: Внешняя SRAM

С "пилой" разобрался. На линиях D0 - D2 подтягивающие к GND резисторы 10 кОм заменил на 68 кОм.

Но проблема не ушла. Кажется, при чтении данные выставляются не правильно.

Запись
Вложение:
[ attachment ]
WR_D0.jpg [ 236.84 КБ | 2488 просмотров ]
Чтение
Вложение:
[ attachment ]
RD_D0.jpg [ 206.5 КБ | 2488 просмотров ]

Автор:  Vladimir_K [ 2018-окт-10 13:19 ]
Заголовок сообщения:  Re: Внешняя SRAM

Модуль внешней памяти на базе микросхем 1645РУ4У разрабатывался прежде всего для работы с 32 разрядной шиной, в связи с чем, к сожалению, в разводке модуля была допущена ошибка, были перепутаны местами подключения к выводам микросхем памяти nBLE и nBHE (BE0 подключён к nBHE, а BE1 к nBLE). Из-за этой ошибки побайтовая запись приводит к тому, что младший и старший байт в микросхеме памяти будут перепутаны местами. Побайтовое чтение при этом оказывается невозможным. При работе же с 32 разрядными данными модуль памяти функционирует корректно.

Страница 2 из 2 Часовой пояс: UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/