=AK= 12 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба обратился за помощью сюда - http://electronix.ru/forum/index.php?showtopic=124728 ... Думаю, что разводка выполнена совершенно неправильно - дорожки земли и питания 0.4 мм без полигонов, по одному конденсатору 0.1 мкф на каждую линию питания 3.3 и 5.0 В (там обе линии в каждом шлейфе) и еще один такой же конденсатор у процессора (тоже на дорожках 0.4 мм). В указанном вами топике я давал достаточно ясные, на мой взгляд, разъяснения как надо разводить землю . Вкратце, советы таковы: - толщина земляных проводников не играет большой роли, но из них должна быть сделана "решетка" или "сетка", покрываюшая всю плату; если плата уже разведена, то "решетку" можно сделать добавлением навесных проводников - керамические развязывающие конденсаторы 0.1 мкФ лучше всего добавить на каждую цифровую микросхему, запаяв их прямо на ножки земли и питания - если есть возможность выбирать, какую микросхему использовать, то надо выбирать самую медленную и малопотребляющую. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба Прежде, чем что-то физически, решил провести маленький эксперимент - уменьшил частоту, приходящую с FPGA, в 4 раза, и запустил тест. Пока полет нормальный (но это ничего пока еще не значит - и до этого могло час-полтора работать), посмотрю, что будет к вечеру. Просто хочу понять (с определенной степенью вероятности) - помеха внешняя или внутренняя ? Или я неправильно рассуждаю ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба В ходе отладки ПО стал замечать необъяснимые зависания А в программе вы уверены на 100%? Напрасно. А все ли удовлетворяет спецификации - напряжения, частоты, уровни сигналов? А терминатора Т-1000 можно сделать параллельного, на приемном конце, чтобы не портить Скайнет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба А в программе вы уверены на 100%? Напрасно. В изначальной программе уверен не был, потому что она называется MS DOS :) А вот в тестовой особых сомнений нет - написана мной, фактически целых три команды на ассемблере (запись в память, чтение из памяти, сравнение), бегающих по кругу. А все ли удовлетворяет спецификации - напряжения, частоты, уровни сигналов? Теоретически, да. Практически - это уже слегка обсуждалось. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба Еще вопрос возник - ширина сигнальных дорожек на таких частотах какое-либо существенное влияние оказывает ? Иными словами, есть ли реальные причины сделать сигнальные дорожки не 0.2 мм, а другой ширины (именно с точки зрения помехоустойчивости в обычной жизни) ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба Еще вопрос возник - ширина сигнальных дорожек на таких частотах какое-либо существенное влияние оказывает ? Иными словами, есть ли реальные причины сделать сигнальные дорожки не 0.2 мм, а другой ширины (именно с точки зрения помехоустойчивости в обычной жизни) ? Нет. Дорожки начинают влиять, когда они начинают быть сравнимыми по длине с длиной волны третьей-пятой гармоники тактового сигнала. У Вас там такого и в помине не наблюдается. В отличие от шлейфа, который уже может быть сравним. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба Что-то я в полном расстройстве... Ни уменьшение частоты, ни распайка конденсаторов на все микросхемы и на все питания ничего ровным счетом не изменило - как происходил сбой от 30 минут до пары часов, так и происходит. Понимаю, что можно еще землю сеточкой (как советовали) дополнительно протянуть, но я очень надеялся, что почти два десятка конденсаторов уже принципиально изменят ситуацию... Кстати, все сбои были именно по чтению из памяти, причем при повторном чтении данные всегда считывались нормально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба Кстати, все сбои были именно по чтению из памяти, причем при повторном чтении данные всегда считывались нормально. Наиболее вероятно у Вас то, что некорректно рассчитаны временные соотношения сигналов при работе FPGA с шиной, и при работе FPGA с ОЗУ (если оно внешнее относительно FPGA). Соответственно, в проекте FPGA неверно или неполно заданы констрейны, и происходят нарушения времен Tsu (Setup) или Th (Hold) на шине. И питание тут не причем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба Дело в том, что FPGA никакой роли в управлении памятью не играет - там нет контроллера памяти, сигналы от процессора и контроллера шины процессора просто транзитом проходят через FPGA. При этом вроде все временные параметры с огромным запасом - SRAM на отладочной плате может работать с тактовой до 125 МГц, поэтому 5МГц проекта для нее просто ничто. И управление памятью ну крайне простое, особенно на чтение. Но вообще не знаю, прямо руки опускаются... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба может работать с тактовой до 125 МГц, поэтому 5МГц проекта для нее просто ничто. У Вас крайне скудное понятие о том, что такое временные соотношения на шине. Может быть, к примеру, что в результате транзитных задержек через буферы и FPGA, данные приходят с некоторым смещением от того времени, во время которого их ожидает процессор. И все, сбои гарантированы. Или адрес задерживается дольше, чем надо, и защелкивается где нибудь некорректно. Или, например, направление буфера переключается быстрее, чем следует, и данные снимаются на 20 пикосекунд раньше, чем это можно, вот оно раз в полчаса и глючит, потому, что на грани допуска балансирует... Внимательно изучите в даташите картинки - BUS TIMING-MINIMUM MODE SYSTEM и BUS TIMING-MINIMUM MODE SYSTEM (Continued) - вот все-все то, что там нарисовано, и написано в виде MIN и MAX времен в наносекундах в табличке над ними, должно быть выдержано, несмотря на все транзитные задержки в буферах, проводах, FPGA и самой ОЗУ. У самой ОЗУ, кстати, есть очень похожие параметры, и вот, суммарный бюджет по всем этим задержкам (включая все буфера, провода, FPGA, и пр.) должен укладываться в MIN...MAX значения из их документации как и для ОЗУ, так и для процессора. Стопудово, что там что-то где-то у Вас не учтено, и из-за этого происходят сбои. И это уже никакие не помехи, а ошибки в расчетах при проектировании. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба Не претендую на глубокие познания, но все же определенные представления о работе шины есть. И под большим запасом я как раз подразумевал, что все задержки по пути через буферы и FPGA железно должны (по идее) укладываться в мин-макс параметры как процессора, так и памяти. Цикл шины 8088 ведь крайне простой, и особо узких мест там просто нет. Тем не менее, еще раз внимательно посмотрю в эту сторону - все равно пока у меня других идей нет. Кстати, система у меня работает в max mode, хотя это принципиального значения вроде не имеет... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба Еще - как сделано защелкивание адреса по ALE? В FPGA? Констрейны записаны на это дело? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 12 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба Ни уменьшение частоты, ни распайка конденсаторов на все микросхемы и на все питания ничего ровным счетом не изменило - как происходил сбой от 30 минут до пары часов, так и происходит. Понимаю, что можно еще землю сеточкой (как советовали) дополнительно протянуть, но я очень надеялся, что почти два десятка конденсаторов уже принципиально изменят ситуацию... Конденсаторы по питанию помогают очень редко. Эти конденсаторы - необходимое условие, но не достаточное. Они должны быть запаяны для того, чтобы больше о них не думать. Основная польза от них в том, что, совместно с проводами земли и питания, они образуют "земляную сетку". Эта сетка обычно не накрывет всю плату, однако работает уже существенно лучше, чем просто земляной провод. Вполне возможной причиной сбоев при обращении к памяти может быть "звон" в сигнальных линиях, когда эти линии имеют существенную длину (порядка 10 см и более). Проблема еще и в том, что ТТЛ выходы имеют разное сопротивление в "0" и в "1". Для борьбы со "звоном" требуется демпфирование и частичное согласование линий при помощи резисторов. Для начала надо выявить наиболее длинные линии. Между передатчиком и его линией хорошо бы врезать резистор примерно 33 Ома, это должно заметно уменьшить звон при преходе из 1 в 0. Ближе к приемному концу линии (или в середине двунаправленной линии) хорошо бы поставить подтяжку 680 Ом к плюсу питания и резистор 1 kОм на землю. Эти два резистора уменьшат отражение от приемного конца. Да, забыл сказать - тактовая частота 5 МГц, в шлейфы особо земли не добавить, так как почти все уже занято сигналами. У вас наверняка звон в шлейфах. Отчасти лечится, если шлейфы обернуть медной фольгой, которую заземлить в нескольких точках на каждой плате. Ну и резисторами, как написано выше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 17 декабря, 2014 Опубликовано 17 декабря, 2014 · Жалоба Я думаю, проблема в питании, если ошибка выскакивает так редко. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 17 декабря, 2014 Опубликовано 17 декабря, 2014 · Жалоба Вполне вероятно, SM оказался ближе всего к разгадке проблемы (что причина не в помехах, а в неправильных времянках на шине). Ночью пришла мне в голову одна мысль, попробовал - все ночь без сбоя проработало. Хотя, возможно, я не устранил проблему, а лишь уменьшил последствия. Поспешных выводов пока делать не буду, помедитирую сначала немного еще на диаграммы шины 8088... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться