Циклы для 8-битного процессора и чтения памяти
Возможно ли, чтобы 8-битный процессор считывал память менее чем за 3 такта? Я знаю, что 6502 работает с асинхронной памятью, но как насчет других 8-битных процессоров с тактовой памятью? Нужен ли мне делитель часов, чтобы замедлить процессор?
Насколько я понимаю, во время цикла 1: процессор выводит адрес, во время цикла 2: память считывает адрес, затем выдает соответствующий байт, а во время цикла 3: процессор, наконец, получает байт. Это правильно?
0 ответов
Я понимаю, что во время цикла 1: ЦП выводит адрес, во время цикла 2: память считывает адрес, затем дает соответствующий байт, а во время цикла 3: ЦП наконец получает байт. Это правильно?
Это не совсем так. В частности, ЦП должен "получить" байт в том же цикле, в котором его "отдала" память. Обычно значение фиксируется с нарастающим или спадающим фронтом тактового сигнала.
Что именно происходит, зависит от выполняемой инструкции. Например, немедленное выполнение LDA занимает два цикла. В первом цикле ЦП считывает код операции. Во втором цикле ЦП считывает операнд и сохраняет его в аккумуляторе.
Другой пример: Zeropage LDA. ЦП читает инструкцию в первом цикле. Он читает адрес во втором цикле. Затем он считывает данные в аккумулятор на третьем и последнем цикле инструкции.
Обратите внимание, что каждый цикл является доступом к памяти на 6502. Адрес выводится, а 8-битное значение считывается или записывается. Всегда.