А так хорошо начинал, а по факту даже РК-86 не смог ….
- - - Добавлено - - -
Вот же блин жизнь. Нежданчик вылупился и ушел в закат, а я тут с банном и бананом остался![]()
А так хорошо начинал, а по факту даже РК-86 не смог ….
- - - Добавлено - - -
Вот же блин жизнь. Нежданчик вылупился и ушел в закат, а я тут с банном и бананом остался![]()
Электроника КР-02, MSX YIS-503IIR, Орион-128, Ленинград-2, Pentagon-128k, MSX2 YIS-503IIIR, MSX-EXT, ...
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Я про формирование из уже готовых пикселей:
Здесь - 99% асинхронности. Это тот участок, который в оригинале был реализован на КП12/КП11 и мелкой логике.Код:ps <= ps1 when (video_mode(3) = '1') else ps2; -- video modes manage vm14 <= video_mode(1) or video_mode(4); vm12 <= not (video_mode(1) and video_mode(2) and (not video_mode(4))); vm_ps <= vm12 or (not vblank_n); vm_st <= vm14 or (not vblank_n); vm_pr <= not ((not vblank_n) or (vm14 and vm12)); sel16 <= (not vblank_n) or (not video_mode(4)); -- video data switchers RR <= (video_mode(0) and pxls(0)) when ((vm_st='0') and (pxls(1)='0')) else (not pxls(0)) when ((vm_st='0') and (pxls(1)='1')) else ps(6) when ((vm_ps='0') and ((pxls(0)='0'))) else ps(2) when ((vm_ps='0') and ((pxls(0)='1'))) else pxls(2) when ((vm_pr='0') and ((sel16='0'))) else '0'; GG <= (video_mode(0) or pxls(0)) when ((vm_st='0') and (pxls(1)='0')) else '0' when ((vm_st='0') and (pxls(1)='1')) else ps(5) when ((vm_ps='0') and ((pxls(0)='0'))) else ps(1) when ((vm_ps='0') and ((pxls(0)='1'))) else pxls(0) when ((vm_pr='0') and ((sel16='0'))) else '0'; BB <= (video_mode(0) and (not pxls(0))) when ((vm_st='0') and (pxls(1)='0')) else pxls(0) when ((vm_st='0') and (pxls(1)='1')) else ps(4) when ((vm_ps='0') and ((pxls(0)='0'))) else ps(0) when ((vm_ps='0') and ((pxls(0)='1'))) else pxls(3) when ((vm_pr='0') and ((sel16='0'))) else '0'; II <= '0' when ((vm_st='0') and (pxls(1)='0')) else '0' when ((vm_st='0') and (pxls(1)='1')) else ps(7) when ((vm_ps='0') and ((pxls(0)='0'))) else ps(3) when ((vm_ps='0') and ((pxls(0)='1'))) else pxls(1) when ((vm_pr='0') and ((sel16='0'))) else '0';
"Байт-48"
Решил всё-таки вернуться к железу, благо время появилось, спустя столько-то времени.
Поднял платку 18-ого года, нарастил "мясо" для тестов - на платке с STM32 выполнил генератор сигналов для системной шины с терминальным интерфейсом.
Пока что смог проверить только формирование видеосигнала - некоторые режимы некорректно работают, надо смотреть прошивку PLD'шки, формирующую выходной сигнал.
Результат на экране, 4-х битный режим.
Вид стенда.
"Байт-48"
Взглянув на твою фотку, категорически рекомендую обратить внимание на "подводный камешек".
Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).
andreil(03.05.2020)
Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).
По логике - надо пин BUSY завести на GAL'ку и в зависимости от её состояния разрешать защёлкивание видеоданных. Ну и сам процесс делать дважды, для перестраховки. По схеме - это ИР'ки, которые стоят между памятью и сдвиговыми регистрами видео.
ATF22V10C-15PC
"Байт-48"
Блин, andreil, что же ты "на ровном месте" проблему-то создал?
При чём здесь разрешение защёлкивания видеоданных???У тебя на правом порту сидит видеоконтроллер, он только читает данные, и достоверные данные ему доступны всегда! Здесь все чики-пуки.
А вот на левом порту у тебя сидит процик, и он не только читает, но и пишет данные в видеопамять. И вот здесь при записи в те же адреса, где в данный момент идёт сканирование видеоконтроллером, возможны артефакты на экране из-за асинхронизма одновременного доступа к памяти двух потребителей. Арбитр просто блокирует запись, а когда коллизия по адресам устраняется, то происходит не совсем корректная запись по не совсем корректным адресам. AlexBel натурально это обнаружил в своём проекте. И я тоже в своём. У тебя же просто еще нет записи... Будь уверен - будет абсолютно так же. Если же не веришь - ты сначала запусти ориончик с тестом памяти, а потом и последуй совету:
Обходится этот "подводный камешек" элементарно - на вход Master/Slave подать постоянный нолик, а на вход левого Busy подать постоянную единичку.
Ты, наверное, сговорился с MM - ничего не видите ни в даташитах, ни в аппликухах...
А вот это уже я лопухнулся... На фотке же видно, что 15 нс.
Просто вполне доступны и 7 нс чипы, и в видяхе они особенно были бы уместны.
Да пребудет с тобой Сила!![]()
Последний раз редактировалось LeoN65816; 07.05.2020 в 00:55.
Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)