Где-то ошибка, всего навсего.
На живых Z80 в режиме IM2 без всяких контроллеров делалось и работало, если верить Интернетам.
Хотя конечно, хозяин-барин, твой проект.
Но прерывания по 50hz один черт нужны - весь софт же не перепишешь... И используется там режим IM2 опять же
---------- Post added at 20:48 ---------- Previous post was at 20:42 ----------
Это не халтура , а штатный режим процессора Z80, используемый наиболее часто в виду того, что наиболее удобен.
Просто нужно заранее (на этапе проектирования устройства/разработки обработчиков прерывания) знать, что выдает устройство на шину в момент прерывания, и в соответствующее место таблицы ISR положить вектор (адрес) обработчика.
Если устройство вдруг выдает при прерывании не то, на что расчитана таблица, то код "улетит", да. Или вызовется обработчик соседнего прерывания. А с чего устройство вдруг начнет выдавать не то, на что спроектировано? Только при аппаратной неисправности (в нашем случае - всего компа, ведь всё в одной ПЛИС), а от этого не застрахована никакая схема.