User Tag List

Показано с 1 по 10 из 803

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

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

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

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

    По умолчанию

    Переделал блок управления памятью в полностью синхронный вариант.

    Пришлось пол-дня повозиться, крепкий орешек.
    Все дело в том, что это самый кривосинхронный блок в процессоре. Одни циклы длятся 2, другие 3, третьи 4 ПОЛУ-такта, не такта. Да и еще в зависимости от разных условий. Самым оптимальным оказалось добавить на выходные линии простые обрезалки сигналов в нужные фазы. Тут пол-такта отрезаем, сям пол-такта. Тут режем, тут не режем, а тут рыбу заворачивали. Зато вынеся нестандартности за скобки, внутри схемы остался качественный синхронный дизайн.

    Изначально попробовал - как Vivado отнесется к RS-триггерам, у которых что-то устанавливается по спаду CLK, что-то по фронту? Оказалось, что никак вообще. И это к лучшему.

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

    [свернуть]


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

    Да, кроме того, в оригинальной схеме каждый из трех триггеров мог встать 'р@ком', если в неподходящие T-циклы приходил ресет. Особенно короткий ресет. Но повторять это нет смысла, потому что все равно плавающее кратковременное состояние не повторишь, а при ресете длинной >1 такта и так все нормализуется. Даже в оптимизированной текущей схеме еще не убран кофликт R и S при неподходящем времени ресета.

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

    Интересно, как себя ведет Xilinx, если на R и S поданы 1?

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

  3. #2

    Регистрация
    12.12.2007
    Адрес
    Жлобин
    Сообщений
    47
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    79
    Поблагодарили
    40 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Интересно, как себя ведет Xilinx, если на R и S поданы 1?
    Если посмотреть технологическую карту после синтеза, то можно заметить, что любой из триггеров T, JK, SR, - получается из D триггера. В данном случае будет кольцо из DFF + OR + AND. И тут главное при описании на верилоге правильно расставить приоритеты для R и S. И в таком случае один из входов будет проигнорирован, ибо у него меньший приоритет (т.е. он дальше от ДФФ). А вот при использовании прозрачной D защелки, она собирается без участия ресурса DFF на одной комбинаторике и по сути своей асинхронна, на что получим сразу предупреждение от TimeQuest-a. По крайней мере в Квартусе так, подозреваю, что для Xilinx-a все аналогично.

  4. #3

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

    По умолчанию

    Цитата Сообщение от and1981 Посмотреть сообщение
    И тут главное при описании на верилоге правильно расставить приоритеты для R и S.
    Как проставить приоритет?

    Прозрачные защелки я не использую.

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

    Цитата Сообщение от and1981 Посмотреть сообщение
    В данном случае будет кольцо из DFF + OR + AND.
    Как выглядит это кольцо?

  5. #4

    Регистрация
    12.12.2007
    Адрес
    Жлобин
    Сообщений
    47
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    79
    Поблагодарили
    40 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Как проставить приоритет?

    Прозрачные защелки я не использую.

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


    Как выглядит это кольцо?


    Касаемо триггеров и приоритетов HardWareMan достаточно хорошо описал это здесь: https://zx-pk.ru/threads/27091-potak...l=1#post890718

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

    Titus(20.10.2024)

  6. #5

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

    По умолчанию

    Цитата Сообщение от and1981 Посмотреть сообщение
    При таком построении, R имеет высший приоритет.

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

    Цитата Сообщение от and1981 Посмотреть сообщение
    Касаемо триггеров и приоритетов HardWareMan достаточно хорошо описал это здесь:
    Правда, я так и не понял, что будет в ПЛИС, если R и S подать одновременно)

  7. #6

    Регистрация
    12.12.2007
    Адрес
    Жлобин
    Сообщений
    47
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    79
    Поблагодарили
    40 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да, можно тусовать OR и AND местами, и приоритет будет у того, кто ближе к DFF.

    При одновременной подаче единиц на входы S и R, будет запомнено состояние более приоритетного входа.

    Последний раз редактировалось and1981; 20.10.2024 в 14:34.

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

    Titus(20.10.2024)

  8. #7

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

    По умолчанию

    Цитата Сообщение от and1981 Посмотреть сообщение
    При одновременной подаче единиц на входы S и R, будет запомнено состояние более приоритетного входа.
    Какой будет более приоритетный вход, если на Verilog'е я напишу так:

    Код:
    begin
    always @ (posedge clk)
        if (set)
            Q = 1;
        else if (reset)
            Q = 0;
    end

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

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

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

Похожие темы

  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

Ваши права

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