8-битный счетчик компьютерных программ (4-битный счетчик IC) Счет при отключении

Некоторое время назад я собрал версию 8-битного компьютера Ben Eaters , в моей сборке я изменил только вентили И, НЕ и ИЛИ на все NAND. В остальном дизайн был точным. Я проверил его, прежде чем прикасаться к нему, и обнаружил, что он все еще работает. Я модифицировал оперативную память, добавив Arduino nano и 2 595 сдвиговых регистров, чтобы я мог программировать компьютер одним нажатием кнопки. Это все работает. Программа успешно загружается в оперативную память из Arduino. Однако теперь у самого компьютера возникла проблема, поскольку тот же код, который работал раньше, не будет работать. Я заметил 2 проблемы:

  1. Счетчик программ, несмотря на то, что он отключен (показан мультиметром ниже), все равно будет считать время от времени, когда он не должен. Однако это последовательно, в моей тестовой программе около 90% времени будет учитываться в первом такте (чего не должно быть), а затем снова во втором такте, что должно и происходит.
  2. Выходные 7-сегментные дисплеи время от времени будут выводить случайное число, по-видимому, непосредственно перед переключением на другое число, но не каждый раз. Случайное число также больше нигде не отображается, ни на шине, ни в памяти, ни в каком-либо из регистров.

Проблема, на которой я сосредоточен здесь, - это счетчик, но я не уверен, что эти две проблемы могут быть связаны с общей проблемой.

Микросхема счетчика - 74лс161.

Что я пробовал:

  1. Наиболее очевидным из них является проверка того, включен ли чип в нужное время, чтобы проверить, не связана ли проблема с логикой управления. Судя по мультиметру, он включается только тогда, когда должен.
  2. Чип не загружается, единственный раз, когда он должен когда-либо загружаться, это когда происходит инструкция перехода, которой нет в моей тестовой программе, это также дважды проверяется мультиметром.
  3. Попытка починить любые свободные провода и короткие замыкания, если они и вызывают это, я еще не нашел.
  4. Я удалил счетчик с компьютера и проверил его самостоятельно, и, похоже, он работает нормально.
  5. Я попытался отключить EEPROM, который, как мне казалось, был сомнительным, так как он, казалось бы, «выключался» на ощупь, однако я считаю, что это было какое-то короткое замыкание, поскольку сейчас у него нет этой проблемы. Однако я не могу быть на 100% уверен, что это было именно так.
  6. Наконец, я просмотрел тестовый код сборки на наличие каких-либо шаблонов, но проблемы возникают пару раз во время тестового прогона, и ни одна инструкция не используется более одного раза. Но обычно это происходит во время самой первой инструкции микрокода, которая согласуется для каждой инструкции сборки (вывод счетчика на шину и прием регистра адреса памяти).

Я буду часто проверять и стараться быть максимально активным здесь, вокруг работы, дайте мне знать, если вам нужна дополнительная информация!

Описание фотографий, так как я не вижу, чтобы подписи отображались

  1. Шаг 0, программа загружена на компьютер и была только что сброшена (конечно, за вычетом ОЗУ). ** Обратите внимание, что светодиод управления CE (включение счета) (внизу справа) не горит (трудно сказать по фото, но это не так). 't), что означает, что он не должен рассчитывать на следующие часы. Подтверждено мультиметром
  2. Счетчик (вверху справа, зеленые светодиоды, ведется подсчет, несмотря на то, что он отключен. СЕЙЧАС он включен, что подтверждается индикатором CE и мультиметром)
  3. Снова увеличился счетчик, на этот раз должен был, но теперь мы пропустим целый адрес памяти

Шаг 0, программа загружена на компьютер и была только что сброшена (конечно, за вычетом ОЗУ). ** Обратите внимание, что светодиод управления CE (включение счета) (внизу справа) не горит (трудно сказать по фото, но это не так). 't), что означает, что он не должен рассчитывать на следующие часы.  Подтверждено мультиметром Счетчик (вверху справа, зеленые светодиоды, ведется подсчет, несмотря на то, что он отключен. СЕЙЧАС он включен, что подтверждается индикатором CE и мультиметром) Снова инкриментировался счетчик, на этот раз должен был, но теперь мы пропустим целый адрес памяти

Я вижу очень мало развязывающих конденсаторов в вашей установке — может быть, один или два на удлинитель. Если вы используете в основном LSTTL, этого недостаточно. Раньше, даже при использовании подходящей печатной платы, мы обычно имели около одного конденсатора на чип . Кроме того, если вы управляете светодиодами с сигналами, которые также поступают в другую логику, вы серьезно снижаете свои пределы шума для этих сигналов.
Да, это очень верно. Мой следующий проект будет использовать макетные платы в гораздо меньшей степени. Я буду иметь это в виду для следующего. Однако этот компьютер работал раньше, хотя я вытащил Arduino, чтобы посмотреть, может быть, Arduino слишком много рисует, но это не имело значения.

Ответы (1)

Получите свинцовые колпачки 0,1 мкФ, распределите выводы и вставьте их от контакта 7 (GND) до контакта 14 (VDD) поверх каждой микросхемы.

Вы внесли физические изменения, и индуктивность, которая до внесения изменений была ДОСТАТОЧНО НИЗКОЙ, теперь может оказаться недостаточно низкой.

Еще одним риском является отсутствие GROUND GRID.

============================================

Еще в университете я реализовал машину для игры в крестики-нолики на 70 TTL-IC.

Мало зная об электромагнитных помехах и еще не заботясь о V = L * dI/dT, я видел профессиональную реализацию больших систем ИС с использованием плат с проволочной обмоткой (Augat), которые обеспечивали сплошные плоскости GND и сплошные плоскости VDD (проколотые тысячами выводов с проволочной обмоткой). ).

Не имея бюджета на такие тонкости, я просто включил провода заземления X+Y (и провода X_only VDD), припаянные к каждому X+Y на каждом пересечении.

Эти параллельные провода X+Y (5 для направления X и 18 для направления Y), припаянные при каждой возможности (4 * 17 = 68 узлов), представляли собой тонкую СЕТКУ ЗАЗЕМЛЕНИЯ и гарантировали, что фронты TTL 5 наносекунд всегда находились в пределах 0,1 дюйма от return_ground_wire.

С байпасными конденсаторами 0,1 мкФ на каждой из 70 ИС (обычно контакт 14 к сетке GND) проблем с отладкой не возникало.

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