Платы расширения для ZX Cube
После сборки "Пентагона в кубе" (мой первый проект в рамках проекта ZX Cube), которую я описал в этой статье, я убедился что идея вполне работоспособна и можно продолжать копать дальше. То есть надо было развести дополнительные платы, чтобы обеспечить "Пентагон в кубе" постоянной (а не через слоты расширения) поддержкой мыши, подключению к IDE-устройствам и, конечно же, DivMMC.
Для поддержки IDE, я решил переразвести довольно-таки стандартную плату NemoIDE:
Схема вот такая. Однако, подключать к нему реальный жесткий диск IDE-формата я не собирался (хоть они у меня и есть), потому что это, как минимум, громоздко и ещё для этого нужен блок питания с +12В. Ну и втыкать переходник с CompactFlash на IDE - идея не то чтоб сильно разумная, ему тоже питание нужно, хоть и только +5В, но пришлось бы его навешивать отдельным хвостом. Поэтому я решил сразу встроить этот переходник в эту же плату и заодно предусмотреть несколько вариантов подключения. В итоге доразводил до двух разъемов CompactFlash (один чисто внутренний) и одного обычного IDE.
|
|
Схему переходника сначала взял вот эту, но когда уже отлаживал плату вскрылись кое-какие косяки по сигналам, поэтому проверял уже в итоге вот по этой:
В итоге оказалось, что критичен только один неподведенный сигнал, а он элементарно на плате просто спаивается с рядом идущим. Ну и сам налажал с сигналом MASTER/SLAVE, почему-то подумав, что он выбирается высоким уровнем. Ну это тоже решается одним резистором. Так что плата всё-таки оказалась рабочей, пусть и с парой фиксов. Вот пример работы данной платы:
Сразу же выяснилась необходимость обеспечения ещё одного арбитра сигнала IORQ/, поскольку этот сигнал активно задействован во всех этих платах, а в изначальной плате-"райзере" с внешними слотами арбитр был только на эти самые внешние слоты, а для внутренних ничего не было. Поэтому пришлось плату-"райзер" переразводить уже с двумя микросхемами ЛЛ1 вместо одной. Ну и как-то надо было эти пары сигналов IORQ/ и IORQGE/ разводить по этим платам. Для этого и была добавлена гребенка слева внизу платы из 16 контактов (4 пары IORQ/ и 4 пары IORQGE/), чего вполне достаточно для 4 внутренних плат (плюс ещё не забываем про 4 внешних). У меня фантазия пока что кончилась на 3 внутренних платах, но если потребуется сделать ещё больше - можно предусмотреть и ещё дополнительную гребенку, но пока я решил остановится на этом.
|
|
Ну и понятно, чтобы все внутренние платы работали райзер надо ставить, без него арбитировать IORQ/ будет некому... Вот, кстати, на этом видео я показываю пример работы внешнего слота NemoBUS и платы-спектроанализатора ZX EQ от Alex-2-Graf:
Дальше нужно было реализовывать плату DivMMC. Тут мне очень повезло и даже два раза: во-первых, не так давно AlexEkb сделал долгожданный DivMMC полностью на дискретных элементах без всяких программируемых чипов и проприетарных прошивок (вот схема):
Это на самом деле здорово, но ещё интереснее мне показался форк этой платы от Александра Карнауха - он добавляет в эту карту ещё и второй режим: с отключенным DivMMC она превращается в Z-Controller. А это ещё интереснее, особенно если учесть наличие в моём "Пентагоне в кубе" дисковода. То есть можно будет прямо с него записывать на дискеты программы, считывая их с SD-карты (как раз то, что я показывал в видео на своём Пентагоне 1991 года, к которому я подключил Z-Controller от KOE). Плата сильно пересобрана для проекта Pentagon 1024 ZP Crocodile Edition, но я подумал, что элементов не сильно много добавилось и я смогу как-то впихнуть её в 10 на 10 см (а вот и ссылка на архив со всеми файлами проекта):
И да, компоненты как-то влезли, но вот трассировку не вывозил даже автороутер EasyEDA. Помогла только отдельная программа FreeRouting, которую я крутил сутками, прежде чем она смогла всё-таки соединить все сигналы на плате.
|
|
|
Но оказалось, что собранная плата не работает. Сначала вообще никак, но потом, когда я нашел один пропущенный сигнал, и оно как бы иногда стало работать, но сброс проходил очень нестабильно. В итоге я догадался, что это из-за переделанной Александром Карнаухом схемы сброса для "Крокодила" и просто вернул старую схему сброса из первоначальной версии AlexEkb, хорошо, что она буквально на 4 элементах сделана (конденсатор, диод и пару резисторов). После этого всё заработало стабильно - и divMMC и Z-Controller. На фото видно - что нужно отрезать, а что напаять. Вот видео работы данной платы:
Дальше пришло время добавления мыши. Добавлять версию с чипом ALTERA мне как-то не особо хотелось, поэтому пришлось немного порыскать, чтобы найти что-то на DIP-элементах, хоть и с чипом ATMEGA и там была ссылка на схему и прошивку.
Вот эту-то схему я и решил реализовать на той же плате, что и кемпстон-джойстик, ибо там ещё оставалось место.
|
|
Уже готовую прошивку для Atmega48 без проблем залил программатором в чип (не забудьте выставить нужные фьюзы!) и всё заработало:
Минус только один - нужна именно PS/2-мышь. Я, конечно, добавил на всякий случай и USB-разъем, но понятное дело, что работать будут только мыши с поддержкой протокола PS/2. Ну и мышь будет проводная... У меня была мысль, что я заведу сигналы DATA и CLOCK с USB-разъема платы IO с чипа CH559L (который у меня уже используется для преобразования сигналов USB-клавиатуры в сигналы PS/2) на эту плату и смогу использовать свой беспроводной клавомышиный комплект, но нет, так не получилось. Мышь временами нормально реагировала и могла даже работать, но потом начинались сбои и её постоянно уводило в верхний угол. Я даже попробовал отдельный переходник HIDman, который я до этого успешно использовал с ZX Evolution, но и с ним ситуация повторилась.
Тут я вспомнил, что у меня он вообще не заработал с платой Z-Controller от KOE, и понял, что все платы кемпстон-мыши для Спектрума не очень дружат с этим переходником (на Эве он тоже иногда не сразу определялся, при старте даже лучше было сразу двигать USB-мышь, чтобы она тут же начала работать). Поэтому я пока данную проблему отставил в сторону, ибо не настолько постоянно нужна эта самая мышь.
Поскольку на плате разъемы PS/2 и USB кемпстон-мыши вытеснили разъем Синклер-джойстика - пришлось развести в виде отдельной платы аналог Sinclair Interface II, в котором были и два порта джойстиков и порт для картриджей. Ну да, надо и оригинальные картриджи тоже реализовать, чтобы этим портом воспользоваться - тут я воспользовался проектом ZXS_I2_kartridz. И вот как говорится, "Остапа понесло" - я решил добавить не один порт картриджа, а сразу два! А что - место на плате есть, что ему пропадать? В общем, получилось как-то так:
И вот тут я просчитался сразу два раза: во-первых, внутренний картридж у меня немного подвинул внешний так, что тот стал торчать за пределы корпуса. Во-вторых, идея с "просто отключаем +5В и всё" - это была плохая идея :-) и надо было её заранее проверить на макетке. В общем, не заработало так как я ожидал: пользоваться внутренним картриджем просто включая/выключая его не получилось. Уже покопавшись, я понял что нужны два сигнала - один бы включал/отключал сигнал ROMCS/ на основной плате, а второй, наоборот, отключал/включал сигнал OE на чипе ПЗУ. Пришлось немного поэмгтэфить и налепить всякого, зато теперь изначальная идея заработала - можно переключаться между двумя внешними ПЗУ (например, один с тестами внутри, а второй с играми втыкать снаружи). Но на картридж полюбому нужно заводить допсигналы, ибо изначально его сигналы этого не предусматривают - подразумевается только вставка и вынимание самого картриджа. Поэтому это отлично подходит для внешнего, но не подходит для внутреннего.
|
|
Дальше у меня возникла идея, что дополнительные внешние платы вывода картинки надо вынести на отдельную плату. У меня уже была задействована одна - переходник с RGB на HDMI от AlexEkb на плате видеочасти для Пентагона в кубе: там для неё были выведены контактные площадки. Но к этому времени я уже начал задумываться над новыми проектами ZX Cube и было понятно, что у них будут свои платы видеочасти. Покупать для каждой по такому переходнику - весьма странная и дорогостоящая идея. Поэтому я подумал - а почему бы не вынести её отдельным "этажом" благо сигналы для неё я заблаговременно вынес на боковую гребенку? Так и сделал, но этого показалось мало - ведь целая плата пустая. Поэтому решил добавить на неё все остальные возможные видеовыходы с помощью платы PAL-кодера от команды NedoPC. Он добавит и композитный выход, и S-Video. Получилось как-то так:
|
|
Для работы этого кодера не хватало только SYNC сигнала. Его, конечно, можно было бы собрать и на этой плате с помощью пары микросхем (и я сначала так и сделал), но потом просто сигнал SYNC вывел с платы видеочасти через нижнюю гребенку. Но я был бы не я, если б не налажал на ровном месте и тут. Изначально я преджусмотрел не такой композитный металлический разъем, который сейчас виден на фото, а пластиковый. А вот у него, оказывается, земля в центре, а сигнал по краям (и кто только так догадался сделать?). Пришлось выпаивать и засовывать обычный металлический, благо он всё-таки туда влезает. Вот так работает PAL-кодер:
|
Это композитный сигнал. Качество приличное, но всё равно видны проблемы на стыках цветов и на ровных линиях |
А это S-Video. У моего ТВ нет S-Video, нашел только на старом ТВ-тюнере, но он все внешние сигналы в Ч/Б показывает. Зато видно, что качество линий и шрифтов лучше, чем в композитном сигнале. |
Ну и напоследок я решил уже поменять самую первую плату с процессором и ПЗУ. Просто потому что собирал её для оригинального Пентагона 1991 года с принтером, но зачем он мне сейчас? У меня даже такого принтера нет, на котором можно что-то распечатать со Спектрума. А вот наличие двух ПЗУ с разными прошивками было бы полезно, в этом я убедился на Пентагоне из 90-х со встроенным дисководом и подключенной платой Z-Controller с NemoIDE: для него я в итоге вторым этажом добавил ещё одно ПЗУ. Одно ПЗУ было с прошивкой KAY-256 с возможностью загружать iS-DOS прямо с IDE-устройства. А второе ПЗУ было с Proteus, который позволял легко работать с образами игр на SD-карте Z-Controller и писать из прямо на дискеты. Но поскольку на плате после удаления принтерной части осталось много места, я решил не мелочиться и вкорячить сразу три ПЗУ на 512 Кбит, просто чтоб было ещё, например, оригинальное с TR-DOS 5.03.
|
Но и тут я был бы не я, если б не создал сам себе проблемы перепутав контакты пеереключателя! Чинится буквально парой проводков, но обидно, что до этого я разводил плату питания и там использовал такой же переключатель и прекрасно знал принцип его действия.
Кстати, про плату питания. Изначальный вариант с вырезами я переделал, добавив нормальный переключатель между внешним питанием и питанием от аккумулятора. На саму плату влезает батарея размера 60 на 90 мм (часа 2 она продержится судя по тестам) и остается ещё место для мини-модуля зарядки:
|
|
|
Также дополнительно сделана плата-макетка, но с дополнением её входом питания. Её я планировал использовать как дополнительное питание, даже, возможно, отрезать платы основной части и всех плат дополнения по сигналу +5В, чтобы доп.платы питались отдельно. Всё-таки в полном комплекте потребление превышает 2А. А вот так выглядит этот "небоскрёб" со всеми платами-аддонами:
P.S. Как и обещал, прикладываю текущие герберы для этих плат:
Для сборки ядра "Пентагона в кубе":
- ZX Cube Pentagon CPU 1.1 (с принтером) или ZX Cube Pentagon CPU 1.2 (с 3 ПЗУ)
- ZX Cube Pentagon Timing 2.1
- ZX Cube Pentagon Memory 3.1
- ZX Cube Pentagon Video 4.2
- ZX Cube IO 6.2 (может быть использована и с другими проектами)
- ZX Cube BDI 8.1 (необязательно, но тогда надо будет на плате тайминогов включить режим 128, чтобы при сбросе входило именно в него, там продублирована часть логики)
Для сборки дополнительных плат проекта "ZX в кубе" (они все совместимы с "Пентагоном в кубе" и, по идее, должны быть совместимы с другими сборками в таком формате):
- ZX Cube Maket + Power 0.2
- ZX Cube Power 5.2
- ZX Cube Video Addon 4.3
- ZX Cube TurboSound + Covox 7.2
- ZX Cube Kempston Joystick + Mouse 9.2
- ZX Cube NemoIDE + CompactFlash-2 10.2
- ZX Cube DivMMC + Z-Controller 11.2
- ZX Cube Raizer 12.1
P.P.S. Исходники разведенных плат доступны в онлайн-хранилище EasyEDA (ZX Cube Pentagon, ZX Cube Addon), там можно делать форки и пилить своё. Формат JSON EasyEDA открывается KiCad, так что кому нравится именно он - не сдерживайте себя :-)
Удачи всем, кто захочет повторить, ну и вдвойне тем, кто захочет и дальше развивать данный формат ZX Куба и будет разводить другие платы или Спектрум-совместимые компьютеры.
- dukeyusupov
- 0
- 9






Новая "старая" схема сброса DivMMC













