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

 
 
 
Reply to this topicStart new topic
> Проблема с SDR SDRAM, помогите разобраться
Cont
сообщение Feb 24 2009, 19:06
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 112
Регистрация: 10-11-06
Из: Москва
Пользователь №: 22 176



Разрабатываю контроллер SDRAM, ибо готовые корки не годятся. Однако при работе с памятью странное явление - слова записываются (или считываются) сдвинутые по адресу. Например, при burst = 0 пишу слово по нулевому адресу, а оно записывается по первому адресу. самое интересное - в симуляторе все правильно, а вот в действительности нет. пробовал врьировать параметры CAS, RCD - не помогает. (
Go to the top of the page
 
+Quote Post
Methane
сообщение Feb 24 2009, 19:34
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(Cont @ Feb 24 2009, 21:06) *
Разрабатываю контроллер SDRAM, ибо готовые корки не годятся. Однако при работе с памятью странное явление - слова записываются (или считываются) сдвинутые по адресу. Например, при burst = 0 пишу слово по нулевому адресу, а оно записывается по первому адресу. самое интересное - в симуляторе все правильно, а вот в действительности нет. пробовал врьировать параметры CAS, RCD - не помогает. (

C PLL все в порядке?
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Feb 24 2009, 20:48
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



1. Загоните в симулятор post p&r.
2. Попробуйте многократное считывание с одного и того же адреса.
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Feb 26 2009, 08:41
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



А также еще напишите, чем готовые корки не устроили, просто интересно.
Go to the top of the page
 
+Quote Post
Cont
сообщение Feb 26 2009, 16:24
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 112
Регистрация: 10-11-06
Из: Москва
Пользователь №: 22 176



2 Shtirlits
Результаты показали, что tsu не выполняется. Все-таки плиска древняя. Снизил частоту памяти и все стало на свои места. Однако мне нужно 130 мегагерц (или хотя бы 100). Как поступить в данной ситуации? Если мы DLL-ем сдвинем клок на 90 гардусов, данные будут записываться в память правильно, но как быть со считыванием. Этим же клоком их не считать(в триггер). Нужно ли вводить отдельно тактовый сигнал для считывания? Хотелось бы узнать как грамотно решить проблему.
2 DmitryR
По-моему, в coregen-e нет контроллера SDR sdram
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Feb 26 2009, 23:49
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Надо подробностей про вашу память, плиску и задачу.
Пока я нафантазировал что-то про вашу проблему и вижу вот что:
Если клок откуда-то берется и идет к плис и к памяти, то его нужно от памяти оторвать.
Плис должна регистрами в IO pad-ах формировать не только сигналы для памяти, но и клок для нее.
Регистры при этом тактируются общим клоком или двумя клоками сформированными DLL-кой с нужным сдвигом фазы.
Go to the top of the page
 
+Quote Post
Cont
сообщение Feb 27 2009, 04:10
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 112
Регистрация: 10-11-06
Из: Москва
Пользователь №: 22 176



клок к памяти идет от плиски. сейчас моя проблема с формированием клоков(точнее подбором нужной фазы). я много вариантов перепробовал, но на частоте выше 80 мегагерц память работает не правильно
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Feb 27 2009, 06:35
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Цитата(Cont @ Feb 27 2009, 07:10) *
клок к памяти идет от плиски.

Расскажите, из какого именно места он идет.
PS: и что это за плис и что за память?
Go to the top of the page
 
+Quote Post
axalay
сообщение Feb 27 2009, 08:33
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 388
Регистрация: 27-02-06
Из: Москва
Пользователь №: 14 759



Для сдрам я клоки сдвигал только по приему. А по записи либо ничего не делал, либо инвертировал-не помню. Если поможет, то могу подельтся верилоговской коркой, написанной мной давно
Go to the top of the page
 
+Quote Post
Cont
сообщение Feb 28 2009, 16:44
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 112
Регистрация: 10-11-06
Из: Москва
Пользователь №: 22 176



2 axalay: было бы не плохо, если выложите свои наработки

2 all:
Может быть следовало начать отдельную ветку на форуме, т.к. теперь вопрос иного, плана:

как эффективно использовать память? и как ее используют процессоры?

поясняю: память может работать в разных режимах(с разной длиной burst), при этом чтобы его изменить нужно заново проводить инициализацию памяти(а это относительно долгий процесс). например в один момент времени мы считываем/записываем с burst=4, но вот понадобилось изменить значание одного слова, а не сразу 4-х. Как поступать? Изменить burst на 1 или считать 4 слова в буфер, изменить значение одного из них и обатно записать 4 слова в sdram. Как то это не оптимально, а если всегда работать с burst=1 это уж совсем медленно
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Mar 1 2009, 09:35
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(Cont @ Feb 26 2009, 19:24) *
2 DmitryR
По-моему, в coregen-e нет контроллера SDR sdram
Это правда, но coregen - далеко не единственный источник богатства. На opencores например таких контроллеров есть два и один из них hardware-proven, а второй выходит на эту стадию. Конечно, качество кода на opencores в основном сильно отстает от фирменного, однако часто сильно опережает возможности одного разработчика, поэтому им стоит пользоваться хотя бы для справки, для шаблона.
Go to the top of the page
 
+Quote Post
Gothard
сообщение Mar 2 2009, 06:02
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 127
Регистрация: 16-02-07
Из: Долгопрудный
Пользователь №: 25 406



Цитата(Cont @ Feb 28 2009, 19:44) *
например в один момент времени мы считываем/записываем с burst=4, но вот понадобилось изменить значание одного слова, а не сразу 4-х. Как поступать? Изменить burst на 1 или считать 4 слова в буфер, изменить значение одного из них и обатно записать 4 слова в sdram

Именно для этого существуют сигналы маскирования - маскируется запись каждого слова внутри бурста. Если у вас DIMM - на каждый байт свой сигнал маскирования

Цитата(Cont @ Feb 27 2009, 07:10) *
клок к памяти идет от плиски. сейчас моя проблема с формированием клоков(точнее подбором нужной фазы). я много вариантов перепробовал, но на частоте выше 80 мегагерц память работает не правильно

Чем гадать на кофейной гуще - быстрее сделать нормальный расчет временной диаграммы передачи на запись в память и на чтение. В общем-то инженер так и должен поступать. Вот и увидите - реально ли работать свыше 80 мегагерц и что для этого надо.

Кстати - насколько я помню, у памяти SDRAM время tHOLD и для адреса и для данных порядка 0.7-1нс и приходится задерживать клок, если он выдается из плиса. В вашем случае я так понимаю надо бы клок выдавать по фазе 90 хотя-бы.
С приемом из памяти обычно проблем со сдвигом нет, но только если у вас "round-trip-time" в цепочке "клок из плиса"-память-"данные в плис" не превысит период синхросигнала минус tSETUP для плиса. Если превышает - тогда уж задерживайте приемный клок в плисе.
Go to the top of the page
 
+Quote Post
axalay
сообщение Mar 2 2009, 06:41
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 388
Регистрация: 27-02-06
Из: Москва
Пользователь №: 14 759



2 Cont: сообщите свою почту
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Mar 2 2009, 08:04
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(Cont @ Feb 28 2009, 19:44) *
Как поступать? Изменить burst на 1 или считать 4 слова в буфер, изменить значение одного из них и обатно записать 4 слова в sdram. Как то это не оптимально, а если всегда работать с burst=1 это уж совсем медленно
Надо работать конечно же всегда с максимальным burst, просто кэш ставить. Даже у небольшого кэша длина строки не будет меньше длины burst памяти, и все будет хорошо. Что до сложности кэша - тут уж кому что надо, или простота, или эффективность.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 09:38
Рейтинг@Mail.ru


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