User Tag List

Страница 19 из 81 ПерваяПервая ... 151617181920212223 ... ПоследняяПоследняя
Показано с 181 по 190 из 803

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

  1. #181

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    На таких частотах Z80 гонять особо-то не планирую.
    я такое поведение наблюдал и на 2 МГц. На меньших частотах вероятность поймать сбой ниже, на высоких частотах обычно сбой сразу видно, а на низких он может вылезти со временем. Это делает эту проблему еще более неприятной, т.к. прячет её до поры до времени.

    Это самая неприятная вещь по сравнению с обычным программированием в котором состояние всегда детерминировано. На FPGA при использовании асинхронных конструкций начинаются приколы не токько с race conditions но и с метастабильностью.

    Цитата Сообщение от AlexG Посмотреть сообщение
    ZMAX местами не прав от слова совсем...
    клок можно делать из чего угодно, но требуется выполнить ряд условий:
    Возможно на Xilinx это и так, но на Altera/Cyclone (например IV или 10) это точно не так. В них клок можно либо завести через специальный GPIO поддерживающий CLK (а таких GPIO немного), либо сгенерировав на PLL. Других вариантов сгенерировать клок на Altera/Cyclone нет, никакие хаки не не помогут - в чипе физически нет возможности пробросить обычный сигнал на шину клоков. А блоки которые имеют выход на шину клоков (типа PLL) невозможно затактировать от обычного сигнала, они тактируются только от клоков. При синтезе будет просто ошибка, даже если с синтаксисом все будет в порядке.

    Цитата Сообщение от AlexG Посмотреть сообщение
    - временами требуется явно указать что этот сигнал надо "разводить правильно"
    ПС: отсутствие оных и других constrains - это основная ошибка "начинающих/любителей", а потом порождаются вот такие легенды
    я знаю про constraints и в описываемом случае они были подробно заданы. И как-раз меняя их я и игрался пытаясь обойти эти баги. Но в итоге пришел к тому, что использование подобных асинхронных конструкций приводит только к практически неустраняемым плавающим сбоям и от их использования лучше просто отказаться. Самое неприятное, что использование подобных конструкций может создать первое впечатление что всё работает, но проблемы обязательно вылезут позже...

    Вместо того, чтобы вешать логику на разные фронты клока, я думаю более надежный и простой вариант - сгенерировать в два раза более высокочастотный клок на PLL и тактировать всё по одному фронту от одного клока.

    Цитата Сообщение от AlexG Посмотреть сообщение
    ПСПС: использование PLL приводит к не явному созданию "нужных ограничений" и посему совет использовать PLL приводит к желаемому результату.
    Нет, что касается Altera/Inter Cyclone IV и 10, там физическое ограничение - невозможно пробросить обычный сигнал на шину клоков. Физически нет таких соединений на кристалле. Отсюда и требование использовать либо клоковый пин либо PLL. Можно нагуглить статьи и app notes про это и именно там сказано что это невозможно физически. На форумах можно найти хаки как это якобы можно обойти, но они позволяют только обойти ошибки начального анализа. При синтезе всеравно вылезет ошибка.

    Можете попробовать поиграться в Quartus - завести обычный сигнал в качестве клока на PLL. Гарантирую, для Cyclone IV и 10 у Вас это точно не получится, у них физически невозможно завести обычный сигнал на клоковый вход.

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Вот не знаю. Я не вижу причин появления дрожания (джиттера) на выходе счетчика, если исходный тактовый сигнал не имел такого дрожания.
    Клоковые сигналы и обычные разводятся физически на разных шинах и у обычных сигналов джиттер больше из-за особенностей FPGA. Кроме того невозможно обеспечить точные задержки для сброса и установки обычного сигнала, поэтому на выходе счетчика не будет 50% duty cycle. Поэтому если Вы используете оба фронта, то у Вас уже возникает проблема, т.к. длительность одного из полупериодов будет меньше и соответственно выше требование к максимальной частоте схемы которая тактируется одним из фронтов...

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Более того, даже делитель на 2 уже гарантирует 50% скважность, даже если исходный тактовый сигнал имел иную, или даже переменную, скважность. Опять же, при условии, что там не было дрожания нарастающего фронта.
    к сожалению не гарантирует. Более того, предсказать какой получится скважность нереально - это будет зависеть от разводки, поэтому малейшее изменение в коде может привести к изменению скважности и то что до этого работало перестаент работать и наоборот...

    Скважность точно задать можно только на PLL. Более того, на PLL можно еще и точную задержку фазы указать.
    Последний раз редактировалось ZXMAK; 01.09.2024 в 15:54.
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

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

  3. #182

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

    По умолчанию

    На всякий случай кидаю сюда текущую версию потранзисторной схемы Z80. Она также, как и логическая, причесана частично, т.к. причесываются они одновременно. Но это очень близко к финальной версии. Скажем, на 90%. Схема полностью соответствует оригиналу NMOS Z80 без каких-либо изменений. Все причесывание заключается лишь в группировке блоков в понятном виде и подписывании линий.

    NMOS Z80 - Transistor sketch rev 2.25.pdf

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

    AlexG(01.09.2024), andrews(18.10.2024)

  4. #183

    Регистрация
    27.11.2013
    Адрес
    г. Санкт-Петербург
    Сообщений
    974
    Спасибо Благодарностей отдано 
    51
    Спасибо Благодарностей получено 
    197
    Поблагодарили
    164 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я устал "бороться с ветрянными мельницами".
    Titus - будут практические вопросы - спрашивайте (если надумаете связаться с плисами. Xilinx - максимальный ответ. Altera - по среднему отвечу (я у коллег консультируюсь)).
    Не надумаете - то выложите схему, где работает текстовый поиск, а функциональные блоки обведены и подписаны + комментарий как работает тот или иной логический компонент (его логика поведения)

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

    Titus(01.09.2024)

  5. #184

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

    По умолчанию

    Цитата Сообщение от AlexG Посмотреть сообщение
    Я устал "бороться с ветрянными мельницами".
    Много тут было полезной информации для меня по ПЛИСам, так что это не борьба, а интересная дискуссия)
    Да, я сам ориентируюсь, если что, под Xilinx по советам разных людей.

  6. #185

    Регистрация
    27.11.2013
    Адрес
    г. Санкт-Петербург
    Сообщений
    974
    Спасибо Благодарностей отдано 
    51
    Спасибо Благодарностей получено 
    197
    Поблагодарили
    164 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В догонку... много интересного
    https://www.chipverify.com/

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

    Titus(02.09.2024)

  7. #186

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

    По умолчанию

    Тадам! Выявил уже одну ошибку в логической схеме) И это неправильная полярность сигнала GRP_BRANCH. Продолжил рисовать теоретические диаграммы работы, и PC никак не загружается. Так и обнаружил ошибку. Не та полярность - это вообще самая ходовая ошибка при переписывании из транзисторной схемы в логическую. В транзисторной схеме, разумеется, этой ошибки нет. В ней накосячить можно только забыв нарисовать какой-то транзистор. Но полярность перепутать там нереально.
    Кстати, ошибка полярности чаще всего не такая опасная, т.к. вылезает сразу же при практической или теоретической попытки моделировать схему.

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

    Barmaley_m(04.09.2024)

  8. #187

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

    По умолчанию Стандартный цикл выборки однобайтовой 4-х тактовой команды

    Стандартный цикл выборки однобайтовой 4-х тактовой команды (без торможения памяти по WAIT):

    Скрытый текст

    [свернуть]


    Замечу, что даже основные циклы не совсем совпадают с фирменной документацией по Z80. А именно - циклы T1-T4 смещены на пол-такта:

    Скрытый текст

    [свернуть]


    Обозначения:

    Если в ноере такта присутствует точка (T1.1 или T1.2), это означает, что имеется в виду 1-й или 2-й полутакт.
    Номер полутакта может быть больше 2 вследствие прохождения сигналом промежуточных триггеров. Например, T1.3 обозначает третий полутакт от начала такта T1. Не смотря на то, что по времени он может совпадать с T2.1, правильнее обозначать его именно T1.3, т.к. он инициирован тактом T1.

    • В первом цикле любой команды в такте Т1.1 активны сигналы READ_PCR и SEL_PC, по которым регистр PC читается из регистрового файла и записывается в регистр PCR.

    • В такте T1.2 регистр PCR записывается в регистр адреса REG_ADR, содержимое которого выставляется на шину адреса AB0..15.
      В этом же такте инкрементированное значение PCR записывается в регистр PCR2.

    • По переднему фронту такта T1.3 (T2.1) устанавливаются сигналы MREQ и RD, выдавая внешней схеме запрос чтения памяти.
      Также в такте T1.3 (T2.1) происходит запись регистра PCR2 обратно в регистр PC.

    • По переднему фронту такта T2.2 устанавливается сигнал DP_DL, по которому данные с DB0..7 через шину DLATCH0..7 записываются в регистр REG_DATA.

    • По переднему фронту такта Т2.3 (Т3.1) устанавливается сигнал LOAD_IR, по которому данные с шины DBUS0.7 записываются в регистр команды REG_COMMAND. При этом в течение такта T2.3 (T3.1) на шине DBUS0..7 удерживается ноль.
      Также в этом такте активны сигналы READ_PCR и SEL_IR, по которым регистр IR читается из регистрового файла и записывается в регистр PCR.

    • По переднему фронту такта Т3.2 снимается сигнал DP_DL, прекращая запись внешних данных в регистр REG_DATA.
      В такте Т3.2 на шине DBUS0..7 появляется значение регистра REG_DATA и остается там до следующего такта T2.2.
      Так же в этом такте данные с шины DBUS0..7 продолжают записываться в регистр REG_COMMAND.
      Фактически фронт T3.2 - это момент защелкивания данных с шины DB0..7 в регистре REG_COMMAND.
      Таким образом, с момента выставления сигнала RD и до момента защелкивания данных в REG_COMMAND отводится чуть менее 1.5 тактов.
      В этом же такте регистр PCR записывается в регистр адреса REG_ADR, содержимое которого выставляется на шину адреса AB0..15.
      В этом же такте инкрементированное значение PCR (инкрементируются младшие 7 бит) записывается в регистр PCR2.
      В этом же такте сбрасывается сигнал MREQ.

    • По переднему фронту такта T3.3 (T4.1) сбрасывается сигнал LOAD_IR, прекращая запись регистра REG_DATA в REG_COMMAND.
      В этом же такте происходит запись регистра PCR2 обратно в регистр IR.
      В этом же такте устанавливается сигнал MREQ,

    • По переднему фронту такта T4.3 (T5.1) сбрасывается сигнал MREQ.

      Таким образом, длительность цикла чтения - 1.5 такта (и более, если активен WAIT), длительность цикла регенерации памяти - 1 такт.

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

    Barmaley_m(04.09.2024), Eltaron(05.09.2024), ZXMAK(04.09.2024)

  9. #188

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

    По умолчанию

    Похоже, подобные разборы не заходят) Буду иметь в виду)

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

    AlexCrush(12.10.2024)

  10. #189

    Регистрация
    27.11.2013
    Адрес
    г. Санкт-Петербург
    Сообщений
    974
    Спасибо Благодарностей отдано 
    51
    Спасибо Благодарностей получено 
    197
    Поблагодарили
    164 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Они полезны для понимания логики работы. но фанатов этого знания бесконечно мало...

  11. #190

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

    По умолчанию

    Цитата Сообщение от AlexG Посмотреть сообщение
    Они полезны для понимания логики работы. но фанатов этого знания бесконечно мало...
    Да, пожалуй, это интересно единицам)
    Основному пользователю нужен или готовый эмулятор/симулятор, или хотя бы модель на верилоге)
    Или интересные споры о методах разработки)

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

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

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

Эту тему просматривают: 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

Ваши права

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