Интегральная схема включения шины

Я играю с проектированием простого 8-битного процессора из основных логических компонентов. У меня есть довольно хорошее представление о том, как будут взаимодействовать мое АЛУ и регистры, но единственное, что, по моему мнению, можно улучшить, это как переключаться, когда линии разрешено подключаться к основной шине данных.

Моя первоначальная мысль состояла в том, чтобы использовать ворота и для управления автобусом. Все выходные данные различных линий АЛУ могут поступать на набор микросхем квадро-И, которые выводятся на шину. Только у одного набора логических элементов И в каждый момент времени все входы B должны быть подняты на высокий уровень, чтобы выпустить его на шину.

Несколько вещей, в которых я не уверен: кажется расточительным использовать восемь полных логических элементов И на линию, когда мне нужна только одна управляющая линия. Есть ли лучший чип, более подходящий для этой цели? Я уверен, что мог бы сделать это и с восемью транзисторами, но я хотел бы придерживаться довольно распространенных (и дешевых) ИС.

Подобное решение позволяет передавать данные только в одном направлении от шины. Это проблема? Я думаю, что нет, так как у меня есть другие линии управления, останавливающие регистры от загрузки данных шины, пока я этого не захочу.

Есть ли стандартный чип, который можно использовать для такого шлюза шины?

Ответы (2)

74HC244 является типичным устройством для подключения/отключения от шины. Это восьмеричный буфер с тремя состояниями (или, скорее, двойной счетверенный буфер). Вам понадобится функция трех состояний, чтобы полностью отключиться от шины. Ворота устанавливали шину высоко или низко, но это не позволяло использовать на ней другое устройство.

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

74HC245

У вас есть DIRконтакт для управления направлением и /OEкоторый может сделать буфер с тремя состояниями.

JustJeff
упоминает восьмеричный D-триггер 74HC374 с тремя состояниями. ( Примечание: я расскажу о 74HC574, который функционально такой же, но имеет более логичную распиновку. ) 74HC574 действительно интересная деталь и классика со времен серии SN74xx. В то время как 74HC245 предоставит вам буфер с тремя состояниями, 74HC574 также имеет функцию памяти в виде восьмеричного D-триггера. Отлично подходит для создания регистров, а благодаря подключению к шине с тремя состояниями вы можете легко маршрутизировать поток данных.
Однако в этом есть недостаток. Выход регистра доступен только для шины, поэтому все коммуникации должны проходить через нее, так что шина станет узким местом .. Поэтому я думаю, что лучше заменить 74HC374 восьмеричным D-триггером 74HC273, за которым следует отдельный буфер с тремя состояниями 74HC244 для подключения к шине. Таким образом, выход регистра также доступен внутри, когда какой-либо другой сигнал занимает шину. (Я не знаю, есть ли функционально совместимая часть с более логичной распиновкой. Вы также можете использовать 74HC574 с /OEпроводным заземлением.)

Это выглядит здорово! Я пока не уверен, как мои регистры будут взаимодействовать с шиной, но подозреваю, что двунаправленные тут помогут.
@CMP - в описанной вами ситуации - создание процессора с нуля - выходы с тремя состояниями - ваши друзья. Например, 74hc374 — это 8-битный регистр, который обеспечивает вывод с тремя состояниями в том же чипе. Вы можете соединить выходы нескольких из них вместе и просто установить OE того, который вы хотите, «на шине».
Стоит отметить, что на самом деле многие ЦП имели регистры, которые могли принимать входные данные или отправлять выходные данные с/на общие шины (во многих случаях ввод с одной шины, вывод с другой). Хотя такой дизайн в некоторых случаях может быть узким местом, я не думаю, что цель здесь состоит в том, чтобы конкурировать с i7. Обратите внимание, что если вы хотите, чтобы регистр принимал входные данные с одной шины и выборочно выводился на две разные шины, можно использовать 74HC273 и два 74HC244, но можно выполнить эту работу только с двумя 74HC574, которые фиксируют одни и те же данные.

(1) Элементы И по своей сути не подходят для объединения в качестве прозрачных буферов шины, потому что, если они имеют полностью активные выходные драйверы, они взаимодействуют, а если «открытый коллектор», логика инвертируется.

Вы можете использовать вентили ИЛИ с двумя входами с открытым коллектором в качестве однолинейных драйверов для общей шины.

Если вы передадите «данные» и «not_enable» в вентиль ИЛИ, выход будет высоким, если not_enable высокий, и будет следовать за данными, если not_enable низкий.

Когда на выходе затвора с открытым коллектором высокий уровень, он никак не нагружает шину. Когда он низкий, он загружает шину включенным низким выходом. Таким образом, несколько логических элементов O с открытым коллектором могут совместно использовать шину, и только включенные (обычно по одному) могут управлять шиной. Вам нужно одно подтягивание, чтобы поднять автобус вверх, и любое количество ворот, чтобы опустить его.

(2) EDUC-8 был/является 8-битным микрокомпьютером на основе TTL, представленным как многомесячный проект в журнале Electronics Australia с августа 1974 по август 1975 года. Даже если вы не хотите копировать его, вы можете многому научиться, посмотрев, как он был реализован. В последние годы есть разные энтузиасты, которые построили копии.

Очень обширная документация о путешествии одного пользователя с EDUC-8 ... То же самое ... Включает в себя детали его изготовления печатной платы переноса тонера из нескольких латргсих печатных плат и многое другое.

Википедия EDUC-8

Страница ссылок

Некоторая документация

Изображение печатной платы