Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
6502:extra_counter [2013/08/15 11:36]
org
6502:extra_counter [2020/02/10 13:09] (текущий)
org
Строка 1: Строка 1:
 +# Расширенный счетчик циклов
 +
 У 6502 есть 3 счетчика циклов. Один (базовый) используется для коротких инструкций (2 такта),​ второй - расширенный,​ о котором тут пойдёт речь - используется для длинных инструкций (до 6 тактов) и третий - используется для очень длинных инструкций,​ которые работают 6-7 тактов. У 6502 есть 3 счетчика циклов. Один (базовый) используется для коротких инструкций (2 такта),​ второй - расширенный,​ о котором тут пойдёт речь - используется для длинных инструкций (до 6 тактов) и третий - используется для очень длинных инструкций,​ которые работают 6-7 тактов.
  
-=== Транзисторная схема ​===+## Транзисторная схема
  
 {{6502:​extended_cycle_counter_trans.jpg}} {{6502:​extended_cycle_counter_flow.jpg}} {{6502:​extended_cycle_counter_trans.jpg}} {{6502:​extended_cycle_counter_flow.jpg}}
 +
 +{{6502:​extended_cycle_counter_nice.jpg?​400}}
  
 Вся схема представляет собой сдвиговый регистр,​ на вход которого подается **T1** ((T0, T1, T2 и так далее - это названия циклов. Минимальное количество циклов инструкций процессора 6502 равно 2 (T0-T1), а максимальное - 7 (T0-T6) )). Потом этот T1 сдвигается и выходит на выход T2 и так далее. Причем выходы T2-T5 идут на декодер в инверсной логике. Вся схема представляет собой сдвиговый регистр,​ на вход которого подается **T1** ((T0, T1, T2 и так далее - это названия циклов. Минимальное количество циклов инструкций процессора 6502 равно 2 (T0-T1), а максимальное - 7 (T0-T6) )). Потом этот T1 сдвигается и выходит на выход T2 и так далее. Причем выходы T2-T5 идут на декодер в инверсной логике.
Строка 11: Строка 15:
 В состав схемы входят мультиплексоры по сигналу **ready**. Сделано это для того, чтобы когда процессор не готов (ready=0) - регистр сдвига "​залочивался"​ на текущем состоянии. В состав схемы входят мультиплексоры по сигналу **ready**. Сделано это для того, чтобы когда процессор не готов (ready=0) - регистр сдвига "​залочивался"​ на текущем состоянии.
  
-=== Логическая схема ​===+## Логическая схема
  
 {{6502:​extended_cycle_counter_logic.jpg?​700}} {{6502:​extended_cycle_counter_logic.jpg?​700}}
  
-=== Симуляция ​===+## Симуляция
  
-Для работы схемы необходимо наличие трёх контрольных линий : **T1**, **TRES2** и **ready**.+Для работы схемы необходимо наличие трёх контрольных линий : **T1**, **TRES2** и **ready**, которые генерирует рандомная логика.
 Схема имеет одну входную защелку и 8 спаренных защелок,​ для формирования регистра сдвига. Схема имеет одну входную защелку и 8 спаренных защелок,​ для формирования регистра сдвига.
 На выходе мы получаем 4 контрольные линии /T2-T5, которые идут на декодер. На выходе мы получаем 4 контрольные линии /T2-T5, которые идут на декодер.
 +
 +Ниже приведена небольшая программа,​ которая имитирует все режимы счетчика циклов :
 +  * Вначале проверяется нормальная работа - сдвиг T1
 +  * Затем производится сброс регистра сдвига и повторная работа
 +  * Но на такте T3 проверяется способность регистра сдвига "​залочиться",​ если вдруг процессор стал не готов (ready=0)
  
 <code c> <code c>
Строка 90: Строка 99:
 </​code>​ </​code>​
  
-В результате этой симуляции мы получаем на выходе ​следующие результаты ​:+В результате этой симуляции мы получаем на выходе :
 <​file>​ <​file>​
 T1=1 TRES2=0 ready=1 PHI0=0 PHI1=1 PHI2=0 | 1 1 1 1  T1 T1=1 TRES2=0 ready=1 PHI0=0 PHI1=1 PHI2=0 | 1 1 1 1  T1
Строка 113: Строка 122:
 T1=0 TRES2=0 ready=0 PHI0=1 PHI1=0 PHI2=1 | 1 0 1 1 T1=0 TRES2=0 ready=0 PHI0=1 PHI1=0 PHI2=1 | 1 0 1 1
 </​file>​ </​file>​
 +
 +В реальных боевых условиях симуляция на самом деле происходит в двух режимах:​ отдельно для PHI1 и отдельно для PHI2.
 +
 +{{template>​6502_blocks}}
  • Показать страницу