У меня есть дизайн с использованием 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:
источник
Ответы:
Это паршивый стек Ваши ядра должны быть 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, можно использовать для поиска оптимального проекта завершения.
Некоторые книги, которые я могу порекомендовать вам, охватывают все это и многое другое, и мы клянемся ими на работе:
В этих книгах рассказывается о снижении электромагнитных помех, дизайне экранирования, расположении печатных плат, управлении импедансом, развязке блока питания и многом другом. Кроме того, г-н Отт проводит семинары на эту тему (поставляется с бесплатным экземпляром его книги).
источник
На такой частоте я думаю, что проблемы типа длины трека вряд ли будут серьезной проблемой, конечно же, из-за проблем с задержкой. Поскольку проблемы начались с новой печатной платы, самое первое, что нужно сделать, это проверить все линии на непрерывность (в сравнении с таблицей данных, а не с вашей схемой, если на вашей схеме есть ошибки), и прицелиться в каждый вывод, чтобы убедиться, что формы сигналов соответствуют наименее правдоподобно - даже если ваша область не соответствует проверке временных характеристик, должно быть достаточно очевидно, есть ли открытые или закороченные контакты.
Выполнение такого рода вещей без адекватных возможностей чревато потенциальной опасностью - откуда вы знаете, сколько у вас прибыли? Даже если это работает, как вы узнаете, правы вы или нет, и уязвимы ли вы к полевым / производственным сбоям из-за допусков, температуры или фазы Луны?
источник
2-е добавление. Мы предполагали, что ваш дизайн прошел маржинальное тестирование, и код отвечал вашим требованиям (не) я предлагаю вам проверить следующее;
Используете ли вы циклы for / next или дискретный код, такой как;
Я помню, как отлаживал свой первый CMOS-проект у аспиранта по физике для переносной сейсмической записи, переключаемой логической платы таймера. Не было никакой прошивки или uC, но он никогда не проводил анализ толерантности в худшем случае, и аппаратные средства имели гоночные условия повсюду, когда я построил и отладил еще дюжину плат. Сейсмический Профессор вызвал начальника отдела физики, чтобы спросить, почему я не могу отладить платы, и мне пришлось посоветовать ему, что вариация компонентов выявила много конструктивных недостатков, которые назывались условиями гонок на время из-за метастабильных условий и используемых тактовых импульсов. Он все еще не понимал, и я попросил его сказать, сколько пальцев я развернул, пока поднимал руку, прежде чем она достигла уровня моей талии от низкого до высокого. Затем он сказал, что вы не можете сделать это и ожидать правильного ответа. Я сказал, точно. Это примитивное состояние гонки. Они становятся менее очевидными с большим количеством уровней сложности. У Манитобы 1973.
1-й добавлен: какую схему подключения шины вы использовали? метод (1) является предпочтительным, чистый 1,25 В постоянного тока?
Диэлектрическая проницаемость на платах и слоях пре-прега контролирует импеданс полосы и микрополоски, а также ширину следа и зазор.
Есть много бесплатных онлайн калькуляторов Z для стриплайна.
Вы можете попытаться измерить емкость на больших дорожках или земных плоскостях и сравнить обе голые платы.
Также посмотрите на сигналы с высокоскоростным прицелом и наблюдайте превышение и тактовую диаграмму данных.
Должно быть простое объяснение ошибок, но его нелегко найти. Но как только вы найдете основную причину ... вы больше не совершите эту ошибку.
добавлено: Еще одна ошибка, которую я обнаружил, это то, что ваша диаграмма высоты стопки не указывает толщину слоя Cu, и для 6 слоев недостаточно, если это не так, или если толщина Cu составляет 0,039 мм (НЕ;)
источник