Как работают два регистра счетчика программ в 6502?

В настоящее время я разрабатываю подмножество 6502 в LogiSim и на текущем этапе определяю, какие части реализовать, а какие можно вырезать. Одним из моих основных ресурсов является блок-схема Хэнсона.

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

Сбивающая с толку часть

Как именно работает эта логика и использует ли она инструкцию из памяти инструкций для увеличения? В качестве продолжения: возможно ли упростить логику счетчика программ, чтобы использовать одну или две инструкции из памяти инструкций для увеличения?


person Clink123    schedule 09.10.2017    source источник


Ответы (1)


Модель 6502 имеет только один программный счетчик. Он имеет ширину 16 бит. Поскольку многие другие элементы ЦП имеют ширину ровно 8 бит, аппаратно имеет смысл разрезать 16-битный программный счетчик на две половины, чтобы каждая половина соответствовала 8 битам. Например, каждая половина загружается отдельно, одна за другой, с такой инструкцией, как JMP. А инструкции относительного перехода выводят PCL на вход АЛУ.

Эти половинки внутри просто называются PCH и PCL. Вы можете видеть, что к PCL подключена логика приращения, а один из выходов — это сигнал выполнения, называемый PCLC. Это входные данные для другой схемы, которая увеличивает PCH.

Все это не имеет значения для программы. Программа просто заботится о том, чтобы PC указывало на инструкцию, которая будет выполняться следующей, и использует этот факт, чтобы влиять на свой собственный поток. Но если вам интересно узнать больше об этих деталях, я укажу вам на симуляцию Visual6502. Она намного точнее и детальнее, чем блок-схема Хэнсона.

person OmarL    schedule 20.05.2019
comment
Я больше не работаю над этим проектом, но я уверен, что другие получат пользу от этого замечательного ответа. Огромное спасибо! - person Clink123; 21.05.2019
comment
Без проблем! Как прошел ваш проект? - person OmarL; 22.05.2019
comment
Я в какой-то мере завершил его, и когда я ушел, он был передан другим (это был мой завершающий проект HS — построить 6502 в logisim, чтобы разработать учебный план для студентов, чтобы они делали то же самое) — Главное, чем я когда-либо занимался, — это программирование логика, большая часть схемы сделана. - person Clink123; 23.05.2019