Перевод этой страницы:
ru

Тактовые сигналы

6502 включает в свой состав две схемы опорных тактовых сигналов : внешнюю и внутреннюю. Но прежде чем приступить к рассмотрению схем, нужно немного рассказать о тактовых сигналах 6502.

На вход процессора поступает один тактовый сигнал - PHI0, а на выход идут два тактовых сигнала - PHI1 и PHI2.

Такой принцип работы основан на том, что каждый такт процессора состоит из двух "режимов" : режима записи и режима чтения.

Во время режима записи высокий уровень имеет сигнал PHI1. В это время внешние устройства могут использовать адрес, установленный на внешней адресной шине процессора.

Во время режима чтения высокий уровень имеет сигнал PHI2. В это время внешние устройства могут записывать данные на шину данных процессора, чтобы он мог их использовать в своих целях.

Сигналы PHI1 и PHI2 называются полутактами и получаются из исходного тактового сигнала PHI0 следующим образом:

  • Когда PHI0 имеет низкий уровень - процессор находится в режиме записи и сигнал PHI1 имеет высокий уровень
  • Когда PHI0 имеет высокий уровень - процессор находится в режиме чтения и сигнал PHI2 также имеет высокий уровень

Но это ещё не всё, особенности всех тактовых сигналов мы рассмотрим в процессе изучения их схем.

Схема для разводки тактовых сигналов внутрь

clock_internal.jpg

Схема достаточно сложная, поскольку она не совсем "цифровая". Многочисленные транзисторы, выполняющие роль инверторов немного задерживают прохождение сигнала PHI0, поэтому сигналы PHI1 и PHI2, идущие внутрь процессора, немного "лагают". Вот логическое представление схемы :

clock_internal_logic.jpg

А вот логический анализ :

clock_internal_logic_zero.jpg clock_internal_logic_one.jpg

PHI0PHI1PHI2
010
101

Развертка тактовых сигналов должна получиться примерно следующая :

  • 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

Выходит что из-за несимметричного каскада инвертора происходит затягивание нарастающего фронта, поэтому нижний уровень как-бы "затягивается".

Официальный даташит

Официальная документация приводит следующую диаграмму :

clock_timing_datasheet.jpg

Схема для разводки тактовых сигналов наружу

clock_external.jpg

Логическая схема внешней разводки тактовых сигналов не отличается от схемы внутренней разводки, за исключением того, что выходы PHI1/PHI2 идут на одноименные контакты через "гребенку" мощных транзисторов.

Симуляция

Ничего особенного делать для симуляции не надо.

PHI1 = NOT (PHI0);
PHI2 = BIT (PHI0);

Propagation delay мы не учитываем при симуляции, точнее учитываем, но только в очередности выполнения блоков.

При этом опорный тактовый сигнал PHI0 "дергается" следующим образом, после того как все блоки отработали :

PHI0 ^= 1;
6502/clock.txt · Последние изменения: 2014/01/25 21:24 — org
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: Public Domain
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki