nedoPC.org

Community for electronics hobbyists, established in 2002
Last visit was: 20 Sep 2024 16:56
It is currently 20 Sep 2024 16:56



 [ 15 posts ] 
6502 растактовка 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Джентельмены, где бы посмотреть внутреннюю растактовку 6502 (или 65С02) согласно его полной
блок-схеме, которую поклонники 6502 считают самой правильной?
Attachment:
6502 gJB7m.gif

Не такую простую диаграмму, как есть у нас здесь на форуме:
http://www.nedopc.org/forum/viewtopic.php?p=138016#p138016
А более подробную, типа "по переднему фронту Ф1 код операции заносится..." ну и т.д.

Мне казалось, 6502 подробно "разжеван" его поклонниками... но растактовку уже сутки найти не могу... :osad:


You do not have the required permissions to view the files attached to this post.

_________________
iLavr


19 Oct 2017 04:39
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Так, судя по совпадению названий регистров с блок-схемой, 6502 пилят-пилят, но никак не допилят: 6502_Breaking NES :-?
Quote:
PD : текущее значения кода операции для предекодирования
IR : регистр инструкций (хранит код текущей операции)
X, Y : индексные регистры
S: указатель стека
AI, BI : входные значения для АЛУ
ADD : промежуточный результат операции на АЛУ
AC : аккумулятор
PCH/PCL : program counter, состоящий из 2-х половинок
PCHS/PCLS : вспомогательные регистры program counter (S означает "set" (?))
ABH/ABL : регистры для вывода на внешнюю шину адреса
DL : data latch, хранит последнее прочитанное значение внешней шины данных
DOR : data output register, содержит значение которое будет записано в шину данных
P : регистр флагов, на самом деле состоит из множества разбросанных по схеме защелок

_________________
iLavr


19 Oct 2017 06:40
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Эх и странные мануалы aka даташиты у MOS Technology на свои продукты... :-?

http://6502.org/documents/datasheets/mos/

Может быть они думали:"Еще мы вам за $25 мануалы писать будем..." :osad:

Рядом с ними мануалы на i8080 от Intel и даже описание К580ВМ80А от Кобылинского -
так просто подробнейшие сказки братьев Гримм и баснописца Крылова! :o


P.S. Ну хоть в даташите от Synertek некоторые растактовки есть, хотя не так подробно, как хотелось бы:
http://datasheets.chipdb.org/Synertek/6502.pdf
Хочу вобще потактово посмотреть, как в 6502 используют АЛУ для относительной адресации...
Attachment:
6502branch.jpg


You do not have the required permissions to view the files attached to this post.

_________________
iLavr


19 Oct 2017 09:31
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Lavr wrote:
Хочу вобще потактово посмотреть, как в 6502 используют АЛУ для относительной адресации...

Как говорится, "я фигею, дорогая редакция"! :o Эти знающие 6502 и сами задаются таким вопросом: Branch Relative uses ALU?
Bryan Parkoff wrote:
As I said earlier in the previous thread, I questioned if program counter goes to arithmetic logic unit to do increment. They answered no because program counter register has its own increment.

And I have another question. It is the branch relative. Do a byte as branch relative is loaded into data bus from memory location before it is transferred to arithmetic logic unit to do addition?

I wonder if branch relative goes to ALU’s input B register and program counter’s low byte goes to ALU’s input A register through special bus. After addition is performed, the modified program counter’s low byte is transferred back to the program counter’s low byte register from ALU’s output register.

The process will be repeated if page boundary is crossed. The ALU’s input B register is discarded. The program counter’s high byte is transferred to ALU’s input A register. The carry increments or decrements the program counter’s high byte. After addition is performed, the modified program counter’s high byte is transferred back to the program counter’s high byte register from ALU’s output register.


Некоторый скудный материал по этому вопросу есть вот здесь:
Microprocessor Design - Program Counter
Но пока никакой ясности, как же это конкретно делается в 6502... :osad:


P.S. Самое непонятное - откуда взялась эта подробная схема 6502 в старте топика. Все её хвалят,
везде на неё ссылаются, но где ж документ из которого её выдернули!
:o

P.P.S. Ну да, много где упоминается, что эта подробная схема 6502 взята из статьи
некоего Donald F. Hanson-а
"A VHDL Conversion Tool for Logic Equations with Embedded D Latches".
Но откуда её сам этот Donald F. Hanson взял...
:-?

_________________
iLavr


19 Oct 2017 16:03
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Lavr wrote:
Ну да, много где упоминается, что эта подробная схема 6502 взята из статьи
некоего Donald F. Hanson-а
"A VHDL Conversion Tool for Logic Equations with Embedded D Latches".
Но откуда её сам этот Donald F. Hanson взял...
:-?

А сам этот Donald F. Hanson взял эту подробную схему 6502 (вместе с какими-то другими
тайными лицами
) у MOS Technology! :o
Attachment:
6502blockD.gif

А сама MOS Technology никогда нигде и никому ничего не рассказывает про эту блок-схему 6502.
И во всех даташитах использует упрощенную схему.

Очень познавательно... :-?


You do not have the required permissions to view the files attached to this post.

_________________
iLavr


19 Oct 2017 17:43
Senior

Joined: 27 Jul 2015 15:20
Posts: 102
А это не то? 6502 simulator
И вроде на этом ресурсе всё до транзисторов разобрано и посчитано...


19 Oct 2017 17:54
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
IgorR76 wrote:
И вроде на этом ресурсе всё до транзисторов разобрано и посчитано...

А что у них является источником информации о 6502?
Показываю, прямо по Вашей ссылке:
Attachment:
HansonBlockDiagram.jpg

- Фотографии кристалла;
- Эта самая диаграмма Hanson-а из начала этого топика;
- Последняя ссылка больше нигде не доступна - но это тоже материалы самодеятельного вскрывателя микросхем.

Где хоть один официальный документ от MOS Technology? :o

Неофициальный сайт http://www.visual6502.org/JSSim/index.html считают самым
надёжным источником информации о 6502 даже на http://6502.org/... :-?
Хотя, казалось бы, должно бы быть наоборот... :ewink:


You do not have the required permissions to view the files attached to this post.

_________________
iLavr


19 Oct 2017 18:18
Senior

Joined: 27 Jul 2015 15:20
Posts: 102
Фотографии кристалла, потранзисторная схема и основанный на ней эмулятор надежнее официального документа от MOS.
"Вам шашечки или ехать?"(с)


19 Oct 2017 18:24
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
IgorR76 wrote:
"Вам шашечки или ехать?"(с)

Мне, конечно же, ехать... но тогда объясните мне согласно вот этой блок-схеме:

Image

Как делается проброс PCH и PCL сквозь АЛУ каждого за 1 такт:

Image

Если 1 такт выглядит вот так:
Image

У меня что-то "шашечки с ехать" не складываются... :-?



P.S. Ссылку на http://visual6502.org/ мы тут видели с 23 июня 2012 года, а может и раньше...
Но к пониманию вопроса в старте топика это пока не приблизило...

_________________
iLavr


19 Oct 2017 18:40
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
В следующем документе - все растактовки команд 6502 :
Attachment:
6502_2.PDF

Правда, насколько я понял, никакой привязки к limited form of pipelining в документе нет.

Вероятно, следует руководствоваться следующими соображениями:
Quote:
The 6502 has a two-stage "pipeline" for instruction decoding, so the opcode for the next is already fetched in the last cycle of the current instruction.

This is how the 2 cycle variant of branch works:
One cycle for opcode fetch, one cycle to fetch the offset, and if the branch is not taken, then the next opcode is just fetched normally.

For the 3-cycle variant, it's too late to change the next opcode fetch (because it was already scheduled by the "fetch offset" cycle). Also, the offset has to be fed into the ALU to get the next address. So if the branch is taken, you'll have one "empty" memory cycle for the location directly after the branch instruction.


You do not have the required permissions to view the files attached to this post.

_________________
iLavr


04 Jul 2018 11:08
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Lavr wrote:
В следующем документе - все растактовки команд 6502 :
...
Правда, насколько я понял, никакой привязки к limited form of pipelining в документе нет.

This limited form of pipelining, как ни странно, поясняется на примере в следующем мануале на стр. 54:
http://users.telenet.be/kim1-6502/6502/proman.html --- это описание для KIM-1 & MCS6500
MICROCOMPUTER FAMILY PROGRAMMING MANUAL

Attachment:
6502.GIF

"Как ни странно" - потому как у меня этот документ давно есть, но про pipelining почитать не приходилось... :D


P.S. И, кстати говоря, все растактовки команд 6502 есть и в этом документе, также, как: Приложение А.
http://users.telenet.be/kim1-6502/6502/hwman.html#AA


You do not have the required permissions to view the files attached to this post.

_________________
iLavr


05 Jul 2018 04:46
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Я подумал, что надо бы уже и разобраться с этими Ф0, Ф1 и Ф2...

В общем, согласно всем мануалам и даташитам идея вырисовывается следующая:
Attachment:
f0_f2.gif

То, что для Intel8080 делает задающий генератор 8224 снаружи - двухтактную последовательность
непересекающихся импульсов
, в микропроцессоре 6502 делается внутри, в результате чего получается,
что внутри он работает как бы на удвоенной частоте.

ВременнЫе интервалы должны быть примерно следующие (по мануалу MCS6500 MICROCOMPUTER FAMILY):
Attachment:
f1_f2_.gif
Параметр TD - от 0 (не пересекаются), в большую сторону не нормирован.

И исследователи 6502, разбирая его потранзисторную структуру, пришли к следующей схеме
формирования Ф1 и Ф2 внутри микропроцессора:
Attachment:
6502_clock_internal_logic.jpg

Но мне думается, что она переусложнена для повторения на дискретных микросхемах.
Продолжу ниже...


You do not have the required permissions to view the files attached to this post.

_________________
iLavr


13 Jul 2018 03:03
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Если проанализировать тактовую диаграмму (я взял эту картинку на 6502.org), то логические
соотношения, необходимые для формирования Ф1 и Ф2 довольно неплохо видны:
Attachment:
fh1_fh2.gif

То есть, нам необходима задержанная на некоторый интервал времени последовательность импульсов,
и из неё и входной последовательности импульсов можно сформировать Ф1 и Ф2, используя
логические элементы, избирательно реагирующие на совпадение лог."0" и лог."1".

Я смоделировал это в Proteus следующим образом:
Attachment:
f0_f2_.gif

4 элемента 7400 - это даже слишком большая задержка, но сделал так, чтобы хорошо было видно
на виртуальном осциллографе.

В результате получились следующие осциллограммы сигналов:
Attachment:
f0_f2o.gif


You do not have the required permissions to view the files attached to this post.

_________________
iLavr


13 Jul 2018 03:17
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Lavr wrote:
То есть, нам необходима задержанная на некоторый интервал времени последовательность импульсов,
и из неё и входной последовательности импульсов можно сформировать Ф1 и Ф2, используя
логические элементы, избирательно реагирующие на совпадение лог."0" и лог."1".
А мысль совершенно правильная, и не один я к такой мысли пришел... :wink:

Вот, смотрю я в проекте TTL 6502 - yet another project практически идентичное решение:
Attachment:
CLK_Phases_1.jpg

Есть сигнал CLK из него сформирован сигнал DELAYED CLK, из них аналогично формируют PH2.


You do not have the required permissions to view the files attached to this post.

_________________
iLavr


22 Jul 2018 06:37
Junior

Joined: 16 Jan 2022 14:49
Posts: 1
Привет! Мы тут смастерили симулятор 6502:

https://github.com/emu-russia/breaks/releases/tag/breaks-debug-14

Он умеет генерировать Markdown с веселыми картинками:

https://github.com/emu-russia/breaks/blob/master/BreakingNESWiki/6502/ops/A2.md

Думаю это сполна удовлетворит ваше любопытство :)

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

По поводу PHI1/PHI2. Всё уже раскопано, тут:
https://github.com/emu-russia/breaks/blob/master/BreakingNESWiki/6502/clock.md

PHI1/PHI2 сделаны таким образом, чтобы не налезать друг на друга.
Знатоки говорят что это был распространенный приём во времена винтажных чипов,
как один из приемов "стабилизации" схемы.
То есть в её работе были маленькие промежутки, когда не было ни PHI1, ни PHI2.


16 Jan 2022 15:07
 [ 15 posts ] 

Who is online

Users browsing this forum: Claude AI [Bot] and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.