nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 06:43



Reply to topic  [ 255 posts ]  Go to page Previous  1 ... 10, 11, 12, 13, 14, 15, 16, 17  Next
4-bit Processor 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
А кто в принципе сталкивался - как часто используется в наших программах рекурсия?

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

Тем более, что с одной ячейкой стека ни о какой рекурсии и говорить-то не приходится... :(

Другое дело, что у безстековой машины вся программа должна храниться в ОЗУ, а не в ПЗУ.
А вот тут и проходит тонкая граница между удобством и схемотехническим нищебродством... :wink:



PS. А вот тут я думал было, что просадился в размышлениях... :( Ан - нет!... Но уж больно
механизм хитрозадумчивый!
:o

_________________
iLavr


13 May 2013 06:33
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Lavr wrote:
Ну, вот этот мужик меня на принятие решений сподвиг своим процессором! :lol:

Image

А у нас уже есть - 2 копуса на 16 бит - а я себя мучаю, панемаишь! :wink:
Пожалуй, кое-что и упростить ещё получится...

Получается упростить и очень даже круто! :o Собственно, я сегодня над этой идеей и думал,
пока про классификацию "Спецтрумов" спорили... :wink:

Выходит так, что аппаратно, более того что я уже нарисовал, и добавлять-то ничего не надо
практически! 8)

Но меня смущает получающаяся система команд... :-?

Как вы считаете, не будет ли слишком дикой, к примеру, такая команда:
загрузить сразу два регистра, выполнить над ними тут же одну из операций АЛУ, и результат -
поместить в один из них
?
И всё это в одном цикле за 4 такта?

В терминах 580ВМ80 - выглядит очень непривычно... даже не могу аналога мнемоники подобрать...

_________________
iLavr


01 Jun 2013 21:59
Profile
God
User avatar

Joined: 13 Nov 2010 04:06
Posts: 1345
Reply with quote
Post 
Lavr wrote:
загрузить сразу два регистра, выполнить над ними тут же одну из операций АЛУ, и результат -
поместить в один из них
?
И всё это в одном цикле за 4 такта?

Я над этим тоже раздумывал некоторое время. Но только за один такт - по фронту загрузить нужные "приёмники" все сразу, по спаду - выгрузить результат. Но, блин, никак не получается посидеть над идеей достаточное количество времени, может, это и хрень полная :-)...

П.С. А ведь теоретически выгрузку предыдущего результата можно совместить с загрузкой следующих данных в "приёмники"...

--------
Ширина шины микрокоманд, как мне кажется, достаточно дешёвый ресурс. Нужно "переложить на её плечи" как можно больше работы в схеме.


03 Jun 2013 05:59
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
VituZz wrote:
Но только за один такт - по фронту загрузить нужные "приёмники" все сразу, по спаду - выгрузить результат. Но, блин, никак не получается посидеть над идеей достаточное количество времени, может, это и хрень полная :-)...

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

Виталий, я сначала решал более нищебродскую задачу - сократить 2 микрухи ОЗУ
до одной. 8)
Но все мучения подсказали мне - RISC не получится так, а CISC - усложнит мне
устройство управления и синхронизации, для разных длин команд.
Сейчас у меня всё четко аппаратно уложилось в один цикл - FETCH+ВЫПОЛНЕНИЕ.
Я набросал систему команд и оказалось, что похоже на PDP-8, кроме вот таких "диких"
команд... :lol:

Раз уж я не смог ужаться до 1 микрухи ОЗУ, решил юзать обе ОЗУ - на полную!
И оказалось - что аппаратно больше НИЧЕГО добавлять не надо! :o
Получается на первый взгляд всё очень удобно аппаратно...
Конечно, микрокоманды переписать придется и цепи микропрограммного
управления пересмотреть.

Но из тупика я вроде вышел - помогла фраза из текстов про PDP-8 - "максимально использовать
то, что даже для этой цели не предназначено".
Не дословно - но мысль такая.

Но прежде чем дальше биться лбом в открытые двери хочу "пощупать" команды PDP-8,
чтобы оценить свою систему команд.

_________________
iLavr


03 Jun 2013 12:59
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
petrenko wrote:
А зачем тогда эти два операнда загружать в регистры - может их прямо сразу в АЛУ отправить, а из АЛУ уже по третьему адресу ?

Потому что схема была вот такая:

Image

Я "увольняю" теперь БЛОК РОН и Селектор регистра ОН.
Вместо них будет - второй регистр "В" - на втором входе АЛУ.
На первом - аккумулятор или - "А".

Больше регистров ОН в ЦПУ - не будет! Очень по нищебродски, как я и стремился... :wink:

У PDP-8 - один аккумулятор "АС" - и ей "выразительности" хватает.
Но раз у меня 4-битник, регистров будет два - "А" и "В", чтобы "выхватывать" байт,
или сохранять байт.

_________________
iLavr


03 Jun 2013 13:09
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Lavr wrote:
Как вы считаете, не будет ли слишком дикой, к примеру, такая команда:
загрузить сразу два регистра, выполнить над ними тут же одну из операций АЛУ, и результат -
поместить в один из них
?
И всё это в одном цикле за 4 такта?

Раздумывая над системой команд PDP-8, пришел к выводу, что такая команда просто бестолковая,
хотя и всё это и получется аппаратно в одном цикле за 4 такта...

По сути это:
Code:
MVI A,5
MVI B,8
ADD B (к примеру)

А вот загрузить сразу два регистра - это команда вполне полезная...

_________________
iLavr


04 Jun 2013 11:46
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Поскольку схема практически вырисовалась - остался последний вопрос - с прерываниями.

Поскольку я заменил аппаратно способ вызова подпрограмм, то оказалось, что аппаратно
прерывания почти релизованы, если ориентироваться на способ PDP-8 и некоторых
микроконтроллеров.

Прерывание - вызывает переход на адрес 000Н с сохранением адреса возврата.
А у меня Reset PC и так уже микропрограммно управлять можно.

Разве что можно добавить 4-битный регистр, запоминающий прерывания и
определяющий их приоритеты.

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

Программно можно ввести аналог RST0 (или BRK).

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

_________________
iLavr


14 Jun 2013 08:47
Profile
Junior

Joined: 08 Jan 2014 02:08
Posts: 6
Location: Ленинградская обл
Reply with quote
Post 
Хоть проект вроде заброшен и топик-стартер заинтересовался EDUC-8, но всё же.
Первая версия проекта 4_Bit_CPU работает вроде без ошибок.

А вот после внесения в схему дешифратора и естественно изменения прошивки
нижней ПЗУ микрокоманд команда LIT выполняется не правильно.
Во время выполнения команды нет сигнала -E DATA INSTR.
Нет выборки данных инструкции и в аккумулятор всегда заносится 0FFh.
Для устранения этого надо в нижнюю ПЗУ микрокоманд
(файл ROM_12.bin) записать с адреса 04: 65 65 65 17. Сейчас там 04: 15 15 15 17.

И ещё появилась ошибка при выполнении команд JUMPL, JUMPG и JUMPE.
Первоначально сигнал Reset регистра Segment Reg формировался кнопкой Reset,
а сейчас во время выполнения этих команд он сброшен.

Теперь есть желание "прикрутить" АЛУ.


08 Jan 2014 02:54
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
tihsasha1967 wrote:
Хоть проект вроде заброшен и топик-стартер заинтересовался EDUC-8, но всё же.

Топик-стартер заинтересовался , чтобы посмотреть, как проще реализовать в схеме
косвенную адресацию, ибо без неё работать очень неприятно.
Топик-стартеру нужен некоторый опыт архитектуры НЕ-Интелловских процесоров.
tihsasha1967 wrote:
Первая версия проекта 4_Bit_CPU работает вроде без ошибок. А вот после внесения
в схему дешифратора и естественно изменения
прошивки нижней ПЗУ микрокоманд команда LIT выполняется не правильно. ...

Насколько я помню, во второй версии я ПЗУ не правил до конца.
Я понял, что прошивку придётся многократно править, а правил я её в Ворде, что
довольно трудоёмко, поэтому возникла мысль упростить этот процесс и сделать
редактор прошивки с помощью мыши
...
Но этот вариант так пока и не случился... :(

tihsasha1967 wrote:
Теперь есть желание "прикрутить" АЛУ.

И я хотел это сделать в перую очередь! Но вышло вот как: то АЛУ, которое я сгоряча
сконструировал на вентилях - слишком избыточно для этой конструкции.
Конструкция должна быть простой и доступной, а опыт EDUC-8 и РDР-8 показал мне:
задачи можно решать более простым набором команд.

Я не буду приделывать в эту конструкцию ни 74181, ни его аналог К155ИП3.
Но проект открытый - можете использовать его так, как сочтёте для себя интересным...

_________________
iLavr


08 Jan 2014 08:33
Profile
Junior

Joined: 08 Jan 2014 02:08
Posts: 6
Location: Ленинградская обл
Reply with quote
Post 
Спасибо за этот проект. Хочу ребятам на кружке перед показом работы 580вм80
показать такой принцип работы. Всё довольно просто.


08 Jan 2014 09:32
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
tihsasha1967 wrote:
Спасибо за этот проект. Хочу ребятам на кружке перед показом работы 580вм80 показать
такой принцип работы. Всё довольно просто.

Вам спасибо - что нашли полезное применение промежуточному результату этого проекта! :kruto:
С этой целью АЛУ было бы, безусловно, полезно!

Но, к сожалению, в моей версии Протеус готовая модель 74181 отсутствует... :(

Иначе было бы нетрудно "прикрутить" его, как я показывал на схеме здесь ранее.
Но либо подсхему АЛУ собирать, как автор APOLLO181, либо писать его динамическую
библиотеку!

Желаю Вам удачи! Ребятам, безусловно, полезно это посмотреть для понимания принципов
работы процесора, хотя я в этой схеме руками и ногами пытаюсь оттолкнуть от себя
"Интелловские" привычки... :D

_________________
iLavr


08 Jan 2014 09:45
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Lavr wrote:
Топик-стартер заинтересовался , чтобы посмотреть, как проще реализовать в схеме
косвенную адресацию, ибо без неё работать очень неприятно.

В общем с косвенной адресацией я разобрался - это будет стОить схемотехнически
3 корпуса мультиплексоров (ну или 6 корпусов 155ЛА8, если по-нищебродски)... :wink:

Но вот один момент я никак приемлемо для себя разрешить не могу... :(

И проблема вот в чем:
Процессор 4-битный, а память - 8-битная.
Это с одной стороны неплохо, т.к. одновременно можно считать

4 бит КОП + 4 бит Данное;
4 бит КОП + 4 бит Адрес;
4 бит Данное + 4 бит Данное;
4 бит Адрес + 4 бит Адрес;

Но вот когда идёт запись в память:

4 бит ???? + 4 бит Данное;

Внутренности 4-битные -> на 8 битную шину данных при записи можно выставить только
4-битное число по одному адресу.

А вот что выставлять в старший ниббл? При записи с ним ведь что-то да произойдёт! :lol:
Нельзя записать в 8 битную память только младший ниббл! :roll:

Пока вижу только одно не элегантное решение. Запись в память проводить как цикл:
чтение-модификация-запись. Т.е. старший ниббл считывать и обратно записывать, вместе с
младшим... Но это выглядит так бестолково... :(

_________________
iLavr


16 Jan 2014 14:21
Profile
Novelist

Joined: 30 Nov 2013 05:04
Posts: 32
Location: 83.149.47.40
Reply with quote
Post 
Чем не подходят однобитные м.сх ОЗУ?
Недавно затарился КР537РУ3А - однобитная статика, 4кбит. Отдают за копейки. Уж на что чип-дип грабительский могазин, даже они по 7руб. такие отдают.
или КР537РУ13 - четырехбитная.

Из однобиток можно набрать сколько нужно разрядов, чтобы и КОП и данные и адрес одним махом читать.


16 Jan 2014 15:24
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
AIS wrote:
Чем не подходят однобитные м.сх ОЗУ?

Тем, что, собственно говоря, поздно что-либо менять, т.к. вся концепция довольно
четко проработана в RISC - стиле.

Есть и 4-битные ОЗУ, но тут весь смысл в том, что для упрощения мы одновременно
получаем 4 бит КОП + 4 бит Данное одним обращением к памяти.

То есть, тип ОЗУ не повлияет на общую парадигму конструкции.

_________________
iLavr


16 Jan 2014 16:01
Profile
Novelist

Joined: 30 Nov 2013 05:04
Posts: 32
Location: 83.149.47.40
Reply with quote
Post 
Lavr wrote:
Пока вижу только одно не элегантное решение. Запись в память проводить как цикл:
чтение-модификация-запись. Т.е. старший ниббл считывать и обратно записывать, вместе с
младшим... Но это выглядит так бестолково... :(

Я хотел сказать: Берем две четырехбитных памяти. Считывание одновременно из двух - 8 бит. Запись только в одну. Тогда не надо будет делать: "старший ниббл считывать и обратно записывать, вместе с
младшим..."
Тоесть для считывания такая память будет восьмибитной - адреса обеих м.сх памяти объединяем, данные - старший ниббл снимаем с одной, младший с другой. По сигналу записи память переконфигурируется а четырехбитную: данные с двух м.сх объединяем в четырехбитную шину , для выбора конкретной м.сх памяти используется младший бит адреса, тогда четные адреса будут записываться в одну м.сх, а нечетные в другую.
Соответственно при считывании записанных таким образом данных в восьмибитном режиме получим содержимое сразу двух идущих подряд адресов. Получим на каждом четном адресе КОП, на каждом нечетном данные.
Как вариант при записи можно выбирать одну из двух м.сх памяти старшим битом адреса. Тогда все КОП будут с первой половине адресного пространства, а все данные во второй половине.


Last edited by AIS on 17 Jan 2014 01:25, edited 1 time in total.



17 Jan 2014 00:54
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 255 posts ]  Go to page Previous  1 ... 10, 11, 12, 13, 14, 15, 16, 17  Next

Who is online

Users browsing this forum: No registered users and 6 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

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