У многих сохранились дома компьютеры Amiga. Но вот дискеты к ним сохранились не у всех. Эту проблему можно решить, собрав эмулятор дисковода. О том, как сделать самому такой эмулятор дисковода для Amiga я и расскажу в этой статье.

Я долго думал, где разместить эту статью — здесь или на geektimes. С одной стороны, она касается разработки для микроконтроллеров, а с другой речь пойдёт о разработке устройства для очень старого компьютера, тема о которых находится на geektimes. Однако, на geektimes описываются сами устройства и программирование для них на их API, а здесь всё-таки, устройство собрано на почти современной элементной базе.

У некоторых дома сохранились компьютеры Amiga, кому-то такой компьютер могли просто отдать (как мне), а кто-то специально себе его купил. И иногда бывает так, что компьютер есть, но на нём нет винчестера (например, у меня на Amiga 500 его нет), а запустить что-то на нём хочется. Возиться с дискетами (которые можно записать на PC только с помощью специальных устройств) не вариант. Вот и выбирают люди эмуляторы дисководов. Сейчас их предлагается довольно много, но вот несколько лет назад таких устройств ещё почти не было. Насколько мне известно, первым эмулятор дисковода для Amiga сделал tnt23. Можно было, конечно, купить у него эмулятор, но хотелось всё-таки попробовать свои силы в создании собственного, тем более, что в попытке запустить этот компьютер я на тот момент уже создал простое устройство для записи дискет, и в целом формат дискеты проблемы не представлял. Описываемая статья была когда-то написана для журнала Dogma, но не попала в выпуск этого журнала потому, что про неё просто забыли. Однако, я знаю, здесь есть амижники и, думаю, им будет интересно прочесть, как можно сделать свой собственный эмулятор дисковода. Быть может, эта информация подтолкнёт кого-то к созданию своего устройства, гораздо более совершенного. Итак, начнём.

Описанный ниже эмулятор дисковода достаточно несложен сборке и не содержит дефицитных деталей. Проблема может возникнуть лишь с поиском 30 контактных модулей SIMM ёмкостью 1 МБ. Однако, такие модули были широко распространены и, скорее всего, их можно найти на радиорынках. На Юноне в СПб они точно были.

Список деталей для сборки:

Марка применяемых конденсаторов, диодов, резисторов, дросселя, кнопок и держателя SD-карты значения не имеет. Диоды требуются обязательно с падением напряжения на переходе не менее 0.5 В. Дисплей может быть с другими буквенными индексами.

Эмулятор подключается в разъём внешнего дисковода и позволяет воспроизводить выбранный образ дискеты. Образы дискет хранятся в корневом каталоге на SD-карте с файловой системой FAT16. Файлы создаются специальной программой-конвертером файлов ADF и представляют собой побайтные данные стандартной 80 дорожечной дискеты, закодированные с помощью MFM кодирования. Никаких заголовков такие файлы не содержат. Ввиду упрощения схемотехники эмулятор не имеет аппаратной возможности переводить линии дисковода в Z-состояние в зависимости от того выбран ли дисковод A или B. Это значит, что все дисководы Amiga требуется аппаратно отключить во время работы с эмулятором. Однако, возможность распознавать адрес дисковода теоретически предусмотрена программно – для этого требуется чтобы микроконтроллер опознавал адрес и переводил выходы в Z-состояние, если адрес не соответствует нужному. Линии для чтения адреса дисковода на схеме предусмотрены, но программно такая возможность не реализована.

Схема эмулятора (в архиве она есть в полном качестве).


Внешний вид эмулятора со стороны дисплея.

Схемотехнически эмулятор состоит из двух частей. Каждая из частей основана на микроконтроллере Atmega16. Микроконтроллер первой части занимается выводом информации на дисплей, обработкой кнопок, чтением информации с SD-карты с использованием аппаратного SPI, формированием части линий дисковода. Микроконтроллер второй части занимается регенерацией динамической памяти и формирует остальные сигналы линий дисковода. Обе части обмениваются информацией по шине SPI. Для контроллера D2 шина SPI для связи с D3 программная, а в D3 задействован аппаратный SPI.

Рассмотрим подробнее назначение элементов. Микросхема D1 обеспечивает питание SD-карты напряжением 3.3 В. Диоды VD1-VD6 понижают напряжение линий SPI c 5 до 3.3 В. Резисторы R1-R6 и R8-R9 притягивают линии к земле. RC-цепочки R7-C3 и R11-C5 формируют сигнал начального сброса микроконтроллеров. Элементы Z1, C1 и C2 обеспечивают генерацию 16 МГц на первом микроконтроллере (D2). Второй микроконтроллер (D3) работает в режиме внешней синхронизации от тактового генератора первого микроконтроллера. Резистор R10 управляет контрастностью изображения на дисплее. Элементы L1 и C4 обеспечивают фильтрацию напряжения источника питания.

Аппаратная часть эмулятора дисковода собирается на плате размерами 220x125 мм. Печать односторонняя, выполняется любым доступным методом, например, ЛУТ. На противоположной печати стороне платы необходимо поставить ряд перемычек проводом (отображены синими дорожками в прилагающемся файле печатной платы в формате Sprint Layout 4.0).

Программная часть эмулятора состоит из двух программ для микроконтроллеров. Программа для микроконтроллера D2 находится в папке MK1, а для микроконтроллера D3, соответственно, в папке MK2. После прошивки микроконтроллеров соответствующим HEX-файлом любым доступным способом (в том числе, для прошивки можно использовать схему “пять проводков в LPT-порт компьютера” совместно с программой программатора Uniprof), необходимо выставить FUSE-биты конфигурации контроллеров. С помощью этих битов необходимо в обоих контроллерах отключить JTAG, переключить D2 на тактирование от внешнего кварцевого резонатора 16 МГц, включить для D2 увеличенную амплитуду сигнала с осциллятора на выходе (бит CKOPT), а D3 переключить на тактирование от внешнего источника. Если ваш программатор не имеет собственного тактового генератора, контроллеры после этой операции будут недоступны для программирования. Чтобы они снова стали программируемыми потребуется подключить к XTAL1 контроллеров любой внешний генератор с частотой несколько сотен килогерц. Обязательно перед модификацией FUSE-битов считайте их с контроллера. Обратите внимание, что разные программаторы по-разному трактуют включенный и выключенный бит.

Эмулятор не требует наладки после сборки. Однако, возможно, не все модули SIMM 30 PIN будут корректно работать с ним. Для этой цели в меню эмулятора есть пункт “ТЕСТИРОВАНИЕ ПАМЯТИ”.

Для облегчения понимания работы программного обеспечения эмулятора необходимо знать следующее. На стандартной дискете Amiga хранит записанные данные по 80 дорожек с двух сторон. Каждая дорожка состоит из 11 секторов по 512 байт. Следовательно, полный объём данных дискеты 901120 байт. Именно такой объём имеют ADF-файлы образов дискет. Такой файл не содержит заголовков, а данные внутри просто перечисляются следующим образом: (дорожка 0, сторона 0), (дорожка 0, сторона 1), (дорожка 1, сторона 0), (дорожка 1, сторона 1)… (дорожка 79, сторона 0), (дорожка 79, сторона 1). Каждая дорожка — это запись 11 секторов по 512 байт начиная с 0 сектора. Для эмуляции дискеты такой файл в чистом виде не подходит. Дело в том, что ADF файл хранит только полезные данные безо всякой служебной информации и без модуляции. Рассмотрим, как осуществляется модуляция сигнала в компьютере Amiga.

Любой дисковод представляет из себя не более, чем аналог магнитофона. Он никак не кодирует записанные данные. Вы выбираете дорожку и модулируете ток (а, следовательно, и напряженность магнитного поля) через головку дисковода для записи информации. При воспроизведении в местах, где напряженность магнитного поля изменялась, дисковод считывает короткий импульс. Amiga использует при записи на дискеты модифицированную частотную модуляцию, так называемую MFM (Modified Frequency Modulation). При таком способе модуляции изменение тока через катушку зависит не только от значения записываемого бита, но и от значения предшествующих бит, как показано в таблице ниже. В графе “кодируется” R означает смену намагниченности (подачу импульса дисководу), а N — намагниченность не изменяется. В дальнейшем для записи MFM файла в бинарном формате примем R равным 1, а N равным 0. В MFM файл записываются уже на один бит данных два бита смены намагниченности. Таким образом, размер данных MFM файла по сравнению с ADF файлом будет удвоенный. Но просто преобразовать ADF в MFM нельзя. Amiga использует свой собственный формат записи на дискеты, который потребуется учесть.



Условимся номером трека называть номер дорожки на одной из сторон диска (т.е. номер трека изменяется от 0 до 79), а номером дорожки ((2*номер трека)+номер стороны диска). Номер дорожки изменяется от 0 до159, номер стороны диска изменяется от 0 до 1, номер сектора изменяется от 0 до 11.

В формате Amiga каждая дорожка содержит:

  1. Начальный зазор (128 байт MFM кода 0x00).
  2. Данные 11 секторов по 544 байта на сектор.
  3. Конечный зазор (704 байта MFM кода 0x00)

Каждый сектор содержит:

  1. Маркер начала сектора.
  2. Идентификатор сектора (4 байта: 0xFF, номер дорожки, номер сектора, смещение сектора. Смещение сектора вычисляется как 11 минус номер сектора на дорожке.)
  3. Метка сектора (16 байт 0x00).
  4. Контрольная сумма заголовка (4 байта).
  5. Контрольная сумма данных (4 байта).
  6. Данные сектора (512 байт).

Идентификатор и данные секторов закодированы перестановкой битов. Для идентификатора берутся 4 байта и переставляются биты. Сначала идут нечётные биты (нумерация битов, как обычно, с 0) – это составит 2 байта. Затем идут чётные биты – так же 2 байта. Таблица иллюстрирует вышесказанное. Верхняя строка – стандартный порядок битов (номера в ячейках), нижняя – результат перестановки.



Данные секторов группируются по 2 байта, и перестановка происходит внутри этой пары аналогичным образом:


Контрольная сумма представляет собой операцию исключающее ИЛИ (XOR) всех байт данных сектора или заголовка (с учётом перестановки битов!), сгруппированных по 2 байта. Сама контрольная сумма не подвергается перестановке битов. Хотя поле для контрольной суммы 4 байтное, сама контрольная сумма получится двухбайтная.

Помимо 544 байт данных, закодированных с помощью MFM кодирования, каждый сектор содержит специальный маркер начала данных. Маркер представляет собой комбинацию нулей и единиц, которую невозможно получить MFM-кодированием. Такой комбинацией является комбинация 01000100100010010100010010001001 перед записью которой записываются 4 байта с комбинацией 10101010. Первый байт комбинации 10101010 зависит от предыдущего выданного с помощью MFM кодирования бита. Если последний выданный бит сектора был 1, то этот байт будет равен 01000100, а если там был 0, то 10101010.

Учитывая всё вышеизложенное, дорожка дискеты в формате MFM выглядит так:

  1. Начальный зазор: 128 байт 00000000.
  2. Маркер начала данных сектора:

    10101010 (этот байт зависит от последнего записанного бита и может быть 01000100)
    10101010
    10101010
    10101010

    01000100
    10001001
    01000100
    10001001
  3. Данные сектора без маркера: 1080 байт на сектор.
  4. Повторить с шага 2 для всех 11 секторов.
  5. Конечный зазор: 704 байт 00000000.

Итого, каждая дорожка в MFM-кодировании занимает (1080+8)*11+128+704=12800 байт кода. Если теперь этот код выдать на линию данных с дисковода учитывая временную развёртку дорожки, то Amiga сможет прочесть данные этой дорожки.

Проблема состоит в том, что длительность импульсов данных составляет от 0.15 до 0.8 мкс. В данном эмуляторе выбрана длительность импульсов 0.5 мкс. Это означает, что на частоте работы контроллера 16 МГц у нас будет 32 такта на бит MFM кода. За эти 32 такта микроконтроллер D3 должен производить регенерацию динамической памяти, считывание байта MFM-кода, выдачу бита смены намагниченности на линии дисковода. Чтобы уложиться в 32 такта, эта часть программы написана на ассемблере и строго выровнена по тактам. Операции чтения байта и регенерации памяти разнесены во времени. Это значит, что пока выдаётся побитно байт MFM кодирования, на каждый бит имеется 32 такта и для каждого выдаваемого бита строго определено, какие именно операции мы в эти 32 такта выполняем. Например, при выдаче бита 0 мы можем установить строку динамической памяти (сигнал RAS). При выдаче бита 1 мы можем установить столбец динамической памяти (сигнал CAS). При выдаче бита 2 мы считываем следующий выдаваемый байт данных. И так далее. Таким образом выдаётся весь образ дискеты.

Собственно, вот и получился простейший эмулятор дисковода.

Видео работы эмулятора:


Архив с печатными платами, прошивками, схемами и программами.
Поделиться с друзьями
-->

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


  1. vulybin
    10.06.2017 21:59
    +1

    Крутотень!


    1. da-nie
      10.06.2017 22:02

      Настоящая крутотень у tnt23. :) У него всё на одном контроллере — мне такое недостижимо (шаг ножек у таких контроллеров мал, нужно у китайцев платы заказывать, но я до этого ещё не дошёл).


      1. Fox_exe
        11.06.2017 12:42
        +1

        А если на STM32?
        Можно даже немного упростить себе жизнь, сделав из неё Arduino (проект stm32duino).
        По цене не шибко дороже получится.


        1. da-nie
          11.06.2017 20:18

          Можно и на STM32. Главное, продумать, как. Дисковод только кажется простой и медленной игрушкой, но по факту тайминги там очень маленькие и для их отработки в машинах использовались чисто аппаратные средства.


  1. m0xf
    10.06.2017 22:02
    +2

    Как я понял, память используется для хранения всех данных дискеты. Не совсем понятно, зачем это сделано. В дисководах же применяется механика, а значит есть приличные задержки при переходах между дорожками, и можно подгружать данные напрямую с карты в эти моменты.


    1. da-nie
      10.06.2017 22:04

      Да вот есть и такие устройства. Непонятно, только, как работающие:

      1) SD-карта пишет и читает блоками по 512 байт. После выдачи ей 512 байт на запись происходит пауза, пока контроллер карты запишет данные и ответит.
      2) Импульсы перемагничивания имеют длительность 0.1-1.1 мкс. На частоте 40 МГц это будет от 4 до 40 тактов. Внешнее прерывание такое отловит, но всё равно, время мало…
      3) Между импульсами перемагничивания 2 мкс.

      Выходит следующее. Запускаем SD-карту на выдачу блока 512 байт, считываем его побайтно и выдаём данные. Одновременно ловим прерывание перемагничивание и заполняем буфер на 512 байт. По окончании (если была запись) забрасываем этот блок на SD-карту. При этом нужно постоянно анализировать смену дорожек и поверхности диска (если смена будет когда SD-карта ещё не дочитала блок, нам придётся завершать чтение и дозаписывать карту). Запись блока на SD-карту займёт 512 байт*8 бит в байте/20 000 000 бит в секунду по spi *1000000 микросекунд в секунде= 205 мкс без учёта задержки на ответ контроллера. Это значит, что мы гарантированно пропустим импульс перемагничивания на стыках блоков.


      1. SADKO
        12.06.2017 11:52

        Я конечно уже нефига не помню, но не для этих-ли целей была 34 нога, что бы её поднимать на это время?


        1. da-nie
          12.06.2017 12:13

          Да, есть такая штука — Disk Change. Но Amiga всё равно недовольна. :)


  1. ukt
    11.06.2017 00:59
    +1

    А если взять такой алгоритм:
    при команде считать сектор по определенной дорожке — считывать всю дорожку в определенное место в DRAM.
    при следующей комманде считывания сектора другой дорожки — аналогично

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

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


    1. beeruser
      11.06.2017 02:48
      +1

      >> комманде считывания сектора
      AFAIR с флопа Amiga читает дорожку целиком и декодирует MFM «ручками».


    1. da-nie
      11.06.2017 07:10

      У меня была первая версия, где я считывал и хранил одну дорожку во внешнем ОЗУ. Но не успевает atmega на 16 МГц такой фокус проделать — при всей механике дисковода, он всё-таки довольно быстр. Amiga не хотела долго ждать, и периодически выбрасывала ошибку чтения. Поэтому от этого варианта я ушёл. Тут нужен контроллер побыстрее.


  1. Nick_Shl
    11.06.2017 07:48
    +3

    Atmega… ребята, 21 век на дворе! Платка в Китае на STM32103C8T6(гуглить по маркировке) стоит меньше 2-х баксов! Гонится до 128Mhz(вместо штатных 72-х) легко! Прошиваются все 128Kb ROM(вместо гарантированных 64Kb), RAM 20Kb. Дисплей можно взять на ILI9341 и подключить по SPI. При желании можно взять с тачскрином и подключить все на один SPI. Всего их два, так что и на SD-шку хватит. А уж про DMA даже не говорю — запихал в буфер, скомандовал "Шли!" и сам делаешь что хочешь.
    Ну а если без внешней памяти уж совсем никак — смотреть в сторону Nucleo с большими чипами с кучей выводов и Flexible Memory Controller.


    1. da-nie
      11.06.2017 07:52

      Ну, это понятно. Только не было у меня STM32 на момент разработки этого эмулятора. А был ЛУТ и микросхемы в dip и soic.


    1. da-nie
      11.06.2017 08:14

      Ну и ещё atmega очень простая в программировании и очень предсказуемая по работе (дёрнуть ножку порта — 2 такта и так будет всегда) — почти как мой любимый Z80. У stm32 всё-таки повозиться придётся много с настройками регистров. Вот к примеру, я не уверен, может ли DMA дёргать ножками с длительностью 0.5 мкс и периодом 2 мкс и выдавать развёртку байта последовательно? Тут, наверное, spi надо к DMA подключать — он как раз последовательно биты выбрасывает. А подключается он так? Не знаю. Надо смотреть документацию.
      Вот, если лень поборю, напишу следующую статью про копирование RFID-меток стандарта em-marin. Там тоже у меня atmega8 использована, как очень простая и удобная. А плату с stm32 я приберегу для подключения по USB тепловизора Flir One. Правда, я ещё не читал, умеет ли режим хоста stm32.


      1. Armleo
        11.06.2017 10:16
        +1

        Режима хоста в stm32f103c8t6 нету. В старших даже Ethernet и SDRAM есть.


      1. Armleo
        11.06.2017 10:21
        +1

        Дергать ножками (модифицируя все 16 значений ножек) частота 72/4=18 MHz через dma.
        Время редактирования истекло :(


        1. da-nie
          11.06.2017 10:26

          Не, я заказал STM32F103VET6 для модуля Lepton, но решил сам модуль из тепловизора не вытаскивать, а подключить по USB. Но пока не смотрел, что там на борту кроме большого ОЗУ.

          Дергать ножками (модифицируя все 16 значений ножек) частота 72/4=18 MHz через dma.


          Побитно? Просто выдавать надо побитно. Иначе 12800 байт дорожки превратятся в 102400 байта (12800*8).


          1. Armleo
            11.06.2017 10:49
            +1

            Ножками можно дергать процессором. Все остальное через DMA (screen, sd). Я себе FPGA купил. Его ресурсов хватит на такую задачу. FMC (fmc != fsmc прочитайте разницу в гугле) можно для доступа к памяти.


            1. Armleo
              11.06.2017 10:55
              +1

              В вашей плате есть: SDIO, LCD Controller, fsmc (контроллер статической памяти (sram, nand, nor)). А как вы смотрите на FPGA для таких задач?


            1. da-nie
              11.06.2017 20:12

              Ножками может и не получится. А FPGA штука замечательная. :)


  1. Byteman
    11.06.2017 10:23
    +3

    AMiGA RULEZZ FOREVER!!!!


    1. da-nie
      11.06.2017 10:27
      +1

      Вы, случайно, не тот Byteman с zx.pk.ru? :)


      1. Byteman
        11.06.2017 11:49
        +1

        тот :)


        1. da-nie
          11.06.2017 20:40
          +4

          Как думаете, стоит сюда разместить статью про эмулятор магнитофона для спектрума? Ему, конечно, много лет и все его давно видели, но вдруг кто-то не видел? Этот эмулятор, конечно, не такой навороченный, как у Trol73, но главное там ведь не сам эмулятор, а разбор кодирования сигнала для тех, кто не знает формат сигнала спектрума.


          1. VBKesha
            11.06.2017 21:33
            +2

            Однозначно стоит!


          1. Byteman
            12.06.2017 21:35

            А чего у меня спрашиваете то? :) Конечно стоит!


            1. da-nie
              12.06.2017 22:01

              Да есть подозрение, что здесь эта тема почти никому не будет интересна. По крайней мере, статей по работе со столь старыми компьютерами тут мало.


            1. da-nie
              13.06.2017 09:38

              Вот про эмулятор магнитофона. Особо, правда, там нечего и писать. Но вдруг кому интересно будет.


  1. jok40
    11.06.2017 10:45
    +1

    Две линейки SIMM общим объёмом 2 мегабайта? Довольно странный выбор в наше время. Не проще было поставить одну статическую озушку? Например, вот такую: IS61WV20488BLL.


    1. da-nie
      11.06.2017 10:47

      Это, конечно, гораздо удобнее было бы. Но в ЧиД, например, такие микросхемы строго под заказ и стоят 1890 р. штука и то BGA-корпус. Ну и корпус TSOP у неё с маленьким шагом между ножками.


      1. jok40
        11.06.2017 11:03
        +1

        Ну на алиэкспрессе такую озуху в TSOP-корпусе можно было бы раза в два дешевле найти — в районе 12-15 баксов вместе с доставкой. У TSOP шаг — 0.8 мм. Если печатку вручную рисовать, то конечно будет трудновато. Если же воспользоваться лазерно-утюжным методом, то нормально.


        1. dmitryrf
          11.06.2017 20:12
          +2

          Хозяйке на заметку — на али полно плат-переходников с soic/tssop/tqfp на пины 2.54. Очень удобно, например, распаять ОУ в SO8 и воткнуть в макетку.


          1. da-nie
            11.06.2017 20:13

            Так можно всё что угодно сделать! :) Главное — фантазия. Я для того и привёл формат дискеты, чтобы нашлись энтузиасты и сделали что-то офигенное. :)


  1. VBKesha
    11.06.2017 11:28
    +1

    Статья супер!
    Однако хотелось бы увеличивающуюся схему по клику.


    1. da-nie
      11.06.2017 20:16
      +1

      Спасибо.
      Да я бы с радостью, но не знаю, как.


    1. da-nie
      11.06.2017 21:56

      Всё, сделал. :)


  1. VT100
    11.06.2017 16:21
    +1

    1. Если уж память (DRAM) с параллельной шиной — то мог оказаться более приемлемым ATmega162 с полноценной внешней шиной (PortA/PortC). Не учерен, правда, насчёт достаточного совпадения с временной диаграммой EDO-памяти — с ней давно не сталкивался и никогда не использовал сам. Но, например, NAND-Flash прицепилась на внешнюю шину (ATmega162 и AT90USB128x) как родная.
    2. Какое-то странное согласование уровней между D2 (5 В) и SD-картой (3.3 В). Высокое свободно лупит с выходов контроллера в карту. Или что это такое, на VD1-VD6? (Смотрю по схеме в шапке статьи).


    1. da-nie
      11.06.2017 20:15

      1. О, я такой вариант не смотрел. :) Я с 162 дел просто не имел, поэтому не знаю, что она умеет.
      2. На диодах падает разница между 5 и 3.3 В.


      1. VT100
        11.06.2017 23:15

        2. На диодах падает разница между 5 и 3.3 В.

        Тогда их надо взять штуки три-четыре последовательно. На одном — 0.7 Вольта (1N4148, КД522 и т.п.).


        1. da-nie
          12.06.2017 07:19

          Так а не нужно больше двух. Там около 3.5 В получается, и это в пределах допустимого.


          1. VT100
            12.06.2017 12:07

            Да, про 3..4 погорячился. rounddown([5-3.3]/0.7) ~ 2.
            «Там» — это на входе карты? Это значит, скорее всего, что уже приоткрывается защитный/паразитный диод в карте и сливает излишки входного тока в цепь 3.3 В.


            1. da-nie
              12.06.2017 12:15

              Да, на входе карты. Конечно, защита гасит оставшиеся 0.2 В. Но карта тянет, насколько я помню, до 3.6 В, так что никаких проблем с ней не возникает. Можно, кстати, сделать её питание 3.6 В, заменив стабилизатор.


  1. VT100
    12.06.2017 13:40

    Можно, кстати, сделать её питание 3.6 В, заменив стабилизатор.

    Нельзя. Тогда напряжение на входах ещё подрастёт.


    1. da-nie
      12.06.2017 13:43

      Почему? Оно наоборот будет в полном балансе с напряжением после диодов.


      1. VT100
        12.06.2017 23:11

        Отнюдь. Вот картинка.
        image
        В любом случае — напряжение на линии ввода-вывода карты превысит её напряжение питания (насколько — зависит от кремниевой технологии, как правило — плюс 0.6-0.7 В).
        И учитывайте, что стабилизатор питания карты может только выдавать ток на свой выход. Если через диод в карте будет натекать ток больше тока потребления карты, то стабилизатор её питания закроется и напряжение на её выводе питания станет расти.


        1. da-nie
          13.06.2017 06:11

          Так ведь это другая ситуация. Тут же будет вот что: если карту запитать от 3.6 В, то на входах напряжение 3.6 В останется (оно задаётся двумя диодами и резистором подтяжки).) Следовательно, это никак не скажется на повышении уровня до 4.2 В (на 0.6 В) на входах карты.

          Сейчас же сделано именно так, как у вас на рисунке. Карта питается 3.3 В. Следовательно, чтобы полностью открыть защитный диод нужно 4 В. А подаётся на вход 3.6, которое растекается дальше по внутренним входным элементам схемы карты. Кстати, там входе наверняка полевик стоит какой-нибудь и ему особо пофиг эти 0.3 лишних вольта.