Прототип SDRAM против производственных проблем

11

У меня есть дизайн с использованием LPC1788 вместе с модулем SDRAM от ISSI ( IS42S32800D ). Это 32-битный интерфейс.

Я разработал этот дизайн и сделал прототип с изготовителем печатной платы, который делает 6-слойные прототипы. Прототип печатной платы работает отлично. Затем я подумал, что получу печатную плату небольшого объема (100) от моего обычного поставщика печатных плат. Я дал им информацию о стеке, которую использовал мой прототип, чтобы не было проблем.

Однако! У меня огромные проблемы с производственной платой. Сначала я не мог получить какой-либо ответ от SDRAM, несмотря на тот же код, который я использовал в моей плате-прототипе. Предыдущая плата работала на частоте 120 МГц, поэтому я был уверен, что что-то не так с этой новой платой. Затем я нашел сообщение, в котором люди предлагали использовать режим повторителя для линий данных SDRAM (я не использовал это ранее), и это вызвало ответ от SDRAM, однако он не стабилен. Я могу записать по 16 или около того адресам, но затем при последующем чтении возвращаемые данные (по каждому адресу) - это данные, которые я написал последними (вероятно, из-за режима повторителя). Когда я отключаю режим повторителя, возвращаются данные 0xFFFFFFF. Сейчас я пытаюсь подключиться к 48 МГц, самая низкая конфигурация, для которой у меня есть время.

Я использую одинаковые нагрузочные резисторы (на линиях данных) по 22 Ом на обеих платах, линии данных в среднем имеют длину 3 см. Линия часов длиной 2,4 см. Длина адресных строк составляет 3,8 см.

Это слишком нехарактерно, стоит ли задерживать часы дольше, если они существенно короче? Я действительно застрял здесь, так как я ничего не изменил в дизайне, который я надеялся на бесперебойное производство этих плат.

Maximum Data Line Length: 59mm (Although this includes the branch to the NAND Flash)
Minimum Data Line Length (Ctrl to Res): 18mm
Maximum Address Line Length: 44mm
Minimum Address Line Length: 24mm
CLK: 24.5mm
CKE: 25mm
CAS: 28mm
RAS: 28.7mm

Вот конфигурация стека печатной платы для исходного (рабочего) прототипа: введите описание изображения здесь

Вот конфигурация стека печатных плат для производственных (нерабочих) печатных плат введите описание изображения здесь

Вот маршрутизация для SDRAM: SDRAM Маршрутизация

Джеймс
источник
3
Был ли контроль импеданса одинаковым между прото и производственными циклами?
dext0rb
Я не уверен. Я не знаю достаточно о целостности сигнала, чтобы правильно определить эти параметры для пансионов. Я чувствовал, что если я укажу параметры, не зная, что я делаю, я буду создавать проблемы, а не исправлять их.
Джеймс
И заплатили ли вы им, чтобы проверить импеданс (который @dextorb предложил вам контролировать)?
Брайан Карлтон
Это не средняя длина, которая имеет значение. Это минимум и максимум внутри группы.
Брайан Карлтон
1
Как целостность сигнала на трассировке часов выглядит на выводах SDRAM?
Брайан Карлтон

Ответы:

10

Это паршивый стек Ваши ядра должны быть 0,2 мм, а баланс вашей толщины должен быть в препреге между слоями 3 и 4 (внутренний 1 и внутренний 2).

Причина этого заключается в том, что для любого сигнала на трассе должен быть путь обратного тока на плоскости прямо под ним. Обратный ток в плоскости будет пытаться минимизировать индуктивность (т. Е. Площадь контура), что означает, что он будет пытаться проследить под трассой сигнала. Если трасса сигнала удалена от плоскости, она будет искать другие трассы, чтобы найти обратный путь. Это электромагнитика, с которой ты борешься.

Кроме того, имея внутренние слои на разных расстояниях от их базовых плоскостей (помните, что все питающие рельсы выглядят как заземления при переменном токе!) По сравнению с расстояниями внешних слоев, вы создаете изменение импеданса каждый раз, когда меняете слои (хотя этому можно противодействовать с помощью изменения ширины трассы, хотя я обнаружил, что это стоит усилий только один раз, и вы значительно увеличите вероятность перекрестных помех и других помех.

Другая вещь, которую вам нужно проверить, это используемые материалы: например, существует более 20 различных материалов, которые называют себя «FR-4». Материал, который я обычно использую, называется 370-HR. Он ведет себя довольно хорошо с высокоскоростными сигналами 100-500 МГц.

Что касается линии часов, IIRC на моем последнем проекте SDRAM я настроил часы так, чтобы их край был последним (его длина была самой длинной на 1 см), после того как все линии адреса и данных стабилизировались. Так что, да, затягивать стоит попробовать. Мне не нужно было никакого контроля импеданса на линиях SDRAM.

Ваши нагрузочные резисторы должны быть расположены как можно ближе к линейным драйверам. Если они не находятся в пределах 0,5 см, они могут сами вызвать отражения, что приведет к перерегулированию и звону. ИМХО, длина трассы 3 см ужасно мала, чтобы потребовать нагрузочные резисторы (я использую их, начиная с 6-10 см); ты пытался просто убрать их?

Еще одна вещь, которую нужно проверить - ваши самолеты: есть ли у вас сигнальные следы, пересекающие разрезы самолетов? Это огромное нет-нет, потому что это заставляет обратный ток идти по длинному маршруту вокруг разреза.

Наконец, крайний уровень является огромной проблемой в этих проектах. Многие чипы имеют излишне короткое время нарастания и спада, и снижение тактовой частоты на это не влияет . Эти быстрые края отлично подходят для создания отражений. Это то, что ваши 22-омные резисторы-терминаторы пытаются исправить: они замедляют края. Хотя, если вы действительно настаиваете на этом, такой инструмент, как HyperLynx от Mentor Graphics, можно использовать для поиска оптимального проекта завершения.

Некоторые книги, которые я могу порекомендовать вам, охватывают все это и многое другое, и мы клянемся ими на работе:

В этих книгах рассказывается о снижении электромагнитных помех, дизайне экранирования, расположении печатных плат, управлении импедансом, развязке блока питания и многом другом. Кроме того, г-н Отт проводит семинары на эту тему (поставляется с бесплатным экземпляром его книги).

Майк ДеСимоне
источник
Книга Генри Отта стала для меня библией в 1980 году. Однако, прежде чем я прочитал ее, я уже был опытным специалистом по обнаружению РЧ-утечки в механическом / электрическом исполнении еще до того, как началось тестирование на ЭМС. Слоты, и радиаторы, и диэлектрические антенны, и кабели шины ввода / вывода были лучшей антенной для входа и выхода.
Тони Стюарт Sunnyskyguy EE75
Хорошая информация здесь, в соответствии с моделированием HyperLynx на основе моих введенных данных моделирования, 22 Ом резисторов необходимы , как в противном случае сигнал на линиях передачи данных (приводимых в движении 1ns время нарастания) из SDRAM являются ужасно искажаются и некоторые размышления пересекают опорное напряжение.
Джеймс
Кроме того, рекомендация по стеку хороша. Существует небольшая разница в стеке между прототипом и производителем. Я добавляю диаграммы в Вопрос, чтобы вы могли их увидеть. Кроме того - я читал про целостность сигнала, упрощенную Эриком Богатином. Хорошая информация здесь, но потребуется некоторое время, чтобы переварить и погрузиться достаточно, чтобы начать новую раскладку доски с его рекомендациями.
Джеймс
Несмотря на это, у OP изначально было то, что выглядело как фотографии Altium. Altium имеет собственный набор инструментов для обеспечения целостности сигналов, которые могут использовать файлы IBIS. Он также может изучить перекрестные помехи. Но для этого нужна точная информация о стеке.
ajs410
1
Поэтому на данный момент меня больше всего беспокоит резисторы. Кажется, что они находятся в середине следов, а не у водителей, которым они принадлежат. В этих приложениях лучше не использовать пакеты резисторов, а вместо этого использовать небольшие отдельные резисторы. Если необходимо использовать резистор пакеты, вы должны взять время , чтобы сделать много лучше поменять местами резисторы , чтобы сделать макет менее с помощью сумасшедшего. Это все, что я могу сказать по вашему макету, который не имеет контуров пакетов и делает трудно видимыми половину слоев.
Майк Де Симоне
4

На такой частоте я думаю, что проблемы типа длины трека вряд ли будут серьезной проблемой, конечно же, из-за проблем с задержкой. Поскольку проблемы начались с новой печатной платы, самое первое, что нужно сделать, это проверить все линии на непрерывность (в сравнении с таблицей данных, а не с вашей схемой, если на вашей схеме есть ошибки), и прицелиться в каждый вывод, чтобы убедиться, что формы сигналов соответствуют наименее правдоподобно - даже если ваша область не соответствует проверке временных характеристик, должно быть достаточно очевидно, есть ли открытые или закороченные контакты.

Выполнение такого рода вещей без адекватных возможностей чревато потенциальной опасностью - откуда вы знаете, сколько у вас прибыли? Даже если это работает, как вы узнаете, правы вы или нет, и уязвимы ли вы к полевым / производственным сбоям из-за допусков, температуры или фазы Луны?

mikeselectricstuff
источник
2

2-е добавление. Мы предполагали, что ваш дизайн прошел маржинальное тестирование, и код отвечал вашим требованиям (не) я предлагаю вам проверить следующее;

  1. Настройте IO для быстрого поворота и отключите входные фильтры
  2. Включить режим ввода на часах
  3. Установите бит поворота (9?), Чтобы увеличить скорость поворота для выводов интерфейса SDRAM
  4. Включите режим повторителя, так как они являются двунаправленными и не должны оставаться плавающими на входе cmos.
  5. Измените напряжение питания, чтобы определить чувствительность к ошибкам.
  6. режим сброса по умолчанию для контакта шины данных: FUNC = 0X00, MODE = 0X02, HYSTERESIS = ENABLED, INVERT = DISABLED и SLEW = STANDARD
  7. Ваш вызов PINSEL_ConfigPin () с новым значением функции сбрасывает РЕЖИМ на НЕАКТИВНЫЙ (без понижающего / понижающего резистора) и выключает ГИСТЕРЕЗИС?
  8. Используете ли вы циклы for / next или дискретный код, такой как;

    • LPC_IOCON-> P3_0 | = 1; // D0 @ P3.0
    • LPC_IOCON-> P3_1 | = 1; // D1 @ P3.1
    • LPC_IOCON-> P3_2 | = 1; // D2 @ P3.2 и т. Д.
  9. Вы утверждаете, что каждый раз, когда это необходимо, снова включаете контакт WE?
  10. Вы используете? * pPIN & = ~ (0x00000007); // Очистить функциональные биты "

Я помню, как отлаживал свой первый CMOS-проект у аспиранта по физике для переносной сейсмической записи, переключаемой логической платы таймера. Не было никакой прошивки или uC, но он никогда не проводил анализ толерантности в худшем случае, и аппаратные средства имели гоночные условия повсюду, когда я построил и отладил еще дюжину плат. Сейсмический Профессор вызвал начальника отдела физики, чтобы спросить, почему я не могу отладить платы, и мне пришлось посоветовать ему, что вариация компонентов выявила много конструктивных недостатков, которые назывались условиями гонок на время из-за метастабильных условий и используемых тактовых импульсов. Он все еще не понимал, и я попросил его сказать, сколько пальцев я развернул, пока поднимал руку, прежде чем она достигла уровня моей талии от низкого до высокого. Затем он сказал, что вы не можете сделать это и ожидать правильного ответа. Я сказал, точно. Это примитивное состояние гонки. Они становятся менее очевидными с большим количеством уровней сложности. У Манитобы 1973.

1-й добавлен: какую схему подключения шины вы использовали? автобус метод (1) является предпочтительным, чистый 1,25 В постоянного тока?


  1. Оплачивали ли ИКТ на этих досках? тест на чистую доску является обязательным
  2. Вы указали импеданс в инструкциях по компоновке Gerber?
  3. Вы запускали симуляции на макете с допусками?
  4. Диэлектрическая проницаемость на платах и ​​слоях пре-прега контролирует импеданс полосы и микрополоски, а также ширину следа и зазор.

    Есть много бесплатных онлайн калькуляторов Z для стриплайна.

    Вы можете попытаться измерить емкость на больших дорожках или земных плоскостях и сравнить обе голые платы.

    Также посмотрите на сигналы с высокоскоростным прицелом и наблюдайте превышение и тактовую диаграмму данных.

Должно быть простое объяснение ошибок, но его нелегко найти. Но как только вы найдете основную причину ... вы больше не совершите эту ошибку.

добавлено: Еще одна ошибка, которую я обнаружил, это то, что ваша диаграмма высоты стопки не указывает толщину слоя Cu, и для 6 слоев недостаточно, если это не так, или если толщина Cu составляет 0,039 мм (НЕ;)

Тони Стюарт Sunnyskyguy EE75
источник
Просто комментарий для OP - я вижу, что OP использует Altium Designer, и в программное обеспечение встроен калькулятор импеданса. Я не использовал это много, но я знаю, что это где-то там!
dext0rb
2
При подключении трассы (нажмите W в режиме просмотра печатной платы), нажмите клавишу Tab, и вы увидите приблизительное сопротивление.
ajs410
как правило, для PWB Qty 100 с низкой сложностью я бы не стал платить за ИКТ (тест), но у них есть тупики, поэтому я бы ... кое-что подумал ... и измерил емкость на чистой плате V + <> GND
Tony Stewart Sunnyskyguy EE75
Я не платил за контроль импеданса на этих платах. Симулированные линии в Hyperlynx (MentorGraphics) демонстрировали почти идеальные (или даже в пределах спецификации) формы сигнала, основанные на моем перенаправленном дизайне. Чтобы смоделировать это, я воссоздал каждую линию передачи и через наряду с моделями IBIS. У меня нет достаточного диапазона пропускной способности, чтобы правильно исследовать фактические сигналы = (
Джеймс
1
Здравствуйте @TonyStewart, спасибо за вашу поддержку. 1) Прототип платы не требовал быстрого поворота. Включено без изменений в действии. 2) Не уверены, что это значит - часы - это выход? 3) Гистерезис был оставлен включенным. Отключено без изменения эффекта. 4) Увеличенный поворот не включен на прото. Включено без изменений в действии. 5) Не проверено. 7) Функция Pin Config не изменяет другие биты. 8) Дискретный код для управляющих выводов, для контура для данных / адреса. 9) Когда мне нужно включить WE? EMC контроллер должен сделать это для меня? 10) Биты НЕ ОБНАРУЖЕНЫ перед установкой. У меня есть другой прототип под заказ, будьте здесь на следующей неделе.
Джеймс