Очередная глава из официальной документации Cypress про управление тактированием и сбросом. Как уже упоминалось в первой статье нашего переводного цикла, этот модуль обеспечивает выбор и разрешение тактирования, а также выбор сброса внутри UDB.
Основная функция этого модуля заключается в выборе тактовых сигналов из доступных глобальных тактовых сигналов или тактового сигнала шины для каждой PLD, Datapath и модуля управления и статуса. Модуль также поддерживает динамические и программные сбросы блоков UDB. Как показано на рисунке 21-38, имеется четыре блока управления тактированием и один блок управления сбросом. Четыре входа (RC_IN[3:0]) доступны для проброса из глобальной трассировочной матрицы. Каждый блок управления тактированием может выбрать источник для входа разрешения тактирования из этих трассировочных входов, а также имеется мультиплексор, позволяющий выбрать один из трассировочных входов для использования в качестве внешнего источника тактового сигнала. Как видно на рисунке, выбор внешнего источника тактирования может быть синхронизирован. Для каждого компонента UDB существует 10 тактовых сигналов на выбор: 8 глобальных цифровых тактовых сигналов, тактовый сигнал шины и выбранный внешний тактовый сигнал (ext clk). Любой из трассированных входных сигналов (rc_in) может быть использован либо в качестве активатора, чувствительного к уровню, либо в качестве активатора, чувствительного к перепаду. Функция сброса этого блока обеспечивает трассированный сброс блоков PLD и счетчика SC, а также возможность программного сброса каждого блока для поддержки реконфигурации.
Тактовый сигнал шины, подаваемый на вход модуля управления тактированием и сбросом отличается от тактового сигнала системной шины. Этот сигнал называется «bus_clk_app» и запирается так же, как прочие цифровые тактовые сигналы. Тактовый же сигнал системной шины используется только для операций ввода-вывода и автоматически отпирается для каждого доступа. Генератор тактовых сигналов Datapath вырабатывает три тактовых сигнала: один для Datapath и по одному сигналу для каждого FIFO.
Рисунок 21-38. Модуль управления тактированием и сбросом.
Рисунок 21-39 показывает пример схемы выбора и разрешения тактирования. В каждом UDB есть четыре таких схемы: по одной на каждый блок PLD, одна схема для Datapath и одна для блока управления и статуса. Основными компонентами этой схемы являются мультиплексор выбора глобального тактирования, инвертор тактирования, мультиплексор выбора разрешающего сигнала тактирования, инвертор разрешающего сигнала тактирования и логика обнаружения перепада.
Рисунок 21-39. Управление выбором/активацией тактирования.
Существует восемь глобальных цифровых тактовых сигналов, проброшенных на все UDB. Любой из них может быть выбран. Глобальные цифровые тактовые сигналы являются выходами делителей частот, выбранных пользователем. См. «Система тактирования» на стр. 109 оригинала. Другим вариантом выбора является тактовый сигнал шины, который имеет наивысшую частоту в системе. Этот сигнал называется «bus_clk_app» и трассируется отдельно от тактового сигнала системной шины. Кроме того, для поддержки функций с прямым тактовым сигналом (например, SPI) внешняя трассировочная линия может быть выбрана в качестве входного тактового сигнала. Поскольку функции приложения привязаны к произвольным границам внутри UDB, выбор индивидуального тактового сигнала для каждого подкомпонента UDB способствует точной гранулярности при программировании.
Выбранный тактовый сигнал может быть инвертирован. Это ограничит максимальную частоту работы из-за существования участков с тактом в половину периода. Одновременные запись шины и внутренние записи (например, программная запись нового значения счетчика во время его работы) не поддерживаются, когда внутреннее тактирование инвертировано и имеет такую же частоту, как и тактирование шины. Это ограничение затрагивает A0, A1, D0, D1, а также регистр управления в режиме счетчика.
Разрешающий сигнал тактирования может быть проброшен на любой синхронный сигнал и выбран на любом из четырех входов трассировочной матрицы, доступных этому блоку.
Сигнал разрешения тактирования может быть инвертирован. Благодаря этому, данный сигнал может вырабатываться в любой полярности.
По умолчанию режим работы разрешения тактирования имеет значение OFF. После настройки работы целевого блока программное обеспечение может установить один из описанных ниже режимов работы при помощи регистра CFGxEN MODE[1:0], показанного на рисунке 21-39.
Режимы разрешения тактирования |
Описание |
OFF | Тактирование отключено. |
ON | Тактирование включено. Выбранное глобальное тактирование работает свободно. |
Positive Edge | Пропускаемый тактовый импульс вырабатывается по каждому положительному перепаду на входе разрешения. Максимально допустимая частота на входе разрешения равна половине частоты тактового сигнала. |
Level | Тактовые импульсы генерируются, пока вход разрешения тактирования имеет высокий уровень (‘1’). |
Существует два распространенных сценария использования разрешения тактирования.
Программное разрешение (Firmware Enable): предполагается, что большинство функций требуют программного разрешения тактирования для запуска и остановки функции. Так как граница функции, привязанной к массиву UDB, условна, функция может охватывать несколько UDB и/или частей UDB. Следовательно, необходим способ включения каждой функции атомарно. Обычно это реализовано при помощи бита в регистре управления, проброшенного на один или несколько входов разрешения тактирования. Этот сценарий также поддерживает случай, когда приложениям необходимо одновременно запустить несколько несвязанных блоков.
Эмуляция локальной выработки тактового сигнала (Emulated Local Clock Generation): эта функция позволяет UDB генерировать локальные тактовые сигналы и распределять их на другие UDB в массиве при помощи шаблона реализации активации синхронного тактирования, вместо того, чтобы напрямую тактировать каждый UDB отдельно. Использование функции Positive Edge для входа разрешения снимает ограничения на скважность сигнала разрешения.
Блоки FIFO Datapath имеют особенности тактирования. По умолчанию, тактирование FIFO имеет такую же конфигурацию, как и тактирование Datapath. Однако блоки FIFO имеют особые биты управления, которые меняют конфигурацию тактирования:
Существует два режима управления сбросом: унаследованный и стандартный. Режим задается при помощи бита ALT RES в каждом регистре конфигурации UDB CFG31. По умолчанию бит имеет значение 0 (унаследованный режим); рекомендуется присвоить ему значение 1 (стандартный режим). Стандартный режим имеет большую степень детализации – отдельные блоки внутри UDB могут использовать трассируемые сбросы. Для информации об унаследованном режиме свяжитесь с Cypress.
Рисунок 21-40. Структура сброса PLD.
Рисунок 21-41 показывает систему сброса Datapath. Трассированный сброс применяется ко всем регистрам и состояниям Datapath кроме регистров данных D0 и D1. Регистры данных являются сохраняющимися регистрами. Содержимое FIFO не определено после сброса, так как располагается в ОЗУ.
Рисунок 21-42. Управление сбросом управления и статуса.
Элемент состояния | Расшифровка элемента состояния | Состояние при включении |
CFG 0 – 31 | Конфигурационные защелки | 0 |
Ax, Dx, CTL, ACTL, MSK | Аккумуляторы, регистры данных, вспомогательный регистр управления, регистр наложения маски | 0 |
ST, MC | Регистры статуса и макроячейки (только для чтения) | 0 |
DP CFG RAM & Fx (FIFO) | ОЗУ конфигурации Datapath и ОЗУ FIFO | Неизвестно |
PLD RAM | ОЗУ конфигурации PLD | Неизвестно |
При включении состояние входов и выходов трассировки имеет следующие особенности:
Такая инициализация позволяет избежать конфликтующих состояний при трассировке, и начальное конфигурирование происходит в последовательности, при которой порядок не играет роли.
Окончание следует. Мы готовим последний перевод оставшегося раздела фирменной документации Cypress об UDB, а именно – UDB Addressing/Адресация UDB.