nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 14 Nov 2018 16:26



Reply to topic  [ 254 posts ]  Go to page Previous  1 ... 7, 8, 9, 10, 11, 12, 13 ... 17  Next
4-bit Processor 
Author Message
Supreme God
User avatar

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

Хардыч - как ты говоришь:"Похоже, меня никто не читает!" :D
Для записи у меня только 16 4-битных регистров из К155РУ2. А поскольку записи в "ОЗУ программ" пока нет - то это мешает сохранять этот регистр где-нибудь еще, - фактически негде.
Регистры нужны для текущих задач. Так что - неправда...

Сохранить этот регистр нужны сразу 3 4-битных ячейки из 16, и как правильно заметил b2m - этого не сделать за 1 цикл...

VituZz wrote:
Прошу не пинать, если я невпопад... Но почему мы не можем просто поставить ОЗУ нужной разрядности шины данных и к нему реверсивный счётчик? PUSH записывает в ОЗУ и добавляет к счётчику единицу, POP - обратные действия. Чем это решение не подходит? Вложенность стека определится только объёмом ОЗУ.

Мочь-то мы всё можем... но "нищебродская" религия не пускает...
Волков сделал "Специалист" с 2-мя линейками ОЗУ и одной ПЗУ.
А тут - убогая 4-битка и 2 ПЗУ и 2 статических ОЗУ! :o
Пока ситуация не выглядит безвыходной, пока "искусство схемотехники" не сдалось - я предпочитаю не добавлять БИС в конструкцию. :wink:

PS. Убрал баян про Эмулятор i8080 в железе


06 Nov 2011 09:06
Profile
God
User avatar

Joined: 13 Nov 2010 05:06
Posts: 1292
Reply with quote
Post 
Но как ни крутись, а стек предполагает, что будет какая-то память. 1-уровневый стек кажется мне неприличным фиговым листком, польза от которого лишь в декларации его наличия :). Тем не менее не настаиваю. Можно для начала вообще без стека попробовать.


06 Nov 2011 09:46
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post 
VituZz wrote:
Но как ни крутись, а стек предполагает, что будет какая-то память. 1-уровневый стек кажется мне неприличным фиговым листком, польза от которого лишь в декларации его наличия :). Тем не менее не настаиваю. Можно для начала вообще без стека попробовать.

Ну вот я и пытаюсь сделать прикидку - как задействовать то ОЗУ, что уже есть.
Либо под стек, либо без него - под адреса возврата.

Иначе 4-битная поделка становится слишком расточительной!
Вон DEC PDP-8 и то была более скромной... :wink:


Last edited by Lavr on 20 Nov 2011 13:36, edited 1 time in total.



06 Nov 2011 09:52
Profile
God
User avatar

Joined: 13 Nov 2010 05:06
Posts: 1292
Reply with quote
Post 
Обычно блок-схемы в той или иной степени упрощены. Столь детальные вопросы они решать не призваны. Дешифратор команд, возможно, имеет регистры не только для КОП, но и для адресов в командах. Но это не более, чем догадка. На блок-схемах я таких подробностей не встречал.


06 Nov 2011 11:29
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Lavr wrote:
Ну вот я и пытаюсь сделать прикидку - как задействовать то ОЗУ, что уже есть.
Либо под стек, либо без него - под адреса возврата.

Довольно экономное решение стека можнo слямзить у 6502 в принципе.
Стек фиксированный и расположен в нулевом 256-байтном сегменте.
Для этого ввести придётся 8-битный указатель стека. Без указателя сегмента.
Ещё мультиплексор понадобится РС и SP коммутировать на адреса памяти.
Мультиплексор на ОК - вполне прост.

Вот только память пока - Read Only... :(


15 Feb 2012 19:32
Profile
Doomed
User avatar

Joined: 05 Nov 2007 06:08
Posts: 410
Location: Украина
Reply with quote
Post 
можно стек держать в отдельной памяти 8) у 8080 для этого была возможность - сигнал в слове состояния ;)


16 Feb 2012 08:21
Profile WWW
Retired
User avatar

Joined: 25 Jul 2011 01:14
Posts: 1337
Location: WWW
Reply with quote
Post 
а сегментные регистры будут? :wink:


17 Feb 2012 17:05
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post 
MC68k wrote:
а сегментные регистры будут? :wink:

Не будут. Уже есть. Схема кусками в топике. Но не окончательная.

PS. Основную идею повторю ибо бывает людям лень полистать:
Lavr wrote:
...я собираюсь танцевать вот от этого образца как от прототипа.


Источник

Я его смоделировал, он успешно работает,
http://www.nedopc.org/forum/viewtopic.php?t=9213
далее - расширю его до 8 бит и вделаю здешнее АЛУ.

Мы оттолкнулись от этой схемы, как простой, РАБОТОСПОСОБНОЙ!, местами оригинальной.
Сделали для неё своё АЛУ - можно выбрать подходящий вариант, ибо всё обсудили здесь.
Теперь модернизируем сам процессор, обсуждая его систему команд и их реализацию
по ходу этого топика.

Схемы в топике приводятся.

Но тормозит всё и ступор сейчас на

CALL ... RET

будет стек или нет.

Пока количество разных книг и др.источников склоняет меня к НЕТ именно из-за
большей простоты схемотехники.

Мы всё же пришли к выводу, что без нормальных CALL ... RET очень кисло.
Хотя и кривые CALL ... RET там реализованы...
Но слишком уж кривые: RET - только на фиксированный адрес, а CALL - только на начало
любого параграфа.

И ещё неприятный тормоз - внутренняя магистраль 4-битная, а шина адреса для
памяти программ - уже 12 битная (для 4096 байт вместо 256).
Варианты переходов не получаются RISC-типа (за 2 цикла). :(
Всёж мы заложились - все команды за 1 машинный цикл, и лишь дальние переходы -
за 2 цикла.
Может быть это очень жесткие требования к нашей поделке.


Last edited by Lavr on 12 Mar 2012 02:32, edited 3 times in total.



17 Feb 2012 19:47
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Я просмотрел очень много схем "самогонных" процессоров из Интернета,
большинство ссылок на них приведены в этом топике 4-BIT.

В подавляющем большинстве их делают именно так как советует VituZz:
"если нам необходимо ОЗУ - давайте вставим микросхему ОЗУ".
Я не могу сказать, что это неверно - но схему распирает не по децки...
Тут уж и желание "поиграцца" исчезает напроч. :(

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


18 Feb 2012 05:30
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post 
В проекте Titan - The 8 bit TTL Processor стек, похоже, выполнен отдельно, в одном корпусе ОЗУ.

Image

Это несколько странно, поскольку, как видно из блок-схемы, памяти у него хватает... :(
В отсутствие схем (уже долгое время) трудно сказать, был ли какой схемотехнический
выигрыш у автора, или просто "рука так легла"...


19 Feb 2012 07:32
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Читал статеечку Микропроцессор своими руками-5 - некоторые положения меня просто в осадок выбросили... :(
Ну не стремятся люди к простоте! :o

Quote:
- Гарвардский процессор сделаем?
- Гарвардский... Он понадёжнее будет...
- А как мы будем грузить память команд и как будем отлаживать программу? Как было сказано выше, процессор не имеет доступа по записи в собственную память команд.
- Но ведь должны же быть и нетривиальные решения. Да, конечно. И одно из таких решений — это внешний загрузчик. Представим себе, что память программ выполнена как двухпортовая память. Один ее порт используется основным процессором, тем, который мы разрабатываем, а второй порт этой памяти подключен к загрузчику. В качестве загрузчика мы можем использовать как простенький статический автомат, так и внешний, по отношению к микросхеме, процессор.

Честно говоря, я об такую ерунду уже спотыкнулся и сам... :wink:
Когда думал, как аппаратно загружать память программ - легкомысленно сказал себе - да PIC можно поставить... :lol:
Сам же и одумался: 4-битную поделку и PIC-ом загружать? Да она портов его не стОит... :D


05 Mar 2012 16:41
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
HardWareMan wrote:
ЕМНИП, у МИПСов же 1 уровень стека. Точнее, у них специальный регистр адреса возврата, куда сохраняется адрес при вызове подпрограммы. Но никто не мешает сохранять этот регистр где-нибудь еще, ведь правда? Я думаю, это достаточно красивое решение.

Что-то похожее реализовано в "Машине Мано"

Если посмотреть её систему команд, то есть команда довольно небычная:
Code:
BSA ad   d101 aaaaaaaaaaaa   (ad) <== PC   запоминание счетчика команд

То есть как таковые вызов и возврат можно и не делать.
Запомнили счетчик команд, перешли на подпрограмму, а при возврате просто загрузили счетчик команд значением возврата.
Только в отличие от стека, за адресами возвратов придётся вручную следить.
Но я так представляю, что это не столь трагично. В PDP-8 без рекурсии справлялись.

Хардыч, а поплотнее у МИПС где взглянуть этот момент?


08 Mar 2012 15:22
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post 
VituZz wrote:
Возможно, твой вариант может быть аппаратно "снизу вверх" совместим с моим?

Я выложил рабочий прототип 4-битного ЦПУ, и всяк может теперь в модели пробовать
свои и чужие замыслы.

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


16 Mar 2012 09:55
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post 
HardWareMan wrote:
... у МИПСов же 1 уровень стека. Точнее, у них специальный регистр адреса возврата, куда сохраняется адрес при вызове подпрограммы. Но никто не мешает сохранять этот регистр где-нибудь еще, ведь правда?

И мне кажется, одно оригинальное аппаратное решение по реализации вызова
подпрограммы и возврата
у меня в процессе завершения работы над моделью
прототипа Stupid PIC
всё-таки вырисовалось...

Адрес возврата мы нигде сохранять не будем. Он так и останется в РС. :wink:
Раз уж полюбому надо вводить в конструкцию ещё один регистр, шириной в РС,
то пусть это будет дополнительный программный счётчик для подпрограммы!

Если встречается CALL, основной счётчик делает выборку кода операции и
увеличивается на 1 (РС=РС+1). Это и будет адрес возврата.
После этого адрес подпрограммы заносится в дополнительный программный
счётчик
, и подпрограмма выполняется на нём.
Когда встретится команда RET - надо будет лишь переключиться
обратно на основной РС.

Хуже чем у МИПСов точно не будет! Но экономим на выполнении операций:
1. считать значение РС.
2. сохранить значение РС.
3. снова считать сохранённое значение РС.
4. загрузить РС.
аппаратно эти цепи будут не нужны. Функциональность как с одним регистром
адреса возврата, куда сохраняется адрес при вызове подпрограммы.
Но аппаратно - компактно и очень неплохо вписывается в нашу схему.

В принципе и третий РС так можно ввести. Чтобы хотя бы два уровня вложения
подпрограмм было.

К ОЗУ программ РС всё равно подключается через тристабильный регистр.
Так что оба дополнительных РС мешать не будут.

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


16 Mar 2012 12:20
Profile
God
User avatar

Joined: 13 Nov 2010 05:06
Posts: 1292
Reply with quote
Post 
Интересное решение!

Чувствую, что программирование этого проца будет экстремальным :). Мы уже настолько привыкли к роскошам типа неограниченной вложенности подпрограмм, прерываний и прочая...


16 Mar 2012 12:35
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 254 posts ]  Go to page Previous  1 ... 7, 8, 9, 10, 11, 12, 13 ... 17  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:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.