Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запись/Чтение в/из DDR2
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
spectr
Никак не получается записать и прочитать DDR2-память.
CIII, использую 2 чипа по 64МБ, объединенные в одну шину (чипы сидят сверху кристалла, TOP_EDGE).

Код для записи вот такой:
Код
#define START    ALTMEMDDR_0_BASE
#define END        ALTMEMDDR_0_BASE + (ALTMEMDDR_0_SPAN>>2)

int main ()
{
    unsigned long data=0xAA55AA55;
    unsigned long i;
    int leds=0x1, dir=0;

    printf("Writing...\n");

    for (i=START; i<END; i++)
    {
        printf(".");
        IOWR_32DIRECT(START, i*4, data);   //<<<<< не работает так
        //*(alt_u32 *)i = data;                      //<<<<< так тоже не работает
        data ++;
    }

    printf("done");

    while(1);

}


В пошаговом режиме (в IDE) выполняется только 8 записей, после чего получаю вот такое фи:
assertion "m_state == STATE_DEBUG" failed: file "nios2debug.cpp", line 288
/cygdrive/c/altera/10.0/nios2eds/bin/nios2-download: line 601: 4524 Aborted (core dumped) nios2-gdb-server --cable 'USB-Blaster on localhost [USB-0]' --device 1 --instance 0 --sidp 0xc009610 --id 0x545a5839 --timestamp 1289484465 --tcpport auto --write-pid ./nios2-download.pid --thread-vars 'list:current=*OSTCBCur,first=*OSTCBList,next=$T->OSTCBNext_OFFSET,id=($T->OSTCBPrio_OFFSET:8)+1,sp=$T->OSTCBStkPtr_OFFSET,pc=OSCtxSw+OSCtxSw_SWITCH_PC'

В режиме Run просто ничего не происходит - не печатается даже первая точка.

В пояснение привожу необходимые скриншоты.

Где может сидеть косяк? Может память не подведена по таймингам?
vadimuzzz
Цитата(spectr @ Nov 11 2010, 22:34) *
Где может сидеть косяк? Может память не подведена по таймингам?

или криво законстрейнена. проблемы с памятью - почти наверняка проблемы с железом. а вы не указали, какую прошивку используете. используя телепатию, могу сказать, что в отчете компиляции квартуса много матюков smile.gif
tAmega
На второй картинке внизу интересная надпись "CIII speed grade 7 не поддерживает DDR2 выше 150MHz"
spectr
Цитата(tAmega @ Nov 12 2010, 12:36) *
На второй картинке внизу интересная надпись "CIII speed grade 7 не поддерживает DDR2 выше 150MHz"


На левом и правом банках. На верхнем и нижнем поддерживает.

UPD:
Выдержка из документа "External Memory Interface Handbook Volume 6: Design Tutorials"

Глава "Using DDR and DDR2 SDRAM Devices in Cyclone III and Cyclone IV Devices"

Цитата: "This design example targets a memory interface frequency of 167 MHz because the
targeted development kit uses an EP3C120F780 device. This device is available in –7
and –8 speed grades only. You can achieve a higher clock rate, up to 200 MHz, for
DDR2 SDRAM if you select a –6 speed grade device from the Cyclone III family."
vadimuzzz
прошивка-то какая? самодельная? сигналы законстрейнили, как в SOPC-билдере сказано?
spectr
Констрейны делались еще когда-то давно и не мной.

Прошивка самодельная. SOPC-билдер никакх варнингов не выдает насчет констрейнов.
Генерирую систему, компилирую, заливаю.

Я так понимаю, что констрейны лежат в altmemddr_0_pin_assignments.tcl после генерации системы и их надо перед синтезом выполнить.
Однако, в проекте ноги ддр-овские у меня названы по другому, а он констрейны создает для ног, которые получаются у него в самой SOPC-системе...
vadimuzzz
Цитата(spectr @ Nov 12 2010, 18:35) *
Прошивка самодельная. SOPC-билдер никакх варнингов не выдает насчет констрейнов.
Генерирую систему, компилирую, заливаю.

варнинги должен квартус кидать. выложите отчет о компиляции
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.