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

Регистры X, Y, S

Регистры X и Y используются для индексной адресации (6502 богат в этом плане). Регистр S представляет собой указатель стека, при этом стек располагается по адресам 0x100 … 0x1FF (на первой странице).

Схематически регистры X, Y и S состоят из 8 одинаковых кусков-разрядов :

regs_nice.jpg

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

  • Y/SB: поместить значение регистра Y на шину SB.
  • SB/Y: загрузить значение регистра Y из шины SB.
  • X/SB: поместить значение регистра X на шину SB.
  • SB/X: загрузить значение регистра X из шины SB.
  • S/ADL : поместить значение регистра S на шину ADL.
  • S/SB : поместить значение регистра S на шину SB.
  • SB/S : загрузить значение регистра S из шины SB.
  • S/S : рефрешить регистр S, активна если SB/S = 0.

Все команды, за исключением S/ADL и S/SB, принудительно отключаются во время PHI2.

Flow

regs_nice_flow.jpg

  • Во время PHI1 регистры X и Y выдают на шину SB своё значение / перегружаются новыми значениями с шины SB.
  • У регистра S есть входная защелка и выходная. Во время PHI1 значение с выходной защёлки помещаются на шины SB/ADL, а входная защелка либо загружается новым значением с шины SB, либо рефрешится с выходной защёлки (S/S).
  • Во время PHI2 регистры X и Y "хранят" своё старое значение, так как команды обмена отключают их от шины.
  • Регистр S во время PHI2 просто выводит своё значение на шины S/ADL. Входная защёлка перекрывается, так как команды обмена отключены во время PHI2.

Логическая схема

В логической схеме не обойтись без tri-state буферов, как и в любом другом устройстве, связанном с шинами. Я не люблю использовать tri-state буферы в логических схемах, потому что они имеют "транзисторную" природу.

regs_logic.jpg

В частности регистры X и Y я сделал как постоянно открытые защелки (чтобы показать, что там хранится значение), но вход защелки селектируется двумя tri-state буферами.

Кто знает как называется девайс, аналогичный двум tri-state буферам с объединенным выходом - подскажите :)

Особенность регистра S

Во время самого первого полутакта PHI1 значение выходной защелки равно 0, поэтому выход регистра S будет равен 0xFF. Это значение будет сидеть в регистре S до тех пор, пока оно не перегрузится новым значением, по команде SB/S.

Сделано это для того, чтобы указатель стека после включения питания был равен 0x1FF.

Симуляция

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

6502/regs.txt · Последние изменения: 2013/10/18 22:47 — org
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: Public Domain
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki