User Tag List

Страница 64 из 81 ПерваяПервая ... 606162636465666768 ... ПоследняяПоследняя
Показано с 631 по 640 из 803

Тема: Реверс-инжиниринг Z80

  1. #631

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,391
    Спасибо Благодарностей отдано 
    1,701
    Спасибо Благодарностей получено 
    2,218
    Поблагодарили
    872 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Дошел до модели АЛУ, и тут наткнулся на подозрение, что такая конструкция переводится в схему не так, как казалось бы должно:

    Код:
        always @ (negedge clk)                                              // RS-триггер выбора фазы работы АЛУ
        begin
            if (start_alu)
                sel_alu_low = 1;
            else if (req_alu_high)
                sel_alu_low = 0;
        end
    Код:
        always @ (negedge clk)                                              // Регистр фиксации младшего полубайта результата
        begin                                                               //
            if (sel_alu_low)                                                //  
                alu_low <= alu_out[7:4];                                    //
        end                                                                 //
    Но второй триггер почему-то защелкивает результат на 1 такт CLK раньше чем должен.
    Совершенно непонятно, как это может быть.


  2. #631
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #632

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,391
    Спасибо Благодарностей отдано 
    1,701
    Спасибо Благодарностей получено 
    2,218
    Поблагодарили
    872 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Все, отбой, разобрался.
    Это из-за использования неблокирующего присваивания в первом триггере. Странно, что на графике выход триггера выглядит абсолютно правильно, а симулируется неправильно.

  4. #633

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,391
    Спасибо Благодарностей отдано 
    1,701
    Спасибо Благодарностей получено 
    2,218
    Поблагодарили
    872 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию Описание работы команд ADD/ADC/SBC HL,dd

    Одна из самых нестандартных команд для Z80. Для работы сделаны множество патчей в тех или иных блоках Z80.

    Описание на примере команды ADD/ADC HL,DE:

    Цикл M1:

    T1-T3 - выборка кода команды и завершение предыдущей ALU-операции
    T4 - ALUA = L
    * Загрузка в регистр PCR текущей выбранной регистровой пары HL (побочка от какой команды?)

    Цикл M4:

    T1 - ALUB = E
    * Инкремент PCR
    T2 - сложение младших полубайтов
    * Запись PCR в выбранный по умолчанию регистр WZ (фактически в WZ записывается HL + 1)
    (побочка от функционала записи декрементированного PC для блочных команд, чтоибы вернуться к началу блочной команды)
    T3 - сложение старших полубайтов и запись результата в L
    влияние на флаги P/V, Z, S (только для ADC/SBC)
    влияние на флаг C
    T4 - ALUA = H
    флаг C записать во флаг H

    Цикл M5:

    Т1 - ALUB = D
    T2 - сложение младших полубайтов
    T3 - сложение старших полубайтов и запись результата в H

    Цикл М1:

    Т1 - нет стандартного ALU-цикла
    T2 - влияние на флаги P/V, Z, S (только для ADC/SBC)
    влияние на флаг C
    Т3 - нет стандартной записи результата
    T4 - сохранение флагов в регистре F

    Замечание: флаг N устанавливается для любой стандартной АЛУ-операции
    флаг H устанавливается для любой АЛУ-операции
    Последний раз редактировалось Titus; 17.11.2024 в 21:51.

    Этот пользователь поблагодарил Titus за это полезное сообщение:

    Reobne(17.11.2024)

  5. #634

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,391
    Спасибо Благодарностей отдано 
    1,701
    Спасибо Благодарностей получено 
    2,218
    Поблагодарили
    872 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Не смотря на не очень высокий интерес массовой публики к подробным (а уже не подробные, лаконичные) разборам особенностей выполнения команд, все же буду выкладывать интересное)
    А именно егодня начал распутываться загадочный клубок с побочной записью/чтением регистра WZ (в некоторых документах его называют MEMPTR).
    Обновил чуть выше уже опубликованный сценарий работы команд ADD/ADC/SBC HL,dd, с добавлением комментариев, где, как и почему происходит влияние на регистр WZ.

    - - - Добавлено - - -

    Фактически, после окончания цикла M1, в котором блок PCR был занят инкрементом PC, а затем IR, блок брошен на произвол судьбы, как пропеллер сорвавшийся с вентилятора) И как только ему попадается какое-то число, он его инкрементирует или декрементирует и обратно выплевывает на шину PCRBUS. В большинстве случаев от этого ничего плохого не происходит, если вдруг какой-то участок схемы, где применялось неполное декодирование условий, вдруг взял и сработал не тогда, когда надо. В нашем случае он сработал два раз, первый раз в такте M1.T4 (тут еще не знаю, побочка от какого функционала), а второй раз в такте M4.T2. Вот тут совершенно четко понятно из-за чего. В этом такте (а так же M4.T4) блочные команды откатывают PC на два шага назад, чтобы вернуться к начальному адресу блочной команды. Но как оказалось, цикл M4 использует для вычислений и команда ADD, функционал которой реализован массовыми патчами разных участков схемы. Работе команды ADD это не помешало, так как запись младшего байта результата происходит в M4.T3, т.е. посередине между M4.T2 и M4.T4. Видимо, авторы проверили, все норм работает, а то, что там попутно куда-то полетели данные в WZ, ну и фиг с ними)
    Последний раз редактировалось Titus; 17.11.2024 в 21:54.

    Эти 2 пользователя(ей) поблагодарили Titus за это полезное сообщение:

    Reobne(24.11.2024), zebest(18.11.2024)

  6. #635

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,391
    Спасибо Благодарностей отдано 
    1,701
    Спасибо Благодарностей получено 
    2,218
    Поблагодарили
    872 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Да уж, тема заглохла)

    Можно закрывать лавочку за отсутствием интересующихся)

  7. #636

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,966
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    314
    Поблагодарили
    237 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Можно закрывать лавочку за отсутствием интересующихся)
    или за отсутствием у них времени на достаточное погружение в тему
    ведь чтоб задать правильный вопрос, надо знать б0льшую часть ответа
    да еще отрывочно излагаешь, надо бы оформить в статью нормальную
    Прихожу без разрешения, сею смерть и разрушение...

  8. #637

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,391
    Спасибо Благодарностей отдано 
    1,701
    Спасибо Благодарностей получено 
    2,218
    Поблагодарили
    872 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    да еще отрывочно излагаешь, надо бы оформить в статью нормальную
    Излагаю по мере исследования.
    И так уже пишу самым простым языком, и группируя по командам.
    Вот такая команда, вот такая особенность.

  9. #638

    Регистрация
    14.11.2011
    Адрес
    Волковыск, Беларусь
    Сообщений
    52
    Спасибо Благодарностей отдано 
    53
    Спасибо Благодарностей получено 
    32
    Поблагодарили
    9 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Да уж, тема заглохла)

    Можно закрывать лавочку за отсутствием интересующихся)
    Мне интересно, просто я слишком далёк от таких инженерных тонкостей. Другим было бы не интересно, не было бы столько просмотров (сейчас уже 92469). Понятно, что ТС хотелось бы обратной связи (т.е. диалога и вопросов), но иногда может это и к лучшему: не отвлекает от проекта.

  10. #639

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,391
    Спасибо Благодарностей отдано 
    1,701
    Спасибо Благодарностей получено 
    2,218
    Поблагодарили
    872 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от yashcher Посмотреть сообщение
    хотелось бы обратной связи (т.е. диалога и вопросов), но иногда может это и к лучшему: не отвлекает от проекта.
    У меня так, если нет обратной связи, то это никому не нужно, и я сам теряю интерес)

  11. #640

    Регистрация
    30.01.2006
    Сообщений
    1,921
    Спасибо Благодарностей отдано 
    73
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    80 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    почему-же интересно, просто я отладкой TZX формата занимался. До доработки внутренностей Z80 пока руки не дошли, нужно вначале графический интерфейс для linux доработать.
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

Страница 64 из 81 ПерваяПервая ... 606162636465666768 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 1739
    Последнее: 09.01.2025, 10:55
  2. Ответов: 32
    Последнее: 18.12.2024, 18:19
  3. Реверс-инжиниринг игры Boovie
    от Oleg N. Cher в разделе Программирование
    Ответов: 41
    Последнее: 09.01.2022, 23:07
  4. Реверс МК-92
    от Случайность в разделе Программируемые калькуляторы
    Ответов: 55
    Последнее: 24.04.2021, 23:47
  5. Реверс инжиниринг печатной платы
    от Filin в разделе Несортированное железо
    Ответов: 36
    Последнее: 11.03.2018, 22:46

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •