User Tag List

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

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

Древовидный режим

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

    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,089
    Спасибо Благодарностей отдано 
    281
    Спасибо Благодарностей получено 
    70
    Поблагодарили
    49 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Если же качество исходного тактового сигнала (в плане дрожания и скважности) вызывает сомнения - тогда да, тогда ФАПЧ (PLL) может в некоторой степени "очистить" тактовую частоту. Но у всего есть пределы. Если исходный сигнал совсем плохого качества - то не поможет и ФАПЧ.
    Цитата Сообщение от ZXMAK Посмотреть сообщение
    Проявляются такие проблемы с клоком неприятно - всё может прекрасно работать до поры до времени, но в какой-то момент при внесении малейшего изменения (вплоть до изменения значения кода в табличке для FSM) приводящего к переразводке схемы, схема начинает сбоить.
    Тут подписываюсь. Поскольку качество исходного тактового сигнала зачастую достоверно неизвестно - то инструменты синтеза не позволяют учесть все возможные отклонения. Также точность моделирования инструментов синтеза не 100%. Поэтому иногда появляются плавающие сбои даже в таких конфигурациях, синтез которых прошел без ошибок Timing Constraints.
    Цитата Сообщение от ZXMAK Посмотреть сообщение
    В FPGA есть еще проблема с тем, что если клок не сгенерирован на PLL блоке, то такой клок разводится как обычные сигналы, а для них в FPGA не предусмотрены меры по минимизации задержек. Clock сигналы имеют имеют отдельную шину, которая позволяет доставить клок в любую часть кристалла с минимальной задержкой или даже задать нужную задержку.
    На Xilinx таких проблем нет. Если какой-либо внешний или внутренний сигнал подается на тактовый вход триггера - то синтезатор автоматически пропускает его через глобальный тактовый буфер (BUFG), который рассчитан на большое количество нагрузок (много тактовых входов триггеров) и разводку с минимальной задержкой по всему кристаллу. Еще там есть локальные тактовые буфера (BUFH и т.д.), которые распределяют сигнал от BUFG на триггеры в локальной области чипа (напр. северозападный квадрант), но включение этих буферов полностью автоматизировано софтом для синтеза, в это лучше не вмешиваться.

    Количество BUFG на кристалле очень ограничено. В моем чипе Spartan-6 их было 16 - это при десятках тысяч общего кол-ва триггеров.
    Цитата Сообщение от ZXMAK Посмотреть сообщение
    Обычный сигнал превратить в клок невозможно, по крайней мере на Altera/Intel.
    На Xilinx без проблем. Но на это расходуется ограниченный ресурс BUFG.
    Цитата Сообщение от ZXMAK Посмотреть сообщение
    например таким клоком невозможно тактировать PLL блок. Это связано с тем, что клоки и обычные сигналы разводятся на разных шинах и у них нет прямой связи между собой. Ну и масса проблем с нестабильностью схемы будет вылазить.
    Для сигнала на входе ФАПЧ важно обеспечить, чтобы этот сигнал был периодическим, с одним импульсом за период. Не допускать выпадений тактовых импульсов и тому подобной грязи. В противном случае ФАПЧ не сможет синхронизироваться с таким сигналом и достичь стабильной работы. Некоторое дрожание входного сигнала ФАПЧ сглаживает, но есть предел.

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

    Цитата Сообщение от Titus Посмотреть сообщение
    Кстати, где это описывается и как?
    Для Xilinx - UG612 "Xilinx Timing Constraints User Guide"
    Пробиться сквозь дебри этого документа непросто. Даю небольшой лайфхак.
    Достаточно только задать в Timing Constraints параметры входного тактового сигнала. Синтезатор прослеживает распространение тактовой частоты по всей схеме, в том числе случаи умножения и деления этой частоты на блоках ФАПЧ (PLL) и DCM). Также синтезатор контролирует время прохождения обычных (не тактовых) сигналов через комбинационную логику и разводку связей и автоматически обеспечивает, чтобы это время не превышало периода тактовой частоты для всех сигналов. Поэтому, особенно для простых схем, лишь указание параметров входной тактовой частоты достаточно.

    Дополнительные Timing Constraints нужно указывать только в следующих случаях:
    1) Обеспечение гарантий на внешних интерфейсах ввода-вывода;
    2) Прохождение сигналов между разными тактовыми зонами (между системами триггеров с разной тактовой частотой);
    3) Деление тактовой частоты "вручную" с помощью счетчиков - тогда нужно указать, какое соотношение с входной тактовой частотой имеет выходная.
    - - - Добавлено - - -

    Цитата Сообщение от Titus Посмотреть сообщение
    Плюс, на сколько я понимаю, некоторым линиям (тому же CLK) можно задать параметр, что они должны трассироваться для самого короткого (быстрого) пути прохождения сигнала.
    Не совсем так. Трассировщик схемы по кристаллу FPGA может, конечно, дать наиболее короткие задержки каким-то сигналам. Но всем сигналам сразу самые короткие задержки дать нельзя: ведь они конкурируют друг с другом. Поэтому трассировщик пытается гарантировать максимально допустимое время задержки для всех сигналов. Для одних сигналов, где мало комбинационной логики, он при этом будет использовать менее быструю разводку и расположение, а для других сигналов, где заданную задержку обеспечить трудно - он будет использовать наиболее оптимальные расположения и разводку.

    В конце своей работы (т.е. раскидывания логики по физическим ресурсам FPGA и разводки связей между ними) трассировщик либо сообщает, что он смог обеспечить заданные требования (напр. не более 10нс задержки для всех сигналов), либо не смог. В последнем случае приходится либо оптимизировать схему, либо снижать тактовую частоту.
    Последний раз редактировалось Barmaley_m; 01.09.2024 в 13:54.

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

    Titus(01.09.2024)

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

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

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

Ваши права

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