Агат-7. Результаты Rev.0 и подготовка Rev.A.

Итак, работы над Rev.0 моей реплики компьютера «АГАТ-7» подходят к завершению. Следующим этапом будет разработка и изготовление Rev.A платы с учетом допущенных ошибок и с новыми идеями. Но прежде, надо обобщить опыт, полученный при работе с платой Rev.0.

На данный момент компьютер Rev.0 запускается и работает. Вот фото рабочей платы:

Хочу обратить внимание, что я концентрировался больше на «железной» части проекта, т.к. «софтовая» часть может дорабатываться и обновляться в дальнейшем. Rev.0 имеет достаточно большое количество ошибок, которые пришлось исправлять на плате. Это не очень простая задача при такой плотности разводки. Давайте пройдемся по блокам системы и посмотрим какие ошибки были совершены и какие улучшения можно внести в Rev.A.

1. Блок питания.

Блок питания работает без нареканий. Используемых радиаторов достаточно для охлаждения. Самый горячий чип схемы — MCP34063, который понижает входное напряжение 15В до 6.7В, которые затем преобразуются в 5В, 3.3В и 1.2В линейными регуляторами. Его температура менее 65С. Температура остальных чипов не превышает 55С. При этом компьютер без «родной» клавиатуры и плат расширения потребляет около 250мА.

При подключении клавиатуры «Агат» потребление увеличилось до 400мА. При этом температура MCP34063 поднялась до 70С. Температура остальных чипов не превысила 65С. 

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

В Rev.A я хочу отказаться от 3-х раздельных выключателей для компютера и двух дисководов. Это решение не оправдало себя, так как вносит помехи в работу системы при произвольном включении. Будет один общий выключатель, который запускает  микроконтроллер дисководов, тогда как запуск самого компьютера будет производиться при нажатии на «софт»-кнопку, когда все предстартовые настройки «дисководов» завершены.

2. Память.

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

В Rev.A я планирую установить SDRAM память вместо SRAM и сейчас я экспериментирую с ней на плате Altera DE1. Это увеличит на 100-200LE размер занимаемый компьютером в ПЛИС за счет контроллера памяти, что несущественно. В качестве же преимущества надо отметить значительно низкую цену этой памяти — 8Мб SDRAM чип стоит примерно столько же сколько 128Кб чип SRAM, но позволит в дальнейшем увеличить объем ОЗУ компьютера или его модификаций, а также разместить там образы дисков, отказавшись при этом от второго микроконтроллера, т.к. в этом случае один микроконтроллер будет в состоянии обслуживать оба дисковода.

3. Клавиатура PS/2.

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

4. Интерфейс пультов.

У меня нет пультов для проверки и без дисковода я не могу загрузить программу тестирования, чтобы проверить работу, но при подаче входного сигнала на узел, выходной сигнал соответсвует ожидаемому и меняется в зависимости от подключенного на вход сопротивления — по аналогии с потенциомером в пульте. Изменений этого узла в Rev.A не планируется.

Возможно, что разъем будет вынесен на плату раширения. Это будет зависеть от наличия места в выбранном корпусе.

5. Интерфейс оригинальной клавиатуры.

Клавиатура работает и схема подключения изменений не требует.

Возможно, что ее разъем тоже будет вынесен на плату раширения.

6. Магнитофонный вход/выход.

Выход работает как ожидалось.

В схеме входа потребовалось притянуть выход компаратора к земле при помощи 100К резистора. Без него узел не работал. Однако испытания показали, что чтение работает очень неустойчиво. На макетке я собрал схему аналогичную используемой в «Apple II», но с LM324, которая не требует двухполярного питания. Испытания показали, что в отличие от схемы на компараторе, уровень выходного сигнала при питании усилителя 3.3В составляет лишь 2.1В, а при питании 5В — 3.9В. Последнее напряжение находится на верхней границе допустимого для ПЛИС (4.1В), но в схеме осталось несколько неиспользуемых ног конверторов уровней, и их можно задействовать для понижения уровня сигнала.

Второй вариант, использовать 2.1В сигнал (порог срабатывания у ПЛИС 1.8В), что я пока и сделал. 

Запись и чтение информации с этой схемой производится почти без ошибок (на 10 чтений тестовой записи была лишь одна ошибка). Уверен, что качество чтения еще улучшится при использовании 3.9В сигнала (питание усилителя 5В). Также без ошибок читаются записи, сделанные на эмуляторе «АГАТ-7». Эмулятор, в свою очередь, без ошибок читает записи с магнитофонного выхода компьютера.

В Rev.A я применю схему на LM321 (одинарная версия LM324), но запитаю ее от 5В и задействую один из неиспользуемых входов конвертора уровней для преобразования сигнала до 3.3В.

7. Видео-выход.

Все три видео-выхода (VGA, S-video и RCA) работают. Вот фото VGA и S-Video:

VGA монитор:

Телевизор через S-Video:

S-Video имеет слегка сероватый фон в сравнении с VGA, но кроме этого качество отличное. RCA выход выводит приемлемую картинку, но в сравнении с S-Video все же заметны артефакты при близком рассмотрении.

Тактовый генератор по моей начальной схеме для поднесущей не запустился. Пришлось генерировать его в ПЛИС и подтягивать к схеме проводом. В Rev.A генерация этого сигнала будет так же производиться в ПЛИС, так как результат вполне приемлем. Помимо этого, выбор режима PAL/NTSC не будет жестко зафиксирован на PAL, а будет подключен к ПЛИС для расширения возможностей конфигурации устройства в дальнейшем.

8. Звук.

Используемая схема работает и никаких изменений не требуется.

9. Процессор.

Процессор и все преобразователи уровней в его схеме работают без замечаний. Единственное изменение, которое надо будет внести в схему Rev.A, это подтягивать ногу RESET процессора к земле, вместо питания. Это позволит придержать запуск процессора до тех пор, пока не стартует ПЛИС.

10. Разъем расширения.

Не проверялся, так как не хотелось припаивать редкий «родной» разъем к этой временной плате. Схема подключения однако весьма примитивна, так что проблем я там не ожидаю. В Rev.A я не буду размещать этот разъем на плате. Вместо этого я установлю на плате стандартный разъем, к которому через переходник можно будет подключить плату расширения «АГАТ-7». Это расширит функциональность устройства, так как к нему можно будет в дальнейшем подключать и другие устройства лишь изготовив другой адаптер.

11. ПЛИС.

ПЛИС заполнена лишь на 25%. При этом большинство функций реализовано. По завершении проекта я не думаю, что заполнение ПЛИС превысит 50%, так что в Rev.A будет использована та же ПЛИС.

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

В Rev.A я планирую конфигурировать ПЛИС микроконтроллером «дисковода». Для этого придется добавить Flash ROM и соединить его с STM32 по SPI. Такой чип стоит менее $0.5. Дополнительным преимуществом такого решения, помимо удешевления, будет отсутствие необходимости иметь программатор для Altera для сборки компьютера, т.к. новые прошивки конфигурации можно будет просто загружать с SD карты. Однако в Rev.A я также оставлю возможность конфигурации ПЛИС при помощи USB-Blaster для упрощения разработки и тестирования.

12. Дисководы.

На посадочном месте микроконтроллеров STM32 оказались перепутаны выводы. Часть из них удалось пофиксить простым переназначением ног, тогда как другую пришлось исправлять проводами. Так как схемы 140К и 840К аналогичны, я ограничился на плате Rev.0 отладкой только 140К модуля. Работа с SD картой и LCD дисплеем осуществляется без проблем. Однако обмен с ПЛИС я планирую отлаживать уже в Rev.A по выше указанной причине. Я не ожидаю проблем в этой части, т.к. на отладочных платах коммуникация работала (не считая проблем связанных с длиной проводов).

В новую схему будут добавлены возможности прошивки ПЛИС и работы с Flash ROM. Кроме того, некоторые неиспользуемые ноги будут выведены на площадки на случай необходимости их использования — подпаиваться к ногам микросхемы в корпусе QFP мне не понравилось 🙂 .

В Rev.A будет принципиально изменена схема взаимодействия с дисководами. Вместо двух независимых микроконтроллеров будет примемен лишь один, который будет записывать образы дисков 140К и 840К в SDRAM память, откуда ПЛИС будет сама брать нужные байты. По завершении работы с образом микроконтроллер будет считывать его из SDRAM и записывать обратно на SD-карту (если, конечно, образ не был открыт в режиме только чтения).

Для отображения информации будет использоваться подключенный к контроллеру цветной LCD диплей 3.2″ с тачскрин, который позволит так же отказаться от дип-переключателей выбора видео-сигнала, клавиатуры и пр. просто используя кнопки на экране и передавая выбранные опции по шине I2C в ПЛИС от микроконтроллера. Такой дисплей весьма недорог ($15-$25) и позволит так же сэкономить место на лицевой панели.

Как говорилось выше, в Rev.A микроконтроллер STM32 при запуске будет конфигурировать ПЛИС, используя для этого конфигурацию, записанную в Flash ROM (и обновляемую с SD карты). Объем этих микросхем памяти — от 1Мбайт. Размер конфигурации ПЛИС составляет менее 160К. Таким образом, даже в одну из самых дешевых микросхем можно записать до шести конфигураций. Это означает, что при запуске, можно будет выбирать какую конфигурацию загружать в ПЛИС на LCD дисплее. Другими конфигурациями помимо «АГАТ-7», могут быть, к примеру, «АГАТ-9», «Apple IIe», «Commodore VIC-20», «Atari» и пр. Т.е. любой компьютер с процессором 6502. Так как разъем раширения теперь будет вынесен наружу, то для каждого из компютеров можно будет создать адаптер, который будет содержать слот раширения и прочие функции и разъемы, специфические для конкретного компьютера (к примеру, разъем для родной клавиатуры или мыши). Также можно будет предусмотреть возможность определения подключенного адаптера и автоматического запуска соответствующей конфигурации при старте устройства. Возможность ПЛИС переключаться между PAL и NTSC при выводе на TV и дополнительный объем памяти на плате, дополнительно улучшают гибкость устройства.

Размер платы Rev.A так же будет изменен. Если плата Rev.0 создавалась без оглядки на размер, стараясь лишь уменьшить стоимость ее изготовления, то плата Rev.A будет создаваться под ее размещение в корпусе. Я выбрал корпус «Hammond-1598E» как недорогой и достаточно распространенный. Он имеет подходящую площадь лицевой и задней панелей для размещения разъемов и элементов управления.

Таким образом, проект трансформируется из реплики компьютера «АГАТ-7» в универсальное и компактное устройство — реплику целого ряда ретро компьютеров. Причем для добавления новых компьютеров в большинстве случаев понадобится лишь перепрошить Flash ROM конфигураций с SD карты и изготовить новый адаптер расширения. Зачастую даже не потребуется перепрошивка микроконтроллера «дисководов», если новый компьютер использует совместимые дисководы. В дальнейшем можно подумать об обновлении прошивок микроконтроллеров дисководов также с SD карты, но это уже планы не для Rev.A, хотя, если оставшийся объем памяти в микроконтроллере позволит разместить bootloader, может быть реализовано и на этой плате.

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

4 thoughts on “Агат-7. Результаты Rev.0 и подготовка Rev.A.

    1. I’ve got a small kid and still don’t have enough time for such a big project, so I fulfill my hobby with very small projects now. The board’s hardware is ready and running its basic functions. The computer launches with SDRAM and can output to VGA and TV. The challenge is to make the sd-card floppy drive working. As an alternative I’ve tried the HxC floppy emulator with some success. I’m planning to return to this project as soon as I can have enough spare time for it.

    1. It might be a good idea. But I still need to complete the prototype first. Also, it relies on original 6502 CPU which stock is quite limited. 65C02 has slightly different op codes, so it is not a good substitute. Existing VHDL versions of this CPU are not ideal as well.

Leave a Reply