Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия | |||
6502:random:branch_logic [2015/09/03 23:12] org |
6502:random:branch_logic [2020/02/10 13:04] (текущий) org |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ==== Логика условных переходов ==== | + | # Логика условных переходов |
Логика условных переходов определяет: | Логика условных переходов определяет: | ||
Строка 11: | Строка 11: | ||
{{:6502:random:branch_nice.jpg?800}} | {{:6502:random:branch_nice.jpg?800}} | ||
- | ==== Логическая схема ==== | + | ## Логическая схема |
{{:6502:random:branch-logic.jpg?600}} | {{:6502:random:branch-logic.jpg?600}} | ||
- | ==== Логика BRANCH FORWARD ==== | + | ## Логика BRANCH FORWARD |
Триггер BRFW обновляется значением D7 во время BR3.PHI1. В остальное время триггер хранит своё текущее значение. | Триггер BRFW обновляется значением D7 во время BR3.PHI1. В остальное время триггер хранит своё текущее значение. | ||
Строка 21: | Строка 21: | ||
Не забываем, что во время второго полутакта (PHI2) все внутренние шины подзаряжаются и имеют значение 0xff. | Не забываем, что во время второго полутакта (PHI2) все внутренние шины подзаряжаются и имеют значение 0xff. | ||
- | ==== Логика BRANCH TAKEN ==== | + | ## Логика BRANCH TAKEN |
Комбинаторная логика выбирает вначале по IR6/IR7 к какой группе принадлежит инструкция перехода (то есть какой флаг она проверяет), а последующий XOR выбирает каким образом инструкция перехода срабатывает (флаг установлен/сброшен). | Комбинаторная логика выбирает вначале по IR6/IR7 к какой группе принадлежит инструкция перехода (то есть какой флаг она проверяет), а последующий XOR выбирает каким образом инструкция перехода срабатывает (флаг установлен/сброшен). | ||
Строка 28: | Строка 28: | ||
Примечание : логика BRANCH TAKEN работает постоянно и значение контрольной линии /BRTAKEN обновляется каждый такт, причем в не зависимости от того, какая инструкция обрабатывается процессором в данный момент. | Примечание : логика BRANCH TAKEN работает постоянно и значение контрольной линии /BRTAKEN обновляется каждый такт, причем в не зависимости от того, какая инструкция обрабатывается процессором в данный момент. | ||
- | ==== Verilog ==== | + | ## Verilog |
<code verilog> | <code verilog> | ||
Строка 70: | Строка 70: | ||
endmodule // BranchLogic | endmodule // BranchLogic | ||
</code> | </code> | ||
+ | |||
{{template>6502:6502_blocks}} | {{template>6502:6502_blocks}} |