Зазеркалил новый вариант. С эксерсайзером поступил проще: взял готовый бинарник с сайта и подправил вызовы. Сейчас кручу на настоящем процессоре на предмет эталонного результата. Затем в ход пойдет модель.
Вид для печати
Зазеркалил новый вариант. С эксерсайзером поступил проще: взял готовый бинарник с сайта и подправил вызовы. Сейчас кручу на настоящем процессоре на предмет эталонного результата. Затем в ход пойдет модель.
ivagor, какого размера проц выходит? И для сравнения сколько занимает T80, чтобы сразу.
HardWareMan - новости есть с тестирования на реале ?
кстати надо еще учесть согласование уровней. Особенно 12 вольтовые клоки.
Электрическая часть ващпе не проблема. Меня интересует тест. Она там кучу трюков пользует, что на некоторых тестах стек выкидывает в экран, рисуется мусор и все благополучно повисает. Мне интересно, это особенность скомпилирования под CP/M или просто гранаты у меня не той системы? В общем, сейчас я принялся за анализ исходника и правки его под окружение Специалиста. Думаю в ближайшие сроки осилю. Этот тест не только процессор тестирует, но и стабильность работы: продолжительность то большая. В будущем пригодиться как дополнение к тестам памяти.
Надо бы узнать у BarsMonster-а, какой именно процессор он травил и фотографировал. Т.е. кто и когда его произвёл. Ведь были же разные ревизии у разных производителей.
Думал об этом на днях, и пришел к выводу что это конечно важно (с точки зрения фиксации факта reverse engeneering-a для истории). Но! На фоне того что ЛИЦЕНЗИОННЫЕ(от разных производителей AMD, NEC и т.д.) i8080 и тем более i8085 выдают РАЗНЫЕ hash коды в exerciser-e о какой "борьбе за чистоту" может ити речь? И какой процент софта вообще откажется ити на i8085 потому что он другой hash генерит?
(К стати, думаю если написать такую прогу как exerciser на pdp-11, то не найдется ни одного процессора у которого бы совпали hash коды с другой моделью, но при этом как-то "живут люди").
вроде ТОЛЬКО AMD имеет отличия
да и то, оно AMD вроде не лицензия а типа "своя разработка"
а остальные - лицензии и пока нет отличий.
Вот что за разгильдяйство творится. Перелопатил исходник эксесайзера и получил оригинальный бинарник на своем ТАСМе. Далее, подправил вывод текста и хекса, установку стека и запустил. Мой *****эмуль выдает *****, но работает:
http://savepic.ru/5578223.png
Эмуль EMU80 тоже не попал, но так же работает:
http://savepic.ru/5630446.png
А реал крашится на середине первого теста DAD:
http://savepic.ru/5609966.png
В результате стек падает в 09BXXH (т.е. в экран, это нормально, там перед тестом инициализация регистра SP значением 09BC9H) и вываливает на ввод символа. Далее, если нажать кнопку весь тест зацикливается и до следующего выпадания. То ли память барахлит, то ли что-то еще - я не знаю. Можно попробовать вынести переменные теста за пределы программы и исполнить его прямо из ПЗУ. Или уже свой какой-то тест написать... Другие программы на реале работают без проблем.
PS Тест взял со значениями для 580ВМ80А.
в эмуляторе b2m пробовали ?
там в теории должно без ошибок быть.
Ну вполне ожидаемо:
http://savepic.ru/5590520.png
Походу, надо плотно тестировать память. Или может процессор, я прям не знаю. Но начну с памяти.
* * *
http://savepic.ru/5612843.png
Теперь понятно. Ну что-ж, будем искать...
* * *
Надо же, а после прогрева все работает вроде как правильно. Придется расчехлить МХ2 и поиграть с ним. Процессор то все равно одинаковый.
Ну, вот и встало все на свои места. Прошил тест в МХ2 и все сразу взлетело с полпинка. Не смотрите что все синее, просто я для простоты не сделал настройку цвета а для контроля и так сойдет. Как только прогоню весь тест полностью и убежусь что все тесты проходятся моим КР580ВМ80А корректно попробую корку в этой же плате. Ожидайте новостей.
http://savepic.ru/5600497.jpg
А "корка" на чем прогонятся будет? В смысле во что залита будет и каким способом подключаться вместо физического процессора?
У меня есть несколько разных девборд. В данном случае, я буду использовать эту. Примотаю изолентой левел шифтер этажеркой под DIP40 и всего делов. В ней 6К ЛЕ, так что хватит побаловаться в полную. Затем можно будет подумать про выкидывание HOLDа и, возможно, INTа. Хотя второе используется в том же Орионе и мне не хочется его терять, т.к. есть хитрый план на ПЛИСине сделать универсальный переключаемый комп Спец-Орион. Собственно, в симуляции все отлично, нужно делать в железе.
А генератор тактовой (снизу там на фото осциллятор, похоже, стоит) на этой платке на какую частоту?
Я тут подумал - для стабильной работы vm80a_core надо чтобы F1/F2 были синхронизированы с этой высокой тактовой (ну или F1/F2 вырабатывались от нее). Поэтому на входы F1/F2 надо бы добавить еще защелки (внутри ПЛИС, ессно, по высокой тактовой) для нормальной работы, 10...20нс задержки никак не повлияют на остальную схему. Прочие входные сигналы вроде бы в модуле сэмплятся явно, больше защелок не нужно.
Ну да, это классика Альтеры: 50МГц. То, что ключевые сигналы надо пропускать через синхронизатор - это верно. Я могу даже задействовать отдельный вход и подключить к высокой самого компьютера (8МГц в случае с Экспрессом и 40МГц в случае с МХ2). Тогда будет полная синхронность.
Вот уже почти час молотит самый долгий тест:
http://savepic.ru/5596190.jpg
В спецах, кстати, согласовать F1/F2 проще простого: достаточно подтягивающие сопротивления убрать и поставить перемычки/обычные инверторы, либо переключить с 12в на 5в/3.3в.
* * *
Прошло около 2х часов, колбасит все еще ALUOP <B,C,D,E,H,L,M,A>... Когда буду тестировать корку, то передвину этот тест в самый конец списка.
* * *
2,5 часа:
http://savepic.ru/5575703.jpg
* * *
Посыпались остальные тесты, пока полет нормальный...
Итак, тест рабочий! Процессор мой тоже похоже рабочий. МХ2 стабилен (чего не скажешь о Экспрессе). Приступаю к монтажу нашего клона.
http://savepic.ru/5570601.jpg
Ну и после тест комплита поставить или вечный цикл или перевод строки. Чтобы не путались люди и кони.
По причине пересборки CP/M версии в обычный RKS бинарник для простого Специалиста/МХ/МХ2. Несколько другое окружение, несколько другие адреса и т.д.
Да, так и сделал в текущей версии. И еще укоротил сообщения, чтобы помещались в 64 символа. И еще много чего сделал. Например, перенес все служебные ячейки теста в 0BFxxH (последний столбик экрана). Наглядно видно что не завис и что-то считает. Вот так:
http://savepic.ru/5580857.jpg
ну и сам RKS если можно - приаттачить :)
ПыСы Я в плане - чтобы цикл не повторялся по кругу - для тестов памяти можно менее долгий/муторошный тест использовать.
А этот - просто по окончанию вывести надпись комплит и все.
А то сейчас нет надписей старт стоп и когда оно по кругу молотит - неясно откуда считать текущий тест. А так - доехало до конца - остановилось и все. ну или для желающих продолжить - добавить опрос кнопки Y для продолжения цикла.
Оригинал, тест хороший. Около 3х часов идет. Пусть будет так, я просто поменял местами тесты так, что самые долгие (по тактам) идут в конце, позволяя основное тестировать как раз в заявленные полчаса. Скриншот работы вверху. RKS приложен: отрабатывает прямо из загрузчика Специалиста, но монитор присутствовать должен (лень было искать точки входа загрузчика, поэтому использую мониторные).
PS Забыл добавить, что я изменил в мониторе скроллинг, чтобы он 0BFxxH не сдвигал, а в стандарте cдвигает (тестов больше чем 25). Поэтому необходимо перенести стек за пределы экрана (в самом начале есть 31 FF BF). Заранее извиняюсь.
Не, такого быстрого нету. Мне казалось что автор модификации писал про ускорение в 3 раза, но у меня реально получилось ускорится только чуть больше чем в 2 раза. Лично мне нравится запускать ускоренный вариант как экономящий время - я его наверное раз сто запускал, но то такое, кому что больше подходит.
Уточню - выложенный вариант exe7 правильно проходит на специалисте все тесты, кроме inx sp/ dcx sp. Чтобы все тесты проходили верно и на специалисте, нужно откатить посттестовый фрагмент до исходного состояния (подробнее здесь). Повышенная скорость при этом сохранится, но тестирование 8085 и 580ВМ1 станет не вполне корректным, как и для оригинального эксисайзера.
На скорую руку был собран вот такой адаптер:
http://savepic.ru/5605147.jpg
И вот он как работает (точнее, не работает):
http://savepic.ru/5611291.jpg
Активность есть на всех необходимых сигналах и она вроде как более или менее правильная. Тактовая последовательность четкая. В отличии от всех журнальных 8мибиток, которые предоставляют данные во втором такте после сигнала SYNC (когда F2=0), МХ2 предполагает, что процессор защелкивает данные по перепаду F2 0=>1. Загодя до этого данные на шину поступают: реальный процессор работает на ура. Отсюда быстрый вопрос для Vslav: в какой момент времени защелкивает данные модель?
Самому разбираться хоть и надо но это долго.
Нашел такое место:
Поменял на:Код:if (dbin_pin) di <= pin_din;
if (f2) dbin_pin <= t1124 & (m1f1 | ~sy_hlta);
Большую часть экрана стал закидывать мусором. Может я и не правильно что-то делаю, конечно.Код:if (dbin_pin | !f2) di <= pin_din;
WOW!
http://savepic.ru/5623572.jpg
Истина где-то рядом... Ощущение, что что-то не так с записью данных.
По поводу тактовой. В МХ2 она следующая (а так же в Спеце и Орионе):
http://savepic.ru/5626665.jpg
Датащит допускает спад F1 прикрутить к фронту F2 (дельта = 0), оригинал хавает, но как с этим у модели?
---------- Post added at 03:08 ---------- Previous post was at 02:25 ----------
АААААААААААААААААААААААА! Модель РАБОЧАЯ! Нужно было пропустить обе тактовые F1/F2 через триггеры, чтобы обеспечить их стабильность и синхронизацию к CLK 50MHz!
http://savepic.ru/5608232.jpg
Я сделал топором:
http://savepic.ru/5621546.png
А по хорошему это надо сделать внутри корки.
Основные тесты пройдены, остались три самых тяжелых с АЛУ. Это примерно на 3 часа зарубы, я пошел спать. Утром отпишу что и как.
http://savepic.ru/5604138.jpg
http://savepic.ru/5623595.jpg
Модель все тесты проходит! Можно приступать к оптимизиции и прочим процедурам!
http://savepic.ru/5609254.jpg
Чипы классические, китайские: SN74LVC8T245DBR. Для адресов можно применить SN74LVC16T245DGGR. А вообще, в хозяйстве это не надо. Можно просто поставить LTTL 245й на шину данных, т.к. она двухсторонняя, а остальное запитать через обычные х245/х537. Которые все равно должны стоять в компьютере для разгрузки ВМ80 (за исключением специалиста и РКшки они есть везде). Теперь надо попытаться похудеть до 570ЛЕ, чтобы влезть в CPLD.
Так я вроде честно об этом заранее рассказал, что без этой синхры стабильно работать не будет
Круто и решительно :).
Да, наверное. Только, думаю, не в vm80a_core, а в обертке vm80a. В проектах на FPGA тактовые CLK F1 и F2 обычно являются производными от одного клока и синхронизация не нужна. Найду проблему почему у меня модель перестала работать на "честном" тактировании и добавлю синхронизацию в обертку.
Можно и так. А можно их формировать внутри обертки. И тогда входная тактовая будет одна. Получится как-бы ГФ24 онбоард. Причем, так же как и ГФ24, сигналы READY/HOLD (и я бы еще RESET) надо так же пропустить через триггеры:
http://savepic.ru/5592894.png
Это будет полезно для встраиваемых проектов. Можно будет еще и в обертке нацепить ВКшку - ну, собственно, я об этом изначально и говорил. Жалко, что Спец и Орион не прокатят из одной тактовой - там нужна строгая синхронизация. Но если их делать на CPLD/FPGA, то проблем нет.
Это сделано уже, в оригинальном дизайне есть защелки на все эти сигналы, и я их честно перенес в корку. А вот F1/F2 - это уже наша придумка, в клоне они используются не совсем так как в динамической логике оригинала, поэтому добавить синхронизаторы на F1/F2 - наша явная задача.
Достаточно сделать генерацию F1/F2 на той же CPLD/FPGA и использовать в схеме Спеца/Ориона. То есть, F1/F2 на процессорном модуле сделать выходами и тактировать остальную схему. Но это уже не точный попиновый клон.
Вообще я вижу как получившуюся корку можно хорошо пооптимизировать, оставить одну тактовую, сделать стандартную синхронную шину типа AHB/Avalon/Wishbone, есть задумка как экономно по ресурсам/ячейкам сделать режимы Turbo/Original (а то глобальный clock_ena, например, в T80 - это просто грабеж какой-то). Но это получится именно качественный "потактовый" клон, а не "попиновый". Для "попинового" надо будет добавить соответствующую обертку.