User Tag List

Страница 45 из 66 ПерваяПервая ... 414243444546474849 ... ПоследняяПоследняя
Показано с 441 по 450 из 803

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

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

    По умолчанию

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

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

  3. #2

    Регистрация
    20.06.2014
    Адрес
    г. Чехов
    Сообщений
    56
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    61
    Поблагодарили
    30 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Не больше ли шансов накосячить, пропуская этап транзисторной схемы? Я понимаю, для регулярных структур, типа регистров, можно не рисовать все. Но для всякой разнообразной мелкой нерегулярной логики, которой бывает изрядно много?
    Шанс накосячить в трансах гораздо выше чем в ячейках, но да, ошибки случаются, исправляются. Цифровая логика она, знаешь ли, очень логичная Если где-то косяк, то его сразу видно на прогоне в тест бенче или логисиме.

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

    P.S. Если интересно какой у нас workflow, то его можно наблюдать из раздела по IDU CLA: https://github.com/emu-russia/SEGACh...arry-lookahead

    1. Получается топология (необязательно, если вместо кастомного дизайна используются стандартные ячейки)
    2. Из топологии выделяются логические элементы (в IDU CLA это куча nand, not, nor)
    3. Определяются порты (input, output) исследуемого куска схемы
    4. В утилите Deroute получается netlist. Этот шаг можно представить по аналогии с дизассемблированием программ - получается как бы "исходник" (дизасм)
    5. Утилита Deroute умеет экспортировать готовый к употреблению Verilog исходник ( https://github.com/emu-russia/SEGACh...list/idu_cla.v )
    6. Полученный верилог можно запихать куда угодно (для симуляции например). В частности верилог был запихнут в Xilinx PlanAhead и она сама "нарисовала" логическую схему которую можно вдумчиво вкурить, разобрать на части, проверить в логисиме. Или сразу использовать верилог в прикладных целях.

    Такой подход мы используем где-то последние два года и он МЕГА эффективный для изучения микросхем.

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

    Titus(09.10.2024)

  4. #3

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

    По умолчанию Особенности работы M-циклов

    Предварительное описание особенностей работы M-циклов:

    • Каждый M-цикл отвечает за новый доступ к памяти. Поэтому, собственно, он и называется M-циклом.

    • M1 отвечает за выборку кода операции. В общем случае длится 4 такта, но может увеличиваться до 6 тактов. Во время этого цикла выполняется текущая и завершается предыдущая стандартная АЛУ-операция.

    • M2 отвечает за выборку байта смещения для индексной адресации. В общем случае длится 3 такта. Он используется как в методах адресации с индексными регистрами, так и в командах относительного перехода (JR, DJNZ). Если цикл используется в команде условного перехода, и условие не соблюдено, то является последним циклом команды.
      В этом цикле после чтения байта смещения из памяти происходит его загрузка в ALUB, а младший байт адреса (PC.L или IDX.L) загружается в ALUA. После чего складывается младшая часть адреса и байт индекса. Далее устанавливается знак для следующей АЛУ-операции (плюс или минус) в зависимости от старшего бита байта смещения, если это команда относительного перехода.

    • M3 отвечает за продолжение вычисления исполнительного адреса для индексной адресации. Обычно длится 5 тактов.
      Так как этот цикл используется для вычисления исполнительного адреса, в нем блокируется доступ к внешней памяти по адресу, автоматически загруженному в PCR в предыущей команде.
      В этом цикле полученный в АЛУ младший байта адреса сохраняется PC.L или WZ.L, затем в АЛУ загружается старшая часть адреса, и константа 0, для сложения со старшей частью адреса, и снова складывается и записывается в PC.H или WZ.H.
      В результате, если это команда перехода, в регистре PC получаем новый адрес. Если же это команда индексной адресации, то в регистре WZ получаем исполнительный адрес.

    • Циклы M2 и M3 могут быть пропущены, если команда не использует индексную адресацию.

    • M4 отвечает за байтовый доступ к памяти в стандартных командах типа ADD A,(HL) или ADD A,(IX+nn). Обычно длится 3 такта.

    • M5 пока не изучался, но, похоже используется в 16-битных командах, таких как ADD HL,dd, PUSH/POP HL, LD (nn),dd и т.д.


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

    p.s.: Небольшая ремарка. Некоторые действия могут инициироваться в одном M-цикле, а завершаться в следующем, т.к. чуть ли не большая часть активности процессора всегда задержана на пол-такта или такт относительно такта, инициировавшего ее.

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

    creator(09.10.2024), org(09.10.2024)

  5. #4

    Регистрация
    20.06.2014
    Адрес
    г. Чехов
    Сообщений
    56
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    61
    Поблагодарили
    30 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    M-цикл это "машинный цикл", из официального программинг мануала от создателей: https://www.zilog.com/docs/z80/um0080.pdf

  6. #5

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

    По умолчанию

    Цитата Сообщение от org Посмотреть сообщение
    M-цикл это "машинный цикл", из официального программинг мануала от создателей:
    И так так тоже подходит по смыслу)

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

    Цитата Сообщение от org Посмотреть сообщение
    Про полярность сигнала это старая боль, нужно просто глаз набить на это.
    Как не набивай глаз, невнимательность никто не отменял. Особенно при работе с большими схемами. У меня это почти единственный тип ошибок при переводе транзисторной схемы в логическую. И да, 99% таких ошибок, если не 99.99% приведут к неработоспособности того или иного участка схемы и будут замечены.

  7. #6

    Регистрация
    20.06.2014
    Адрес
    г. Чехов
    Сообщений
    56
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    61
    Поблагодарили
    30 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Как не набивай глаз, невнимательность никто не отменял. Особенно при работе с большими схемами. У меня это почти единственный тип ошибок при переводе транзисторной схемы в логическую. И да, 99% таких ошибок, если не 99.99% приведут к неработоспособности того или иного участка схемы и будут замечены.
    Не очень понял как можно сломать схему, если перепутать название (полярность) сигнала, ну да ладно

  8. #7

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

    По умолчанию

    Цитата Сообщение от org Посмотреть сообщение
    Не очень понял как можно сломать схему, если перепутать название (полярность) сигнала, ну да ладно
    В смысле как? Если я вместо, допустим, 2ИЛИ-НЕ впилю 2ИЛИ, то схема сломается.

  9. #8

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

    По умолчанию Великая загадка команды BIT n,(HL) раскрыта!

    И наконец, особенности установки 5 и 3 бит регистра флагов после выполнения команды BIT r,(HL).

    В команде BIT n,(HL) в отличие от команд типа ALU (HL) цикл чтения аргумента из памяти (M4) длится 4, а не 3 такта!
    Почему такое происходит, при том что команды абсолютно однотипные?
    Дело в том, что все команды с префиксом CB активизируют сигнал GRP_OFFSET, как и команды работающие только с индексной адресацией. Очевидно, это сделано для универсализации работы набора CB с индексной адресацией. А быть может просто вследствие ошибки. Если бы не эта совершенно ненужная особенность, команда BIT n,(HL) выполнялась бы не 12, а 11 тактов.
    Сигнал GRP_OFFSET в основном влияет на циклы M2 и M3, отвечающие за индексную адресацию. Но при этом он еще и влияет на длительность цикла M4, продлевая его с 3 до 4 тактов. И этот 4-й такт совершенно для нашей команды бесполезен!
    Но самое главное, что в такте M4.T4.2 всегда активно чтение старшего байта выбранного регистра на шину HBUS. А какой же регистр у нас выбран? А выбран WZ, т.к. когда не выбран никакой регистр, всегда выбирается WZ. В результате на обьединенной шине HBUS/LBUS оказывается не содержимое рабочего регистра r, как в команде BIT n,r, а старший байт регистра WZ, который используется другими командами для вычисления исполнительного адреса при индексной адресации.
    Возникает вопрос, ведь в последнем такте любой команды должен выбираться регистр PC, и это должно блокировать выбор WZ?
    Нет, не блокирует, т.к. выбор регистра PC для чтения кода операции управляется отдельной линией, и не блокирует выбор WZ. Иными словами, в первом такте следующей за BIT n,(HL) команды одновременно читается регистр PC из дополнительного регистрового блока (регистры PC и IR) для выборки кода команды, и читается регистр WZ.H из основного регистрового блока на шину HBUS/LBUS, откуда через несколько тактов и попадает в 5 и 3 биты флагового регистра.

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

    Цитата Сообщение от org Посмотреть сообщение
    А почему должен впиливаться какой-то другой вентиль? Если переименовать провод он по другому работать не будет. Тут судя по всему не в полярности проводов дело, а в том что трансы перегоняются в вентили неправильно. Полярность сигнала тут причём?
    При чем тут название провода. От имени ничего не меняется. Когда я перегоняю трансы в вентили, либо же когда оптимизирую схему, соединяя несколько вентилей в триггер, или меняя полярность какой-то линии, т.к. в оригинале она инверсная, а для лучшего понимания схемы следует линию сделать прямой. Вот тут и может закрасться ошибка. Повторюсь еще раз, я не делаю схему для клонирования ее в ФПГА. Прежде всего я делаю схему, чтобы она была наглядной и понятной, поэтому вследствие этих оптимизаций и может закрасться ошибка перепутанной полярности.

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

    SoftLight(09.10.2024)

  10. #9

    Регистрация
    20.06.2014
    Адрес
    г. Чехов
    Сообщений
    56
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    61
    Поблагодарили
    30 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    При чем тут название провода. От имени ничего не меняется. Когда я перегоняю трансы в вентили, либо же когда оптимизирую схему, соединяя несколько вентилей в триггер, или меняя полярность какой-то линии, т.к. в оригинале она инверсная, а для лучшего понимания схемы следует линию сделать прямой. Вот тут и может закрасться ошибка. Повторюсь еще раз, я не делаю схему для клонирования ее в ФПГА. Прежде всего я делаю схему, чтобы она была наглядной и понятной, поэтому вследствие этих оптимизаций и может закрасться ошибка перепутанной полярности.
    Понял. Мы этот процесс называем "деморганизация". За годы убедились что оно подвержено ОЧЕНЬ большому количеству ошибок и поэтому лично я де-Моргана не проворачиваю. Оставляю как есть.

  11. #10

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

    По умолчанию

    Цитата Сообщение от org Посмотреть сообщение
    За годы убедились что оно подвержено ОЧЕНЬ большому количеству ошибок и поэтому лично я де-Моргана не проворачиваю. Оставляю как есть.
    Ну ведь они же выявятся, когда схема не заработает? И исправятся)

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

    Да, через 'деморганизацию' у меня прошла вся схема вдоль и поперек.

Страница 45 из 66 ПерваяПервая ... 414243444546474849 ... ПоследняяПоследняя

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

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

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

Похожие темы

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

Ваши права

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