Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AT91SAM9260 + SRAM 2 x K6R4016V10-UI10
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
MSL
Имеется AT91SAM9260 с подключенной как показано на приаттаченой картинке две 16бит SRAM Samsung K6R4016V10-UI10 (10ns). Частота процессора 202,752 MHz, мастер клок равен (202,752 / 2), шина 32бита на NCS0. Регистры контроллера:

Код
// NCS_RD | NRD | NCS_WR | NWE setup 0x00000000 default
AT91C_BASE_SMC->SMC_SETUP0 = (0 << 24) | (0 << 16) | (0 << 8) | 0;

// NCS_RD | NRD | NCS_WR | NWE pulses 0x01010101 default
AT91C_BASE_SMC->SMC_PULSE0 = (1 << 24) | (2 << 16) | (1 << 8) | 1;

// NRD | NWE cycle 0x00010001 default
AT91C_BASE_SMC->SMC_CYCLE0 = (2 << 16) | 1;

// SMC_MODE Read-write 0x10001000 default
AT91C_BASE_SMC->SMC_CTRL0 = AT91C_SMC_DBW_WIDTH_THIRTY_TWO_BITS | AT91C_SMC_READMODE | AT91C_SMC_WRITEMODE;


В такой конфигурации все работает отлично (3 теста памяти последовательно) часами. Непонятна следующая вещь - от дефолтных (нулевых) задержек здесь отличается только (+1) дополнительный пульс NRD на чтение (2, по дефолту мин = 1). Причем с нулевыми задержками проваливается только ОДИН, самый простой тест:

Код
DWORD Count, Size = 0x40000; // 2 x 4,194,304-bit

volatile DWORD *ptr;

DBG_Print ("RAM Test #1 : ");

ptr = (volatile DWORD *)(AT91C_EBI_CS0);

for (Count = 0; Count < Size; Count++, ptr++) {*ptr = Count;}

ptr = (volatile DWORD *)(AT91C_EBI_CS0);

for (Count = 0; Count < Size; Count++, ptr++)
{
    if (*ptr != Count)
    {
        DBG_Print ("fail at 0x");

        ............

        return 0;
    }
}

DBG_Print ("OK!\r\n");

return 1;


2 Остальных теста, которые гоняют 0, потом 1 по всем разрядам адреса, почему то проходят нормально... Кто-нибудь сталкивался с подобными непонятками при чтении? Должна ж эта пямять работать с 0 задержками и на чтение и на запись?
aaarrr
Цитата(MSL @ Apr 1 2008, 13:19) *
2 Остальных теста, которые гоняют 0, потом 1 по всем разрядам адреса, почему то проходят нормально... Кто-нибудь сталкивался с подобными непонятками при чтении? Должна ж эта пямять работать с 0 задержками и на чтение и на запись?

Бегущие нули и единицы создают гораздо меньшую нагрузку на шину в плане перекрестных помех по сравнению с простым счетчиком.

Способность памяти работать с нулевыми задержками зависит от нагрузки шины, топологии ПП и т.п. В свое время на сайте Atmel'а был Excel'овский калькулятор для внешней шины (еще для процессоров AT91M40800 и им подобных), так вот по нему выходило, что асинхронная память может работать с 0WS только в условиях близких к идеальным.
MSL
2 aaarrr

Ну вообще-то эта память и ставилась на плату для того, чтобы работала с 0 задержками. Кроме памяти на шине проца только CPLD еще. Все дорожки макс. короткие. Надо посмотреть будет хорошим осцилографом (сейсас нет такой возможности) что творится на шинах и выборках - будет видно. может конденсатор поможет-)
aaarrr
А слоев сколько?
Конденсатор, к сожалению, не поможет sad.gif
MSL
Цитата(aaarrr @ Apr 1 2008, 17:04) *
А слоев сколько?
Конденсатор, к сожалению, не поможет sad.gif


4 слоя, 2 - питание. Если можете что подсказать дельное - могу топологию на мыло кинуть, буду признателен-)
MSL
Всем спасибо - тема закрыта. Проблема в ужасном сигнале NRD (NWR чуть получше).

44. AT91SAM9260 Errata
44.2.9 Static Memory Controller
44.2.9.1 High Drive Strength
The I/O output buffer drive is too high to guarantee the timings. This is applicable to the External
Bus Interface signals and to the peripheral I/Os.
This leads to fast rise and fall time when the signals change, causing high currents to be drawn
on the power supply pins and leads to emission of high frequencies. This may affect the opera-
tion of the device and may result in the emission of radio-frequency signals, making EMC
certification difficult.
Problem Fix/Workaround
It is strongly recommended:
• to place the memories connected to the EBI as close as possible to the SAM9260 on the PCB
• to route all the EBI signals with a series resistor, typical value 33 ohm
• to adjust the series resistors value with tools taking into account the IBIS model of the pads and the haracteristics of the wires of the PCB, in order to guarantee rise and fall times as long as timings permit.
MSL
Столкнулся еще с парой вопросов по поводу SRAM - если кто знает - подскажите плиз.

Если код выполняется во внутренней памяти процессора - все ок. Как только этот же код (код скомпилен как PI) начинает выполняться из моей SRAM - слетает при обращении (записи) к CPLD (как регитсры на NSC1) или при записи в саму SRAM (NSC0). Никто не поможет примером как "правильно" инитить регистры matrix и пр. для статики и настроить "правильно" кэш?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.