Soviet Union ZX Spectrum CommunityЧетверг, 28.11.2024, 16:04
Вы вошли как Гость | Группа "Гости" | RSS
 [ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Контроллер прерываний для ZXM MoonSound
Black_CatДата: Понедельник, 13.07.2015, 22:37 | Сообщение # 1
Координатор
Группа: Координаторы
Сообщений: 731
Статус: Offline
Ниже представлена схема контроллера прерываний для звуковой карты ZXM-MoonSound. Синим обозначена эквивалентная логика, реализованная в CPLD, красным - сигнал кадрового прерывания подаваемый с помощью выкидыша с материнской платы компьютера ZXM-Phoenix, или другого компьютера. Сигнал IOGE - это сигнал захвата диапазона портов, от дешифратора ZXM-MoonSound.
Контроллер позволяет работать совместно с другими контроллерами прерываний, выполненными в соответствии со стандартом шины NemoBus, и позволяет одновременно обрабатывать до двух независимых прерываний в режиме IM2 процессора - прерывание от YMF278B ZXM-MoonSound, и кадровое прерывание компьютера (если оно заведено через выкидыш). Контроллер позволяет выставлять три вектора прерывания для разных комбинаций запросов прерывания:

#77 - запрос прерывания от YMF278B ZXM-MoonSound;
#F7 - запрос прерывания от YMF278B ZXM-MoonSound и кадрового прерывания компьютера;
#FF - запрос прерывания от кадрового прерывания компьютера или от неизвестного источника;

Совместная работа контроллера прерываний с другими контроллерами обеспечивается с помощью арбитра захвата диапазона портов, исполняющего так же роль арбитра разрешения выставления вектора прерывания на шину компьютера в цикле чтения вектора прерывания. Соответственно, контроллер находящийся в master-слоте (первый слот) будет иметь наивысший приоритет, а контроллер в последнем слоте будет иметь низший приоритет выставления вектора прерывания на шину компьютера в цикле чтения вектора прерывания. Пока прерывание от контроллера с более высоким приоритетом обрабатывается, контроллеры с более низким приоритетом ждут, не сбрасывая свои запросы прерывания, пока команда EI, завершающая обработчик прерывания, не вернёт процессору чувствительность к запросам перывания. При наличии контроллера с более высоким приоритетом, обработка кадрового прерывания должна производиться в нём. В соответствии с логикой работы шины NemoBus, приоритеты контролеров прерываний жёстко привязаны к приоритетам слотов и не могут меняться.
Прерывание от YMF278B ZXM-MoonSound может программно запрещаться путём записи нуля во внутренний регистр #04 YMF278B.

Прикрепления: 9164099.png (24.9 Kb)


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
HazarДата: Четверг, 16.07.2015, 12:43 | Сообщение # 2
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
Цитата Black_Cat ()
позволяет одновременно обрабатывать до двух независимых прерываний в режиме IM2 процессора - прерывание от YMF278B ZXM-MoonSound, и кадровое прерывание компьютера


осталось только решить проблему большой загрузки процессора в режиме работы IM2

Цитата Black_Cat ()
#FF - запрос прерывания от кадрового прерывания компьютера или от неизвестного источника;


Запрос это сигнал INT (16 вывод CPU) Почему неизвестного - сама шина данных источник

Добавлено (16.07.2015, 12:43)
---------------------------------------------
Режим IM0

Этот режим включается сразу после включения питания и полностью аналогичен применяемому в микропроцессоре INTEL
8080. При каждом поступлении сигнала прерываний (INT),устройство вызвавшее прерывание, должно было бы выдать на шину данные
(код команды перехода) после чего должна исполнятся программа обработчика прерывания. В Спектруме на шину данных вечно выдается
код #FF что соответствует команде (RST #38), поэтому режим IM0 почти эквивалентен IM1.

Режим IM1

Этот режим стандартно включает операционная система Спектрума. По получении сигнала прерываний процессор
передает управление на адрес #38, т.е выполняется команда RST #38, где в Спектруме находиться Стандартная процедура
обработки прерываний (опрос клавиатуры) .

Режим IM2

Этот режим дает возможность программисту указывать адрес обработки прерываний.
При поступлении сигнала прерывания Младший байт вектора прерывания берется с
шины данных а старший байт перед этим записывают в регистр I. Далее по
полученному адресу из памяти считывается значение, которое является адресом программы обработки
прерываний.

Возврат из маскируемых прерываний следует выполнять командой RETI


Spectrum жив в нашей душе навсегда

Сообщение отредактировал Hazar - Четверг, 16.07.2015, 13:12
 
HazarДата: Пятница, 17.07.2015, 02:29 | Сообщение # 3
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
Прикрепления: 2424265.jpg (127.7 Kb)


Spectrum жив в нашей душе навсегда
 
Black_CatДата: Пятница, 17.07.2015, 14:26 | Сообщение # 4
Координатор
Группа: Координаторы
Сообщений: 731
Статус: Offline
Цитата Hazar ()
осталось только решить проблему большой загрузки процессора в режиме работы IM2


нет там никакой загрузки, всё как обычно

Цитата Hazar ()
Почему неизвестного


Потому, что известные источники все заведены в контроллер, а остальные - неизвестные.


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
HazarДата: Пятница, 17.07.2015, 20:00 | Сообщение # 5
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
Цитата Black_Cat ()
Потому, что известные источники все заведены в контроллер, а остальные - неизвестные.


остальные = вектор прерывания ( Registr I 1111 1111 шина данных)-----> чтение 16 битного адреса ------->переход на адрес.


Spectrum жив в нашей душе навсегда
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2006Сайт управляется системой uCoz