Готовое устройство
Готовое устройство

И снова здравствуйте, дамы и господа. Наш Отдел Перспективных Разработок продолжает свой цикл статей о древних технологиях и опять выходит на связь с очередным передовым творением нашего сумрачного разума приближающим трепетный момент всеобщей строггофикации.

Сегодня мы совершим небольшой экскурс в историю прошлого века и выдернем оттуда знания об артефакте, практическая пригодность которого на сегодняшний день такова, что перед ней спасует даже наша отдельная лаборатория, которая всем этим поделкам назначение придумывает. В смысле, нулевая практическая пригодность. Однако, вполне сгодится на лабораторную работу для школьника с ардуиной, или занятие на вечер для тебя, мой дорогой инженер с унылой работой, женой, дочкой, двумя котами и кризисом среднего возраста.

Итак, мы рассмотрим память на ферритовых кольцах, причем, даже не RAM, а ROM.

Теория

В ретроспективе компьютерной истории двадцатого века память на ферритовых кольцах стала одной из важных вех развития цифровых технологий. Не смотря на то, что классическое ОЗУ на ферритовых кольцах появилось аж в 1945 году, ПЗУ на похожей технологии в физическом виде реализовали несколько позже, когда понадобилось вместить некоторый объем данных в минимально возможное для технологий того времени пространство. ПЗУ на ферритовых кольцах, оно же «веревочная» память применялась как способ хранения прошивки в виде адресуемых единиц данных, например, в бортовых компьютерах СССР и НАСА того времени, летавшие зондами на Марс и на Луну (миссия «Аполлон» как широко известный пример).

Не смотря на сходный принцип работы ферритовых ОЗУ и ПЗУ, способ хранения информации в них несколько различается. Рассмотрение работы ОЗУ мы оставим для следующих статей, а ПЗУ же функционировало достаточно просто:

Ферритовое кольцо являлось, по сути, примитивнейшим трансформатором, который использовался как датчик наличия тока. Если пропустить через кольцо два проводника и подать через один проводник ток (пусть это будет измеряемый проводник), в кольце наведется магнитный поток, и во втором (измеряющем) проводнике так же возникнет ток, который возможно зафиксировать.

Однако, возникающие напряжения на измеряющем проводнике гораздо ниже, чем на измеряемом, потому, для наших целей мы его немного модифицируем - сделаем несколько витков вокруг кольца и добавим конденсатор и диод. Конденсатор позволит накапливать заряд, стекающий с «измеряющего» проводника, по наличию которого в дальнейшем мы будем принимать решение о наличии тока в «измеряемом» проводнике, а диод позволит не потерять накопленный в конденсаторе заряд.

Ферритовый датчик
Ферритовый датчик

Суть работы данной схемы проста:

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

А теперь магия! Через кольцо возможно пропустить много проводников. Столько, сколько позволит в него запихнуть внутренний диаметр. И, если пометить каждый такой измеряемый проводник адресом, можно судить о наличие отдельного бита по данному адресу.

Экстраполируем данную схему на нашу суровую действительность и попробуем снимать с одного адреса уже не один бит, а целый байт, ибо от одного бита толку мало. Для этого возьмем восемь колец:

Ферритовый байт
Ферритовый байт

Пропустим через кольца проводник, помеченный адресом 0. Поскольку каждое кольцо будет опознавать свой бит, то, через кольца с номером бита, который должен быть установлен в 0, мы просто не будем наш проводник пропускать.

Теперь, если подать напряжение на проводник и читать потенциалы с датчиков колец последовательно, можно составить один байт считанной информации на каждый такой проводник.

Это здорово похоже на запись узелками на веревочках, которую применяли некоторые древние народы, собственно, потому и возник термин «веревочная» память.

Практика

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

Во-первых, для считывания потенциала с восьми ферритовых колец нам возможно использовать восемь аналоговых входов (A0 – A7).

Во-вторых, для адресации проводников можно использовать цифровые выводы, коих для небольшого количества адресов вполне хватит.

Впрочем, занимать целый вывод ардуины на один адрес мне показалось расточительным, потому, я еще усложнил схему, применив для адресации выводов сдвиговый регистр из двух 74HC595.

Понимаю, что использование современных микросхем в данном случае несколько «неспортивно», но, построение вот таких вот «гибридов» древних технологий с современными – это особый шик.

В теории, применение сдвигового регистра позволит масштабировать количество адресов памяти не занимая все возможные выводы контроллера, который будет с ними работать, и позволит ему выполнять еще какие-либо задачи. Но, на практике здесь всплывает очередной подводный камень, о котором в конце.

Соберем схему для сдвигового регистра для 16 адресов, который позволит нам адресовать 16 байт:

Схема сдвигового регистра для адресации проводников
Схема сдвигового регистра для адресации проводников

И схему подключения восьми колец на аналоговые пины A0 – A7. Конденсаторы здесь можно взять любые керамические номиналом 100 нФ, диоды так же любые. Я, например, вообще применил что нашел - германиевые 80х годов. Для зрелищности можно попробовать использовать светодиоды. Измеряющая обмотка на кольце – 10 витков любого тонкого провода.

Схема датчика для снятия наличия потенциала с ферритового кольца
Схема датчика для снятия наличия потенциала с ферритового кольца

Так же нужно учесть, что адресные проводники в дальнейшем будут садиться одним концом на землю. Если их все соединить в одной точке, то, при подаче напряжения каждый проводник окажется связан со всеми остальными и сможет вносить помехи в чтение с колец, наводя потенциалы там, где это не нужно. Потому, проводники на землю стоит посадить через диоды. Для наших целей понадобится 16 диодов. Соединение пропускаемых через кольца проводников на землю в данном случае будет выглядеть так:

Схема соединения проводников по адресам
Схема соединения проводников по адресам

Я не заморачивался с травлением и свой вариант на макетной плате спаял проводом МГТФ за вечер. Получилось нечто, что можно лицезреть в первой же картинке данной статьи.

Программирование

Итак, мы можем что-то записать в нашу память. Для этого начнем соединять измеряемые проводники:

Один конец, как упоминалось выше, садится через диод на землю. Затем проводник пропускается последовательно через все ферритовые кольца формируя биты, по принципу - если проводник проходит через кольцо, бит установлен, если проводник не проходит через кольцо, бит не установлен.

После этого второй конец проводника сажается на ножку сдвигового регистра, ассоциированную с адресом данного проводника. Всё, ПЗУ «зашито», причем, в прямом смысле.

Теперь обратимся, наконец, к нашей ардуино и попробуем прочесть то, что мы наделали.

Прошивка ардуино
//Адреса пинов снимающих сигнал с ферритовых колец
uint8_t in_pins[8] = {A0, A1, A2, A3, A4, A5, A6, A7};

//Пины управляющие сдвиговым регистром на двух 74HC595
//Пин подключен к ST_CP входу 74HC595
int latchPin = 12;
//Пин подключен к SH_CP входу 74HC595
int clockPin = 13;
//Пин подключен к DS входу 74HC595
int dataPin = 11;

//Вывод на 16-битный сдвиговый регистр числа, кодирующего пины
void shift_out_value(unsigned int val) {
  digitalWrite(latchPin, LOW);
  //Выведем на сдвиговый регистр последний байт
  shiftOut(dataPin, clockPin, MSBFIRST, highByte(val));
  //Выведем на сдвиговый регистр первый байт
  shiftOut(dataPin, clockPin, MSBFIRST, lowByte(val));
  digitalWrite(latchPin, HIGH);
}

//Разрядка конденсаторов на датчиках колец
void discharge() {
  for (int i = 0; i < 8; i++) {
    //Переключить пин на выход
    pinMode(in_pins[i], OUTPUT);
    //занулить
    digitalWrite(in_pins[i], LOW);
    //небольшая задержка
    delay(3);
    //Переключить обратно на вход
    pinMode(in_pins[i], INPUT);
  }
}

//Считывание байта с колец
uint8_t read_ferrite_byte(unsigned int address) {
  uint8_t values[] = {0, 0, 0, 0, 0, 0, 0, 0};

  //Для точности можно увеличить количество проходов чтения, но, 
  //работает и так
  //for (uint8_t phase = 0; phase < 2; phase++)
  {
    //Разрядим
    discharge();
    //Подергаем нужным проводком по нужному адресу через сдвиговый 
    //регистр
    //Это нужно чтобы создать в ферритовых кольцах магнитный поток и 
    //зарядить конденсаторы
    //на датчиках тех колец, через которые проходит проводник с нужным 
    //адресом
    for (uint8_t j = 0; j < 8; j++) {
      shift_out_value(address);
      shift_out_value(0);
    }
    //Считаем показания с датчиков всех колец
    for (uint8_t ix = 0; ix < 8; ix++)
    {
      values[ix] += analogRead(in_pins[ix]);
    }
  }

  discharge();

  //Упакуем все считанные значения в один байт, где 0 - не считано 
  //ничего, 1 - считано что-то
  uint8_t result = 0;
  for (uint8_t ix = 0; ix < 8; ix++)
  {
    result = (result << 1) | ((values[ix] > 1) ? 1 : 0);
  }
  return result;
}

void setup() {
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  for (int i = 0; i < 8; i++) {
    pinMode(in_pins[i], INPUT_PULLUP);
    digitalWrite(in_pins[i], LOW);
  }

  Serial.begin(115200);
  
  //разрядим конденсаторы
  discharge();
  Serial.println("------------------------------");
  //Убедимся, что с ферритовых колец ничего не читается
  for (uint8_t ix = 0; ix < 8; ix++)
  {
    Serial.print(analogRead(in_pins[ix]), DEC);
    Serial.print(" ");
  }

  Serial.println();
  Serial.println();

  //Считаем и выведем значения по адресам 1..16
  for (int i = 0; i < 16; i++) {
    Serial.print("address[");
    if (i < 10) Serial.print("0");
    Serial.print( i, DEC);
    Serial.print("] = ");
    uint8_t nibbles = read_ferrite_byte((unsigned int)1 << i);
    Serial.print(nibbles, DEC);
    Serial.print(" - ");
    Serial.print(nibbles, BIN);
    if (nibbles > 32) {
      Serial.print(" - ");
      Serial.print((char)nibbles);
    }
    Serial.println();
  }
}

void loop() {
}

Алгоритм чтения следующий:

  1. Разрядить конденсаторы на датчиках ферритовых колец, поскольку, на них мог сохраниться потенциал, оставшийся от предыдущих шагов чтения, и он может внести помехи в читаемые данные.

  2. Задать на адресном регистре адрес ножки, к которой подключен проводник с нужным адресом. При этом, через проводник потечет ток, который вызовет накопление потенциала в конденсаторах датчиков тех колец, через которые пропущен данный проводник.

  3. Снять показание потенциала накопленного заряда со всех колец последовательно по номерам бит в байте и составить считанное значение.

    Результат зависит от того, что было зашито, разумеется.

Зашил слово HELLO и успешно его считал
Зашил слово HELLO и успешно его считал

Ну и подводный камень, о котором я упоминал ранее:

Для наведения магнитного потока в кольцах нужно подавать питание на измеряемые проводники не постоянно, а с определенной частотой. В схеме со сдвиговым регистром для того приходится совершать цикл из нескольких записей адреса и нуля:

  • Записать в регистр адрес пина нужного проводника, тем самым включив его.

  • Записать в регистр 0, выключив все проводники.

  • Повторить N раз.

Если регистр небольшой, скорость записи в него позволит сформировать некоторую частоту подаваемого на проводники тока, позволяющую завести ферритовые кольца и накопить в их датчиках некоторый потенциал.

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

В таком случае, интересным домашним заданием становится решение подобной задачи масштабирования памяти. Можно попробовать для увеличения количества адресов памяти использовать какую-нибудь каскадную адресацию сдвиговых регистров, где сдвиговый регистр будет ссылаться на следующий сдвиговый регистр. Или использовать логические дешифраторы, повешенные на тот же регистр.

Если у вас в голове родилась интересная схема – поделитесь, а то у меня целый мешок советской логики без дела лежит. ????

UPD: В комментариях предложили использовать ШИМ через ножку OE самого сдвигового регистра, что решает задачу.

Комментарии (47)


  1. Owning
    09.09.2022 07:23

    Интересная статья! Теория, подкрепляемая практическим применением, включая программирование. Для начинающих отнюдь не лишне


  1. MK1301
    09.09.2022 08:09
    +2

    Чтобы импульсы генерировать можно выводы OE (13) 595 использовать. Управлял так семисегментными индикаторами шимом яркость менял.


    1. rheinhard Автор
      09.09.2022 08:15

      Тоже об этом думал, но, тут проблема адресно на проводники подавать. Можно, впрочем, через тот же сдвиговый регистр попробовать транзисторами на концах включать-выключать.


      1. MK1301
        09.09.2022 08:29
        +3

        При OE с высоким уровнем выводы QA-QH переходят в третье состояние так что на выводе регистра на котором выбрали единицу появится частота OE. На выводах на которых нули ни чего не изменится. Выставляем требуемый адрес и генерируем частоту на OE.


        1. rheinhard Автор
          09.09.2022 08:52
          +1

          Действительно, стоило поискать про шим на 74595, и понял. Оказывается, все просто. Спасибо за наводку.


  1. Barma2012
    09.09.2022 09:30
    +3

    ...когда понадобилось вместить некоторый объем данных в минимально возможное для технологий того времени пространство

    Что-то мне кажется, что нафигачить перемычек - хоть на плате травлением, хоть проволочных в отверстия - будет куда компактнее (и проще), чем мотать и устанавливать кольца. Даже для технологии 70-х годов.


    1. MK1301
      09.09.2022 09:57
      +6

      Просто перемычки не получиться, нужно кучу диодов ставить чтобы не было замыканий. Итого получаем масочное ПЗУ.

      А недорогие диоды из германия появились 1950-х годах и думаю. были не очень надёжные.

      Вот кстати хорошая статья про историю появления советских диодов https://www.computer-museum.ru/articles/histekb/3864/


      1. Nahrenako
        10.09.2022 07:01
        +1

        Помнится делал такое пзу команд на диодах для инжекционного микроконтроллера серии К584 году эдак в 78-м.


    1. pavel_raskin
      09.09.2022 09:59
      +14

      Технология значительно старше, и к 70м уже была устаревшей. Кстати, ничего особо там не "мотали", при этом имея вполне компактные устройства.

      Да Вы только посмотрите на эту красоту!


      1. jok40
        09.09.2022 15:45
        +3

        Это ОЗУ. Его можно программно записать и прочитать. В этой же статье предлагается «программировать» ПЗУ механическим способом — продеванием (или не продеванием) провода сквозь колечки.


        1. pavel_raskin
          09.09.2022 16:05
          +2

          Совершенно верно, не отрицаю, в статье о ПЗУ, на фото с "красотой" ОЗУ, но согласитесь, красота же :) В постоянной памяти на ферритовых кольцах проводов побольше и другая эстетика из-за этого, но компактность аналогичная, точнее даже наоборот - удельная ёмкость ПЗУ получалась выше ёмкости ОЗУ при аналогичном объёме устройства.


      1. BurguyMlt
        11.09.2022 11:26

        Это ферритовое ОЗУ.

        Возможно автор напишет вторую часть статьи с построениеммподобного озу


        1. rheinhard Автор
          11.09.2022 11:35
          +1

          Конечно. У меня есть схема матрицы управляемой ардуино, но, там ряд проблем решить надо. И, в идеале, на STM32 какой-нибудь перенести, а то, ардуино - это несерьезно.

          Как разберусь, напишу статью.


          1. pavel_raskin
            11.09.2022 12:01
            +1

            Забавно. Ардуино, значит, несерьёзно, а ферритовая память это серьёзно-серьёзно? :) Тем не менее, лично я точно буду ждать с нетерпением.


            1. rheinhard Автор
              11.09.2022 17:31

              Да это конфликт идей. С одной стороны хочется сделать что-то, дабы любой школьник разобрался и мог повторить, с другой стороны, ардуина - это совсем несерьезно. Я бы мог, например, выпендриться и на ПЛИСине накидать что-то, но, это только усложнит подход и увеличит порог вхождения. Контроллеры на stm32 - это золотая середина, как мне кажется, и вообще полезно для общего развития тех же школьников. Нельзя застревать на одной технологии (нужно выбирать железо и среду под задачу, бла бла бла), и т.п.


    1. rheinhard Автор
      09.09.2022 10:16
      +7

      То же об этом задумывался. Копаясь в статьях, понял лишь, что исходя из каких-то технических проблем вычислительной техники того времени, которые не существуют в наше время, такой способ хранения оказался наиболее подходящим. И программировать и поправить такой блок данных проще, так как один провод проще перевязать, чем перемычки перетыкать. Вязанием подобной памяти можно было озадачить персонал, не имеющий проблем с однообразной рутинной работой и с хорошей точностью движений, потому, этим чаще занимались женщины (Его даже называли из-за этого Woman Only Memory, или Old Lady Memory).


      1. sintech
        10.09.2022 09:29

        Колечки были очень маленькие и перевязать их было сильно не проще чем сейчас перепаять 0402 smd компоненты по одному на бит.


        1. rheinhard Автор
          10.09.2022 11:35

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


          1. sintech
            10.09.2022 11:40

            Про начальную сборку согласен, не речь шла про изменение прошивки.
            Мое (ни на чем не основанное) мнение состоит в том, что вытащить проводок из сотни колечек буде сложнее чем перепаять смд. Особенно в условиях миниатюризации.


            1. rheinhard Автор
              10.09.2022 11:45

              Вытащить несложно. Я пробовал.


      1. Andy_U
        10.09.2022 12:58

        Не вязать, а шить. Кривой иголкой из толстой медной проволоки. Откуда, как вы думаете пошли термины, "(пере)прошить" ROM?


    1. Andy_U
      09.09.2022 21:58

      Вы не представляете размер тех ПЗУ. С одной стороны нижние 64 разряда, с другой верхние. Итого 4096 проводов в лаковой изолыции. Жгут толщиной с запястье. Размер платы - полметра на метр. Я про МИР-1 и МИР-2.


  1. pavel_raskin
    09.09.2022 09:50
    +3

    Отличная возможность физически прикоснуться к основам работы вычислительных устройств. У меня где-то лежит щепотка ферритовых колечек диаметром около миллиметра от "той самой памяти". Реально ли использовать именно их в подобной схеме?


    1. rheinhard Автор
      09.09.2022 10:18

      Любые ферритовые кольца пойдут, разумеется. Единственное ограничение, в маленькие кольца меньше проводов войдет, потому, меньше удастся записать.


  1. deathbel
    09.09.2022 10:18
    +3

    самое наверное интересное это то что этот тип памяти наверное самый вечный, ему не грозит утечка современных флэшей, он не боится статики как электроперезаписываемые или УФ как соотвествующие пзу, если система не под напругой то ей по идее пофиг даже на ЭМИ от ядреного взрыва,

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


    1. rheinhard Автор
      09.09.2022 10:18

      Именно!


    1. Jorell
      09.09.2022 11:19

      Главное, чтоб какой-нибудь злодей мощным магнитом не провёл по кольцам.


      1. Ocelot
        09.09.2022 11:43
        +6

        Здесь информация хранится не в намагниченности колец, а в физическом расположении проводов, так что от магнита ничего не будет. Разве что намагнитить кольцо до насыщения, так, чтобы оно перестало работать как трансформатор? Но с ферритом, мне кажется, такой фокус не пройдёт.


    1. jar_ohty
      11.09.2022 21:36

      Может, оно и выдержит ядерный взрыв, зато не выдержит шаловливых ручек, которые эти тончайшие проводочки на раз обрывают. Или коррозию от сырости. Из-за этого найти рабочий Д3-28, например, почти нереально.


  1. smb_z
    09.09.2022 12:53
    +1

    Видео с практическим применением данной технологии
    https://www.youtube.com/watch?v=tPT6nIRFI_I


    1. sergej_pipets
      09.09.2022 23:16

      У моего тестя был такой. Я же себе, несколько позднее, купил уже с твердотельным статическим ОЗУ (с подпиткой от батарейки, но, как показала практика, за два месяца без батарейки ни одного номера аппарат не забыл).


  1. ionicman
    09.09.2022 13:37

    Пропустим через кольца проводник, помеченный адресом 0. Поскольку каждое кольцо будет опознавать свой бит, то, через кольца с номером бита, который должен быть установлен в 0, мы просто не будем наш проводник пропускать.
    Не понял, если делать так, зачем вообще ферритовые кольца? Можно просто сразу от провода 0 делать ответвления, которые будут единицей? Смысла нет ни в кондере тогда, ни вообще в чем-то кроме матрицы проводников — на ней, как на перфокарте, и будет записаны данные.

    Ну или я не понял, как это работает.


    1. rheinhard Автор
      09.09.2022 13:42

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


      1. ionicman
        09.09.2022 13:54

        Ответ тот тоже не понятен — зачем нужны диоды?

        Предположим, нам надо считать 8 бит — нужные биты в 1 идут к шине VCC, 0 — к шине GND, итого — два управляющих провода для 1 байта.

        Для переключения байтов эти две шины можно обесточивать хоть через галетник, хоть через реле, хоть через те самые диоды, через реле даже удобней — оно сразу два провода может обесточить — итого по 1 управляющему проводу на 1 байт.

        Это если переключать надо, но и для ферритовых колец в этом случае 0 провод нужно будет как-то коммутировать. А если переключать не надо — то в этом случае вообще кроме матриц проводников ничего не надо.


        1. rheinhard Автор
          09.09.2022 14:01
          +1

          Вы слишком серьезно подходите к проблеме, глядя на мой несерьезный пример. А ведь я об этом прямо в начале статьи и говорю.

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


          1. ionicman
            09.09.2022 14:10
            +1

            Ну… как-бы ведь реально были такие ОЗУ (не ПЗУ), я в руках держал такие платы.

            ПЗУ такого типа я не встречал и принцип работы его не знал и не знаю. Прочитав вашу пусть даже академическую статью — я также этого и не понял. Т.е. зачем городить все это, если то, что описано куда проще реализуется простыми перемычками на плате.

            Я без каких-либо наездов — я реально не понял, что дают ферритовые кольца? Перешить их нельзя, только перепаивать — чем это лучше перемычек?

            Вот ОЗУ на ферритах я знаю как работает — там кондер как раз и обеспечивает сохранность информации на определенное, конечное время (время разряда кондера), и за это время можно и считать информацию и успеть приложить напряжение, чтобы ОЗУ продолжало помнить данные (время разряда < времени обновления).


            1. GvrKonstantin
              09.09.2022 15:16
              +3

              Предположим нам нужно 1000 слов памяти на загрузчик.

              если используем очень тонкие провода , впихнем его в 10 колечек.

              Если на перемычках с диодами, получим такую стену, размером с холодильник ... а у нас космос.


        1. MK1301
          09.09.2022 15:59
          +4

          С матрицей проводников не прокатит.

          Пример без диодов с перемычками при чтении адреса ЛА0 на адресной линии нулевой потенциал. На линиях ЛА1, ЛА2, ЛА3 единичка (пусть условно 5 вольт). В итоге линии помеченные КЗ (находятся в состоянии короткого замыкания) D2, D3, D5 и D7. Так что без диодов ни куда.

          Когда разрабатывали первую ферритовую память, полупроводниковые диоды не выпускались, по этому колечки лучшее решение. По сути дела индуктивная развязка на основе трансформаторов вместо диодов. Ну и соответственно каждый прошитый в кольцо провод можно сказать аналог развязки с диодами.


          1. jok40
            09.09.2022 17:48

            С матрицей проводников не прокатит.
            Прокатит, если использовать дешифратор адреса с открытыми коллекторами на выходах или если в каждую адресную линию после дешифратора воткнуть последовательно диод (опять-же появляются диоды, только в другом месте).

            PS: подумал, подумал, посмотрел внимательно на картинку и решил, что нет, всё-таки не прокатит. В этом случае возможно появление ложных нулей на тех линиях, где их быть не должно.


            1. AlexSky
              09.09.2022 18:17

              Не поможет. Посмотрите на схему чуть выше в комментах. Там, например, на линии D2 все единицы и таким образом ЛА0-3 закорочены.


        1. Ocelot
          09.09.2022 16:08

          зачем нужны диоды?

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


          1. ionicman
            09.09.2022 20:34

            Все, вот сейчас понял, про что, спасибо.

            В таком случае, шину питаем всегда, как и землю, но перед дешифратором ставим реле на 8 контактов, при включении которое соединяет наши 8 бит с нужным байтом перемычек? Точно также остаётся 1 адресный провод, управляющий этим реле.


  1. roboter
    09.09.2022 17:53

    А токоограничительный резистор на адресной линии не нужен?


    1. rheinhard Автор
      09.09.2022 18:25

      Вообще, нужен, но, и так сойдет


  1. ibnteo
    09.09.2022 20:26

    А потом можно будет сделать троичные элементы памяти, как в Сетуни.


  1. VT100
    09.09.2022 22:11

    C'est magnifique!


    Только на схеме надо исправить название с 27HC595 на 74HC595.


    И, до кучи, статьи RalphMirebs.


    1. rheinhard Автор
      10.09.2022 11:07

      Точно. Я в последний момент переписывал, ошибся. Думал КР1564ИР52 взять вообще.