nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 19 Oct 2019 18:58



Reply to topic  [ 10 posts ] 
6502 from 74HC logic 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Интересный проект: 6502-совместимый процессор из хлама ("scratch") мелкой логики серии 74HC.

6502 from 74HC logic

Attachment:
side.jpg
side.jpg [ 69.68 KiB | Viewed 5021 times ]


Это не копия 6502, а 6-платная конструкция на 96 корпусах, исполняющая набор инструкций ЦПУ 6502.
И даже Microsoft BASIC на ней, якобы, работает...
Julius Schmidt wrote:
An 8-bit CPU from scratch with 74HC logic gates using the 6502 instruction set. It is capable of running the 6502 version of Microsoft BASIC. It uses no microprocessor — apart from EPROMs it uses only 74HC series parts (gates, registers, counters etc.). It uses a total of 96 ICs (that is CPU + front panel logic) and runs at up to about 4 MHz, doing about one million instructions per second (instructions taking 2-7 clock cycles). It was constructed on six 160x100 mm perfboards using pen wiring...

Честно говоря, "scratch-ем" я бы 5 штук БИС M27C1001. 1 Mbit (128Kb x8) UV EPROM не назвал... :D
А на них сделано микропрограммное устройство управления и синхронизации на 5Х8=40 управляющих выводов.
Схемотехника отрисована безобразно... :( Я не знаю, кто это придумал - рисовать схемы, не соединяя выводы, а лишь указывая, куда подсоединяется.
Поэтому схема нечитабельная, но зато хорошо может быть смоделирована в Proteus, которому такой стиль вполне приемлем.
Обратил внимание, что АЛУ выполнено на двух 74HC181, что на мой взгляд интереснее, нежели АЛУ, прошитое в ПЗУ.
Иначе возникает вопрос, а чего мы тут тужимся со "scratch-ем", давайте уж в ПЛМ всё запихаем... :-?
Julius Schmidt wrote:
The architecture was intentionally kept simple and the CPU has a fairly long datapath, but the focus was on producing a working design, with performance a secondary consideration. It does use a fairly horizontal microcode (40 bits wide), allowing me to do a few things in parallel and speeding up many instructions. Addressing the microcode ROM took advantage of the enormous EPROMs available today, allowing me to use 16 address bits of which 8 bits are simply the opcode, 4 bits act as a microprogram counter and 4 processor status bits are also available (IRQ, alu carry, P register carry bit and another bit from the P register).

Проект хорошо документирован для повторения, я себе все материалы скачал для коллекции.
А то такие вещи имеют свойство со временем исчезать из сети: я тут где-то похвастался, что есть у меня Proteus-модель 6502 и даже выложил её, но оказалось, что она неработоспособна, поскольку я неудачно перенес проект со старшей версии Proteus на более младшую.
Так исходный проект я с тех пор так найти и не смог... :(

_________________
iLavr


17 Jul 2015 17:34
Profile
Senior

Joined: 31 Mar 2012 17:50
Posts: 131
Location: 93.73.80.128
Reply with quote
тут было давно выложенно 2 версии похожие на это http://www.baltissen.org/newhtm/ttl6502.htm


15 Sep 2017 11:38
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
bigral wrote:
тут было давно выложенно 2 версии...

Да - были, и вот - вторая, более компактная версия:
The Mini6502: http://www.baltissen.org/newhtm/mini6502.htm
Но там автор любит всё запихать в ПЗУ... что не совсем как бы "from 74HC logic". :-?

У меня еще есть варианты "from 74 logic", но при подробном рассмотрении выясняется,
что это не реплики 6502, а вариации авторов на тему 6502.
А эти три ссылки - вроде как авторы хотя бы придерживались таймингов 6502, хотя тоже
полной гарантии нет. :-?

_________________
iLavr


19 Oct 2017 06:34
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
А из "вариаций на тему 6502 из ТТЛ-логики" мне больше нравится вот этот проект:
Yet Another DIY Processor Using TTL

По крайней мере он точно работает под Proteus 7.7, исполняет набор инструкции 6502, но честно
сказано, что он никак аппаратно не впишется в схемы, рассчитанные на оригинальный 6502.

Руки никак не дойдут с этим хорошим проектом позаниматься... :-?

_________________
iLavr


19 Oct 2017 07:29
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Потихоньку я начал разбирать вот этот проект: 6502 from 74HC logic

Скажем прямо - несколько туговато он сделан для понимания. :-?
Описание что и как выполнено - довольно кратко... практически отсутствует. :osad:
Ну чисто для примера - вся схемотехника выполнена вот в таком стиле:

 AL Board
Attachment:
AL_.gif
AL_.gif [ 42.59 KiB | Viewed 2823 times ]


А к такому вот виду я её привожу в результате своего разбора:

 AL Board Corrected
Attachment:
AL.gif
AL.gif [ 57.77 KiB | Viewed 2823 times ]


Ну и по ходу этого действа возник у меня вопрос к знатокам 6502 (если таковые у нас имеются)...
Я знаю, что у микропроцессора i8080 регистры имеют номера, которые входят в код операции.
Про микропроцессор 6502 пишут, что он имеет в своём составе следующие регистры:
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 : регистр флагов, на самом деле состоит из множества разбросанных по схеме защелок

Так вот вопрос у меня возник следующий: как нумеруются регистры микропроцессор 6502 в его кодах операций?

_________________
iLavr


20 Jun 2018 06:41
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
...вопрос у меня возник следующий: как нумеруются регистры микропроцессор 6502 в его кодах операций?

Про структуру команды 6502 и её декодирование - я знаю:
Attachment:
6502dec.gif
6502dec.gif [ 3.93 KiB | Viewed 2788 times ]
http://www.emuverse.ru/wiki/MOS_Technology_6502/Система_команд

Но вот как в коде команды заложены регистры ? - ума не приложу... :-?

А в схеме сабжа дешифраторов, выбирающих какие-то "железные" регистры - приличное количество.
Но, не зная принципов нумерации регистров - сразу и не угадаешь, кто есть кто... :-?

_________________
iLavr


21 Jun 2018 05:23
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Потихоньку я начал разбирать вот этот проект: 6502 from 74HC logic

И сподвинул меня на это тот факт, что мы, помнится давно обсуждали идею, заключающуюся в том,
что 6502 обширно использует путь через АЛУ в своей конструкции, а любительские ЦПУ на логике
такого решения чаще всего избегают.
Так что мне давно хотелось посмотреть архитектуру 6502 на мелкой логике, и этот вариант мне
показался более интересным, поскольку у него действительно есть АЛУ, то самое АЛУ типа 74181,
а не так, как в иных кострукциях, что и АЛУ и пол-процессора зашиты в микросхемы ПЗУ.

Конструкция состоит из 6 блоков: AL, AH, ALU, FP1, FP2 и ROM.

AL и AH, как я понял - 8-битные половинки адресного регистра.
FP1 и FP2 - логика управления, относящаяся к передней панели.
ROM - блок ПЗУ микокоманд, и
ALU - блок Арифметико-Логического Устройства.

Схемотехнику AL я показал постом выше. Теперь схемотехника AH оригинала:
 AH Board
Attachment:
AH_.gif
AH_.gif [ 39.58 KiB | Viewed 2777 times ]

И отрисованная мной удобочитаемая схема блока AH :
 AH Board Corrected
Attachment:
AH.gif
AH.gif [ 52.85 KiB | Viewed 2777 times ]

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

Смущает, что в схемотехнике адресных блоков весьма большое количество синхронных счетчиков типа
555ИЕ18 или 74163. Казалось бы, если есть путь через АЛУ, инкремент и декремент адресных регистров
можно через АЛУ и делать (так, в частности сделано в EDUC-8).
Что ж... будем посмотреть. :wink:

_________________
iLavr


21 Jun 2018 11:17
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
И посмотреть будем как раз в блок АЛУ. :wink:

Схемотехника блока АЛУ в оригинале:
 ALU Board
Attachment:
ALU_.gif
ALU_.gif [ 39.34 KiB | Viewed 2777 times ]

И отрисованная мной удобочитаемая схема блока АЛУ :
 ALU Board Corrected
Attachment:
ALU.gif
ALU.gif [ 51.82 KiB | Viewed 2777 times ]

Из схемы видно, что - да, через АЛУ, действительно, коммутируются несколько шин,
но поскольку описания нет, придется разобраться самому, что и куда идет.

Половина CPU 6502 from 74HC logic отрисована, займусь второй половиной...

_________________
iLavr


21 Jun 2018 11:25
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Про микропроцессор 6502 пишут, что он имеет в своём составе следующие регистры:

 Описание внутренней архитектуры процессора 6502
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 : регистр флагов, на самом деле состоит из множества разбросанных по схеме защелок
Нашел вот здесь довольно неплохую блок-схему, как эти регистры 6502 взаимодействуют по внутренним шинам:
Attachment:
6502 Block Diagram.gif
6502 Block Diagram.gif [ 46.96 KiB | Viewed 2768 times ]
Источник.

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

_________________
iLavr


21 Jun 2018 13:48
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
...вопрос у меня возник следующий: как нумеруются регистры микропроцессор 6502 в его кодах операций?

Нашел весьма подробный материал о декодировании инструкций микропроцессора 6502:
The 6502/65C02/65C816 Instruction Set Decoded

Материал подтверждает известную информацию о структуре опкода 6502 :
Quote:
Most instructions that explicitly reference memory locations have bit patterns of the form aaabbbcc.
The aaa and cc bits determine the opcode, and the bbb bits determine the addressing mode.

Но о нумерации регистров микропроцессора 6502 не сказано ни слова. :osad:

_________________
iLavr


22 Jun 2018 01:37
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 10 posts ] 

Who is online

Users browsing this forum: No registered users and 1 guest


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

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