А шина данных подтянута к питалову? Вроде без этого никак.
Вид для печати
А шина данных подтянута к питалову? Вроде без этого никак.
Конечно, через 10к резисторы. Тут как-раз в параллельной ветке народ обсуждает кр1806вм3 который CMOS 5v, и его согласование с TTL микрухами, конечно у Z80 все гораздо проще похоже, наверное CMOS версия Z80 проектировалась такой чтобы без переделки схем заменять NMOS версию.
Вот таки нужна схема!
Ладно. Асинхронные триггеры в CPLD будет еще тот источник глюков. Ну, ладно. Раз все так плохо. Предлагаю сосредоточить внимание на тесте VDP (первоначальной версии). ОЗУ тесту не нужно. Достаточно дешифратора I/O (VDP), ПЗУ и CPU. И добиться, что бы работал, как часы.
гы, дык схема реально не существует :) я чего сделал:
1. поставил на плату z80, i8255, 27c1000, 62512, v9958+(4*81c4256 4464 не было :( ), ay8910, epm3064-atc100 (100pin);
2. соединил все шиной данных и шиной адреса, без всякого лукавства, ну т.е. a0->a0, d0->d0, wr_n->wr_n и т.д. (ну ясное дело что там a14, a15, a16, a17 для ROM завел с CPLD, ну там внутреннюю шину между vdp и dram тоже как положенно, всякие cs_wr, cs_rd для vdp и oe_n для ROM естественно формирует CPLD в самой прошивке vhdl все сигналы названны четко и понятно);
3. аналоговая часть не важна по сути, ну там содрал все с чужих схем, там где формирование reset, rgb out;
4. еще есть цепи питания, подтяжки неиспользуемых сигналов на 1, интерфейс программирования CPLD - по ним все по даташиту микрух подал;
А шо по триггерам может быть не то? их там аж 3. 1-й держит slot_enable и еще 2 держат 3-bit регистры mapper-a ascii16 (которые пока что вообще не имеют сброса, хотя наверно надо их устанавливать по сбросу в 0 и 1? тут не уверен как этот картридж вообще работает, там в каждой странице есть стартовый код? или по сбросу надо включать страницы 0 и 1?);
test_V2 работает нормально, показует желтый экран и надпись hello world...
теперь как писал уже выше нужны еще пару тройку тестов...
Надо себя заставить. Мне очень помогает спустя более 3 лет старта проекта MSX-EXT или сколько там, склероз уже :)
Хз. Поддался общей панике. Шеф все пропало у клиента асинхронные триггеры :)
Дальше особо нечего тестировать. Необходим конфиг MSX1. ОЗУ у нас статика (могли быть траблы с ДОЗУ). Ставим биос MSX1. После рестарта начинается движуха (поиск и тестирование ОЗУ) на порте A PPI. Через несколько секунд движуха останавливается и порт A PPI фиксирует раскладку слотов барсика (предположу - слот 0, слот 0, слот 3 и слот 3). Все!
P/S. Справедливости ради. Когда тестил первые запуски. Подключал китайский аналалайзер за $4 (8 каналов) и смотрел на обрубке шины данных (6 бит) первые 10 команд Z80.
MSX удивительно толерантен к железу (бо сделан по уму), и брыкается только в случаях, когда совсем капец.
- - - Добавлено - - -
ЗЫ. Может вдруг, нужен целевой тест PPI. Но тут я уверен вы и сами справитесь ;)
та охота сначала чтоб оно взлетело, тогда можно будет потренироваться и сочинить в proteus вродибы как можно и схему и симуляцию и даже печатную плату... но то уже когда будет шото работать
гы... надо попробовать
хм, ну дык вот я ранее и писал об этом:
Конечно можно покопаться с доками i8255 и попробовать самому сочинить, но там же надо режим вывода для порта А сначала установить, чтоб в него писать можно было потому не уверен что тест правильный напишу а тестировать неправильным тестом это конечно жесть.Цитата:
Эх нужны отдельные тесты для i8255, памяти и ay8910. Сначала тест слотового переключателя который бы поочередно подключал бы все слоты поочереди во второе, третье и четвертое окно (первое окно как я понимаю трогать нельзя потому как в нем этот тест и запущен будет). Установив такой тест можно осцилографом обнаружить частоту на выходах слотового переключателя (так же само наверно можно протестировать выводы i8255 на магнитофон и клавиатуру). Потом если i8255 рабочая то можно тест ОЗУ в slot3 пускать, там по идее надо во второе третье и четвертое окно включить slot3 и убедиться что в них ОЗУ работает (в первое окно тоже надо бы... но то сложнее надо код переносить в другое окно и запускать из него.. что муторно). Ну и последний тест наверно тест ay8910 который генерит звуки и частоту на его I/O выводах.
PPI не VDP :D Всего 4-е ригистра. В MSX работает в режиме 0.
После сброса работает в mode 0, три порта на ввод. Стоит записать управляющее слово (порт А - вывод). Порт A сбрасывается в 0 (msx слоты довольны, 00.00.00.00) :D
- - - Добавлено - - -
Кстати это топорное использование PPI (порт А) можно (видимо) перенести в CPLD (- 8 входов). И clk добавить в CPLD. Красота.
короче у меня какойто затык с этим PPI, получается после сброса сразу срабатывает slot_enable и после этого дико запрашивает RAM а ROM вообще не опрашивает, что говорит о том что врубился железно slot3 во всех окнах... а PPI при этом как я понял не проинитился, потому что у него все выводы отведенные для slot управления в 1 (я ж их подтянул к 1), надо как то чтобы сначала вписалось значение в ppi и выставились все конфиги слотов а потом уже и slot_enable гнать, ато оно сходу лепит RAM во все 4 окна и не успевает в ppi вписать значение для slot-ов
или надо к 0 было притянуть выводы слотового конфигуратора?
Не знаю, прошивка CPLD самодельная или использовались источники. Буду отталкиваться от своего модуля PPI и исходников BIOS.
Этого не должно быть. После сброса сигнал /SLTEN не активный. Порт A PPI игнорируется. И схема на U8 и U9-1 обеспечивает удержание слота 0 на всех страницах. После первой записи управляющего слова в PPI порт А конфигурируется на вывод и сбрасывается в ноль. А также активируется сигнал /SLTEN. Что разблокирует схему на U8, U9-1 и разрешает работу порта А PPI в качестве регистра слотов.
В этом нет необходимости (рассказано выше).
сначала /SLTEN не активный, но как токо выставляется /PPI сигнал (который еще и не учитывает A2) то сразу становится активным, что у меня и происходит (так как стоит прошивка msx-1), вот по листингу
как токо сработал 1-й OUT то уже /SLTEN активный! ну и значит что код команды для XOR A уже будет выбираться с использованием схемы маппера (и тут важно чтобы по сбросу в i8255 регистр A содержал значение 0 в D0 и D1 битах), но у меня похоже что либо не отрабатывает запись в PPI.CM регистр, либо после сброса там в A регистре 0xFF :( и оно начинает в slot3 молотить бешенно в неинициализированный SRAM.Код:0691 02D7 3E 82 LD A,82H ;Port A - output (mode 0)
0692 02D9 D3 AB OUT (PPI.CM),A ;Port B - input (mode 0)
0693 02DB AF XOR A ;Port C - output (mode 0)
0694 02DC D3 A8 OUT (PPI.AW),A ;Select slot 0 for all addresses