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

 
 
> Под подозрением модуль SDRAM SOPC Builder
misyachniy
сообщение Jun 20 2008, 14:40
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Разработал первую тестовую плату на Cyclone2
http://njnmnp.narod.ru/proj/video/video.html

Для экономии подсоединил выводы SDRAM (1Mx16x4BANK 7нс) DQM/DQL на землю CKE на притание.
Для тестирования памяти написал тестовую программу (Q7.2 + SP3)

Код
memory_base = MEMORY_BASE_ADDRES;

while (memory_base < 0x02800000)
{
    
  if (switcher!=0x55555555)switcher=0x55555555;
   else switcher=0xAAAAAAAA;
    
  IOWR_32DIRECT(memory_base, 0, switcher);
  Readed_32=IORD_32DIRECT(memory_base, 0);
  
  if (Readed_32 !=switcher)
  {
    for (;;);
  }
  memory_base +=0x04;  
}



Частота которую проект допускает равна 122МГц.
То есть при компиляции с частотой работы со SDRAM 144 - получаю "критический варнинг" с указаной частотой 122 МГц

Перевел проект на 108 Мгц, варнинг исчез.
При пошаговом прохождении - портится младшие 16 бит

Так как USB Blaster самодельный, то решил не использовать пошаговое прохождение.
Тест проходит корректно.

Для дальнейшего тестирования дописал программу еще одним циклом которая после указанного выше
тестирования еще раз считывает данные и проверяет.
Как оказалось считывает всегда с ошибкой - данные сдвинуты на 16 байт.

Изменил программу чтобы подсчитывать чило неправильных чтений

Код
memory_base = MEMORY_BASE_ADDRES;
CountAA=Count55=CountA5=Count5A=CountUnknown=0;
while (memory_base < 0x02800000)
{

  Readed_32=IORD_32DIRECT(memory_base, 0);
  switch(Readed_32)
  {
    case 0x55555555: Count55++; break;
    case 0xAAAAAAAA: CountAA++; break;
    case 0x5555AAAA: Count5A++; break;
    case 0xAAAA5555: CountA5++; break;
    default: CountUnknown++;
  }
  memory_base +=0x04;  
}

Ровно пополам поделились ошибки между Count5A и CountA5.

Для оделения "мух от котлет" понизил частоту до 86,4МГц.

Все работает как часы. И пошаговая отладка и прогон.
По моему что-то нужно "покрутить" в модуле SDRAM SOPC Builder.
Я тайминги подкручивал на 20% и побольше - результата нет.
Пробовал в цепь тактирования SDRAM резистор от 5 до 33 ома впаивать для задержки - не помогает.

Где чего подкрутить?
Спасибо.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 19:24
Рейтинг@Mail.ru


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