| Приставки > Картриджи / диски |
| Пиратский картридж с 8бит ПЗУ и 8бит регистром 74ls374 |
| (1/2) > >> |
| as32888:
Задумался, зачем в одноигровке, работающей без мапперов, регистр 74ls374. Срисовывая схему, сначала не понял, а потом как понял... VD0..VD7 cигналы соединены со входами регистра и с ПЗУ VD8..VD15 соединены с соответствующими выходами регистра, а на ПЗУ дорожек нет, ПЗУ видимо 8бит /CE_0 (B17) соединен с /OE регистра и идет под каплю /CAS_2 (B21) через инвертор заходит на вход clock неинверсный и в каплю (видимо, на старшую линию адреса) /CAS_0 (B16) не используется Стало быть, в сегах есть какая-то возможность читать 2 байта по очереди. И еще факт - на ретрогенезис на tct-6803 картридж не работает, хотя я не смотрел пока, есть там /CAS_2 или нет, или мож капле или логике питания не хватает, но другое подобное старье с питанием ПЗУ под каплей от 5 Вольт работает. На картридже следы моего любопытства в возрасте лет 10, типа че будет, если дорожку порезать, ну просто ничего не работало, назад приляпал и работало... Возможно, что-то недосрисовал. |
| Rumata:
--- Цитата: as32888 от 19 Июль 2024, 19:38:53 ---Стало быть, в сегах есть какая-то возможность читать 2 байта по очереди. --- Конец цитаты --- Стало быть нет. /CAS2 в два раза короче /CAS0 Сначала в регистре защелкивается старший байт, потом переключается адрес и с шины читается полное слово. |
| Rumata:
/CAS2 есть на SM-801, TCT-6035, TCT-6001H. А потом его нет. Зато есть переключение между внутренним ПЗУ и внешним. |
| as32888:
--- Цитата: Rumata от 19 Июль 2024, 19:56:41 ---/CAS2 в два раза короче /CAS0 --- Конец цитаты --- Значит, если /CAS2 нет, его можно родить из /CAS0, если искусственно ограничить длину импульса? Сделать одностабильный мультивибратор. |
| Rumata:
Можно. Только зачем? Использование 8-битных ПЗУ крайне ограничено. Объём слишком маленький. А если ставить две, до логичнее разбивать побайтно, что обычно и делали. |
| Rumata:
Кстати, в упор не понимаю, почему они решили коммутировать старший адрес. В таком случае надо специально подготавливать файл: сначала разделить побайтно, а потом склеить верхнюю и нижнюю части. Если коммутировать младший адрес (А0 ПЗУ), то можно зашивать файл "как есть" |
| as32888:
Я бы добавил еще, что не только младший адрес лучше коммутировать, но и заводить на него CAS2, уже без "/", то есть с выхода инвертора, как в этом китайском картридже. По поводу зачем 8-битное ПЗУ - ну, если ром в объем влезает, и если в наличии эти самые 8-битные ПЗУ каким-то боком есть, и хочется куда-то затулить какие-нибудь 27C040 Добавлено позже: Неинверсный кас2 на младший адрес позволит с ромом не делать никаких перестановок, а просто писать как есть. |
| Rumata:
Ну так в пиратке многое как раз делается под текущее наличие. Не знаю, на сколько это сейчас актуально. Так-то в 512 кбайт много не запихаешь, хотя ряд игр есть. |
| as32888:
Если только хочется сделать себе самому одноигровки из таких маленьких игр. Еще смотрю, /OE ПЗУ сидит на земле, ПЗУ всегда выдает данные, а защелкивание в регистре при окончании /CAS2 получается до начала смены данных на выходе ПЗУ с допущением, что ПЗУ имеет больше задержку срабатывания, чем регистр. |
| Rumata:
Ну не всегда, только при активном /CE. И тут ещё надо смотреть цикл шины 68000, когда он забирает данные с шины. |
| as32888:
А, точно. Я вот не знаю, если менять адрес при активном /CE, ПЗУ меняет данные сразу, или нужно /CE прервать, поменять адрес, а потом снова сделать активный /CE? Во всяком случае, как-то оно всё работает... одно другому соответствует |
| Rumata:
Нет, ничего прерывать не нужно. Это у FRAM /CE используется как строб адреса. |
| as32888:
--- Цитата: Rumata от 20 Июль 2024, 00:10:34 ---Нет, ничего прерывать не нужно. --- Конец цитаты --- Я хотел спросить, сам /CE_0 со слота - это получается одиночный импульс, который просто длиннее, чем /CAS_2? |
| Rumata:
/CE0 формируется в каждом цикле обращения к картриджу в диапазоне $000000 - $3FFFFF /CAS0 формируется от нуля до $DFFFFF. /CAS2 наверно так же, не проверял |
| as32888:
Это по адресам, а по длительности импульсов - /CE_0 и /CAS_0, получается, одной длины и практически одновременно подаются? (при условии что мы за $3FFFFF не выходим, то есть подаются оба) И /CAS_2 половинной длительности |
| Rumata:
В первом приближении так. |
| as32888:
Значит, когда /CAS_2 становится неактивен, почти сразу регистр защелкивает значение на своем выходе (т.к. он быстрее, чем ПЗУ, имеет внутри меньше стадий, задерживающих сигнал), и сразу же А0 (включенное к выходу инвертора на /CAS_2) меняется на лог0, и ПЗУ само по смене значения А0 начинает менять данные на выходе (пока /CE_0 активен, то есть вывод данных тоже активен при смене А0) |
| Rumata:
374 защелкивается по положительному фронту (0 -> 1), то есть по заднему фронту /CAS2. Быстродействие не при чём. Просто /CAS2 короче. И при смене адреса ПЗУ с некоторой задержкой (см. даташит) изменит информацию на выходах. Смена будет происходить внутри ПЗУ не зависимо от /OE и /CE, а вот непосредственно на выходе данные будут появляться только при активных /OE и /CE, там же выход с тремя состояниями. |
| as32888:
Тогда если 374 защелкивается по фронту, то начало активного /CAS_2 (спад) должно быть сдвинуто относительно начала /CAS_0, то есть /CAS_2 более короткий, потому что у него начало (спад) позже, а конец (восстановление лог1) там же, где у CAS_0 исхожу из факта, что /CAS_2 по приведенной схеме инвертируется, чтобы зайти потом в неинверсный тактовый вход регистра --- Цитата: Rumata от 20 Июль 2024, 01:54:03 ---И при смене адреса ПЗУ с некоторой задержкой (см. даташит) изменит информацию на выходах. --- Конец цитаты --- А тем же сигналом логическим по схеме происходит защелкивание регистра, то есть увеличенная задержка ПЗУ относительно задержки защелкивания регистра служит тем фактором, который позволяет защелкнуть старый байт информации, пока новый не выдан. Соответственно, если бы ПЗУ срабатывало быстрее, чем регистр, в регистре бы оказался младший байт уже. |
| Rumata:
Да, наверно :-\. Проблема в том, что это было лет 20 назад. Попробую посмотреть, может какие записи остались. |
| Навигация |
| Главная страница сообщений |
| Следующая страница |