Оперативная память на ферритовых сердечниках далеко не единственный пример использования магнитных элементов в цифровых вычислительных машинах. Существовали и экзотические, с сегодняшней точки зрения, импульсные феррит-диодные и феррит-транзисторные логические ячейки, в 50-е - 60-е годы прошлого века. Сегодня этот тип логики основательно забыт, по вполне естественным и обоснованным причинам. Однако, мне кажется интересным вспомнить, хотя бы с исторической точки зрения, как такая логика работала.
Да, это все устарело. Да, это сегодня мало кому нужно. Да, практической пользы никакой. Но знание не бывает бесполезным и лишним. Не нужно вам лично? Вполне может быть. Но ведь другому может быть интересно, и может пригодиться в самый неожиданный момент.
И в ферритовой памяти, и в феррит-диодных логических ячейках, использовались кольцевые сердечники из ферритов с прямоугольной петлей гистерезиса.
Мне не довелось полотно поработать с такими логическими ячейками в реальных устройствах. Нас учили теории и расчету. Были лабораторные и практические работы. Но большей части по более совершенным феррит-транзисторным ячейкам. На фоне других типов логики феррит-диодные и феррит-транзисторные ячейки мне не особо понравились. Но в голове, как полезная информация, они отложились прочно.
Статья написана ПО ПАМЯТИ, на основе моего СОБСТВЕННОГО ОПЫТА, как и все прочие статьи на канале. Это не перепечатка книг или учебников, как заявляют некоторые читатели. Поэтому могут быть неточности, и даже ошибки. Человеческая память не всегда точна, здесь нет злого умысла.
Сначала нужно сказать пару слов о том, что такое импульсная (динамическая) логика.
Потенциальная и импульсная логика
В отличии от всем сегодня привычной потенциальной логики, где логическим 0 и 1 соответствуют определенные уровни напряжения (тока), в импульсной логике 1 соответствует наличие импульса в заданный момент времени, а 0 отсутствие импульса.
Это не означает, что в потенциальной логике не может быть импульсов. Мы все знаем, что это не так. Однако, для логического базиса, на котором и строятся все остальные элементы, в потенциальной логике нет ограничений на длительность сигналов, во всяком случае, теоретически. Ограничения на минимальную длительность все таки есть, они определяются быстродействием.
Другими словами, мы можем подать на входы напряжения, соответствующие логическим уровням, и спокойно анализировать напряжение на выходе. Даже медленным вольтметром.
А вот для импульсной логики такое невозможно в принципе. Мы должны подать на входы именно импульсы, причем зачастую определенной длительности, и отслеживать наличие/отсутствие импульсов на выходе. Как правило, осциллографом.
Моменты времени, в которые фиксируется наличие/отсутствие импульса часто называют фазами, или тактами. И одна операция в импульсной логике, даже в базисе, может выполняться за несколько тактов. И мы это скоро увидим
Перемагничивание ферромагнитного сердечника
В статье "Ферритовая память. Как это работало? Просто о сложном."я уже описывал, кратко, основные моменты работы сердечника, поэтому повторяться не буду. Но некоторые моменты нам надо рассмотреть чуть подробнее.
На иллюстрации я показал магнитный элемент именно так, как его изображали ранее. В данном случае, для нас важен именно процесс перемагничивания, его влияние на форму напряжения на вторичной обмотке. Мы не рассматриваем кольцо с обмотками как импульсный трансформатор.
Предположим, что в начальный момент времени сердечник был намагничен до состояния -Br, а ток первичной обмотки привел к его перемагничиванию до состояния +Bm. То есть перемагничивание происходит практически по полной петле гистерезиса.
Изменение индукции магнитного поля в сердечнике велико, что приводит к большой величине наводимой на вторичной обмотке ЭДС. Это полезный сигнал.
Отключение тока в первичной обмотке приводит к уменьшению индукции в сердечнике от +Bm до +Br. Но теперь у нас изменение мало, поэтому и наведенная ЭДС невелика. Более того, эта ЭДС имеет другой знак. Это помеха.
А если сердечник в начальный момент времени уже находился в состоянии +Br? В этом случае, при включении тока в первичной обмотке индукция в сердечнике изменится незначительно, от +Br до +Bm, а значит импульс ЭДС положительной полярности на вторичной обмотке будет иметь малую амплитуду. Примерно такую же, как импульс помехи, показанный на иллюстрации. И будет гораздо короче импульса полезного сигнала. И тоже будет для нас помехой.
Таким образом, мы можем отделить полезный сигнал, соответствующий перемагничиванию сердечника, по амплитуде и длительности импульса напряжения на вторичной обмотке. И это для нас важно.
Существуют некоторые различия в перемагничивании сердечника импульсом тока и импульсом напряжения. Но поскольку мы не будет заниматься расчетом ячеек, я не буду это рассматривать. Как не буду рассматривать и влияние нагрузки, подключенной к вторичной обмотке.
Феррит-диодные ячейки трансформаторного типа
Базовая феррит-диодная ячейка очень похожа на ячейку ферритовой памяти. Тоже несколько обмоток, но уже полноценных, а не просто проводников. Тоже записываются только единицы, а считывание выполняется записью нуля. Но разница конечно есть.
В данном случае w1 это входная обмотка, w2 выходная. wt тактовая, она же обмотка считывания (в многофазных элементах ее еще называли обмоткой продвижения).
Давайте условимся, для определенности, что состояние сердечника -Br соответствует логическому нулю (начальное состояние), а +Br логической единице. Мы можем сделать и прямо противоположный выбор, это не влияет на принцип работы ячейки.
Входная обмотка используется только для перемагничивания сердечника в состояние логической 1. Одним из важнейших условий в работе ячейки - входной сигнал на выход непосредственно не передается. Это обеспечивается выбором такой полярности включения выходной обмотки w2, что наводимая на ней при записи "1" ЭДС запирает диод. Таким образом, при записи у нас ток через нагрузку Rн не протекает. Это и показано на иллюстрации как "помеха (удаляется диодом)".
Тактовая обмотка (обмотка считывания) используется только для перемагничивания сердечника в состояние "0". Как мы помним из статьи о ферритовой памяти, нет иного способа прочитать хранимую в сердечнике информацию, узнать его состояние.
Если при при подаче импульса тока в тактовую обмотку сердечник находился в состоянии "1", он будет перемагничен в состояние "0", а на обмотке w2 будет наведена ЭДС, которая откроет диод, что приведет к протеканию импульса тока через нагрузку. Это показано на иллюстрации как "сигнал".
Если при подаче импульса тока в тактовую обмотку сердечник уже находится в состоянии "0", то на обмотке w2 будет наведена только небольшая ЭДС помехи. Термин "подтверждение", на мой взгляд, неудачен. Но именно такой термин ранее использовался. По сути, это просто считывание нуля.
Почему сердечник может уже находиться в состоянии "0"? Например, только что уже было выполнено чтение (отсюда и термин "подтверждение"). Или, по какой то причине запись "1" не была выполнена.
Обратите внимание, что импульсы записи в обмотке w1 и импульсы считывания в обмотке wt не должны поступать одновременно. Запись должна выполняться только в паузах тактовых импульсов.
По сути, базовая феррит-диодная ячейка является однобитной ячейкой памяти без возможности адресации. Или, элементом задержки входного импульса на половину периода тактового сигнала.
Обратите внимание, что в феррит-диодных ячейках через обмотки протекают не полутоки, как в ферритовой памяти, а полные токи.
Компенсация помех
Базовую ячейку можно усложнить, что позволит исключить появление импульсов помех. Это не всегда требуется, многое определяется свойствами материала сердечников и схемотехникой. Одним из распространенных методов борьбы с помехами заключался в добавлении в базовую ячейку ячейки компенсации
Ячейка компенсации (К) имела всего две обмотки, тактовую и выходную. В остальном она была полностью идентична рабочей (Р). Полярность выходной обмотки компенсационной ячейки была обратной полярности рабочей, а включались они последовательно. В результате, амплитуда помехи значительно снижалась, но не до нуля, так как полной идентичности ячеек было сложно добиться.
Последовательное включение базовых ячеек. Проблемы однофазной схемы
Базовые феррит-диодные ячейки, как и все логические элементы, можно включать последовательно для построения логических схем. Однако, задача только выглядит простой. Давайте рассмотрим простейшее последовательное соединения двух ячеек
Предположим, что мы записали "1" в первую ячейку. Импульс тока в обмотках wt отсутствовал, поэтому все прошло хорошо. Затем мы подаем импульс в обмотки wt, что должно привести к переносу (продвижению) записанной "1" из первой ячейки во вторую (первая при этом перейдет в состояние "0").
На первый взгляд, все хорошо, в обмотке w1 второй ячейки будет создан импульс тока, так как сердечник первой ячейки перемагнитится. Но у нас импульс тока в w1 второй ячейки будет одновременно с импульсом в wt. А это ошибка. Состояние сердечника второй ячейки не изменится, запись не будет выполнена.
Для устранения проблемы нужно задержать сигнал с w2 первой ячейки на время действия импульса wt. В качестве элементов задержки можно использовать LC цепочку, где конденсатор является накопителем. Но такое решение вносит ощутимое ослабление сигнала. Можно использовать вместо индуктивности дополнительный диод, который будет запираться импульсом Ut. Я не буду подробно рассказывать об этом, так как в конечном итоге победили многофазные схемы, о который и расскажу чуть позже.
Но кроме этой, явной, проблемы есть и еще одна. дело в том, что в то время полупроводниковые приборы (диоды те же самые) были германиевыми. А у них довольно заметный обратный ток, особенно при повышенной температуре. А это может привести в взаимовлиянию ячеек и проявлению "обратной передачи" информации.
Предположим, что мы смогли реализовать прекрасную схему задержки передачи импульса от первой ячейки во вторую. Теперь тактовый импульс не мешает записанная "1" прекрасно передается из первой ячейки во вторую. Но температура повысилась, что привело к увеличению обратного тока диода. В результате, наведенная на w1 второй ячейки ЭДС во время тактового импульса может создать в w2 первой ячейки ток (обратный ток диода возрос) достаточный для перемагничивания сердечника первой ячейки в состояние "1".
Да, это будет "неполноценная" единица, индукция скорее всего не достигнет +Br. Но ее окажется достаточной, что бы посчитать, что сердечник хранит 1. Вот это явление и называется "обратной передачей".
Для кремниевых диодов, особенно, современных, такой проблемы не существует.
Многофазные схемы соединения ячеек
Описанные проблемы привели к появления многофазных схем включения, так как они позволяли наиболее оптимально решать все вопросы. Наибольшее распространение получили двухфазные и трехфазные варианты.
Давайте сначала рассмотрим двухфазный вариант
Как видно, изменения, по сравнению с однофазной схемой, небольшие. Просто теперь у нас тактовые обмотки питаются от отдельных источников импульсов.
Импульсы F1 и F2 поступают в противофазе. Запись в первую ячейку выполняется во время паузы сигнала F1, как и должно быть. А F2 на запись в первую ячейку не влияет. Когда на первую ячейку поступает импульс F1 сигнал с ее обмотки w2 поступает на вторую ячейку. И теперь у нас здесь пауза сигнала F2. Так что запись пройдет успешно. И F1 на запись во вторую ячейку влияния тоже не оказывает. В следующий момент времени поступает импульс F2, который и обеспечивает появление сигнала на выходе второй ячейки.
Двухфазная схема полностью работоспособна. Да, теперь нужен более сложный источник тактовых импульсов. Но схема ячейки гораздо проще, чем однотактной, так как цепи задержки не нужны. А генератор тактовых импульсов общий для всего устройства.
Однако, двухтактная схема не устраняет вторую проблему, весьма актуальную для своего времени. Обратная передача информации все равно оказывается возможной.
Кроме того, построение схем с обратными связями, например, триггеров, будет требовать введения цепей задержки сигнала в цепях обратной связи. Эти проблемы решаются в трехфазной схеме.
Теперь обратная передача информации, из С3 в С1, невозможна. Так как работа этих ячеек разделена тактом F2. Кроме того, такт F3 позволяет исключить задержку для цепей обратной связи, например, в схеме триггера. Если позволите, я не буду более подробно рассматривать работу трехфазной схемы, она достаточно очевидна. Но скажу, что обычно импульсы фаз частично перекрывались. Дело в том, что импульс сигнала, формируемый в процессе перемагничивания сердечника, короче импульса фазы. А некоторое перекрытие позволяет дополнительно снизить риск обратной передачи. Кроме того, это уменьшает время прохождения сигнал через ячейку в целом.
Реализация функции запрета
Рассмотренные нами ранее ячейки являются простыми повторителями. Информация на их выходе повторяет информацию на входе, пусть и с задержкой зависящей от тактовых импульсов. Для построение на основе базовых ячеек логических ячеек нужна дополнительная функциональность. И прежде всего нам нужна возможность запрета записи "1" в ячейку. Даже в том случае, если импульс записи на входе ячейки (обмотка w1) присутствует.
Мы можем это сделать двумя способами. Первый способ аналогичен рассмотренному в статье и ферритовой памяти (ссылку я давал ранее). Мы можем добавить обмотку блокировки.
В данном случае наш сигнал a будет записан только в том случае, если отсутствует сигнал b (запрет). Я не стал на временных диаграммах показывать тактовый сигнал и сдвиг выходного сигнала относительно входного. Отсутствие записи, как и в случае ферритовой памяти, объясняется тем, что ток в обмотке блокировки (inhibit) протекает в направлении противоположном току во входной обмотке (обратите внимание на фазировку обмоток). В результате, напряженность суммарное поля двух обмоток будет равна нулю.
Однако, здесь есть одна проблема, которая не сразу видна. Если сигналы a и b не строго идентичны и синхронны, например, поступают из внешних цепей, или пути прохождения сигналов заметно различаются, то все таки может произойти запись "1", даже в рамках единой схемы тактирования. Например, импульс сигнала b (запрет) может окончиться раньше импульса сигнала a. Или его амплитуда будет меньше.
Решить проблему позволяет, в очередной раз, двухфазная схема с дополнительным каскадом синхронизации
Теперь у нас импульсы сигнала a и запрета b могут быть не совсем синхронны. Главное, что бы они оба пришли во время паузы F1. Если сердечники дополнительного каскада (на входе) идентичны, то импульс F1 приведет к подаче на сердечник основной ячейки двух идентичных и синхронных импульсов. И функция запрета отработает безошибочно.
Второй способ основан на использовании ячейки компенсации, я рассказывал о ней ранее. При этом блокируется не запись информации в ячейку, а формирование выходного импульса. При этом в ячейку компенсации добавляется входная обмотка.
Я показал однофазный вариант. Если импульс запрета b отсутствует, то компенсационная ячейка К работает точно так же, как было описано ранее. Если же импульс запрета присутствует, сигнал с выходной обмотки компенсационной ячейки вычитается из сигнала рабочей ячейки. В результате, выходной импульс y не будет сформирован. Но может возникнуть помеха.
При таком способе реализации функции запрета сохраняется проблема синхронизации. Но и тут ее помогает решить двухфазная схема
Работа этой ячейки уже не должна вызвать у вас вопросов.
Реализация логической функции ИЛИ
Реализация логического ИЛИ не более сложна, чем реализация функции запрета. И тоже возможны два варианта. Я не буду приводить иллюстрации двухфазных схем, так как для логического ИЛИ проблемы синхронизации не возникает.
Первый вариант схемы логического ИЛИ предусматривает отдельную обмотку для каждого входного сигнала (импульса). Во втором варианте входная обмотка остается одна, а логическое ИЛИ фактически реализуется диодами (диодное ИЛИ)
При этом входные диоды могут принадлежать выходным цепям предыдущих ячеек. Вариант с дополнительными обмотками кажется излишним и не оптимальным. Однако, если входные импульсы поступают из внешнего мира, дополнительные обмотки помогают уменьшить количество используемых диодов. В то время уменьшение количества используемых полупроводниковых элементов было актуальным.
Реализация логической функции И
Это гораздо более сложная задача. И здесь нам станет понятной необходимость функции запрета. Я нарисую двухфазный вариант реализации функции И
Как видно, реализации действительно гораздо сложнее и требует целых три ячейки. Причем две из них с реализацией функции запрета. Входной импульс (сигнал) a у нас подается на входы сразу двух ячеек. Они включены последовательно, так как это импульс тока. А вот импульс b является по сути сигналом запрета. а иллюстрации я показал, красным цветом, два внутренних сигнала c и d.
Итак, давайте посмотрим, как все это работает. На иллюстрации показаны все четыре случая работы схемы. Если оба входных сигнала "0", то оба сердечника первой ступени останутся в состоянии "0". Соответственно, не будет и записи "1" в выходную ячейку. Если a=1, а b=0, то "1" запишется в обе входные ячейки, так как ток в обмотке блокировки верхней ячейки будет отсутствовать. И на очередном такте у нас на выходную ячейку будут поданы и входная "1" и сигнал запрета. А значит, выходная ячейка останется в состоянии "0". Если a=0, а b=1, то обе входные ячейки останутся в состоянии "0" (сигнал запрета не может перевести сердечник в состояние "1") и дальнейшее поведение схемы будет аналогично случаю равенства нулю обоих входных сигналов. И только когда оба входных сигнала равны "1" мы увидим верхний сердечник в "0" (из-за сигнала запрета), а нижний в "1". И только эта комбинация позволит записать "1" в выходную ячейку.
Единица на выходе может появиться при c=0 d=1. И этот важный момент "принятия решения о судьбе выходного сигнала" я выделил на иллюстрации овалами красного цвета.
Но это еще не все сложности. Дело в том, что здесь у нас возникает вопрос синхронизации в входной ячейке обрабатывающей сигналы a и b. Вспомните, что я говорил о реализации функции запрета. А значит, что для надежности нам потребуется дополнительный каскад синхронизации на входе ячейки реализующей функцию логического И. Но вот переходить к трехфазному тактированию не обязательно, так как мы можем подать на каскад синхронизации тактовый сигнал F2. Я не буду рисовать схему полного варианта ячейки логического И. Мы рассмотрели все достаточно подробно, что бы вы могли нарисовать ее самостоятельно. В качестве упражнения.
Реализация логической функции НЕ
Здесь все гораздо проще, но есть одна небольшая особенность. Сначала посмотрим схему
Все просто, наш сигнал a запрещает запись в ячейку "1", которая постоянно присутствует на входе. Видите проблему? Давайте я подскажу... Где нам взять ту самую "1" и какой она должна быть?
На первый взгляд, все просто. Мы можем просто подключить входную обмотку к источнику постоянного тока. Но дело в том, что длительность импульса a может быть меньше паузы тактового сигнала. А значит, в ячейку все таки запишется "1" которой там быть не должно, если a=1. Это та же самая проблема синхронизации, с которой мы уже сталкивались при рассмотрении функции запрета и логического И. Напомню, у нас логика не потенциальная, а импульсная. И сигналы должны быть импульсами. Включая ту самую постоянную "1".
Для этой цели существует специальный тип ячеек - генераторы единиц. Они устроены очень просто, я не буду даже приводить их схему. По сути, это просто базовая ячейка, через входную обмотку которой протекает постоянный ток. В результате, на выходной обмотке формируются нужные нам импульсы "1" при поступлении тактового импульса. Остается выбрать правильные источник тактовых импульсов, в соответствии с алгоритмом работы схемы устройства.
Феррит-диодные ячейки дроссельного типа
Я не буду подробно рассматривать такие ячейки, так как сам принцип работы аналогичен уже рассмотренному. Но вот детали работы несколько отличаются.
Если ячейки трансформаторного типа являются повторителями, то ячейки дроссельного типа инверторами. Тактовая обмотка на сердечнике отсутствует.
Выходная обмотка, здесь она называется рабочей, подключается последовательно с сопротивлением нагрузки к источнику импульсов напряжения u. Причем характерной особенностью ячеек дроссельного типа является возможность работы на переменном напряжении.
Для питания достаточно трансформатора с выводом от середины вторичной обмотки. Это дает две фазы питания, сдвинутые на 180 градусов. Входящие в ячейки диоды сами обеспечат работу на однополупериодном напряжении. Ни выпрямитель в источнике питания, ни конденсаторы, не требуются.
Я не буду останавливаться на этой интересной особенности, так она не влияет на сам принцип работы ячейки, а статья уже и так очень большая.
Запись в сердечник ячейки выполняется точно так же, как и для ячейки трансформаторного типа, во время паузы между импульсами питания u. А вот чтение несколько отличается. Если сердечник не перемагничивается, импульс тока через рабочую обмотку будет большим, что приведет к большой амплитуде импульса напряжения на нагрузке. Если сердечник перемагничивается, то амплитуда импульса тока в рабочей обмотке будет небольшой. А значит и амплитуа импульса напряжения на нагрузке будет малой.
Импульс напряжения питания и является тактовым импульсом, импульсом считывания. Схемы реализации логических функций на ячейках дроссельного типа имеют свои особенности, но сам принцип их построения такой же, как у ячеек трансформаторного типа.
Заключение
Я рассказал лишь малую часть о том, как работали феррит-диодные логические ячейки. Оставил в стороне много интересного, причем не только особенностей их расчета. Не сказал ни слова об их быстродействии и нагрузочной способности, энергетических соотношениях, о построении на основе таких ячеек последовательностных схем и вычислительных блоков...
Я понимаю, что этот тип логики в далеком прошлом, что сегодня никто не будет их проектировать и применять. Поэтому такого простого и краткого рассказа (хоть и в виде очень большой статьи) будет достаточно. Если кому то будут интересны отдельные подробности цифровых схем на такой логике, пишите в комментариях. Я постараюсь ответить.
Вот такие логические элементы, без единого гвоздя транзистора когда то использовали, пусть и не так широко. А на сегодня все.