|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Вопрос про !M1 при чтении операнда
Author |
Message |
masterspammer
Fanat
Joined: 13 Dec 2020 21:11 Posts: 86
|
Какое значение вывода !M1 при извлечении операнда команды, например второго байта в LD B, 0x15, третьего в LD A, [IX+2], третьего и четвёртого - в LD HX, 0x1212 или в CALL 0x1212? Другими словами - это ещё извлечение кода операции или уже цикл чтения? Подозреваю, что цикл чтения, но нигде не нашёл указания на то. Ткните носом в datasheet, пожалуйста! P.S. При чтении спецификации процессора у меня сложилось впечатление, что !M1 активен при извлечении как минимум кода команды со всеми префиксами (с перерывами на регенерацию памяти). В таком случае получение сигнала INTE в ZX-card для Ориона-128 (схема http://rdk.regionsv.ru/orion128-z80card.htm из Радио 1996, N4) будет ошибаться на командах set 6,E (CB F3), set 7,E (CB FB), срабатывая на их второй байт, хотя в программах для ВМ80 таких сочетаний быть не должно. Если же линия !M1 активна и при выборе операнда, то ZX-card будет ошибаться и на командах вида LD A, 0xF3, CALL 0xF8F3 и так далее, про что я не слышал и потому склоняюсь, что операнд читается без !M1
Last edited by masterspammer on 17 Jan 2021 19:41, edited 1 time in total.
|
13 Jan 2021 21:41 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22821 Location: Silicon Valley
|
Ну вроде как аргументы инструкции считаются данными - M1 будет только у самой инструкции (и видимо префиксов)
|
14 Jan 2021 05:08 |
|
|
Alekcandr
Doomed
Joined: 01 Oct 2007 10:30 Posts: 665 Location: Ukraine
|
1. M1 указывает, что это первый машинный цикл при выполнении какой либо инструкции. 2. M1 используется в обработке прерываний.
Если не изменяет память. Для Z80 карты Ориона М1 использовался для детекта инструкции EI/DE и эмуляции сигнала INTE (сигнал для бипера в Радио-86РК подобных компьютерах) ВМ80.
_________________Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
|
14 Jan 2021 07:22 |
|
|
masterspammer
Fanat
Joined: 13 Dec 2020 21:11 Posts: 86
|
Спасибо! Схема упрощается! А у префиксов, кстати, не может не быть !M1 - когда процессор выставляет !M1 он ещё не знает - что там будет - инструкция или префикс. Другое дело, что теоретически он может не выставлять его после префикса... Вот в pdf как-то мутно написано. Можно по-разному трактовать, а все эпюры для однобайтных инструкций. Угу, INT (!IOREQ + !M1), в NMI не используется, насколько знаю. Так я про то и написал - если при при команде с префиксом будет M1, то бипер будет поскрипывать на set 6,E / set 7,E; звучит странно - неужели "и так сойдёт"? OOPS! А я написал ZX-Card!
|
14 Jan 2021 07:34 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
_________________ iLavr
|
14 Jan 2021 07:46 |
|
|
Alekcandr
Doomed
Joined: 01 Oct 2007 10:30 Posts: 665 Location: Ukraine
|
masterspammer, вот тут можно предметно пожмакать, и получить ответ на вопрос. Видимо будет поскрипывать, но для этого еще придется постараться.
_________________Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
|
14 Jan 2021 13:17 |
|
|
masterspammer
Fanat
Joined: 13 Dec 2020 21:11 Posts: 86
|
Хорошая книжка! Спасибо! Глянул в datasheet, вдруг я пропустил, но нет, там нет места про ещё цикл - сразу про подтверждения прерывания. Спасибо, пожамкал! Итого: * В итоге в течении чтения всей команды чередуются !RFSH и !M1 (вывод RFSH не выводится, но виден на кристалле), возможны перерывы на DMA, тогда точнее сказать, что будут чередоваться !RFSH, !M1 (при неактивном !IORQ) и !BUSAK; при упрощении формулы, естественно, !IORQ смотреть со стороны буфера, иначе можно поймать сигнал !IORQ от контроллера DMA. * Команды без параметров таким образом друг от друга неотделимы - идёт ли команда с префиксом или две разные команды - не понять - нужно смотреть на шину данных и ловить префиксы, высчитывая длину команды. * Может быть ещё разное про обработке команды HALT, но симулятор не умеет показывать её длительную работу (можно и на реальном железе потом посмотреть). * Отдельная тема с !NMI - так как обработка немаскируемого прерывания на вид неотличима от [s]магии[/s] чтения команды, то решением будет задержать поступление !NMI до завершения команды (тут см. примечание про неотделимость команд) и тогда уже будет понятно, что сейчас обрабатывается прерывание. На поскрипывание в общем-то плевать, а для более серьёзного применения, боюсь, требуется что-то посерьёзнее.
|
14 Jan 2021 19:39 |
|
|
Alekcandr
Doomed
Joined: 01 Oct 2007 10:30 Posts: 665 Location: Ukraine
|
Я бы рассматривал Z80 как некую стейт машину (конечный автомат) без "магии", и тогда все станет проще и понятней.
_________________Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
|
15 Jan 2021 01:45 |
|
|
masterspammer
Fanat
Joined: 13 Dec 2020 21:11 Posts: 86
|
Вопрос, как именно этот автомат устроен (вроде разобрался) - часть вещей-то можно сделать более чем одним способом. ...и как повторить в упрощённом виде этот автомат, если нужно точно отследить выполняемую команду. Довольно просто, кстати...
|
15 Jan 2021 04:41 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Скажем так, любой процессор - это просто "конечный автомат"... Но в чём цель топикстартера - не совсем понятно, с сигналом /М1 вроде как успешно разобрались.
_________________ iLavr
|
15 Jan 2021 12:16 |
|
|
masterspammer
Fanat
Joined: 13 Dec 2020 21:11 Posts: 86
|
Тут не соглашусь; в теории процессор можно свести к формальному конечному автомату, но на более-менее современных мы получим множество состояний мощности как бы не больше числа частиц во вселенной и такое сведение будет тупиком (понимания не добавит). Другое дело - рассмотреть какую-то часть процессора как конечный автомат - полезно и логично; ну или не рассмотреть, а реализовать. Есть одна задумка - совершенно безумная и бесполезная; напишу о ней детальнее, как спаяю прототип. И мне там нужно детектировать часть команд, а для этого - отделять их друг от друга и от префиксов. Теперь понятно, как и можно делать автомат (мелкая логика или простая 556РТ** и несколько триггеров). То, как это сделано для "Ориона" выглядит ненадёжным (хотя для пищалки может и хватит), сначала я удивлялся простоте схемы, потому у меня и возникли сомнения про активность !M1 после извлечения префикса - может я чего не понимаю и так делать можно? Теперь понимаю, что при работе только 8080 кода проблем не будет, а в остальном "и так сойдёт".
|
15 Jan 2021 20:02 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Давайте всё же определимся точнее, с чем вы не согласны: с тем что любой процессор - это просто "конечный автомат", или верное по сути утверждение, что любой процессор - это просто "конечный автомат" просто лично вам не добавит понимания?
_________________ iLavr
|
15 Jan 2021 20:52 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22821 Location: Silicon Valley
|
ну на самом деле если есть динамическая составляющая (как в старых NMOS-процах), то это уже не автомат никакой, а динамическая система с элементами хаоса, которую предсказать и полностью просимулировать невозможно настоящие конечные автоматы это CMOS-процы, которые по даташиту могут работать от 0 Гц
|
15 Jan 2021 21:55 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Да ну нафиг... я почему и переспросил, поскольку мне было интересно, что подразумевается конкретным человеком под фразой "конечный автомат". По определению обычно это: Процессор обычно так и рассчитывают, как "конечный автомат". Потому как если число состояний бесконечно, ты его просто не рассчитаешь. А вот всякие вещи типа:" динамическая система с элементами хаоса, которую предсказать и полностью просимулировать невозможно" - это фигня, хорошо, что Интел не слышит... Особенно " с элементами хаоса" - это просто ерунда.
_________________ iLavr
|
15 Jan 2021 22:12 |
|
|
masterspammer
Fanat
Joined: 13 Dec 2020 21:11 Posts: 86
|
Процессор, если анализировать его структуру, явно содержит ячейки памяти, у классического конечного автомата памяти (кроме единственного значения - состояния) нет, так что он в лучшем случае - множество взаимодействующих конечных автоматов. Тем не менее, несмотря на то, что по сути (по задумке изготовителя, структуре и т.д.) он не является автоматом, можно построить эквивалентный ему конечный автомат, хотя он и будет чудовищной сложности. Такая эквивалентность позволит распространить теоремы теории автоматов на процессор. Примерно так же то, что программа на языке высокого уровня компилируется в машинный код, не делает её саму написанной в машинных кодах. Мысль была - если заменить весь процессор эквивалентным ему конечным автоматом, это как минимум мне, а скорее всего - никому не добавит понимания. Любой алгоритм может быть переписан на Brainfuck; но в полном соответствии с названии языка, понимания это не добавит. P.S. А хаос как раз ничего не значит - бывают и недетерминированные конечные автоматы.
|
16 Jan 2021 01:20 |
|
|
Who is online |
Users browsing this forum: No registered users and 2 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|