Троичные вычисления Итак, продолжаю серию статей о разработке тройной калькулятор.
В прошлый раз мы познакомились с самым базовым элементом: троичным (дем)мультиплексором, а также построили на его основе полу- и полный сумматор.
На этот раз мы поговорим о ячейках памяти.
В прошлой статье я подробно объяснил, зачем мне это нужно: это будет демо-железка.
Не поленитесь, посмотрите моя мотивация.
Итак, вот список опубликованных статей серии (будет обновляться):
- Сосчитаем до трёх: раз (троичный мультиплексор и сумматоры)
- Сосчитайте до трёх: два (память)
- Сосчитайте до трех: три (счетчики)
- Счёт до трёх: четыре (одно банально компьютер и три банально командная система)
Вот фото оригинальный тримукс дизайн Александра Шабаршина и мое исполнение для поверхностного монтажа.
На одной такой плате установлены два троичных (дем)мультиплексора:
Моя версия тримукса для поверхностного монтажа была рассчитана на сравнительно легкое воспроизведение «на коленке»: плата хотя и двусторонняя, но содержит всего 12 переходных отверстий.
Кстати, на форуме nedopc.org Я запустил вариант сквозной установки без единого сквозного отверстия:
Однако сверление отверстий для выводов микросхемы все равно требует, так что мой вариант более экономичен :)
тримуксIO
Моя цель — не теоретизировать, а построить вполне осязаемую железку.
На данный момент я приобрел несколько мультиплексоров, которые тестирую на макетных платах.
В прошлый раз все входы тестируемых схем были перемычками на макетных платах, а выходы — набором светодиодов на той же макетной плате.
Это довольно неудобно (особенно при подключении входов), поэтому конструкцию Александра на один вход-выход я видел так:
Каждый вход-выход несет по одному трехпозиционному переключателю, который по умолчанию (среднее положение) слегка подтянут до 0В.
Если вывод используется для индикации выхода триплексора, то переключатель следует оставить в среднем положении, и тогда тримукс подтянет слабое подтягивание к 0В.
Mitter Follower обеспечивает надежную индикацию даже самых слабых сигналов.
Если вывод необходимо использовать в качестве входа, то переключатель можно подключить либо к +5В, либо к -5В.
Резистор сопротивлением 150 Ом защищает цепь от короткого замыкания.
Плата тестирования ввода-вывода содержит 9 абсолютно одинаковых схем:
Плата предназначена для удобного воспроизведения в домашних условиях: она однослойная и не содержит ни одной перемычки.
А вот как можно подключить плату ввода-вывода для проверки, например, статической ячейки памяти:
Имеется три входа: C, A, B и один выход Q.
Статическая ячейка памяти (троичный триггер с уровнем хранения)
Подключим два мультиплексора (напомним, они помещаются на одну карту тримукса) следующим образом:
Давайте договоримся о терминологии: тактовые триггеры делятся на управляемые.
уровень и управлял передний .
Теперь мы говорим об управлении уровень , что означает, что при одном уровне тактового сигнала С (-1 или 1) триггер воспринимает входные сигналы (А или В соответственно), а при другом (0) он его не воспринимает и остается в том же положении.
Наша схема состоит из двух мультиплексоров, второй мультиплексор представляет собой просто прозрачный буфер, а первый (в зависимости от тактового сигнала С) выводит либо А, либо В, либо сам вывод буфера на вход второго! Это означает следующее поведение: при C=-1 выход Q замыкается на вход A, при C=1 выход Q замыкается на вход B, а при C=0 выход Q остается постоянным, а входы A и B отключаются.
просто проигнорировали.
Это может сбить с толку в тексте, поэтому посмотрите следующее видео: Ячейка динамической памяти: троичный триггер с управлением по фронту В отличие от контроля уровня, при контроле по фронту разрешение на переключение триггера дается только в момент перехода тактового сигнала.
В остальное время, независимо от уровня тактового сигнала, триггер не воспринимает входные сигналы и остается в неизменном состоянии.
Ээкскурсия в хорошо изученную местность
Давайте на минутку совершим путешествие в двоичный (бррр) мир, чтобы прояснить ситуацию.В русскоязычной литературе для всех подобных схем используется слово «спусковой крючок» (поправьте меня, я только что нашел маску).
Бинарный триггер с контролем уровня называется закрытая D-защелка .
Грубо говоря, у него два входа: D (данные) и E (включение).
Единственный выход Q равен D, если E=1, и сохраняет свое значение, если E=0.
Триггер, запускаемый по фронту, может быть построен из двух обычных защелок (замкнутая D-защелка) и одного инвертора:
Эта схема называется D-триггер с запуском по фронту «главный-подчиненный».
Назад в мир троицы или terra (почти) инкогнита
Если мы хотим запускаться по фронту, мы можем использовать две троичные защелки и один эквивалент двоичного инвертора, как в двоичном мире, как на этой диаграмме:Наша ячейка динамической памяти имеет два входа: C и Am; у него один выход Qs. В двоичном мире инвертор генерирует второй сдвинутый по фазе сигнал, который синхронизирует ведомую защелку.
В нашей троичной схеме тактовый сигнал разделяется на два: min(C,0) и max(C,0), каждый из которых синхронизирует свою собственную защелку.
Чтобы сигнал Am достиг выхода Qs, нам нужны два нарастающих фронта подряд на сигнале C:
Обратите внимание, что сразу после включения схемы, до того как сигнал С изменится от минус единицы к единице, выходной сигнал Qs имеет неопределенное значение.
Инициализируйте переменные :) Кстати, обратите внимание, что и у ведущей, и у ведомой защелки один из входов не используется.
Это можно использовать для быстрой инициализации памяти, но об этом в следующий раз.
Вот соответствующие видео работы ячейки памяти с динамическим управлением: Заключение Мы рассмотрели два варианта ячеек памяти.
Динамически управляемая ячейка памяти является основным элементом троичного счетчика, который мы рассмотрим в следующий раз.
Потом поговорим об ALU и тому подобном.
Конечно, получить таким образом даже один килолитр памяти — задача очень дорогая (если делать это на коленях), но поскольку моя железка будет предназначена для демонстрационных целей и с гораздо меньшим объемом памяти, то это не так уж и страшно.
Наслаждаться! Теги: #троичный калькулятор #память #пальцевые вычисления #Аномальное программирование #Занимательные задачи #программирование #математика #Программирование микроконтроллеров
-
Балтийские Языки
19 Oct, 24 -
Эйфель, Александр Гюстав
19 Oct, 24 -
Создание Переходов Страниц С Помощью Css3
19 Oct, 24 -
Установка Vmware Esxi На Mac Pro 1.1
19 Oct, 24