|
Нестабильная работа внешней памяти |
|
|
|
Nov 6 2014, 09:44
|
Участник

Группа: Участник
Сообщений: 58
Регистрация: 4-06-11
Пользователь №: 65 475

|
Работаю с памятью DDRII SRAM на виртексе 6. Заявленная частота работы памяти 333 МГц. На плате стоит 2 модуля обработки. На каждом модуле по 6 виртексу и планке памяти. Получается такая проблема, что на плате в левом субмодуле память работает корректно на 200МГц, а на правом субмодуле на 160МГц. Если запустить память на левом субмодуле на 160 МГц, то ее калибровка проходит, но считываемые данные приходят с ошибками. А если запустить память на правом субмодуле на 200 МГц, то калибровка вообще не проходит. Пробовал прошивки 4х платах, такая ситуция только на одной. Причем, на 3х платах память работает корректно, как на 200МГц, так и на 100 МГц. С памятью работаю с помощью контроллера, сгенерированного в ISE. Вопрос такой, что может быть не так с той платой? Или в моей прошивке.
|
|
|
|
|
Nov 6 2014, 10:16
|
Участник

Группа: Участник
Сообщений: 58
Регистрация: 4-06-11
Пользователь №: 65 475

|
Цитата(bogaev_roman @ Nov 6 2014, 13:07)  Временные ограничения выполняются? Да, временных ошибок нет.
|
|
|
|
|
Nov 6 2014, 10:27
|
Участник

Группа: Участник
Сообщений: 58
Регистрация: 4-06-11
Пользователь №: 65 475

|
Цитата(bogaev_roman @ Nov 6 2014, 13:26)  Планки памяти пробовали менять местами или такой возможности нет? Такая возможность отсутствует. Причем, если перегенирить прошивку, то калибровка на правом субмодуле проходит. Но данные все равно с ощибками считываются.
Сообщение отредактировал bognev - Nov 6 2014, 10:30
|
|
|
|
|
Nov 6 2014, 11:15
|
Профессионал
    
Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643

|
Приветствую! Не обижайтесь - но прикольно читать такие вопросы. "справа не работает, а слева ошибки - что делать?" Было бы куда интересней придумывать ответы если бы Вы указали для начала тип платы (покупная или собственного производства) и хотя бы тип памяти (отдельные чипы или модули SODIM). Поскольку если плата покупная - то тогда 99% глюки в проекте - не полностью/неправильно заданы времянки, некорректный выбор источника тактовой или некорректная разводка тактовой между модулями, неправильные конфигурация для корки контроллера и т.д. и.т.п. Если же это изделие собственной выпечки - то тут возможности глюкануть расширяются неимоверно! И в этом случае легче получить ответ задав этот вечный вопрос "что делать?" в google  В любом случае - для отладки такой неприятности нужно сделать маленький проектик ТОЛЬКО для тестирования памяти - выбросив все что для этого не нужно, максимально зафиксировать модули на кристалле. При широкой шине данных памяти отлаживать боле узкими частями (по отдельным банкам DQS) То что у Вас при пере разводке проекта меняется поведение уже косвенно указывает на глюки в дизайне могу предположить что где то в 20 строке третьего файла правой части левого модуля  Успехов! Rob.
|
|
|
|
|
Nov 6 2014, 12:28
|
Участник

Группа: Участник
Сообщений: 58
Регистрация: 4-06-11
Пользователь №: 65 475

|
Цитата(RobFPGA @ Nov 6 2014, 14:15)  Приветствую! Не обижайтесь - но прикольно читать такие вопросы. "справа не работает, а слева ошибки - что делать?" Было бы куда интересней придумывать ответы если бы Вы указали для начала тип платы (покупная или собственного производства) и хотя бы тип памяти (отдельные чипы или модули SODIM). Поскольку если плата покупная - то тогда 99% глюки в проекте - не полностью/неправильно заданы времянки, некорректный выбор источника тактовой или некорректная разводка тактовой между модулями, неправильные конфигурация для корки контроллера и т.д. и.т.п. Если же это изделие собственной выпечки - то тут возможности глюкануть расширяются неимоверно! И в этом случае легче получить ответ задав этот вечный вопрос "что делать?" в google  В любом случае - для отладки такой неприятности нужно сделать маленький проектик ТОЛЬКО для тестирования памяти - выбросив все что для этого не нужно, максимально зафиксировать модули на кристалле. При широкой шине данных памяти отлаживать боле узкими частями (по отдельным банкам DQS) То что у Вас при пере разводке проекта меняется поведение уже косвенно указывает на глюки в дизайне могу предположить что где то в 20 строке третьего файла правой части левого модуля  Успехов! Rob. Я понимаю, что прошу описать сферического коня в вакууме. Просто вот так сразу написать все не получится. Слишком много) Плата покупная. http://www.insys.ru/products/dsp/adp201cp5. Память GS8662R36E-333 http://www.datasheetarchive.com/dl/Datashe...DSA00268030.pdfЯ бы сказал, что 100% глюки в дизайне, у самого опыта не так много и в чем копать уже не знаю. Собрал минималистичный проект. На левом субмодуле калибровка происходит практически мгновенно, а на правом со значительной задержкой порядка десятка секунд. После калибровки данные верные. Цитата(SM @ Nov 6 2014, 14:38)  С какой-то долей вероятности можно предположить, что Вы забыли обконстрейнить какие-то важные сигнальные пути. В результате STA отрицательных слаков не дает, а непроверяемые пути - глючат. Это раз. А два (если плата самодельная) - внимательно проверьте цепи VREF, увеличьте емкость по ним. Можете посоветовать какие сигнальные пути можно считать важными и как их необходимо обконстрейнить?
Сообщение отредактировал bognev - Nov 6 2014, 12:40
|
|
|
|
|
Nov 6 2014, 13:11
|
Профессионал
    
Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643

|
Приветствую! Цитата(bognev @ Nov 6 2014, 14:28)  Вот! - сразу получили дельный совет от iosifk. Только задавая вопрос все же уточните с какой платой работаете - так как по приведенной Вами ссылке плата с Virtex4 и памятью SDRAM  - получается какой то "сферический конь в вакууме" кубической формы. Успехов! Rob.
|
|
|
|
|
Nov 6 2014, 13:27
|
Участник

Группа: Участник
Сообщений: 58
Регистрация: 4-06-11
Пользователь №: 65 475

|
Цитата(RobFPGA @ Nov 6 2014, 16:11)  Приветствую! Вот! - сразу получили дельный совет от iosifk. Только задавая вопрос все же уточните с какой платой работаете - так как по приведенной Вами ссылке плата с Virtex4 и памятью SDRAM  - получается какой то "сферический конь в вакууме" кубической формы. Успехов! Rob. Это основная плата. Субмодуль вот такая http://www.insys.ru/products/subunits/adm416x130mrf. Собственно, На картинке под 6 виртексом сразу память стоит.
Сообщение отредактировал bognev - Nov 6 2014, 13:40
|
|
|
|
|
Nov 6 2014, 14:06
|
Участник

Группа: Участник
Сообщений: 58
Регистрация: 4-06-11
Пользователь №: 65 475

|
Цитата(SM @ Nov 6 2014, 16:43)  Какие сигналы - ВСЕ ПОГОЛОВНО, идущие к/от памяти. Как - это обычно описано в документации на примененное ядро контроллера памяти. В документации на ядро для работы с DDRII SRAM есть упоминание о залочивании idelay и больше никаких. http://www.xilinx.com/support/documentatio...ation/ug086.pdf
|
|
|
|
|
Nov 6 2014, 14:41
|
Участник

Группа: Участник
Сообщений: 58
Регистрация: 4-06-11
Пользователь №: 65 475

|
Цитата(SM @ Nov 6 2014, 17:26)  Определить I/O стандарт (SSTL какой нибудь, смотря что за память), а также диф. стандарты для диф. тактовых - это то уж точно обязательно, и об этом уже в доке на ядро не сказано - это просто надо! А то, мало ли, может быть Вы даете на память сигналы совсем не тех уровней и не той системы  В файле от инсиса изначально прописаны стандарты. Ошибки не может быть в том, что они разные? NET "bd[*]" IOSTANDARD = HSTL_II_DCI_18; NET "ba[*]" IOSTANDARD = HSTL_I_18; NET "bld" IOSTANDARD = HSTL_I_18; NET "brw" IOSTANDARD = HSTL_I_18; NET "boff" IOSTANDARD = HSTL_I_18; NET "bbw[*]" IOSTANDARD = HSTL_I_18; NET "bcq" IOSTANDARD = HSTL_II_DCI_18; NET "bcq_n" IOSTANDARD = HSTL_II_DCI_18; NET "bk" IOSTANDARD = HSTL_I_18; NET "bk_n" IOSTANDARD = HSTL_I_18;
Сообщение отредактировал bognev - Nov 6 2014, 14:42
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|