Реальный 8086/88 + FPGA

16-битные ПЦ-совместимые компьютеры с процессорами 8086/8088/80286 работающие под управлением ДОС

Moderator: Shaos

newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Реальный 8086/88 + FPGA

Post by newold86 »

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

Тема с компьютером на 86/88 меня заинтересовала, но я уже удовлетворил свои желания попробовать разные способы макетирования - МГТФ, беспаечная макетная плата, монтаж накруткой (вообще не пошел - наверное, руки совсем кривые).

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

В принципе, я подобное уже делал - viewtopic.php?t=10688&start=15#113957 , однако обилие МГТФ и там у меня быстро сбило энтузиазм.

А тут помучил пару дней Eagle и на выходе родилось следующее:

Image

Эта конструкция подключается к GPIO разъему отладочной платы от Altera, и дальше можно творить, чего душа пожелает.

Так как это был первый опыт разработки печатной платы, то решил обойтись самым минимумом - процессор (можно вставить как 8086, так и 8088) плюс преобразователи уровней (отладочная плата работает максимум с 3.3В).

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

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

Что дальше - не уверен. Если интерес у меня не начнет плавно угасать (что вполне может быть), то подумаю, в какую сторону двинуться - остальное все внутри FPGA, или все-таки сделать новую платку с бОльшим количеством корпусов (типа 59, 37 и т.д.).
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Post by Tronix »

Аплодисменты. Респект и уважуха. :kruto:
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Re: Реальный 8086/88 + FPGA

Post by jdigreze »

newold86 wrote:А тут помучил пару дней Eagle и на выходе родилось следующее:
Я несколько озадачен... С одной стороны есть непротрав, с другой стороны via без "чопиков" :roll:
Плата заводсткая или самоварная? Если второе, то как сделано меднение переходных отверстий?
newold86 wrote:Эта конструкция подключается к GPIO разъему отладочной платы от Altera, и дальше можно творить, чего душа пожелает.

Так как это был первый опыт разработки печатной платы, то решил обойтись самым минимумом - процессор (можно вставить как 8086, так и 8088) плюс преобразователи уровней (отладочная плата работает максимум с 3.3В).
Респект!
Меня не так давно посещала подобная мысль, сделать плату с панелькой DIP40 и FPGA для совмещения последней с любыми процессорами в DIP40. Но пока не стал развивать эту мысль, т.к. есть куча недоделок и хотелок более первой необходимости.
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Post by newold86 »

Наверное, на фото что-то плохо видно - никаких непротравов там нет, все нормально, плата заводская. Флюс не смывал, так что от него видны пятна.

А вообще у меня разные мысли есть насчет отладочной платы для реальных процессоров с FPGA. Но пока решил совместно с DE2-115 все делать - глупо повторять все индикаторы, кнопки и т.п., что уже установлено. А вот если дойдет до чего-то минимально законченного, там уже можно еще раз подумать.
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Post by newold86 »

Кстати, вопрос - существует ли разъем типа установленного, но только "мама", чтобы без шлейфа соединять, а просто напрямую плату в плату втыкать ?

Вроде простейшая вещь, но, как ни странно, пока даже не нашел признаков существования такого...

---------------

upd - все, нашел - просто плохо смотрел
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: Реальный 8086/88 + FPGA

Post by newold86 »

newold86 wrote:Причем преобразователи уровней попробовал новые - в отличие от использованных ранее в плате для 8080, эти не требуют сигнала направления для двунаправленных сигналов, все определяется автоматически. Есть там, правда, из-за этого некоторые ограничения, но в данном случае они роли не играют.
Блин, такое впечатление, что все-таки есть проблемы с этими преобразователями уровней. Возможно из-за того, что пины FPGA защищены диодами и резисторами.

Похоже, что нужно делать новую плату с обычными преобразователями (без автоматического определения направления)...
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Post by jdigreze »

Честно не работал с FPGA, но может быть стоит попробовать поконфигурировать ея пины в разные режимы: IN/OUT/TRISTATE/PULLUP и т.п.?
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Post by newold86 »

jdigreze wrote:Честно не работал с FPGA, но может быть стоит попробовать поконфигурировать ея пины в разные режимы: IN/OUT/TRISTATE/PULLUP и т.п.?
Тут дело вроде не столько в самой FPGA, а именно в отладочной плате - они добавили резисторы/диоды на каждый пин для защиты, но теперь эта защита вмешивается (как я думаю) в работу преобразователей уровня.

Кинулся было переделывать платку на проверенные 8T245 (с явным контролем направления), но пока уперся в то, что не могу придумать красивого способа получить сигнал направления (так как шина данных мультиплексирована с адресом).
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Post by jdigreze »

То, что я углядел в ДШ:
При MN/MX=1 за направление отвечает DT/R: =1 ADx передают, =0 ADx принимают. Относительно проца.
При MN/MX=0 нужно смотреть на S0-S2.
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Post by newold86 »

К сожалению, не так все просто. Я ведь не напрасно ранее упомянул о проблеме мультиплексирования данных и адреса. Писать много лень (тем более, я еще не до конца разобрался), но общий смысл в том, что нужно обеспечить открытость AD внутрь FPGA на все время действия ALE и еще чуть-чуть (так как по спаду ALE защелкиваются младшие разряды адресов).

Естественно, как я уже говорил, есть простой способ - поставить защелку младших разрядов адресов прямо на платку, и потом направить уже защелкнутые адреса внутрь FPGA через однонаправленный согласователь уровня. А параллельно с этим еще и направить внутрь FPGA шину AD через двунаправленный согласователь, как раз управляемый DT/R. Только коряво как-то получается - совершенно неохота ставить на платку то, что одним движением мышки внутри FPGA делается, да и понадобится дополнительно 8 пинов.
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Post by jdigreze »

Ну да, но по-моему, ты усложняешь насчёт ALE.
Сейчас более внимательно посмотрел диаграмму в MN режиме.
В общем, получается, что, если взять функцию (/RD or /INTA or DT/R), то получим искомый сигнал направления с активным низким на чтение. От этого уже можно попробовать разбираться дальше.

Порой мне очень жаль, что нет под рукой ни 8086, ни 8088...
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Tronix, я где-то на zx.pk видел, ты IDE-HDD ROM под эмулятором 8086 тестировал...
А в нём можно ROM BIOS посадить на нужные адреса и посмотреть в отладке?
iLavr
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Post by Tronix »

Lavr wrote:Tronix, я где-то на zx.pk видел, ты IDE-HDD ROM под эмулятором 8086 тестировал...
А в нём можно ROM BIOS посадить на нужные адреса и посмотреть в отладке?
Я пользую PCem, отладчика там нет. Но есть сорцы. Нужно что-то посмотреть, например что в порт лезет или что по такому-то адресу меняется - пишем в сорцы в нужное место if (port == 0xblabla) printf("DEBUG: PORT = %u,%u",port,value); пересобираем и вуаля ;)

В борще (bochs) по слухам есть дебагер мегамощный, но я не осилил.
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Post by jdigreze »

Нельзя на ночь глядя посты писать, ибо:
jdigreze wrote:... функцию (/RD or /INTA or DT/R), то получим искомый сигнал направления с активным низким на чтение.
будет всегда равно 1.
А вот ((/RD or DT/R) and (/INTA or DT/R)) должно давать искомый низки на чтение.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Tronix wrote:Я пользую PCem, отладчика там нет. Но есть сорцы. Нужно что-то посмотреть, например что в порт лезет или что по такому-то адресу меняется - пишем в сорцы в нужное место if (port == 0xblabla) printf("DEBUG: PORT = %u,%u",port,value); пересобираем и вуаля ;)

В борще (bochs) по слухам есть дебагер мегамощный, но я не осилил.
Спасибо, Tronix! Выяснилось, что кроме отладчика, мне ещё и эмулятор процессора NEC V40 нужен. :lol:
Но кое в чем смог разобраться и под обычным DEBUG в окне MS-DOS...
iLavr