Двухпроцессорная система на микропроцессорах Intel 8080.

8-битные микроконтроллеры и микропроцессоры от Intel и их клоны, а также компьютеры на них построенные

Moderator: Shaos

vinxru
Retired
Posts: 587
Joined: 27 Mar 2013 04:55
Location: 62.192.229.16

Post by vinxru »

Я вот о чем подумал, говоря о двух тактах.

Это Z80

Image

Image
User avatar
Lavr
Supreme God
Posts: 17150
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 74F786 4-битный асинхронный арбитр шины

Post by Lavr »

Lavr wrote: 06 Dec 2012 17:54 решение для меня просто необычно - они применили арбитр шины 74F786
Я у себя на диске наткнулся на материал по этому самому 74F786 4-битному асинхронному арбитру шины и перечитал его чтобы напомнить самому себе.

Ничего сложного не увидел:
74F786.PNG
/EN - это просто её включить.

А дальше на каждый вход /BRх от каждого из 4-х процессоров подать обращение к памяти (/RD ИЛИ /WR).
Кто первый пришел того и тапки: выдаст его /BGх активный, остальные /BGу - пассивные и должны тормознуть свои процессоры по входам READY.

Следующий в приоритете тот процессор, который пришел следом за этим первым /BRх и т.д.

Я подумал, что внутри 74F786 должна быть довольно простая логика, но смущала одна фраза:
"Если запросы пришли одновременно, приоритет одного из них выбирается случайно." :-?

Но логика и правда, весьма не сложна оказалась:
74F786 4-bit asynchronous bus arbiter.PNG
А всё остальное между процессорами следует сорганизовать ручками, как это нарисовано вот здесь:
Двухпроцессорная система на микропроцессорах Intel 8080.

Я и сам посмотрел... :wink: честно говоря, на мой взгляд, можно сделать проще...
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 17150
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 74F786 4-битный асинхронный арбитр шины

Post by Lavr »

.
Ссылка вот отсюда: Re: nedoPC-580 (SMP на 5 процессорах КР580ВМ80А)
oldlazycat wrote: 15 Apr 2023 02:08Ну, а в железе, в железе-то воплотили?!
Shaos wrote: 15 Apr 2023 02:38Куда уж - Лавр всё в протэусе крутит, а я - пока в голове :mrgreen:
А у тебя в голове что-нибудь простенькое накрутилось в кодах i8080 или z80 за эти годы? :roll:

Я подумал, что я реально смогу "нарисовать" эту 74F786 в Proteus, раз уж есть её кишки, и хоть одну 4-х (или 2-х-процессорную) систему запустим чисто из интересу? :wink:

А то смотри, какая засада получается: поиск ссылается в основном на нас: :esmile:
multi-i8080.png
А мы, получается, так и ниасилили ничего, хотя вроде как всё продумали в деталях... :-?

Я бы тебя ни о чём не спрашивал, но просто то, чего я хотел, эта система сделать не сможет.
А другие варианты я и не продумывал со времён этого топика.
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 17150
Joined: 21 Oct 2009 08:08
Location: Россия

Re:580ВГ18(8218)_контроллер системной шины

Post by Lavr »

VituZz wrote: 06 Dec 2012 20:30А чем 580ВГ18 не подходит для этой цели?
Нашел я даташит на зарубежный аналог 580ВГ18 - i8218.
8218_580ВГ18.pdf
Почитал я его внимательно, другие материалы почитал, и не понравился он мне, хотя бы потому, что, насколько я понял, на каждый i8080 он нужен отдельный и свой.
580BГ18.PNG
Да и в Proteus его модели у нас нет. :-?

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

В качестве ПО просто дам им для начала две простые, но разные задачи.
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 17150
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 74F786 4-битный асинхронный арбитр шины

Post by Lavr »

Lavr wrote: 01 Nov 2026 16:16 ...я реально смогу "нарисовать" эту 74F786 в Proteus, раз уж есть её кишки, ...
Ну вот... пустую "коробку" для 74F786 в Proteus я "нарисовал". :wink:
74F786_P.PNG
Завтра, надеюсь, вправлю ей "кишки"... :lol:
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
FizikS
Doomed
Posts: 366
Joined: 11 Oct 2018 00:52
Location: г. Клинцы, Брянская обл.

Re: Двухпроцессорная система на микропроцессорах Intel 8080.

Post by FizikS »

Теоретически, раз "потрошки" известны, можно "расширить" схему и на большее количество процессоров. Или придумать схему каскадирования непосредственно микросхем 74F786.
User avatar
Lavr
Supreme God
Posts: 17150
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Двухпроцессорная система на микропроцессорах Intel 8080.

Post by Lavr »

FizikS wrote: 02 Nov 2026 23:12 Теоретически, раз "потрошки" известны, можно "расширить" схему и на большее количество процессоров.
Я, честно говоря, думаю её чуть позже "кастрировать" всего до двух :lol: , ибо ещё не придумал, что и двум-то делать... :wink:
FizikS wrote: 02 Nov 2026 23:12Или придумать схему каскадирования непосредственно микросхем 74F786.
А тут за нас подумали уже: для этого есть вывод /EN.
iLavr
User avatar
Lavr
Supreme God
Posts: 17150
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 74F786 4-битный асинхронный арбитр шины

Post by Lavr »

Lavr wrote: 01 Nov 2026 16:16 .
Я подумал, что я реально смогу "нарисовать" эту 74F786 в Proteus, раз уж есть её кишки, ... :wink:
Я не стал откладывать всё в долгий ящик и "нарисовал" эту самую 74F786, благо сегодня выходной. :mrgreen:
74F786-2.png
Но я не только "нарисовал", но и скомпилировал модель, протестировал её и выложил там, где мы модели Proteus выкладываем:
http://www.nedopc.org/forum/viewtopic.php?p=186047#p186047

А здесь, я думаю, надо дополнительно выложить datasheet , ибо там он не поместился.
74F786 4-bit asynchronous bus arbiter.pdf
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 17150
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Двухпроцессорная система на микропроцессорах Intel 8080.

Post by Lavr »

Lavr wrote: 02 Nov 2026 15:57 Так что попробую нарисовать в Proteus эту 74F786 и просто сделаю систему на двух z80 скорее всего, чтобы проще задействовать пространство портов для обмена между процессорами.

В качестве ПО просто дам им для начала две простые, но разные задачи.
Собственно, я так и сделал:
Взял свой рабочий проект, где исследовал возможность реализации RST7 на 8-ми резисторах,
вставил в него арбитр 74F786 и методом "copy-past" добавил второй процессор.

Но тут и случилось то, что меня изначально смущало...
Lavr wrote: 01 Nov 2026 15:16 Я подумал, что внутри 74F786 должна быть довольно простая логика, но смущала одна фраза:
"Если запросы пришли одновременно, приоритет одного из них выбирается случайно." :-?
В цифровой системе моделирования запросы приходят СТРОГО одновременно! :roll:
И тут арбитр 74F786 начнает глючить... модель выпадает по достижению минимального шага. :(

74F786 и в реальной жизни так себя ведёт. Когда я искал на неё разные материалы, попадалась статья:
"Metastability tests for the 74F786 – a 4-input asynchronous bus arbiter"
В ней подобную ситуацию упоминают.

Я не стал уменьшать шаг, а просто самым простым образом сдвинул по времени второй процессор, сделав его
асинхронным по отношению к первому. :wink:
2CPU-1.png

 СХЕМА КРУПНО
i8080_74F786_2.png

Увеличить
Lavr wrote: 01 Nov 2026 15:16...честно говоря, на мой взгляд, можно сделать проще...
Проще - я хотел избавиться от трёх шинных буферов для каждого процессора, и тормозить их не по READY, а по HOLD, в этом случае процессор сам переводит шины в высокоимпедансное состояние.
Но это решение "не взлетело" простыми средствами, поскольку по READY остановка происходит мгновенно, а по HOLD процессор дорабатывает текущую команду, поэтому синхронизация усложняется.

Но над этой идеей, возможно, ещё следует подумать...

Единственное, я дал каждому процессору больше времени обращения к памяти. Начинается доступ по SYNC, заканчивается по заднему фронту /RD или /WR. Ну надо же дать шанс корректно сработать всем дешифраторам! :lol:

Выкладываю ниже проект так, как он сейчас работает.
74F786_i8080.zip
Процессоры начинают выполнять одну и ту же программу одновременно, каждый идентифицирует себя и уходит дальше выполнять конкретно свою программу.
Первый - молотит в порт вывода 55Н...0ААН, второй - гоняет по кругу зелёный сегмент в индикаторе.
Чисто визуально различимые задачи без особого смысла. :-?
Первый - реагирует на нажатия двух подписанных кнопок. Второму приделывать этот функционал я поленился. :-?

Самый тяжкий момент аппаратно был там, где процессоры различают себя - очень тонкие тайминги. :evil:
Этот момент хорошо иллюстрируют по два индикатора шины данных для каждого процессора внизу схемы, если включить частоту задающего генератора 1...2 Гц.

Четыре процессора задействовать можно по образу и подобию этого проекта. Я специально сделал всё на большом листе.

Мультипроцессорная система подана - извольте кушОть! :ebiggrin:
You do not have the required permissions to view the files attached to this post.
iLavr