|
Нестабильная работа внешней памяти |
|
|
|
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
|
|
|
|
|
Nov 6 2014, 20:18
|
Участник

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

|
Цитата(iosifk @ Nov 6 2014, 15:43)  Написать в Инсис, там есть Дмитрий Смехов - dsmv@insys.ru. Ну и по простому попросить у него помощи с файлом констрейнов. Я не думаю, что для платы, которую продает Инсис, файл констрейнов будет коммерческой тайной... Удачи! Проект мой, глюк тоже. Инсис не будет описывать за меня констрейны. А ucf файл с проектом идет по умолчанию и в нем есть указанные выше стандарты и залоченные пины. Никакие пути там не консентрейтят. Можно сказать , больше им нечем помочь. не понимаю почему глюк проявляется от модуля к модулю?
Сообщение отредактировал bognev - Nov 6 2014, 20:21
|
|
|
|
|
Nov 7 2014, 08:02
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(bognev @ Nov 6 2014, 23:18)  Проект мой, глюк тоже. Инсис не будет описывать за меня констрейны. А ucf файл с проектом идет по умолчанию и в нем есть указанные выше стандарты и залоченные пины. Никакие пути там не консентрейтят. Можно сказать , больше им нечем помочь. не понимаю почему глюк проявляется от модуля к модулю? Не совсем так, я, покупая отладочную плату к примеру ml605 получаю к ней полное описание и флешку с тестовыми прошивками, с помощью которых могу убедиться в работоспособности всей переферии, включая даже джамперы и светодиоды, не говоря уже о памяти. Возможно у них что-то подобное тоже есть, а если и нет, то они сами будут заинтересованы что-то подобное получить , чтобы доказать работоспособность собранной платы. У меня лично была ситуация, что на одной версии платы не работала 1 DDR3 память из 4 (калибровка проходила, данные сбоили периодически). При этом в плисине стоял контроллер уже использовавшийся много раз. Я сразу сказал, что косяк в разводке - там питание завели не то.
|
|
|
|
|
Nov 7 2014, 09:43
|
Участник

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

|
Вопрос такой. Я поставил мультиплексор на вход памяти, и по выбору могу писать туда либо константу, либо сигнал. Если пишется сигнал, то в определенных каналах наблюдаются ошибки, а если писать константу то этих ошибок нет. Вполне возможно, что эта проблема не связана с памятью?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|