Перейти к содержанию
    

Борьба с помехами в цифровой схеме

обратился за помощью сюда - http://electronix.ru/forum/index.php?showtopic=124728

 

...

 

Думаю, что разводка выполнена совершенно неправильно - дорожки земли и питания 0.4 мм без полигонов, по одному конденсатору 0.1 мкф на каждую линию питания 3.3 и 5.0 В (там обе линии в каждом шлейфе) и еще один такой же конденсатор у процессора (тоже на дорожках 0.4 мм).

В указанном вами топике я давал достаточно ясные, на мой взгляд, разъяснения как надо разводить землю .

 

Вкратце, советы таковы:

- толщина земляных проводников не играет большой роли, но из них должна быть сделана "решетка" или "сетка", покрываюшая всю плату; если плата уже разведена, то "решетку" можно сделать добавлением навесных проводников

- керамические развязывающие конденсаторы 0.1 мкФ лучше всего добавить на каждую цифровую микросхему, запаяв их прямо на ножки земли и питания

- если есть возможность выбирать, какую микросхему использовать, то надо выбирать самую медленную и малопотребляющую.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Просто хочу понять (с определенной степенью вероятности) - помеха внешняя или внутренняя ? Или я неправильно рассуждаю ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В ходе отладки ПО стал замечать необъяснимые зависания

А в программе вы уверены на 100%? Напрасно.

А все ли удовлетворяет спецификации - напряжения, частоты, уровни сигналов?

 

А терминатора Т-1000 можно сделать параллельного, на приемном конце, чтобы не портить Скайнет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А в программе вы уверены на 100%? Напрасно.

 

В изначальной программе уверен не был, потому что она называется MS DOS :)

 

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

 

А все ли удовлетворяет спецификации - напряжения, частоты, уровни сигналов?

 

Теоретически, да. Практически - это уже слегка обсуждалось.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще вопрос возник - ширина сигнальных дорожек на таких частотах какое-либо существенное влияние оказывает ? Иными словами, есть ли реальные причины сделать сигнальные дорожки не 0.2 мм, а другой ширины (именно с точки зрения помехоустойчивости в обычной жизни) ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще вопрос возник - ширина сигнальных дорожек на таких частотах какое-либо существенное влияние оказывает ? Иными словами, есть ли реальные причины сделать сигнальные дорожки не 0.2 мм, а другой ширины (именно с точки зрения помехоустойчивости в обычной жизни) ?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Кстати, все сбои были именно по чтению из памяти, причем при повторном чтении данные всегда считывались нормально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, все сбои были именно по чтению из памяти, причем при повторном чтении данные всегда считывались нормально.

 

Наиболее вероятно у Вас то, что некорректно рассчитаны временные соотношения сигналов при работе FPGA с шиной, и при работе FPGA с ОЗУ (если оно внешнее относительно FPGA). Соответственно, в проекте FPGA неверно или неполно заданы констрейны, и происходят нарушения времен Tsu (Setup) или Th (Hold) на шине. И питание тут не причем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело в том, что FPGA никакой роли в управлении памятью не играет - там нет контроллера памяти, сигналы от процессора и контроллера шины процессора просто транзитом проходят через FPGA. При этом вроде все временные параметры с огромным запасом - SRAM на отладочной плате может работать с тактовой до 125 МГц, поэтому 5МГц проекта для нее просто ничто. И управление памятью ну крайне простое, особенно на чтение.

 

Но вообще не знаю, прямо руки опускаются...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

может работать с тактовой до 125 МГц, поэтому 5МГц проекта для нее просто ничто.

У Вас крайне скудное понятие о том, что такое временные соотношения на шине. Может быть, к примеру, что в результате транзитных задержек через буферы и FPGA, данные приходят с некоторым смещением от того времени, во время которого их ожидает процессор. И все, сбои гарантированы. Или адрес задерживается дольше, чем надо, и защелкивается где нибудь некорректно. Или, например, направление буфера переключается быстрее, чем следует, и данные снимаются на 20 пикосекунд раньше, чем это можно, вот оно раз в полчаса и глючит, потому, что на грани допуска балансирует...

 

Внимательно изучите в даташите картинки - BUS TIMING-MINIMUM MODE SYSTEM и BUS TIMING-MINIMUM MODE SYSTEM (Continued) - вот все-все то, что там нарисовано, и написано в виде MIN и MAX времен в наносекундах в табличке над ними, должно быть выдержано, несмотря на все транзитные задержки в буферах, проводах, FPGA и самой ОЗУ.

У самой ОЗУ, кстати, есть очень похожие параметры, и вот, суммарный бюджет по всем этим задержкам (включая все буфера, провода, FPGA, и пр.) должен укладываться в MIN...MAX значения из их документации как и для ОЗУ, так и для процессора. Стопудово, что там что-то где-то у Вас не учтено, и из-за этого происходят сбои. И это уже никакие не помехи, а ошибки в расчетах при проектировании.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Кстати, система у меня работает в max mode, хотя это принципиального значения вроде не имеет...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще - как сделано защелкивание адреса по ALE? В FPGA? Констрейны записаны на это дело?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Конденсаторы по питанию помогают очень редко. Эти конденсаторы - необходимое условие, но не достаточное. Они должны быть запаяны для того, чтобы больше о них не думать. Основная польза от них в том, что, совместно с проводами земли и питания, они образуют "земляную сетку". Эта сетка обычно не накрывет всю плату, однако работает уже существенно лучше, чем просто земляной провод.

 

Вполне возможной причиной сбоев при обращении к памяти может быть "звон" в сигнальных линиях, когда эти линии имеют существенную длину (порядка 10 см и более). Проблема еще и в том, что ТТЛ выходы имеют разное сопротивление в "0" и в "1". Для борьбы со "звоном" требуется демпфирование и частичное согласование линий при помощи резисторов. Для начала надо выявить наиболее длинные линии. Между передатчиком и его линией хорошо бы врезать резистор примерно 33 Ома, это должно заметно уменьшить звон при преходе из 1 в 0. Ближе к приемному концу линии (или в середине двунаправленной линии) хорошо бы поставить подтяжку 680 Ом к плюсу питания и резистор 1 kОм на землю. Эти два резистора уменьшат отражение от приемного конца.

 

Да, забыл сказать - тактовая частота 5 МГц, в шлейфы особо земли не добавить, так как почти все уже занято сигналами.

У вас наверняка звон в шлейфах. Отчасти лечится, если шлейфы обернуть медной фольгой, которую заземлить в нескольких точках на каждой плате. Ну и резисторами, как написано выше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я думаю, проблема в питании, если ошибка выскакивает так редко.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Поспешных выводов пока делать не буду, помедитирую сначала немного еще на диаграммы шины 8088...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...