Контроллер прерываний

Печатные платы, программируемая логика, разработка и изготовление аппаратуры

Moderator: Shaos

aav8
Maniac
Posts: 287
Joined: 05 Nov 2008 19:47
Location: 81.28.208.238

Контроллер прерываний

Post by aav8 »

Подскажите простенькую схемку контроллера прерываний, который можно
использовать в z80 и i8080. Я думаю использовать шифратор 8->3 из 155 серии
(не помню название, вроде ВИ1) + шинник.
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: Proteus C++ DLL's

Post by PVV »

aav8 wrote: Решил привязать прерывания.
Ест-но для начала z80 NMI.
прерывания z80 посложнее, чем вм80, может, все-же первым реализовать вм80? а NMI z80 уже следующим шагом...
aav8 wrote: Подскажите простенькую схемку контроллера прерываний, который можно
использовать в z80 и i8080. Я думаю использовать шифратор 8->3 из 155 серии
(не помню название, вроде ВИ1) + шинник.
TitusInterrupts.pdf
вот вариант реализации 'контроллера прерываний' на дискретных элементах
You do not have the required permissions to view the files attached to this post.
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Proteus C++ DLL's

Post by Lavr »

aav8 wrote:Подскажите простенькую схемку контроллера прерываний, который можно
использовать в z80 и i8080. Я думаю использовать шифратор 8->3 из 155 серии
(не помню название, вроде ВИ1) + шинник.
Схема из архива выше очень на это похожа...
8080_RSTN.gif
Но у таких простых схем есть парочка недостатков...
1. Длительность внешнего запроса прерывания должна быть такова, чтобы i8080 успел среагировать на него,
иначе - он может его потерять...
2. Обслуженное прервание необходимо как-то "сбросить", т.е. чтобы не было так, если зависло прерывание
с самым бОльшим приоритетом, то всё зациклится на его обслуживании.
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Proteus C++ DLL's

Post by Lavr »

Попадалась мне в отечественной литературе схема, которая хоть и генерит одно прерывание RST7 по таймеру,
но содержит триггер прерывания, фиксирующий прерывание и сбрасываемый по обслуживанию...
8080_RST7.gif
You do not have the required permissions to view the files attached to this post.
iLavr
aav8
Maniac
Posts: 287
Joined: 05 Nov 2008 19:47
Location: 81.28.208.238

Re: Proteus C++ DLL's

Post by aav8 »

Схема на 47148 самая простая, к тому-же у меня вроде есть ИВ1.
А по поводу пропуска и зависания прерывания:
Нормальные контроллеры (ВВ51, ВВ55) отрабатывают это правильно:
при готовности выставляется соответствующий сигнал, который снимется после обслуживания
устройства.
Это отлично срабатывает для входных данных.
Для выходных данных я разрешаю прерывания если есть фактические данные.
И все работает отлично (по крайней мере для ВВ51)
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Контроллер прерываний

Post by Lavr »

Пока я занимался программированием 1816ВЕ48, размышлял по пути о её простенькой системе
прерываний, и пришел к неожиданному выводу, что к К580ВМ80 простенькую систему прерываний
в общем-то прикрутить не так-то и просто без дополнительных аппаратных затрат...

Либо ВК28(38) выдаёт один вектор прерывания RST7, либо этот же вектор можно обеспечить
8-ю резисторами на +5В, если делать без ВК28(38)...

Вспомнил я и про эту вот схему:

Image

если её слегка аппаратно доработать, то нетрудно сделать 4 прерывания, сильно не усложняя...

Но ведь есть же довольно простой контроллер прерываний 589ИК14 ! :roll:
И когда я набрал его в поиске, то увидел, что он есть в местном магазине по смешной цене! :lol:
589ИК14.jpg
Однако, когда я стал разбираться с аппаратным включением этого контроллера, то оказалось,
что не так-то уж всё и просто с ним... более того, по отношению к системе на БИС семейства
580, мне показалось, что это очень даже не просто! Как бы для других целей этот контроллер
изначально создавался...
К589ИК14_690.jpg
Вопрос вот какой: если кто-либо пользовался этим контроллером прерываний 589ИК14, объясните,
как его цеплять в систему на основе К580ВМ80, можно ли это в принципе и есть ли пример
практической схемы?
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
shoorick
Doomed
Posts: 487
Joined: 05 Nov 2007 05:08
Location: Украина

Re: Контроллер прерываний

Post by shoorick »

по-моему, в СМ-1800 на таком было сделано (я плату видел в молодости :) )
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Контроллер прерываний

Post by Lavr »

В общем тень на плетень наводят источники, где 589ИК14 описывают как часть комплекта 589.
Блок приоритетного прерывания К589ИК14 ... При совместном использовании БМУ К589ИК01 и БПП К589ИК14 в БПП вырабатывается сигнал, определяющий установку адреса микрокоманды на МА кодом ВУ, в том числе выходным кодом БПП.
Это просто УЖОССНАХ! :o

Но в справочнике у Шахнова всё написано куда как более понятно! А вот здесь, если я не ошибаюсь, копия из Шахнова:
http://dplm2008.narod.ru/str/komplects/ ... 9ik14.html

Насколько я всё понял, прочитав этот материал, 589ИК14 можно вешать прямо на шины микропроцессорной
системы на комплекте 580.
По-хорошему после него перед шиной данных надо поставить К580ИР83, поскольку код прерывания на выходе -
инверсный...
k589_k589ik14_clip_image002.jpg
Но и по-плохому можно сделать, по-нищебродски: на шину данных - резисторы к +5В, и прямо на них -
выходы 589ИК14 — на D5, D4, D3.
k589_k589ik14_clip_image006.jpg
Выходы у него - с открытым коллектором... Возникнет небольшая путаница в приоритетах, но работать по идее - должно! :wink:
Тем более, если мы и каскадировать его не собираемся...

Надо купить: 14 Р ныне - это не деньги...
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Контроллер прерываний

Post by Lavr »

Lavr wrote:Пока я занимался программированием 1816ВЕ48, размышлял по пути о её простенькой системе
прерываний, и пришел к неожиданному выводу, что к К580ВМ80 простенькую систему прерываний
в общем-то прикрутить не так-то и просто без дополнительных аппаратных затрат...
Может показаться странным: чего это я занимался программированием 1816ВЕ48, а размышлял о прерываниях К580ВМ80?
Дело в том, что в 1816ВЕ48 сканирование 7-сегментного индикатора выполнено по прерываниям, и это весьма-таки удобная фича!

В "Специалисте" прерываний по простоте его не было... и даже когда таймер К580ВИ53 поставили, то всё-равно прерываний
не приделали, а ведь даже в сравнимом по простоте ZX-Spectrum механизм прерываний задействован!
И это многие вещи упрощает! Не надо мучиться с программным поллингом порой!

Ну пусть мы введём единственное простейшее прерывание - RST7 - резисторами от +5В - на шину данных...
Но на адресе 0038Н - в "Специалисте" ОЗУ, а в ОЗУ может быть что угодно...

Идея вот какая: у "Специалиста" (да и не только у него) есть такая аппаратная фича: при начальном старте
аппаратно системное ПЗУ подменяет собой всю память, чтобы подсунуть процессору код с адреса 0000Н.
После чего идёт JMP на реальный адрес посадки системного ПЗУ, где это распределение памяти отключают.

А что, если применить эту фичу и для прерывания RST7 ? :roll:
При разрешенных прерываниях отлавливаем D-триггером из STATUS бит обработки прерывания, этим сигналом
притягиваем системное ПЗУ в нулевые адреса, и по адресу 0038Н в ПЗУ будет начало обработчика прерывания.
Он, как и положено, делает JMP на реальный адрес системного ПЗУ, карта памяти восстанавливается,
а вот дальше из системных ячеек ОЗУ считывается реальный адрес обслуживания прерывания.
Такой трюк был еще в мониторе DDT от SP-580 - можно было программно подменить процедуру вывода на экран,
к примеру... но в нашем случае мы получаем программируемое прерывание!

Такая вот идейка с прерываниями брезжит... :wink:
iLavr
User avatar
shoorick
Doomed
Posts: 487
Joined: 05 Nov 2007 05:08
Location: Украина

Re: Контроллер прерываний

Post by shoorick »

для нескольких прерываний ВН59 не вариант? вместо ИК14? если бы в Украине был - я бы выслал парочку, все равно сгниют...

в Z80 легко - и сигнал сразу, и вход отдельный есть.

+++++++++++++++++++
кстати, 8228/8238 при подаче куда-то напряжения переходят в какой-то режим, что могут формировать RST7 по какому-то сигналу. у наших про эту фичу не встречал (или не заметил), а в буржуазном мануале наткнулся, думаю, если наши сдирали один в один, может, и в наших есть такая фича (ВК38 у меня есть, а вот 8238 нет)

-- а, при подаче сигнала INT 8228 отлавливает INTA, но шина остается закрыто-подтянутой и получается RST7
+++++++++++++++++++
нашел:
The I NT A control signal is normally -used to gate the "inter-
rupt instruction port" onto the bus. It also provides a
special feature in the 8228/38. If only one basic vector is
needed in the interrupt structure, such as in small systems,
the 8228/38 can automatically insert a R ST 7 instruction on-
to the bus at the proper time. To use this option, simply con-
nect the I NT A output of the 8228/38 (pin 23) to the +12
volt supply through a series resistor (1 K ohms). The voltage
is sensed internally by the 8228/38 and logic is "set-up" so
that when the DB I N input is active a R ST 7 instruction is
gated on to the bus when an interrupt is acknowledged. This
feature provides a single interrupt vector with no additional
components, such as an interrupt instruction port.
в двух словах: если на выход INTA контроллера шины подать 12В через 1кОм, то при подаче прерывания на проц, когда он выставляет DBIN, он получает RST7 от 8238.
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Контроллер прерываний

Post by Lavr »

shoorick wrote:для нескольких прерываний ВН59 не вариант? вместо ИК14?
...
кстати, 8228/8238 при подаче куда-то напряжения переходят в какой-то режим, что могут формировать RST7 по какому-то сигналу. у наших про эту фичу не встречал
Системный контроллер 580ВК28(38) мы тут с тобой давно уже обсуждали, и никто не смог точно сказать
делают они самостоятельно RST7 или не делают. Но если добавить 580ВН59, то её RST7 уже совсем не нужен.

Так что контроллер прерываний 580ВН59 - я считаю - не вариант, поскольку в связке с 580ВК28(38) - это
и будет самая обычная система прерываний для микропроцессорной системы на комплекте 580.

И потом: 580ВН59 при старте надо запрограммировать, а 589ИК14 - более простая, ей после прерывания
только ответить надо, но можно и не отвечать, если прерывание подано корректно.

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

Re: Контроллер прерываний

Post by Lavr »

Lavr wrote:Но ведь есть же довольно простой контроллер прерываний 589ИК14 ! :roll:
И когда я набрал его в поиске, то увидел, что он есть в местном магазине по смешной цене! :lol:
Image
В общем пошел я сегодня и купил 6 штук 589ИК14 из 9-ти... три штуки оставил... :wink:

Перед тем как пойти в магазин, смотрел я его прайсы, и они меня развеселили! :lol:
580.PNG
Несколько лет назад я в этом магазине скупил все микропроцессоры К580ВМ80А по 17 рублей
в количестве 30 штук просто из жадности... :ebiggrin:

А вот три штуки К580ИК80А я не купил именно из-за букв ИК, мне их предлагали по 20 рублей...
И я смотрю, все эти годы некупленные мной 3 штуки К580ИК80А всё дорожают и дорожают! :mrgreen:
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
shoorick
Doomed
Posts: 487
Joined: 05 Nov 2007 05:08
Location: Украина

Re: Контроллер прерываний

Post by shoorick »

у меня ик80 работали стабильнее, чем вм80. наверное, вм80 были более высокочастотные и их клинило от помех генератора синхроимпульсов Специалиста :)
User avatar
Lavr
Supreme God
Posts: 16682
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Контроллер прерываний

Post by Lavr »

shoorick wrote:у меня ик80 работали стабильнее, чем вм80.
А я читал, что 580ИК80 более дохлые по нагрузочной способности, поэтому меня и обидело,
что мне их предлагают дороже... :lol:

Пусть лежат... может быть, спустя время, их поместят в музей... :ebiggrin:


P.S. Да, и ещё пишут, что 580ИК80 не могут работать от +5В, +5В, -0В, а К580ВМ80А - могут,
сам проверял 2 из 30-ти...
:wink:
iLavr
User avatar
shoorick
Doomed
Posts: 487
Joined: 05 Nov 2007 05:08
Location: Украина

Re: Контроллер прерываний

Post by shoorick »

ну да, более новые лучше, но в Спеце лучше работали более старые (по моему личному опыту)