Комментарии 41
Огромное спасибо! Очень доступно и понятно рассказано, при том что я эту тему практически не знал.
Напоминаю про https://nandgame.com/
где всё это можно проделать прямо из браузера
Я честно хочу сказать Вам спасибо, когда увидел ссылку в предыдущий раз - пропал на день с головой. Не скажу что все было очевидно (например DFF), но арифметика и АЛУ меня захватили - решил на компонентах, затем оптимизировал разложив на гейты.
Кстати для поиграться с двоичной логикой есть интересное приложение на андроиде "Make it true".
Да, в реальности часто определяющее значение имеют цена, доступность компонента, его популярность, сроки поставки. Внутренняя сложность чаще всего не имеет значения. (понимаю, что автор это прекрасно знает и цель статьи образовательная)
цель статьи образовательная
А вот тут я посмею себе усомниться. Эта статья зайдёт тем, кто уже разбирается в теме, но для новичков образовательный эффект будет нулевой, если не отрицательный.
Всё слишком быстро, по вершкам, с непонятными переходами:
вроде только считали элементы, потом фигак! динамическая дисциплина, но не задерживаясь на гонке состояний мы раз — и обложили всё защёлками на входе и выходе. А потом оп, ячейка памяти, что, как почему 2и-не? Одна, вторая, другая, какие-то буквы R, S, третья.
А потом раз, и мы собираем из ЛА3 ТМ2. Или он реально внутри так устроен (нет)? Из текста не понятно. А потом мы 130нано меняем на 40, и 32 корпуса на 4. Но почему ИМ3 шустрее? Непонятно, магия. У новичков после этого в голове останется только каша.
Надеюсь, что две первые части публикации освежили в памяти читателей основы разработки цифровых устройств электроники.
↑ В конце автор справедливо заметил, что это действительно не образовательная статья, а краткий рекап для тех, кто уже в курсе. В этом плане в статье всё на месте.
Но почему ИМ3 шустрее? Непонятно, магия. У новичков после этого в голове останется только каша.
Интересную тему Вы затронули. Сразу скажу, что дело тут не в паразитных емкостях, хотя они конечно тоже сказываются на времени срабатывания логических элементов.
Описываемый в этой статье 4-х битный полный сумматор на логических микросхемах выполнен по схеме "последовательного переноса" (ripple carry adder). Это самый медленный полный сумматор из всех возможных. Микросхема сумматора К155ИМ3 (SN7483A) выполннена по иной схеме, а именно по схеме "с упреждающим переносом" (carry-lookahead adder). Такой сумматор работает в несколько раз быстрее за счет упреждающего вычисления переноса.
Существуют еще несколько разновидностей сумматоров которые работаю еще быстрее. Например "параллельно префексный сумматор с ускоренным групповым переносом" (parallel prefix adders). Такой сумматор работает еще в два раза быстрее, но он имеет смысл только для многобитовых слогаемых (таких, что бы можно было разбить по 4 бита) и требует огромного количества параллельно соединенных логических элементов. Более подробно тут: https://ru.wikipedia.org/wiki/Сумматор
Но почему ИМ3 шустрее?
Потому, что паразитные ёмкости внутри кристалла ИМС — меньше.
Не на столько же. А в 555й серии там отрицательные паразитные ёмкости должны быть, учитывая разницу с дискретными? )))
Именно настолько.
В 555-й транзисторы удерживаются на грани насыщения (с помощью диода Шоттки катодом к коллектору и анодом к базе), что и позволяет ускориться несмотря на увеличение номиналов резисторов.
"Параллельный перенос", как пишет gleb_l, — относится к формированию выходного сигнала переноса. 4 выходных сигнала суммы — расчитываются "древовидной" схемой, где сигнал от входного переноса и младших разрядов неспешно дефилирует через все биты суммы.
Не только. В ИМ3 используются базовые элементы И-ИЛИ-НЕ (часты для построения мультиплексоров и (полу-)сумматоров - так как их быстродействие равно базовому xИ-НЕ, а гибкости порядково больше), а не соединенные последовательно xИ-НЕ (инверсия выхода которого превращает следующую секцию И как раз в ИЛИ в негативной логике, плюс еще инвертор. Вот внутрянка 155ЛР1 (вернее, его оригинала SN7450) - видно, что а) ИЛИ внутри монтажное, ничего не стоит с точки зрения задержек, и к тому же расширяемое до любого количества разрядов тоже бесплатно; б) по сравнению с реализацией на отдельных логических элементах И-ИЛИ-НЕ в три раза быстрее (имеет три каскада против 3 x 3 для реализации на xИ-НЕ -> xИ-НЕ -> НЕ).
Так что Шоттки, конечно, рулят, но в рамках одной технологии вся номенклатура серии находится в равных условиях - и здесь у более функционально-насыщенных ИМС есть большое преимущество как раз за счет оптимизации вутренних связей.
![](https://habrastorage.org/getpro/habr/upload_files/8c3/fb9/12e/8c3fb912e6f6280c59b8335541a4c078.png)
ИЛИ внутри монтажное, ничего не стоит с точки зрения задержек
Не думаю. Емкость на нижнем выводе резистора в 1,6 кОм растёт пропрорционально числу ИЛИ — быстродействие снижается.
Строго говоря, да. Абсолютно бесплатно ничего не бывает. Практически же можно сравнить по паспортам заявленные быстродействия скажем 133ЛА1 (http://www.155la3.ru/datafiles/133la1.pdf) и 133ЛР3 (http://www.155la3.ru/datafiles/k1lr333_pasp.pdf)
Да. А в более новых сериях там ещё и СУП сделали
См. объяснение выше. К155ИМ3 это Carry-lookahead adder.
Если я не ошибаюсь, ИМ3 шустрее потому, что это сумматор с параллельным переносом - то есть с анализом всех четырех пар входов и входного переноса одной схемой. Схема такого сумматора довольно нетривиальна, и если эмулировать ее на 2И-НЕ, то быстрее не получится - здесь нужны как минимум многовходовые элементы.
Если же сделать 4-х разрядный сумматор на "россыпи", то время установления достоверных выходных данных у него будет 40t, что вам вряд ли понравится, особенно если вы захотите пойти еще дальше, и обрабатывать вашим самодельным АЛУ за раз целые байты :)
PS - параллельный сумматор с достаточно неплохим быстродействием можно сделать из ПЗУ на пережигаемых перемычках (155РТ3-РТ7) - для 4-х разрядного сумматора нужно будет 9 входных и 5 выходных разрядов - зато выходные значения будут появляться на всех выводах строго синхронно :)
PPS - вот нашел внутреннюю схему ИМ3 - не сказать, чтобы он полностью параллельный, но полупараллельный точно :)
![](https://habrastorage.org/getpro/habr/upload_files/e0a/dc8/85e/e0adc885e5edf89068d27268deaaff18.png)
Да, всё так. Небольшой нитпик:
ИМ3 шустрее потому, что это сумматор с параллельным переносом
СУП в оригинальной 155/133 насколько я знаю, нет. Но он заявлен как обязательно присутствующий в 555 1533 ит.д. Правильно прошитая ПЗУ будет настолько же быстрой, да
Судя по буржуйскому даташиту на 7483 (девичье имя К155ИМ3), там действительно параллельный перенос:
![](https://habrastorage.org/getpro/habr/upload_files/95b/730/105/95b730105bca0e918b96e4bb4edfb335.png)
Ну и в порядке придирок :)
1) В 155-й серии нет РТ, насколько помню, но там есть К155РЕ3 -- она с пережигаемыми перемычками и должна бы обозначаться РТ, а не РЕ (возможно, РТ введено позже, а возможно, просто ошиблись в обозначении -- такое тоже бывает). РТ -- это, в первую очередь, 556-я серия.
2) Даже если сделать на ПЗУ, выходы всё равно не будут строго синхронными: никто не отменял индивидуальные свойства транзисторов и разное влияние на них локальных нагревов кристалла и фазы Луны. Так что, если говорить о задержках, строго одинаковое время недостижимо.
как будто снова в универ вернулся)))
И это даже бывает полезно :)
Сейчас я больше программист, но когда-то (сразу после института) достаточно плотно "дружил" с паяльником. Приходится брать мне его в руки и сейчас, но, права, уже гораздо реже. Тем не менее, я взял на себя смелость смоделировать поведение схемы, демонстрирующей гонку сигналов. И вот, что у меня получилось:
Гонка сигналов
![](https://habrastorage.org/getpro/habr/upload_files/cea/35d/6fc/cea35d6fc090c8a0e537bdb9d44b2936.png)
Это не очень сильно, но все же отличается от картинке в статье. Во-первых, по моим представлениям фронты сигналов гораздо меньше задержек, вносимых элементами и это отражают приведенные диаграммы выходов элементов. Во-вторых, переходные процессы при включении схемы могут быть не столь простыми. Возможно, они не такие, как на диаграмме, но для идеальных элементов они будут именно такими. Ну, уж при сбросе входного сигнала, думаю, будет именно так (речь о задержке установления сигнала на выходе элемента D1.4).
Есть у меня замечания и к описанию поведения RS-триггера. Например, не отражено "запрещенное состояние" его выходов при переключении между его устойчивыми состояниями. И насколько я в курсе, разработчикам схем с этим часто приходится даже бороться, т.к. это может служить источником помех в работе схемы.
... Как будто вернулся во времена моей молодости :)
Спасибо за комментарий!
- Можно Вас попросить поменять время задержки распространения сигнала в модели с t=0.2с на t=13нс и поделиться результатом?
- У RS-триггера "запрещённое состояние" есть, но конкретные приведённые далее схемы RST- и D-триггеров в это состояние "загнать" невозможно, поэтому о нём и говорится, чтобы не переусложнять. Поэтому я и убрал оттуда схемы асинхронного сброса-установки
Можно Вас попросить поменять время задержки распространения сигнала в модели с t=0.2с на t=13нс и поделиться результатом?
Вы же, надеюсь, понимаете, что это невозможно ;) Могу, конечно, уменьшить, но до минимум - 1 мсек. Но если очень уж нужно, то тогда необходимо строить соответствующую модель элемента и моделировать уже в масштабе. Пока же модель самая простая, но с обязательной задержкой ровно на один такт моделирования. Извините, но пока только так ;) Но вопрос первый - а как соотносятся между собой длительность фронта сигнала и длительность задержки элемента 155-й серии? И уж сразу второй - можно ли собрать генератор на одном элементе И-НЕ, соединив его выход с его входами? Это без всякого прикола. Хотелось бы знать.
По поводу запрещенных состояний. В тех схемах, о которых вы говорите, выходами являются по-прежнему выходы RS-триггера, а это означает ровно то, что при его переключении на выходах кратковременно будет возникать запрещенное состояние. Это входит в его обязательное поведение. И с этим ни чего не поделать. В свое время, когда я с этой проблемой разбирался, то к выходам триггера 155-й серии подключал более быстродействующую серию - тоже элемент И-НЕ. Затем к выходу последнего - счетчик и он ... считал. Так должно быть и в случае приведенных Вами схем. Нужно только подобрать более шустрые элементы-индикаторы запрещенного состояния и счетчика. Так, кстати, поступают в, так называемой, асинхронной схемотехнике (см. кн. Варшавского по этой теме).
Я тут совершил пять неудачных попыток скачать этот симулятор...
Если возможности уменьшить масштаб пока нет, вопрос снимается.
Длительность (наклон) фронта сигнала определяется быстродействием и нагрузочной способностью выхода, электрической ёмкостью нагрузки (подключенных входов и проводников между входами и выходом). Время задержки распространения сигнала как раз и определяется ёмкостью входа, быстродействием схемы и нагрузочной способностью выхода. У серии К155 с этим всё не очень хорошо… У К555 (ТТЛШ) уже получше, а у серии 74AC фронты сигналов, как на Вашем симуляторе :)
Генератор можно собрать введением ПОС в схему неинвертирующего усилителя (Гутников). Когда-то давно видел схему кварцевого генератора на одном элементе КМОП, каком, не помню. На ТТЛ таких схем не видел никогда. "Классикой" считается собрать неинвертирующий усилитель из двух 2И-НЕ в аналоговом режиме и подать сигнал с выхода на вход через конденсатор или кварцевый резонатор. Об этом, как раз в том числе, третья заключительная часть этого цикла и будет
Модель, если соединить выход со входом (разорвать 4, 5 и соединить 3, 5), входит в режим генерации. Например, в пакете SimInTech, это выглядит так:
Генератор на элементах И-НЕ
![](https://habrastorage.org/getpro/habr/upload_files/397/4ce/2ee/3974ce2ee99c71fe6c74a2ea6781e8e0.png)
А как на Ваш взгляд будет вести себя в этом случае реальная схема?
Ближайшее время буду макетировать несколько схем на К155ЛА3 для следующей части публикации, которая выйдет 27.04.2023, если ничего не изменится.
Заодно сниму осциллограммы со схемы определения переднего фронта на частотах порядка мегагерц и поделюсь ими обязательно!
1. Реакция на подачу на вход меандра частотой 1.0 МГц.
![](https://habrastorage.org/webt/gl/aq/en/glaqenw-b1y7a9lh-v_sxcwmrva.jpeg)
2. Реакция на подачу на вход меандра частотой 5.0 МГц.
![](https://habrastorage.org/webt/jm/zu/by/jmzubybjeau-_judl6pnkwuvlpw.jpeg)
3. При замыкании входа схемы на выход напряжение на выходе понижается до 2 Вольт, генерация не появляется
"запрещенное состояние" иногда применяется специально. Из простого - при необходиости можно сделать простой инвертор.
Класс. Люблю логику
Я этот цикл пишу с большой любовью, как Вы понимаете.
73 de RD9F
Разделяю Вашу любовь :) Моделируя именно ее - цифровую логику, я тестирую проблемы своего "программного параллелизма". Просто потому, что проблемы современного параллельного программирования во многом были исследованы задолго до его появления разработчиками цифровых схем на базе теории конечных автоматов. А вот программисты, похоже, об этом не знают, да и, если совсем прямо, - не хотят знать.
Можно ещё упомянуть, что в древности вычислительные машины хоть и не делали на одном типе микросхем, но могли (а точней, были вынуждены) обходиться очень скромным набором. Скажем, логическая часть процессора ЕС-1030 была выполнена на девяти типах микросхем 155-й серии: ЛА1, ЛА2, ЛА3, ЛА4, ЛА6, ЛА7, ЛР1, ЛР3 и ЛД1 (правда, она появилась в 1971-72 годах, когда эти микросхемы обозначались по-другому -- скажем, К155ЛА3 была К1ЛБ553; привычные обозначения были введены, если память не изменяет, в 1975-м). Современные цифровые микросхемы на нижнем уровне "собирают" из библиотечных компонентов -- по сути, из тоже весьма ограниченного набора логических элементов, триггеров и т.п. Правда, сейчас сей процесс обычно скрыт от разработчика, так как логику проектируют на языках описания аппаратуры (обычно VHDL, Verilog, System Verilog), но внизу -- всё равно логические элементы :) А ещё ниже таки транзисторы, да.
Студентом на К155 собирали курсовые проекты. Был выбор рисовать или паять. Плоттеров и больших принтеров в доступе не было, поэтому все паяли. Микросхемы покупали на местном базаре. Все они стоили одинаково какие-то гроши даже для студента, а вот количество микросхем и сложность разводки очень сильно влияли на трудоемкость. Поэтому, сильно ценились оптимизация логических выражений и правильный подбор элементов.
Ещё с тех пор запомнилось, что любое асинхронное это очень быстро, но не сложно и потенциально не стабильно. Правило оказалось универсальным, хотя в природе не так много синхронных кейсов.
Цитирую: "Учитывая необходимость избыточного кодирования асинхронных схем и использования особой дисциплины смены входных наборов для устранения состязаний, в асинхронных схемах мы подчас получаем даже меньшие скорости работы, чем в синхронных." Это из кн. Апериодические автоматы. Под ред. В.И. Варшавского. – М.: Наука. Гл. ред. Физ.-мат. лит., 1976. - 424 с.
Так что с асинхронностью далеко не все так просто. Даже скорее сложно. И, как мне кажется, с тех уже давних времен мало что изменилось.
Сумматор или счетчик не обязательно должны быть синхронным.
В живую я АЦА видел только на испытательных стендах не скажу чего как промежуточное звено между аналоговой частью измерителя и компьютером. Смотрелось очень гармонично, т.к. вход COM порта совсем не дотягивался до нужных частот. Но опять же, на выходе из асинхронного стоял синхронный ЦА, и из него уже в COM порт. В общем, со скоростью для простых ЦА не соглашусь.
Возможно, с тех пор много времени прошло и в условном коллайдере всё стало насквозь цифровым и синхронным.
Одной К155ЛА3 недостаточно