8086+FPGA

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

Moderator: Shaos

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

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

Post by newold86 »

Vic3Dexe wrote:Запустил контроллер флопа (i82077A-1).
В смысле, написанный на HDL'е, или с реальной микросхемой ?
Vic3Dexe wrote:Здорово помогло вот это. Несмотря на то, что я и бинарник неплохо читаю, комментарии были нелишними.
Я тоже именно этим ресурсом активно пользовался

P.S. Наверное, было бы неплохо, чтобы модератор разделил бы мой и Ваш топики - проекты довольно разные, было бы проще следить...
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

8086+FPGA

Post by Vic3Dexe »

newold86 wrote:
Vic3Dexe wrote:Запустил контроллер флопа (i82077A-1).
В смысле, написанный на HDL'е, или с реальной микросхемой ?
В смысле реальный 82077А-1 в корпусе PLCC-68. В циклон я аналоговые цепи не засуну при всем желании :)
newold86 wrote: P.S. Наверное, было бы неплохо, чтобы модератор разделил бы мой и Ваш топики - проекты довольно разные, было бы проще следить...
Я как бы тоже "за", ибо уж слишком наши проекты разошлись друг от друга, но с другой стороны... куча работы Shaos'у. :)
И по-любому он модератор, так что ему и решать.
Last edited by Vic3Dexe on 16 Feb 2016 16:50, edited 1 time in total.
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

Vic3Dexe wrote:Я как бы тоже "за", ибо уж слишком наши проекты разошлись друг от друга, но с другой стороны... куча работы Shaos'у. :)
И по-любому он модератор, так что ему и решать.
отделил (отсюда)

P.S. все остальные мессаги касательно отделеня потёр, а это поправил - можно оставить так наверное, чтобы было понятно когда и зачем отделилось...
Я тут за главного - если что шлите мыло на me собака shaos точка net
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

8086+FPGA

Post by Vic3Dexe »

Прицепил оба имеющихся у меня привода (3.5" 1.44 и 5.25" 1.2).
Успешно проходят recalibrate и seek. А вот ReadID на пятидюймовом виснет (т.е. контроллер постоянно висит в фазе выполнения). Похоже, умер датчик индекса или ИК-диод. Или оба сразу.
На трехдюймовке ReadID успешно находит дорожки, на живых дискетах, разумеется. На мертвых - отваливается с правильной ошибкой, но не висит.
Блин, и ведь пятидюймовку наверно не найдешь уже... :(
Last edited by Vic3Dexe on 16 Feb 2016 16:54, edited 1 time in total.
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: 8086+FPGA

Post by Vic3Dexe »

Успешно почитан сектор в PIO-режиме. Сильно озадачил статус выполнения "abnormal termination" с аргументом end of cylinder.
Все дело в том, что контроллеру флопа нельзя указать число секторов для чтения. Можно указать только конец цилиндра, а конец передачи определяет исключительно сигнал DMA terminal count.
Таким образом, при PIO флоп читает все сектора до конца дороги (или сколько сказано в параметре EOT), лезет дальше, т.к. его никто не останавливает, и закономерно сообщает end of cylinder (т.е. вылет за пределы указанного EOT, каким бы оно ни было).
В документации на контроллер в п. 2.4.5 (DATA TRANSFER TERMINATION) прямо сказано:
The only difference between these implicit functions [имеется ввиду EOT] and TC is that they return "abnormal termination" result status. Such status indications can be ignored if they were expected.
В копилочку, так сказать.
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: 8086+FPGA

Post by newold86 »

Vic3Dexe wrote:...год назад написаный i8288...

Не поделитесь кодом ?
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: 8086+FPGA

Post by Vic3Dexe »

Держите.

Рассчитан на подключение к согласователям уровней с ручным управлением (ну т.е. не автоматическим), нет независимого управления старшей и младшей половиной, т.к. проц у меня именно 8086.
DENA используется для открытия трансиверов в фазе адреса, а DEND - в фазе данных.
Сигналы MRD/IORD и AMWR/AIOWR имеют длину 2 такта, MWR/IOWR - 1 такт (ну как в даташите).
INTA наружу выдается только один (первый все равно чисто технологический, для обмена между мастер и слейв PIC).
You do not have the required permissions to view the files attached to this post.
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: 8086+FPGA

Post by newold86 »

Vic3Dexe wrote:Держите.
Спасибо !

Наберусь еще наглости - сигналы AEN и CEN не разбирались, как реализовать ?
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: 8086+FPGA

Post by Vic3Dexe »

Во-1 зачем?
Во-2 что там сложного-то? Судя по описанию, эти входы просто выключают те или иные выходы 8288. Добавьте пару условий да и все.
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: 8086+FPGA

Post by newold86 »

Vic3Dexe wrote:Во-1 зачем?
Есть одна пока не до конца сформировавшаяся мысль...
Vic3Dexe wrote:Во-2 что там сложного-то? Судя по описанию, эти входы просто выключают те или иные выходы 8288. Добавьте пару условий да и все.
Какое-то время назад я пытался разобраться во внутренностях 8288, но datasheet'а мне не хватило, а больше никакой информации нарыть не смог...
И Verilog я не знаю вообще - читать/понимать еще немного могу, а вот дописать нет :(
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: 8086+FPGA

Post by Vic3Dexe »

CEN переключает все командные выходы (т.е. IORD и т.п. - см. в даташите картинку), а также DEN и /PDEN в неактивное состояние.

Code: Select all

что-то типа

nMWR_OUT = CEN | nMWR; //т.е. если CEN=1, то выход будет =1 вне зав. от самого сигнала

с остальными так же

/AEN (если IOB=0, иначе не влияет ни на что вообще):
при переключении в 0 (т.е. активен) разрешает все командные выходы,
при переключении в 1 (неактивен) запрещает их, переводя в Z-состояние.

Циклон вообще не позволяет каким-либо внутренним узлам переходить в Z-состояние, только внешним ногам. Так что AEN имеет смысл реализовывать, если у вас командные сигналы выходят наружу и не проходят через согласователи уровней и с ними параллельно работает какой-нибудь DMA.
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: 8086+FPGA

Post by Vic3Dexe »

Приделал на скорую руку DMA под флоп. Код не выкладываю, ибо во-1 раскидано по разным модулям, во-2 сильно урезано (1 канал, да и тот сугубо в режиме on-demand), в-3 комментировано чуть менее чем никак.
Тем не менее, наконец-то сектор с 3.5" почитан без ошибок.

Купил еще один 5.25" аж в Сумах, подрубил... и понял, что я чего-то не понял. Виснет точно так же.
Переткнул на боевой Core i7 - успешно пытается читать дискеты 20-летней давности (угу, fformat даже удалось скопировать). В основном, конечно, дальше корня дело не идет, но и то хлеб.

Похоже, дело в подтяжках входных линий (т.к. смену дискеты тоже не видит). Стоят килоомные резисторы, планирую уменьшить до 200-300 Ом (как рекомендовано в даташите на контроллер). И в связи с этим возникают 2 вопроса:

1. Что курили разработчики, предлагая мне собрать схему на картинке? Я раздельные шлейфы должен был делать, или что?
2. Если же по-людски обойтись одним шлейфом, то не убью ли я 3.5" флоп такими подтяжками (200-300 Ом)? Не то чтобы его очень жалко, но все-таки...
You do not have the required permissions to view the files attached to this post.
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: 8086+FPGA

Post by newold86 »

Vic3Dexe wrote:DENA используется для открытия трансиверов в фазе адреса, а DEND - в фазе данных.
Не подскажете, какой из них соответствует "настоящему" сигналу DEN ? У меня что-то сегодня с головой, вообще запутался во всем...

И, насколько я понял, полярность сигнала отличается от полярности этого же сигнала у 8288 ?
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: 8086+FPGA

Post by Vic3Dexe »

У 8288 нет фазы адреса :)

Я избавился от внешних защелок адреса, а значит, нужно было пропустить адрес от CPU через согласователи (они же трансиверы) в момент спада ALE. Для этого их надо открыть, что и выполняет nDENA, с DT/R ничего делать при этом не надо - он и так =1.

Так что настоящий - nDEND, но он у меня слегка растянут. Помню, что сделал это для того, чтобы при nMRD/nIORD в его длительность укладывалось 2 фронта клока проца, а не один. Но вот зачем это мне было нужно - уже не помню :-?

Да, ну и забыл обозначить частоты - OSC = 3*CLK, т.е. CLK - это клок проца со скважностью 30% от 8284, OSC - опорная частота, которая подается на 8284.
В моем случае CLK = 10M, OSC = 30M.

8284 я уже давал, там почти ничего не поменялось.

По флопам - дело было не бобине (с). Выловил гнусный баг в коде сброса контроллера, и новый 5" привод заработал как там и был. Так что подтяжки в 1к - вполне.
После недолгих исправлений в DMA заработала и запись.
Допишу остатки int13 и будем пробовать загрузить винду :)
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: 8086+FPGA

Post by newold86 »

Vic3Dexe wrote:Из имеющегося циклона я выжал все - кончились ноги и встроенная память. Поэтому была запилена новая плата под BGA-версию взамен китайского недоразумения.
Разумеется, паять дома BGA мне тупо нечем - ни прожектора, ни строительного фена :) , поэтому поехал на поклон в ближайший по гуглу ремпункт для ноутов.
Там удивились, но припаяли за 200 грн. (~8 у.е.). Результат - не контачит с десяток ног. Поехал второй раз. Там признались, что недогрели из боязни спалить. Пропаяли еще разок и - о чудо! - все работает, прошивается и по JTAG и по AS (флешка EPCS16).

Отдельных матюков заслуживают конденсаторы обвязки 0402 (бОльшие просто не влезали между виа под BGA).
Сколько слоев использовали и чем разводили ?