Содержание
Тактовые сигналы
6502 включает в свой состав две схемы опорных тактовых сигналов : внешнюю и внутреннюю. Но прежде чем приступить к рассмотрению схем, нужно немного рассказать о тактовых сигналах 6502.
На вход процессора поступает один тактовый сигнал - PHI0, а на выход идут два тактовых сигнала - PHI1 и PHI2.
Такой принцип работы основан на том, что каждый такт процессора состоит из двух "режимов" : режима записи и режима чтения.
Во время режима записи высокий уровень имеет сигнал PHI1. В это время внешние устройства могут использовать адрес, установленный на внешней адресной шине процессора.
Во время режима чтения высокий уровень имеет сигнал PHI2. В это время внешние устройства могут записывать данные на шину данных процессора, чтобы он мог их использовать в своих целях.
Сигналы PHI1 и PHI2 называются полутактами и получаются из исходного тактового сигнала PHI0 следующим образом:
- Когда PHI0 имеет низкий уровень - процессор находится в режиме записи и сигнал PHI1 имеет высокий уровень
- Когда PHI0 имеет высокий уровень - процессор находится в режиме чтения и сигнал PHI2 также имеет высокий уровень
Но это ещё не всё, особенности всех тактовых сигналов мы рассмотрим в процессе изучения их схем.
Схема для разводки тактовых сигналов внутрь
Схема достаточно сложная, поскольку она не совсем "цифровая". Многочисленные транзисторы, выполняющие роль инверторов немного задерживают прохождение сигнала PHI0, поэтому сигналы PHI1 и PHI2, идущие внутрь процессора, немного "лагают". Вот логическое представление схемы :
А вот логический анализ :
PHI0 | PHI1 | PHI2 |
0 | 1 | 0 |
1 | 0 | 1 |
Развертка тактовых сигналов должна получиться примерно следующая :
- PHI1/PHI2 немного лагают относительно PHI0
- Нижний уровень PHI1/PHI2 немного длиннее верхнего, для того чтобы оба сигнала гарантированно не имели высокого уровня
Симуляция в кактусе показывает "лаг", но не показывает удлиненный нижний уровень (я дорисовал его руками на картинке выше). Поэтому ждём симуляцию в протеусе, там по идее должны более точно учитываться задержки в "рассыпухоподобных" схемах.
Подмога с форума 6502.org
Обратился за помощью на форум 6502.org и товарищ BigEd ответил, что он проводил симуляцию на базе FPGA-нетлиста 6502 и получил следующие развертки :
Обозначение сигналов следующие : clk0 = PHI0, cp1 = PHI1, cclk = PHI2 (согласно нетлисту с Visual6502)
Схема, на которой базировалась его симуляция из документации Балазца :
http://forum.6502.org/viewtopic.php?f=8&t=2208&start=195
Выходит что из-за несимметричного каскада инвертора происходит затягивание нарастающего фронта, поэтому нижний уровень как-бы "затягивается".
Официальный даташит
Схема для разводки тактовых сигналов наружу
Логическая схема внешней разводки тактовых сигналов не отличается от схемы внутренней разводки, за исключением того, что выходы PHI1/PHI2 идут на одноименные контакты через "гребенку" мощных транзисторов.
Симуляция
Ничего особенного делать для симуляции не надо.
PHI1 = NOT (PHI0); PHI2 = BIT (PHI0);
Propagation delay мы не учитываем при симуляции, точнее учитываем, но только в очередности выполнения блоков.
При этом опорный тактовый сигнал PHI0 "дергается" следующим образом, после того как все блоки отработали :
PHI0 ^= 1;