nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 09 Dec 2019 00:05



Reply to topic  [ 17 posts ]  Go to page 1, 2  Next
Stupid PIC 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Шаос заинтриговал меня своим проектом RISC CPU на вентилях ЛА3,
http://www.nedopc.org/forum/viewtopic.php?t=9182&sid=084b83f41c27ebe3af0d0561a924b73c
и по разным ссылкам я полазил по кольцу "самогонных" (HomeBrew ~
"домоварных") процессоров. Ясно, что на универсальном логическом
элементе ЛА3 можно спроворить хоть Пеньтиум. Понятно также, что
аксиомы и законы алгебры-логики это не запрещают. Без вопросов
всякий, кто хоть немного интересовался, как работает процессор,
расскажет сказку об АЛУ, устройстве управления и прочей требухе.
Другое дело - как это выполнить из реальных элементов, ну, скажем,
ТТЛ - логики. Как показывает практика HomeBrewCPU "хоббитистов"
(по-нашему, я полагаю, это - любители) :-), даже простой проект
в железе выливается в приличного монстрика:
http://mycpu.thtec.org/www-mycpu-eu/webserver.htm
http://www.mycpu.eu
http://members.iinet.net.au/~daveb/simplex/simplex.html - и далее по "кольцу"
(скрипт на "кольцо" обычно внизу страницы)...

Чужой опыт подсказывает, что 6502 "соткать" на мелкой логике проще,
но тоже получится та еще этажерочка, i8080 можно "ткать" до пенсии,
и использовать его потом, как памятник самому себе. :-)
Так что надеяться на программную совместимость самоделки хоть с
чем-то - надежда весьма призрачная...

Но один проект мне очень понравился:
http://www.galacticelectronics.com/Simple4BitCPU.HTML

По моим прикидкам его вполне можно сваять за субботу-воскресение,
ну, по крайней мере, за пару, если, конешно, весь ТТЛ-хлам в нали-
чии есть. (у меня лично не было, и никогда не было 155СП1, 155ИР26).

вид платы: http://sgu-wap.narod.ru/4BITPIC/4BitCPU_.jpg
схема CPU: http://sgu-wap.narod.ru/4BITPIC/4_CPU_.gif
схема I/O: http://sgu-wap.narod.ru/4BITPIC/4_CPU_IO.gif
описание: http://sgu-wap.narod.ru/4BITPIC/4BitCPU.htm

(Если я где-либо напортачил, а я кое-что исправил, то вот оригиналы схем:
http://sgu-wap.narod.ru/4BITPIC/4Bit_PIC.htm)
Но схемка очень привлекательная и очень похожа на Гарвардский PIC-
недоросток с однофазной синхронизацией (недоступное для записи ОЗУ ~ ПЗУ
программ и регистры в качестве ОЗУ данных). Система команд, конешно,
потрясает простотой, но управлять чем-то несложным этот Stupid-контроллер
вполне сможет при искуссном программировании, естественно. :)
http://sgu-wap.narod.ru/4BITPIC/COMMANDS.TXT
Что мне, собственно, понравилось, так это лаконичность и даже некоторая
оригинальность схемы, а также то, что схема так и подталкивает к модер-
низации: сделать её восьмибитной, усложнить АЛУ, PC и т.д.

К сожалению в Workbench, где я рванулся это смоделировать, есть слож-
ности с ПЗУ и ОЗУ (их надо выполнить тоже на мелкой логике)
http://sgu-wap.narod.ru/4BITPIC/mem_pz4.ewb :-).
Кстати, интересно, становятся видны глюки ПЗУ, про которые автор пишет,
но мне кажется, что глюки от того, что счетчик ИЕ5 - асинхронный, откуда
и вылезают иголки.
http://sgu-wap.narod.ru/4BITPIC/mem_pz6.ewb
Также нет в Workbench счетчика ИЕ7, компаратора СП1 и т.д.
(СП1 можно заменить на АЛУ 74181, но смысла нет, - зачем тогда огород
весь городить ) СП1 на вентилях я всёж нагородил :)
Так что пришлось смоделировать работу устройства управления ограниченно
на все 15 команд, так как указано в описании - 4 первых 16-битных слова -
FETCH (извлечение команды), 4 следующих 16-битных слова - выполнение команды.
Команды CPU следуют по порядку таблицы, проследить логику работы микрокоманд
УУ вполне возможно, но без выполнения условных переходов.
Файло от Workbench: http://sgu-wap.narod.ru/4BITPIC/gen_imit.ewb

Можно попробовать сделать адекватные замены микросхем CPU, на те, что есть
в Workbench, и выполнить простую программу ¹1. Для этого байты микрокодов
программы были вписаны в текстовый файл cpu_imit.dp (и другие ***.dp)- это
наборы кодов для генератора последовательностей в Workbench (типа программы,
но в микрокодах) каждая инструкция предваряется 4-мя 16-битными словами -
FETCH, хотя она и не влияет в Workbench на имитацию исполнения.
В принципе по частям я всю схему в Workbench погонял, хотя чем больше
схема, тем тормознее эмуляция - даже не знаю потащит ли пакет всю эмуляцию
целиком, да и диодные матрицы "ПЗУ" "прожигать" было как-то лень.
И кажется мне с УВВ (I/O) аффтор ошибся: OUT не работает по его схеме
как [A -> Port], получается [DATA BUS -> Port]. Я подправил схему, так
как мне кажется верным.
Можно попробовать прогнать ввод с кнопок и вывод этого ниббла в порт.
Файло от Workbench: http://sgu-wap.narod.ru/4BITPIC/cpu_imit_.ewb

В Протезусе староватой версии, что пока еще стоИт у меня (новый от
fifan-a пока не поставил), подглюкивает как раз моделирование логики.
Так что я там лепить Stupid-контроллер нАчал, но пока без особого успеха.
Не поймешь, что работает, что не работает: микруха в списке есть, модели
к ней может и не быть. А порой и модель есть - а работает, не поймешь как...
(Собственно, на чем он не подглюкивает это PIC12, PIC16..., за что я
его живым и держу, хотя и был удивлён их работе без цепей задающих генера-
торов.)

Возможно, проект покажется интересным не только мне, и если что не сработает,
то вот весь архив: http://sgu-wap.narod.ru/4BITPIC/4Bit_PIC.rar
А блуждая по "кольцу", я наткнулся также на весьма интереcный книжко:
http://www.ziddu.com/download/3469497/CompStruc.rar.html
http://rapidshare.com/files/150715783/CompStruc.rar
Не то, чтоб мне открылось в ней откровение божие, в той или иной мере
эти сведения в разных источниках есть, но вот кишкам процессора в ней
уделили большее внимание нежели обычно, и не только на уровне сказок.

PS. Если усматривается нарушение прав авторов, то безусловно, я всё это
ссылко нафиг снесу - только шепните вслух.


Last edited by Lavr on 17 Mar 2012 07:23, edited 1 time in total.



09 Jan 2010 02:24
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18145
Location: Colorado
Reply with quote
Post 
Я не понял - ты это таки спаял или только проэмулил? ;)

P.S. Вот самый простой "одноинструкционный" процессор:

http://bitstuff.blogspot.com/2007/02/su ... ative.html

_________________
:eugeek: https://twitter.com/Shaos1973


09 Jan 2010 08:49
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos писал(а):
Quote:
...ты это таки спаял или только проэмулил?


В таком виде как есть мне его паять неинтересно было.
Только проэмулил - чтоб было над чем дальше поколбаситься...
Я как-то не поверил что в Workbench это всё сэмулится, но -
получилось.
Мне понравилось оно как прототип, будет время - помучаю дальше.


02 Feb 2010 08:32
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Stupid PIC + 8-bit ALU

Таки, мне кажется, если даже я его "уширю" и добавлю АЛУ на NAND , он
всё равно не шибко раздастся в размерах и не вылезет за габариты макетки
двойного формата...

Image


13 Jun 2011 04:26
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Чуть было не подумал, что автор написал BASIC Interpreter для своего
4 bit CPU, built from TTL ICs!!! :o Но нет - ошибочка вышла... :wink:
http://www.galacticelectronics.com/index.html

BASIC Interpreter автор действительно написал, но for Windows.
http://www.galacticelectronics.com/NewBasic.HTML

Внешний вид:
http://www.galacticelectronics.com/Images/Pictures/nBasic.JPG


Last edited by Lavr on 11 Mar 2012 18:47, edited 1 time in total.



23 Jun 2011 08:54
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Тут Виталий высказал следующее пожелание:
VituZz wrote:
Я хочу собрать рабочую конструкцию, о которой можно будет сказать, что она хоть что-то делала, пусть хоть свет в туалете включает-выключает! Ну или управляет ёлочной гирляндой - Новый Год ведь на носу!

Я со всей ответственность заявляю, что если вопрос только в этом, то данный Stupid-контроллер такие простые задачи выполняет вполне, несмотря на свою простоту.
Этим он мне так и понравился...

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

Мне хотелось, и мы это обсудили - никто не был против, усложнить эту конструкцию до 4-битного микрокомпьютера с дисплеем и сравнительно развитыми возможностями.
И сделать это хотел я на простой элементной базе - как и сам этот контроллер.


PS. И, кстати говоря, я этот проект как раз тестил в Новогодние каникулы 2010 года. :D


Last edited by Lavr on 11 Mar 2012 18:48, edited 1 time in total.



29 Oct 2011 13:43
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post 
ЕЩЁ РАЗ ПОВТОРЯЮ: ОНО ДАВНО РАБОТАЕТ!
ОНО ВЫПОЛНЯЕТ ПРОГРАММУ - ЧИТАЕТ КЛАВИШУ
И ВЫВОДИТ ЕЁ НОМЕР НА ИНДИКАТОР!


Image
ПОСМОТРЕТЬ ВО ВСЮ ШЫРЬ!

Для тех, кто не в теме - не делаем мы игрушек. У нас и прототип был вполне рабочий!
Но мы решили сделать серьёзный, хотя и компактный по схемотехнике компьютер.

И требования к нему сами выработали ЗДЕСЬ.

4-битное АЛУ для этого проекта - уже сделано. Осталось доработать Устройство
Управления и Синхронизации
.
И архитектуру - чуть более дружественную адаптировать.


PS. Это вполне хороший контроллер - управлять стиральными машинками, светофорами
и кофеварками! Но мы делаем на его основе - 4-битный компьютер!


11 Mar 2012 18:22
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Я понемногу начал воплощать все наши рассуждения по поводу 4-битного ЦПУ.
И представленная ниже модель будет выполнять роль работающего прототипа:

Image
* УВЕЛИЧИТЬ

По сравнению с моделью EWB, я заменил асинхронный счётчик на синхронный,
и это убрало ряд сбоев типа "иголка".
Но поскольку схема для простоты не полность синхронная, то другие "иголки" пришлось
подавить RC-цепочками.

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

Саму модель можно взять здесь. Она выполняет следующую программу:
Code:
Mnemonic Address       Data Instruction   Comments
---------------------------------------------------------------------------
                                      Runs in segement zero.
LIT 0    00 0000 0000  0000 0001 01   Put 0 in the accumulator.
REG      01 0000 0001  0000 0110 06   Select register A.
LOAD     02 0000 0010  0000 0010 02   Load value into accumulator from register A.
OUT      03 0000 0011  0000 1110 0Е   Send accumulator value to output.
INC      04 0000 0100  0000 0100 04   Increment accumulator.
STORE    05 0000 0101  0000 0011 03   Store accumulator back to register A.
RST      06 0000 0110  0000 1001 09   Restart program counter.


Чтобы не моделировать пульта с тумблерами для ввода программ в программное ОЗУ,
я последнее временно заменил в модели на ПЗУ, программу в которое в пакете можно
просто занести через бинарный файл.

Индикации в проекте столь много для проверки работоспособности различных узлов ЦПУ...


PS. Я решил для полноты информации добавить здесь систему команд:

Image

И привести информацию о программной модели:

РЕГИСТР АККУМУЛЯТОР А
РЕГИСТРЫ ОБЩЕГО НАЗНАЧЕНИЯ: R0, R1, R2, R3
ФЛАГИ: L, E, G - (less, equal, greater) программно недоступны,
используются при условных переходах.
ДОСТУПНОЕ ОЗУ ПРОГРАММ: 256 Байт.

Более подробно всё описано в документации, ссылки на которую есть в первом посте.


Last edited by Lavr on 17 Mar 2012 07:42, edited 2 times in total.



16 Mar 2012 09:45
Profile
God
User avatar

Joined: 13 Nov 2010 05:06
Posts: 1292
Reply with quote
Post 
А для какой проги эта модель?


16 Mar 2012 11:00
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Некоторые пояснения и замечания по работе железяки:

Длительность каждого машинного цикла - 8 тактов (0-7)

Image

В тактах (0—3) выполняется микрокод выборки (STB ADDRES / INC PC), чтобы выбрать
программную инструкцию и следующие такты (4—7) выполняется программная инструкция.
STB ADDRES - выдаёт адрес для ОЗУ(ПЗУ) программ (показана на 2-й осциллограмме).

После выдачи адреса (STB ADDRES) инкрементируется программный счётчик (INC PC):

Image

КОД операции поступает на ПЗУ микрокоманд, и в такты (4—7) он выполняется...

Проблема "иголок" здесь довольно острая... при aсинхронном счётчике 155ИЕ5
у меня вот такая неприятная игла вылезала, причём по линии (INC PC)

Image

Понятно, что РС от этого хорошо не работал. :wink: Пришлось давить RC-цепью...
Потом сменил счётчик на синхронный 155ИЕ7 и иголка исчезла.
RC-цепь оставил - т.к. не мешает.

В оригинале сигналы, которые нарушают иголки, пытались побороть счётными
триггерами по схеме:

Image

И в модели EWB работало нормально, но там и иголок не было... :lol:

А вот в модели Протезуса счётный триггер вдруг стал блажить вот так:

Image

хотя должен был аккуратно переворачиваться по фронтам входного сигнала
(он сверху, выходной - снизу).
Либо я не вижу лишнюю иголку, либо модель Протезуса блажит...

Укоротил входные сигналы дифференцирующими RC-цепями и процесс пошел,

Image

хотя и не люблю я всякие RC-костыли... :(


Last edited by Lavr on 16 Mar 2012 11:32, edited 1 time in total.



16 Mar 2012 11:06
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post 
VituZz wrote:
А для какой проги эта модель?

Для вот этой проги...


16 Mar 2012 11:11
Profile
God
User avatar

Joined: 13 Nov 2010 05:06
Posts: 1292
Reply with quote
Lavr wrote:
И представленная ниже модель будет выполнять роль работающего прототипа:
* УВЕЛИЧИТЬ

Даже при увеличении буковки неразборчивы. Нельзя ли положить более подробный вариант?


16 Mar 2012 22:27
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
VituZz wrote:
Lavr wrote:
И представленная ниже модель будет выполнять роль работающего прототипа:
* УВЕЛИЧИТЬ

Даже при увеличении буковки неразборчивы. Нельзя ли положить более подробный вариант?

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

Я только добавил в неё RC-цепи и заменил счётчик после задающего генератора
на синхронный - 155ИЕ7.

Эти изменения я объяснил выше, в остальном собирал строго по схеме, чтобы
прототип был строго идентичен опробованному ранее в EWB.

Так сказать, чтобы была единая "печка", от которой и будем "отплясывать" далее...
Я лично потихоньку "отплясывать" уже начал. :wink:


PS. Но если ты считаешь, что более крупная схема необходима, то вот она.


Last edited by Lavr on 17 Mar 2012 08:06, edited 1 time in total.



17 Mar 2012 07:13
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Lavr wrote:
Кстати говоря, я думал фиксировать выходы ПЗУ микрокоманд в 2 8-битных регистра,
но поразмыслив, решил, что это "шило на мыло".

Но шило на мыло - всё-таки я поменял. Выкинул все RC-цепи и инверторы,
и поставил 2 8-битных регистра после ПЗУ микрокоманд, простробировав
их сигналом задающего генератора.

Микрокоманды, правда, подправить пришлось, но НИКАКИХ ИГОЛОК не стало...


22 Mar 2012 20:44
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Нашел ещё одну ошибку в оригинале проекта. :(
Неправильно работаю условные переходы. Не то, чтоб я их год назад не проверял...
Проверял... но не тщательно. Ну джампают куда-то и ладно.
Мои тестовые программы без ветвлений были - просто проверить времЯнки
большинства команд.

Вобще забавно... оригиналу проекта - в обед сто лет. Видимо за много лет, кроме,
самогО автора никого это не заинтересовало.
А у автора - хорошо, что описание прилагалось, потому что схемотехнически
его ошибки очевидны, когда их находишь.

Внесу исправления и заменю оба выложенных проекта прототипа.


28 Mar 2012 10:18
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 17 posts ]  Go to page 1, 2  Next

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.