Z80 Finite State Machine
Moderator: Shaos
-
- Senior
- Posts: 137
- Joined: 20 Mar 2013 03:36
- Location: Ростов-на-Дону
-
- Senior
- Posts: 137
- Joined: 20 Mar 2013 03:36
- Location: Ростов-на-Дону
Особенности Z80...
Есть сигнал 153, примерный смысл - в регистре инструкций находится инструкция, при которой сохраняются флаги, в том числе в них входят сдвиги с префиксом CB.
Есть сигнал 183, примерный смысл - в регистре инструкций находится инструкция, при которой результат сохраняется в аккумулятор, в том числе в них входят сдвиги rlc/rrc/rlnc/rrnc.
То есть при сдвигах с префиксом CB нет записи результата в аккумулятор, что логично, а при обычных сдвигах нет записи флагов, что странно. Видимо при обычных сдвигах флаг переноса сохраняется особым образом.
Далее RS-триггер.
Вход R = M1T1 and (153 or 183). Сброс при M1T1, если текущая инструкция требует сохранения результата в аккумулятор или сохранения флагов. Сохранение происходит во время выборки следующей инструкции, то есть выход этого триггера можно назвать "идёт процесс сохранения результата и/или флагов".
Но вход S = M1T3 or (M4T2 and (34 or 35 or что-то_ещё)). При M1T3 понятно - результат сохранили, новую инструкцию выполнять начали, но M4T2 при обычных сдвигах? Они же за 1 M-цикл выполняются, M1. То есть явно какие-то лишние условия.
В другом месте похожее. Вывод флагов на шину
flag_oe = ~(w3[353] or w2[225])
а потом некий строб при (подставим flag_oe в выражение)
flag_oe or w2[225] =
= ~(w3[353] or w2[225]) or w2[225] =
= (~w3[353] and ~w2[225]) or w2[225] =
= (~w3[353] or w2[225]) and (~w2[225] or w2[225]) =
= (~w3[353] or w2[225]) and TRUE =
= (~w3[353] or w2[225])
То есть опять какие-то странности в логических выражениях. Зачем такие сложности? Или это задаёт порядок формирования сигналов?
p.s. А схема десятичной коррекции участвует в формировании на шине адреса 0066h при NMI
Есть сигнал 153, примерный смысл - в регистре инструкций находится инструкция, при которой сохраняются флаги, в том числе в них входят сдвиги с префиксом CB.
Есть сигнал 183, примерный смысл - в регистре инструкций находится инструкция, при которой результат сохраняется в аккумулятор, в том числе в них входят сдвиги rlc/rrc/rlnc/rrnc.
То есть при сдвигах с префиксом CB нет записи результата в аккумулятор, что логично, а при обычных сдвигах нет записи флагов, что странно. Видимо при обычных сдвигах флаг переноса сохраняется особым образом.
Далее RS-триггер.
Вход R = M1T1 and (153 or 183). Сброс при M1T1, если текущая инструкция требует сохранения результата в аккумулятор или сохранения флагов. Сохранение происходит во время выборки следующей инструкции, то есть выход этого триггера можно назвать "идёт процесс сохранения результата и/или флагов".
Но вход S = M1T3 or (M4T2 and (34 or 35 or что-то_ещё)). При M1T3 понятно - результат сохранили, новую инструкцию выполнять начали, но M4T2 при обычных сдвигах? Они же за 1 M-цикл выполняются, M1. То есть явно какие-то лишние условия.
В другом месте похожее. Вывод флагов на шину
flag_oe = ~(w3[353] or w2[225])
а потом некий строб при (подставим flag_oe в выражение)
flag_oe or w2[225] =
= ~(w3[353] or w2[225]) or w2[225] =
= (~w3[353] and ~w2[225]) or w2[225] =
= (~w3[353] or w2[225]) and (~w2[225] or w2[225]) =
= (~w3[353] or w2[225]) and TRUE =
= (~w3[353] or w2[225])
То есть опять какие-то странности в логических выражениях. Зачем такие сложности? Или это задаёт порядок формирования сигналов?
p.s. А схема десятичной коррекции участвует в формировании на шине адреса 0066h при NMI

-
- Senior
- Posts: 137
- Joined: 20 Mar 2013 03:36
- Location: Ростов-на-Дону
Не могу найти про "закладки" в Z80. Подскажите, сколько их было? Где-то упоминалось количество.
Один "лишний" транзистор в счётчике тактов уже есть, теперь вот при записи не срабатывает коммутатор на внутренней шине, который должен пропустить байт из регистра на выводы D0...D7. То есть он как бы срабатывает, но...
Один "лишний" транзистор в счётчике тактов уже есть, теперь вот при записи не срабатывает коммутатор на внутренней шине, который должен пропустить байт из регистра на выводы D0...D7. То есть он как бы срабатывает, но...
-
- Senior
- Posts: 137
- Joined: 20 Mar 2013 03:36
- Location: Ростов-на-Дону
-
- Senior
- Posts: 137
- Joined: 20 Mar 2013 03:36
- Location: Ростов-на-Дону
-
- Maniac
- Posts: 261
- Joined: 22 Jun 2005 04:35
- Location: МО Россия
Re: Z80 Finite State Machine
интересен флаговый регистр, в частности биты 3 и 5
Если есть возможность отреверсить логику их заполнения
Если есть возможность отреверсить логику их заполнения