Pull to refresh

Comments 23

Если нет торможения внешнего процессора за счет сигнала RDY/WAIT, то значит такты должны вырабатываться ардуинкой программно (а не по таймеру в режиме PWM), т.к. мега не настолько крута, чтобы успевать реагировать на шину внешнего процессора. В свою очередь, не все процессоры статичны (т.е. способны хранить своё состояние при остановке тактов). Особенно nMOS — они используют паразитные ёмкости затворов для эмуляции триггера. Т.е. такие процессоры имеют верхнюю границу тактовой частоты, которая описана в датащите, и нижнюю границу тактовой частоты, о которой нигде ни слова, но она есть. Какова же реальная скорость эмуляции периферии?
Насколько мне известно, такая нижняя граница есть как раз у 6502. Но по факту здесь на 95 кГц всё работает.
У i8080/ВМ80 тоже есть. Дизайн Z80 не изучал.

Как тогда реализован ручной пошаговый режим в микропроцессорных тренажерах для вм80?

Когда процессор стоит на READY и при этом нормально клокается, он очевидно ничего не забывает.

Стоп. Помню книжку, в которой описывалось создание учебного компа на ВМ80 – с режимом тактирования по кнопке!

Там по факту «пошаговый» режим, а не «потактовый».
Сам работал с аналогичной отладочной консолью. Куча светодиодов на шинах адреса и данных + служебные. Переключатели для ручного задания адреса и данных.
Стоп. Это на обложке которой комп из кубиков нарисован? Так она у меня до сих пор на полке стоит, там схемы-картинки красивые, цветные. Обложка глянцевая, приятно иногда взять в руки, полистать.
1. 'паразитные ёмкости затворов' — это называется dynamic logic, конкретно transmission gate latch. Вполне нормальный приём, который экономит транзисторы. Может использоваться как в nmos, так и в cmos.
2. Максимальный период клока (если он важен) описан в даташитах. Конкретно для 8080, Z80 и 6502 точно описан. Для одного из производителей 6502 он например 40 мкс, что с запасом покрывает 10 мкс в переводе.
3. на картинке — вообще CMOS-вариант RP65C02. Этот позволяет останавливать клок в единичке бесконечно долго, а в нолике — не более 5 мкс (даташит). Откуда следует что формально 95 кГц (чуть более 10 мкс период) превышает этот параметр, а на практике, очевидно, всё будет работать, возможно кроме случаев испытания в термокамере.
Стало интересно и я таки заглянул в Intel 8080 Microcomputer Systems Users Manual. Там указан конкретно период тактовой частоты максимально 2мкс для всех вариантов i8080, т.е. 500кГц. Минимальный период же указан как 0.48мкс для i8080A, 0.32мкс для i8080A-1, 0.38мкс для i8080A-2 и 0.48мкс для MOS M8080A, что дает 2МГц, 3,125МГц, 2,6МГц и 2МГц соответственно.

Странно, что создатель не использовал еще Arduino для TV/VGA-вывода. Так бы его творения были бы самодостаточными.

Это уже малинку лучше использовать для такого эмулятора, там глядишь и частоту можно будет поднять.
Но это уже совсем другой уровень и деньги.
у малинки 3.3v gpio, придётся кучу level shifter'ов на 5v городить.

Если ограничиться текстовым режимом, то даже 328-я может работать видеокартой.

Можно попробовать использовать плату на микроконтроллере ARM Cortex (к примеру, какую-нибудь STM32 Nucleo), чтобы не возиться со сложностью raspberry и переиспользовать уже написанный код с минимальными изменениями (в основном вокруг таймера). Хотя придется все равно ставить переходник с 3.3v на 5v. С другой стороны, они есть готовые, и стоят копейки.

STM32 почти все ноги five volt tolerant

а процессор, 3.3в может и не принять за единицу
То есть распаять пару DIP корпусов и получить полную скорость процессора — это уже сложно, и давайте лучше эмулировать? Спорно как-то. В 21 веке возня с 6502 или 6809 — это в любом случае лишь для собственного удовольствия, без какой-либо практической ценности; так зачем отказывать себе в удовольствии попаять? (ИМХО старого электронщика, если что)
Старые электронщики, кстати, делают полноразмерные реплики на россыпухе. Прямо на 555/1533 ну или на крайний случай 74 серия. А более упоротые — прямо на транзисторах. Например, погуглите «MOnSter 6502». Транзисторная реплика 6502. На огромной плате.
Эх… Вспомнил молодость, пошел на Авито искать живой Спектрум.
Если считать Atmega328 == Arduino Nano (или как там её, не очень разбираюсь), то уж лучше пользовать все компоненты на всю катушку: процессор работает со своими железками, «ардуина» — со своими, общаясь друг с другом, скажем, через порты ввода/вывода (или проекцией на память процессора, что актуально для 6502), разгружая друг друга по исполняемым задачам, увеличивая тем самым общую скорость работы девайса. На этой базе собрал CP/M-совместимый компик для личного пользования, www.qsl.net/rw6hrm/html/z80.htm
Но если хочется эмулировать только периферию just for fun — описанный выше проект тоже имеет право на жизнь.
Sign up to leave a comment.

Articles