PDA

Просмотр полной версии : z80mini - Z80 и CPLD



Xrust
24.04.2021, 19:29
Решил я, пока еще корона не доконала, осуществить свою мечту - сделать платку мини компа на Z80 и EPM7128 - очередной велосипед, короче. На плате расположены: CPU, ROM, RAM, CPLD, UART. Предполагается возможность дальнейшего расширения методом бутерброда через системный разъем. Часть выводов CPLD остались свободными, поэтому МГТФ в ограниченном объеме тоже допускается. Основные желания, томившие мой мозг - помучить EPM7128, спроектировать и заказать 4-х слойную плату, поупражняться в написании чего-то на ассемблере Z80.

75292 76017

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

75992

Добавил в архив проект для Quartus II 13.0sp1

Обновил проект. Для совместимости с Аюшей изменил порты: управление памятью (38h, бит 0, 0-ПЗУ, 1-ОЗУ), консоль (08h, 09h). Конфигурация памяти пока такая: нижняя страница памяти 32к переключается ПЗУ/ОЗУ. При сбросе выбирается ПЗУ.

Для реализации прерываний от последовательного порта нужно поставить перемычку между выводом 14 U4 (RXRDY) и выводом 54 U3 - назовем эту цепь IRQ - запрос прерывания при приеме очередного символа последовательным портом.

Пожалуй, необходимости во втором кварце на 7.3728 МГц нет. Все нужные частоты вполне может выдавать ПЛИС делением 20 МГц. Возможно, имеет смысл попробовать поставить кварц на 32768 Гц?

Ошибки на плате:
1 - вывод 25 U1 Z80 /BUSRQ висит в воздухе, для корректной работы процессора надо подтянуть его к питанию через резистор 10к.
2 - конденсатор C5 ошибочно подключен к земле, должен быть подключен к + питания. Можно повесить его с обратной стороны платы между 2 и 16 выводами U2. Такой же конденсатор желательно подключить между 15 и 16 выводами U2.
3 - "лишний" сигнал A18 на системном разъеме.
4 - второй кварц на 7.3728 МГц оказался ненужным, можно его вообще не устанавливать или использовать какой-то другой, например 32768 Гц.

UPD. Обновил прошивку CPLD. Адаптировал и проверил работу монитора (https://zx-pk.ru/threads/27362-samodelnyj-komp-na-i8080.html) Freddy. Для его запуска достаточно только изменить значения CONSD на 08h, CONSC на 09h, BANK на 38h.
78126 - ассемблер.

Вышла вторая версия платы - Z80mini V2.0

7688376884

Основные отличия:
- плата двухслойная
- COM порт заменен на microUSB (мост TTL-USB CH340G)
- питание платы так же полностью от USB
- изменен системный разъем - перенесен на край платы и переработан - теперь будет возможность без резки дорожек делить память на сегменты по 16к и совмещать их в произвольном порядке.
- кварц заменен на генератор - можно использовать до 50МГц (больше не пробовал).

Все имеющиеся CMOS версии Z80 уверенно запустились на этой плате на 20МГц. Все имеющиеся КР580ВВ51А стабильно заработали на 115200. Импортные 82C51 можно гнать и быстрее.

Ошибки на плате V2.0: перепутаны сигналы RX TX и RTS CTS между ВВ51 и CH340G, неправильно разведена кнопка сброса.
76885
Схема без ошибок.


Норая версия платы (https://zx-pk.ru/threads/33242-z80mini-z80-i-cpld.html?p=1166949&viewfull=1#post1166949)- v2.2 Исправлены ошибки, внесены небольшие изменения.

https://pic.maxiol.com/thumbs2/1668530451.630420384.photo20221115202951.jpg (https://pic.maxiol.com/?v=1668530451.630420384.photo20221115202951.jpg&dp=2) https://pic.maxiol.com/thumbs2/1679077961.3274620859.img20230317215922.jpg (https://pic.maxiol.com/?v=1679077961.3274620859.img20230317215922.jpg&dp=2)

Макетная плата для проекта. Предусмотрена установка буферных элементов либо регистров, кварцевого генератора, светодиодов.

https://pic.maxiol.com/thumbs2/1679077750.3274620859.img20230317220037.jpg (https://pic.maxiol.com/?v=1679077750.3274620859.img20230317220037.jpg&dp=2) https://pic.maxiol.com/thumbs2/1679077893.3274620859.img20230317220059.jpg (https://pic.maxiol.com/?v=1679077893.3274620859.img20230317220059.jpg&dp=2)

Архив проекта Quartus 13.0sp1 и готовая прошивка ПЛИС 78133
Генератор 50МГц, процессор 20МГц и UART 57600. Порты: управление памятью (38h, бит 0, 0-ПЗУ, 1-ОЗУ), консоль (08h, 09h).
Гербер последней версии платы - 78120

Прошивки от камрада dmtr: поддержка CF (https://zx-pk.ru/threads/33242-z80mini-z80-i-cpld.html?p=1167909&viewfull=1#post1167909), поддержка встроенных GPIO (https://zx-pk.ru/threads/33242-z80mini-z80-i-cpld.html?p=1173136&viewfull=1#post1173136), конфигурируемый GPIO и SPI (https://zx-pk.ru/threads/33242-z80mini-z80-i-cpld.html?p=1173890&viewfull=1#post1173890).

Купить плату можно здесь (https://zx-pk.com/forum/viewtopic.php?f=7&t=21630).

valerium
24.04.2021, 21:12
Это, видимо, будет не спек, а что-то совершенно альтернативное ?
Как у него планируется организовать память и на что будет похож видеоконтроллер ?
Задумка интересная, но оперативная память включена всеми 16-ю нижними адресными линиями к процессору, на страницы меньше 64к ее не поделить, причем ПЗУ в том же окне 64к. Программно непросто будет задействовать ее всю, лучше б сделать странички поменьше. Или так задумано ?

Xrust
24.04.2021, 21:41
Это, видимо, будет не спек, а что-то совершенно альтернативное ?
Да, спеков уже достаточно и так.

Как у него планируется организовать память и на что будет похож видеоконтроллер ?
Это предстоит решить по ходу проектирования. CPLD предполагает гибкость


https://youtu.be/9R5hhy4QNPY

Насчет видеоконтроллера. Он будет располагаться на отдельной плате с отдельным видео ОЗУ. Пока проект в "терминальной" стадии.

но оперативная память включена всеми 16-ю нижними адресными линиями к процессору, на страницы меньше 64к ее не поделить, причем ПЗУ в том же окне 64к.
ПЗУ и ОЗУ выбираются /RAMCS и /ROMCS, которые формирует ПЛИС. С организацией страниц тоже достаточно просто. Дорожки A14 и A15 заведены в ПЛИС и их легко можно перерезать в нужном месте при необходимости. Но у меня были некоторые другие мысли на этот счет - хотел попробовать сделать что-то вроде ПДП. Плата в первую очередь предназначена для проверки всяких безумных идей.

ALS
25.04.2021, 00:36
По поводу "совершенно альтернативного"...
В середине 90-х именно на подобной платке (помните, были АОНы на Z80 ?) я собрал прототип кодграббера.
Какого-то применения он не нашел, но знатно потешил мое ЧСВ )))

LeoN65816
25.04.2021, 11:34
Прошу высказывать критические замечания, предложения, советы.

1. Цанговые панельки - рулез. Лепестковые панельки для DIP - зло. Вот такие (https://www.quartz1.com/price/model.php?group=112&ext=121) и такие (https://www.quartz1.com/price/model.php?group=112&ext=2537) не пробовал, но, ИМХО, удобно для часто передергиваемой ПЗУ.
2. Зачем на системном разъеме JTAG?
3. На системном разъеме задублирован A18, и какая-то беда с RESETом...
4. Полагаю, у тебя задуман маппер до 1 метра (A0-A19). Слушай valerium-а (https://zx-pk.ru/threads/33242-z80mini-z80-i-cpld.html?p=1114543&viewfull=1#post1114543), он прав.
5. На срамине какая-то беда с A17 и A18...
6. Почему такой древний UART выбрал?... Почему не выбрал что-нибудь типа 16C550?
7. По ПДП - для этого данная ПЛИСина явно слабовата...
8. RES (или /RES ?) у ПЛИСины в воздухе висит...

Xrust
25.04.2021, 11:59
LeoN65816,
1. Это уже частности. У меня, например, с цанговыми не сложилось, попадались ужасного качества
2. На второй этаж, там тоже ПЛИСина планируется.
3. Просто ошибка. Чикнем скальпелем тот, что снизу и заведем туда что-нибудь полезное. RES - вход, сигнал от кнопки, который можно обработать в ПЛИС. RESET и /RESET, соответственно, выходы, прямой и инверсный сигналы сброса, кому какой нужен.
4. Возможно. Скальпель и МГТФ держу наготове.
5. Это не беда, это для возможности установки 628512.
6. Потому, что простой как валенок и их есть у меня.
7. ПДП - это сильно сказано, конечно. Определюсь в процессе. Есть несколько старых идей, которые хотелось бы проверить на практике.

valerium
25.04.2021, 12:52
6. Потому, что простой как валенок и их есть у меня.

Кстати, а какой там UART ? У меня просто какого-то шрифта нету и вместо его маркировки в схеме отображаются зюки, а по прочим признакам не узнал...

Xrust
25.04.2021, 13:31
valerium, КР580ВВ51

- - - Добавлено - - -

Вот такую схему залил в ПЛИС.

https://photos.app.goo.gl/MTaFRN3yFbq3E4v77

Воткнул в панельки ПЗУ, ОЗУ. Конфликтов вроде нет, процессор что-то там пытается выполнить, читая мусор из ОЗУ. Теперь надо попробовать что-то залить в ПЗУ и подергать порт.

valerium
25.04.2021, 14:01
Ясненько, на данный момент это по сути девборда с некоторыми ограничениями, которые легко решаются мгтф-ом. Просто все были немного обескуражены тем, что можно новую четырехслойку резать скальпелем )
Первое и главное, чего тут не хватает - это требований к результату и ТЗ. Иначе это будет очень долгая резня скальпелем )
И 128 макроячеек в cpld - это так уж много, может легко оказаться, что после постановки задачи что-то не войдет.

Ну я к чему подвожу - надо задачу поставить.

Xrust
25.04.2021, 15:20
valerium, Все верно понимаете! Для меня главная задача - обучение. Текущая промежуточная задача - запустить терминал. Пока удалось запустить порт и подергать ножками.

После запуска порта можно будет закидывать тестовые программы непосредственно в ОЗУ, не дергая лишний раз ПЗУ. Собственно концепция такая: в ПЗУ только начальный загрузчик, который перебрасывает нужный код в ОЗУ и передает ему управление. Как будет организован диспетчер памяти - во многом как раз и будет определятся ограничениями ПЛИС. Страницы по 16к точно получатся, что-то посложнее - будем посмотреть. Вся периферия как то видеоадаптер, клавиатура, мышь и т.д будет проектироваться на втором этаже.

- - - Добавлено - - -

valerium, если хотите тоже скальпелем - легко организуем :)

ALS
30.04.2021, 11:59
Получил плату, спасибо !
Мои пожелания к следующей ревизии :
- нужны посадочные места под блокировочные конденсаторы (можно даже SMD 1206)
- гнездо питания, по возможности, вывести на ту же сторону, что и RS232. Добавить места под керамический конденсатор и диод шоттки (или какую другую защиту от переполюсовки).
- сделать четвертое отверстие под крепление платы (или монтажную стойку, если будет второй этаж)
- использовать ROM в 32-пиновом корпусе (напр., флеш-память от старых материнок - их у всех полно в хозяйстве)
- если планируется использовать именно отечественную ВВ51, то у нее другой шаг (2,5 мм) и в цанговую панельку она лезет, конечно, но неохотно.
- по возможности, оптимизировать расположение переходов между слоями. Достаточно просто отодвинуть соседние дорожки на 0,5 мм и тогда будет все отлично, без толкотни и давки.

ALS
03.05.2021, 14:34
Почти спаял. Может, еще добавлю конденсаторов с обратной стороны платы.
Xrust, добавьте, пож-ста, в архив прошивку для ПЛИС-ки.

75349

Xrust
03.05.2021, 17:35
ALS, добавил. Пока там ничего особо нет, только делители тактовых частот.

Xrust
07.05.2021, 23:11
ALS обновил немного проект, изменения в шапке темы.

Xrust
09.05.2021, 12:37
Очередной раз обновил шапку - ошибки на плате и изменения в схеме.

Xrust
09.05.2021, 17:42
ALS, посмотрел на вашу плату - обязательно нужно устранить ошибку с C5, иначе будет греться MAX232.

Xrust
10.05.2021, 00:11
В очередной раз обновил шапку. Обновился проект в Квартусе. Нашел свой старый "монитор", который делал еще для платы на кр580вм80а. Немного подправил. Он на скорости 2400 выводит строку в COM порт. Ввод команд почему-то не работает. Надо разбираться. То-ли в железе ошибка, то-ли в софте.
Еще с проблемой столкнулся - почему-то большая проблема с генератором 7.3728 МГц. Не хочет ПЛИСина ее никак поделить нормально. Получается какая-то фигня на выходе. Пока отказался от использования этого генератора.
С MAX232 тоже проблемы вылезли. Немного поработает, а потом вдруг начинает греться как кипятильник. Почему- непонятно. Заменил пока конденсаторы на электролиты, может керамика ей не нравится.

ALS
10.05.2021, 07:07
Я пока не включал, поэтому спасибо, что предупредили.
С МАХ232 чаще используются конденсаторы меньшей емкости, может, в этом причина ?

Xrust
10.05.2021, 09:03
С МАХ232 чаще используются конденсаторы меньшей емкости, может, в этом причина ?
Есть 2 основные модификации: MAX232 и MAX232A. Первый для обвязки требует электролиты 1 мкФ, второй керамику 0.1 мкФ. Я сталкивался с ситуациями, когда эти микросхемы, несмотря на правильную обвязку начинали внезапно греться. Обычно замена емкостей на электролиты помогала. В следующей версии собираюсь вообще отказаться от этой микросхемы. Лучше вывести USB порт - и меньше места занимает и заодно питание дает.

- - - Добавлено - - -


Я пока не включал
Отладку начни с проверки генератора. Потом поставь и прошей ПЛИС. Проверь, как она выдает тактовые сигналы на процессор и последовательный порт. С текущей версией прошивки это 2.5 МГц на CLK и 153846 Гц на RXC и TXC. После этого можно поставить процессор и проверить, как он исполняет nop, перебирая шину адреса. Затем можно что-то прошить в ПЗУ и поставить ее в панельку. Если все в порядке, можно втыкать ОЗУ, ВВ51 и проверить работу порта с той прошивкой, что сейчас в шапке в архиве лежит. Она должна вывести строку приветствия в порт на скорости 2400.

Xrust
10.05.2021, 16:43
Нашел рабочую прошивку "монитора". В нем 2 директивы: L - загрузка через терминал с адреса 8000h и G - запуск программы с адреса 8000h. Загрузка выполняется простым копированием текста. Пользуюсь для этого Terminal v1.9b. После окончания загрузки можно нажать сброс и выбрать запуск программы.

Xrust
12.05.2021, 21:24
Разогнал процессор до 10 МГц, ВВ51А до 57600@5 МГц. На 20 МГц не завелось. Почему - не разбирался еще.

Xrust
13.05.2021, 22:55
Ну вот, первые выводы уже сделал. Достаточно будет одного генератора на плате. Думаю, можно использовать на 20, 40 или более распространенный на 50Мгц. С двумя генераторами одновременно почему-то никак не получалось нормально работать. Какие-то непонятные глюки ПЛИС давала. То делитель не делит, то форма сигнала портилась. Вообще, много подводных камней в работе с ПЛИС обнаружил, очень интересно. Рад, что начал с такого простого проекта.

- - - Добавлено - - -

Сейчас хочу попробовать запустить процессор на 20 МГц. Скорее всего проблема была в том, что ВВ51 на такой частоте не успевала общаться а процессором. Надо попробовать ввести такты wait. Где бы схему подсмотреть, как это делается?

- - - Добавлено - - -

Честно говоря, я был удивлен, что ВВ51 на 57600 с тактом 5 МГц заработала и свободно обменивалась с процессором с тактом 10 МГц. Читал, что 38400 для нее потолок. На 6.67 МГц уже не смогла, ошибки пошли.

Xrust
21.08.2021, 15:26
Обновил прошивку CPLD. Адаптировал и проверил работу монитора (https://zx-pk.ru/threads/27362-samodelnyj-komp-na-i8080.html) Freddy. Для его запуска достаточно только изменить значения CONSD на 08h, CONSC на 09h и BANK на 38h.

nimdasys_inbox_ru
26.08.2021, 12:29
С помощью какого софта работаете в плане прошивок с EPM7128 ?!

Xrust
26.08.2021, 20:51
nimdasys_inbox_ru, Quartus II 13.0sp1

Xrust
22.01.2022, 16:11
Вышла вторая версия платы.

7688776886

Подробности в первом сообщении темы.

Xrust
15.11.2022, 19:48
Новая версия платы - пофикшены ошибки, предусмотрена установка ПЗУ в корпусах как DIP28, так и DIP32.

https://pic.maxiol.com/thumbs2/1668530451.630420384.photo20221115202951.jpg (https://pic.maxiol.com/?v=1668530451.630420384.photo20221115202951.jpg&dp=2) https://pic.maxiol.com/thumbs2/1668530535.630420384.photo20221115202951.jpg (https://pic.maxiol.com/?v=1668530535.630420384.photo20221115202951.jpg&dp=2)

https://pic.maxiol.com/thumbs2/1668530559.630420384.photo20221115202950.jpg (https://pic.maxiol.com/?v=1668530559.630420384.photo20221115202950.jpg&dp=2) https://pic.maxiol.com/thumbs2/1668530593.630420384.photo20221115202950.jpg (https://pic.maxiol.com/?v=1668530593.630420384.photo20221115202950.jpg&dp=2)

78097
78098

Xrust
26.11.2022, 18:25
Поступило предложение развести для z80mini и i8085mini плату Prototype card.

https://pic.maxiol.com/thumbs2/1669475533.630420384.prototypecard.jpg (https://pic.maxiol.com/?v=1669475533.630420384.prototypecard.jpg&dp=2)

Вот что-то такое наспех сделал. Пойдет? Принимаю критику и пожелания.

SergeiA
26.11.2022, 20:20
Если появятся такие платы, то пару штук я куплю.
Еще лично мне бы хотелось плату с местами и разводкой для КР580ИК55 x 2, КР580ИК51, КР580ВИ53 x 2 и КР512ВИ1 с необходимой обвязкой.

Xrust
26.11.2022, 23:33
плату с местами и разводкой для КР580ИК55 x 2
Это можно. Получится прям контроллер. А что с входами/выходами ВВ55 сделать? Как их облагородить? И по остальным микросхемам такой же вопрос.

Xrust
27.11.2022, 16:50
хотелось плату с местами и разводкой для КР580ИК55 x 2

https://pic.maxiol.com/thumbs2/1669556646.630420384.55.jpg (https://pic.maxiol.com/?v=1669556646.630420384.55.jpg&dp=2)

Вот как-то так. Просто вывел порты на разъемы.

78144

dmtr
04.12.2022, 12:50
https://pic.maxiol.com/thumbs2/1670147162.94684774.photo20221204124404.jpg (https://pic.maxiol.com/?v=1670147162.94684774.photo20221204124404.jpg&dp=2)

Завел на z80mini CP/M по мотивам GrantSearle&&АюшаCF. Пришлось переписать прошивку CPLD на Verilog и понизить скорость UART до 9600, т.к. на 57600 буфер ввода переполнялся за время установки RTS на NMOS [email protected]. На CMOS Z80, думаю, взлетит и на 57600. Платка удалась... )))

Xrust
04.12.2022, 19:03
dmtr, можете опубликовать здесь прошивки и файлы?

dmtr
04.12.2022, 20:14
78172

CF подключаем так:

pin33 A0 = A0
pin35 A1 = A1
pin36 A2 = A2
pin17 D0 = D0
pin15 D1 = D1
pin13 D2 = D2
pin11 D3 = D3
pin9 D4 = D4
pin7 D5 = D5
pin5 D6 = D6
pin3 D7 = D7
pin23 /IORW = /RW
pin25 /IORD = /RD
pin37 CS = A19
pin1 /RES = /RES

Проект Quartus в CPLD.verilog\

Флешку использовал 27c512. Во флешку писать:

0x0000 - SW\z80_mon.hex
0x2000 - SW\basic.hex

Получим монитор, как у Аюши, только без реального видео и клавиатуры. 8251 = 8-N-1.

Установка CP/M:

Грузим SW\FORM128.hex, запускаем G5000. Он отформатирует CFку.

Потом грузим в память HEX в последовательности:

SW\cpm22.hex
SW\bios128.hex
SW\putsys.hex

Запускаем putsys (G5000).
Это все установит CP/M на CF.

Далее жмем X потом Y. Все.

Palmtop
14.01.2023, 02:07
Прошил ПЛИС (своя), запустилось, монитор и BASIC. Плата версии 2.2.
Спасибо автору.
Предложение - сделать плату расширения с CF И 580ВВ55.

Xrust
14.01.2023, 08:21
Palmtop, отлично! Если можно, поделитесь прошивкой.

- - - Добавлено - - -

Насчёт расширения CF я подумаю, ВВ55 будет обязательно. Вопрос пока в том, как оформить её входы/выходы.

Palmtop
15.01.2023, 17:44
Прошивка ваша Z80+cpld.zip. Я имел ввиду, что микросхема своя. Одна из Китая не прошилась, ошибка "Error (209001): JTAG ID code specified in JEDEC STAPL Format File does not match any valid JTAG ID codes for device". Если знаете как поправить, напишите. Вторая куплена в Москве, прошилась и работает. Прошивал ver. 13.0 (13.1 не шьет). Программатор USB Blaster v2. на CH552G.
На вашей модели с ВВ55 видно есть пустое место, как раз для CF. Как вариант, CF с обратной стороны платы.

Xrust
16.01.2023, 18:19
Одна из Китая не прошилась, ошибка "Error (209001): JTAG ID code specified in JEDEC STAPL Format File does not match any valid JTAG ID codes for device". Если знаете как поправить, напишите.
Скорее всего это можно вылечить только фирменным параллельным программатором. Беру обычно у этого продавца. (https://aliexpress.ru/item/33047939163.html) Процент брака у него небольшой.

Palmtop
14.02.2023, 22:57
Поясните, пожалуйста, назначение выводов J1
RS (сброс?)
R/W(чтение\запись?)
E(?)
P0..P7(?)
Они уже доступны для работы или разведены на будущее?
Если доступны, то как обращаться к ним из BASICa?

Xrust
15.02.2023, 19:30
Поясните, пожалуйста, назначение выводов J1
RS (сброс?)
R/W(чтение\запись?)
E(?)
P0..P7(?)
Они уже доступны для работы или разведены на будущее?
Если доступны, то как обращаться к ним из BASICa?

Контакты Jxx на системном разъеме зарезервированы для связи между платами и конфигурирования. На процессорной плате не разведены, можно МГТФить при необходимости. Назначаются конечным пользователем, т.к. все предусмотреть заранее невозможно. На периферийных платах их предполагается разводить под перемычки.
RS, R/W, E P0..P7 выведены на отдельный разъем и разведены на ПЛИС. Можно использовать, например, как порт ввода/вывода или для подключения LCD панелей типа 1602 и т.д. или SD карты. А можно МГТФом перемычку кинуть на Jxx. Но для этого, разумеется, в любом случае надо внести изменение в прошивку ПЛИС. Я часто выводил на этот порт состояние каких либо внутренних регистров ПЛИС для отладки.

Palmtop
15.02.2023, 22:50
Спасибо за пояснение. Полагаю, что ответ можно поместить на первую страницу, т.к. информация будет полезна всем пользователям этого проекта.
Вывод регистров это специфическая опция, скорее для профессионалов разработчиков. Мне и может еще ряду пользователей проекта интересно использовать P0.P7 для ввода \ вывода, пока нет платы с ВВ55. Если не затруднит опубликовать пример с Р0-3 на ввод, а Р4-7 на вывод.
P.S. Когда ожидается плата с ВВ55, а может более расширенный вариант, как обсуждалось ранее.

Xrust
15.02.2023, 23:40
Плата входов/выходов будет выглядеть примерно так. Заказывать производство буду в ближайшее время.

https://pic.maxiol.com/thumbs2/1676492721.3274620859.gpio.jpg (https://pic.maxiol.com/?v=1676492721.3274620859.gpio.jpg&dp=2)

Пояснения, как вывести что либо на разъем P0..P7 и пример прошивки ПЛИС тоже постараюсь дать. Так же, для тех кто хочет осваивать работу с ПЛИС самостоятельно, рекомендую поискать видеоуроки по Quartus на ютубе. Их там очень много. Собственно, в этом и заключается цель проекта: первые шаги в разработке ПЛИС для тех, кто уже хоть немного познакомился с цифровой электроникой и микропроцессорами.
Еще помощь по ПЛИС можно получить в чатике FPGA-Systems.ru в телеге.

dmtr
18.02.2023, 14:01
Спасибо за пояснение. Полагаю, что ответ можно поместить на первую страницу, т.к. информация будет полезна всем пользователям этого проекта.
Вывод регистров это специфическая опция, скорее для профессионалов разработчиков. Мне и может еще ряду пользователей проекта интересно использовать P0.P7 для ввода \ вывода, пока нет платы с ВВ55. Если не затруднит опубликовать пример с Р0-3 на ввод, а Р4-7 на вывод.
P.S. Когда ожидается плата с ВВ55, а может более расширенный вариант, как обсуждалось ранее.

78501

Прошивка CPLD с поддержкой порта В/В во вложении. В бейсике порт 40 (0x28), P0-P3 на вывод, P4-P7 на ввод.

Писать: OUT 40, 2
Читать: A=INP(40)

Palmtop
24.02.2023, 00:18
Спасибо, прошивку с В/В попробовал. Очевидно:
P0-P3 на вывод 1,2,4,8.
P4-P7 на ввод 16,32,64,128.

Примечание.
Возможно у меня такие комплектующие, но если напряжение USB менее 5В, то не работает (несколько тактов и зависает).
Лечение - источник питания 5,1 В на J3.

Xrust
24.02.2023, 13:03
Palmtop, стандартный USB порт обеспечивает ток 0.5А, а этого может быть недостаточно. Поэтому я предусмотрел контакты для подачи внешнего питания. Так же есть возможность развязать питание USB - недалеко от разъема есть "лыска" в маске, чтобы перерезать дорожку и снова соединить при необходимости.

dmtr
26.02.2023, 15:00
Написал под плату SPI модуль на Verilog. Подцепил SD Card. Написал драйвера под CP/M. Теперь CP/M работает с SD.
Также переписал работу с портом В/В. Теперь его можно настраивать на ввод или вывод через порт управления, как в ATmega примерно.
Если нужны исходники, пишите.

Xrust
28.02.2023, 20:59
dmtr, конечно нужны! Делитесь, закреплю в первом сообщении.

P.S. Заказал производство прототипов плат GPIO на базе ВВ55 и макетной. Как пришлют, сообщу заинтересованным людям.

dmtr
01.03.2023, 13:06
Исходники и бинарники во вложении.

78542

Что сделано:

Порт 0x28 - порт в/в на чтение и запись

Порт 0x29 - настройка порта в/в (External port direction (P0,P1 - Bit0, P2,P3 - Bit1, P4,P5 - Bit2, P6,P7 - Bit3)) при записи 1 порт будет работать на вывод, при записи 0 - на ввод. После ресета все порты работают на ввод.

Порт 0x2a - SPI Data. Порт приема/передачи данных по SPI. При записи в порт автоматически запускается передача и прием байта по SPI. Результат приема валиден после сброса Busy флага в статусном регистре.

Порт 0x2b - SPI Config/status
Запись:
Bit0: =0 - ~200KHz SPI Clock
Bit0: =1 - 12.5MHz SPI Clock
Bit1: =0 - CS = 0
Bit1: =1 - CS = 1

Чтение:
Bit0: =1 - SPI Busy флаг, происходит передача/прием байта

CP/M ставить так же как и на CF, писал ранее. В архиве также есть пример на бейсике, который читает сектор с SD карты. Он конечно страшный, но работает )

SD карту подключать так:

// SD_CLK - RS
// SD_MOSI - E
// SD_MISO - R/W
// SD_CS - AO19

Xrust
17.03.2023, 21:49
Пришли новые платы.
Макетная плата. Предусмотрена установка буферных элементов либо регистров, кварцевого генератора, светодиодов.

https://pic.maxiol.com/thumbs2/1679077750.3274620859.img20230317220037.jpg (https://pic.maxiol.com/?v=1679077750.3274620859.img20230317220037.jpg&dp=2) https://pic.maxiol.com/thumbs2/1679077893.3274620859.img20230317220059.jpg (https://pic.maxiol.com/?v=1679077893.3274620859.img20230317220059.jpg&dp=2)

Плата входов-выходов на КР580ВВ55 (8255).

https://pic.maxiol.com/thumbs2/1679078586.3274620859.img20230317215934.jpg (https://pic.maxiol.com/?v=1679078586.3274620859.img20230317215934.jpg&dp=2) https://pic.maxiol.com/thumbs2/1679077835.3274620859.img20230317215954.jpg (https://pic.maxiol.com/?v=1679077835.3274620859.img20230317215954.jpg&dp=2)

Схема 78607 не проверена, может содержать ошибки. Когда плата будет проверена и отлажена, прицеплю к первому сообщению.

dmtr
29.04.2023, 13:52
По просьбе Palmtop добавил поддержку платы ввода/вывода к версии SDCard.

78839

Порт 0x20 - Порт A 8255
Порт 0x21 - Порт B 8255
Порт 0x22 - Порт C 8255
Порт 0x23 - Порт конфигурации 8255

Для того, чтобы это все взлетело, нужно:

- сделать перемычку между 65 пином EPM7128 и 47 пином разъема расширения на основной плате.
- поставить джампер на J1 в положение 0 на плате расширения.

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

Palmtop
04.05.2023, 20:11
Пока не все детали пришли, проверил ввод на J2.
Читаются все разряды по порту 0x22 - Порт C 8255.
50 C=INP(34)
60 PRINT C

Спасибо dmtr.

- - - Добавлено - - -