[i] Блок контроля тактовых частот Checker в МК К1986ВЕ8Т

ID статьи: 61406
Дата последнего изменения: 03.12.2025 17:04:15

В микроконтроллере К1986ВЕ8Т предусмотрены различные механизмы самодиагностики и защиты от сбоев и отказов. Один из них – блок контроля тактовой частоты Checker, который можно настроить программно для контроля тактовой частоты микроконтроллера.

Содержание

1. Общие сведения о блоке контроля тактовых частот
2. Принцип работы блока контроля тактовых частот
3. Алгоритм и особенности настройки блока контроля тактовых частот
Приложение 1. Пример настройки блока Checker

1. Общие сведения о блоке контроля тактовых частот

Блок Checker предназначен для мониторинга отклонения текущей тактовой частоты, подаваемой на блок Checker, от требуемой прогнозируемой частоты, и определения событий сбоев в работе генераторов и блоков PLL, а именно:

Монитор, в зависимости от настроек, может по-разному реагировать на различные события в тактовых частотах:

Блок Checker установлен на выходах (и соответственно может осуществлять контроль) следующих генераторов и частот: FCLK, LSI, LSE, HSE, и все PLL.

Сравнение производится с частотой генератора HSI, который имеет типовое значение 8 МГц (однако, следует понимать, что значение частоты может отличаться от типового, так как, согласно п. «Электрические параметры микросхемы» спецификации, заданы только границы частоты HSI: не менее 6 МГц и не более 10 МГц). В связи с этим данный генератор при работе блока Checker должен быть обязательно включен.

Определение соотношения частот между собой происходит путем сравнения значений счетчиков, считающих на разных частотах. Сравнивая это соотношение с различными пределами, определяется факт событий сбоев. Для обнаружения факта сбоя, в зависимости от реального соотношения частот и заданных пределов их допустимого соотношения, может потребоваться некоторое время. Таким образом, при возникновении сбоя (EVENT) или отказа (ERROR) блоку монитора потребуется некоторое время для реакции на это событие. Для тактовой частоты MAX_CLK также реализован блок монитора частоты, но он не имеет возможности аппаратного переключения на частоту HSI, и позволяет только обнаруживать факты сбоя или отказа.

2. Принцип работы блока контроля тактовых частот

Блок-схема, демонстрирующая работу блока Checker, изображена на рисунке 1. Блок Checker состоит из двух 16-разрядных сдвиговых регистров SHIFT_REG1:0, на вход которых подаются «сравнивающая» частота с генератора HSI, и сравниваемая частота - CLOCK. С помощью функциональных битов PRES_REG3:0 возможно задавать предварительные делители частот, тем самым контролируя подаваемые на сдвиговые регистры сигналы.

Рисунок 1 - Блок-схема контроля тактовых частот

Сдвиговый регистр SHIFT_REG0 работает по фронту сигнала HSI, частота которого предварительно уменьшена с помощью делителя, управляемого PRES_REG2. В качестве сигнала асинхронного сброса выступает частота CLOCK, прошедшая через делитель, управляемый PRES_REG2, и через схему, выделяющую период сигнала. Таким образом, до сигнала сброса регистр SHIFT_REG0 досчитает до определенного значения, и это значение:

Принцип работы регистра SHIFT_REG1 аналогичен тому, что описано выше для SHIFT_REG0, с учетом входных сигналов и значений полей, указанных на рисунке 1.

Регистры SHIFT_REG1:0 могут принимать значения от 0 до 16, в то время как поля BASE_REG3:0 – от 0 до 15, что нужно учитывать в исполняемой программе. Фактически, значение поля MAX_CHK_SHIFT_REGx - это номер самого старшего бита в сдвиговом регистре SHIFT_REGx, в котором зафиксировано значение, отличное от нуля, если считать номера битов от 1. Это сделано для того, чтобы нулевое значение сдвигового регистра соответствовало нулю в поле MAX_CHK_SHIFT_REGх.

Таким образом, при настройке блока необходимо выбрать предделители сигналов HSI и CLOCK такими, чтобы соотношение полученных частот укладывалось в диапазон от 0 до 15 (так как, как это было указано выше, поля BASE_REG3:0 могут принимать максимальное значение 15, и если подбирать соотношение частот до 16, то это может вызывать постоянную генерацию событий превышения частоты). Формулы для расчета коэффициентов K0 и M0 (т.е. расчетных значений для сдвиговых регистров SHIFT_REG0 и SHIFT_REG1 соответственно), изображены на рисунке 2.

Рисунок 2 – Формулы расчета соотношения частот

Различные формулы для условий, когда частоты HSI больше или меньше сравниваемой CLOCK необходимы в связи с тем, что счетчик не считает при активном сигнале сброса сдвиговых регистров RESET, а это длительность логической единицы исходного сигнала, за которую происходит несколько тактов частоты CLOCK. Рисунок 3 демонстрирует отношение длительности полупериода активной единицы сигнала HSI после предделителей к импульсам CLOCK.

Рисунок 3 – Сигналы, поступающие на сдвиговые регистры, в разном масштабе, для двух случаев: FHSI меньше FCLOCK и больше FCLOCK

Реальные частоты HSI и PLL могут незначительно отличаться от расчетных, что необходимо учитывать при настройке блока для полей BASE_REG3:0 и предделителей PRES_REG3:0 для расчета коэффициентов K и M.

При снижении реальной частоты по сравнению с расчетной, коэффициент K (значение сдвигового регистра SHIFT_REG0) увеличивается, а коэффициент M (значение сдвигового регистра SHIFT_REG1) уменьшается, и наоборот – при превышении реальной частоты коэффициент K уменьшается, а M увеличивается. Путем сравнения реальных коэффициентов c значениями полей BASE_REG0:1 для K и BASE_REG3:2 для M, можно вызывать генерацию событий и тем самым осуществлять мониторинг частоты.

Таким образом, коэффициент K (SHIFT_REG0) отвечает за мониторинг снижения частоты, а коэффициент M (SHIFT_REG1) - за мониторинг повышения частоты.

3. Алгоритм и особенности настройки блока контроля тактовых частот

Рассмотрим алгоритм настройки блока Checker на примере PLL0. Аналогичное также справедливо и для остальных частот, на выходах которых установлены блоки Checker.

1. Включение и настройка PLL0 на требуемую частоту.

2. Конфигурация полей PRES_REG3:0 и BASE_REG3:0 таким образом, чтобы коэффициенты K0 и M0 находились в диапазоне от 0 до 15.

3. Разрешение контроля частоты PLL0 (бит EN_CHK регистра PLL0_CLK).

4. Сброс теневых регистров (биты CLR_CHK_SHIFT_REG1:0 регистра PLL_CLK) и флагов EVENT3:0 (биты CLR_CHK_EVENT3:0 регистра PLL_CLK) после задержки, равной по времени не менее двум периодам работы наименьшей из двух частот.

Необходимость сброса теневых регистров и флагов событий после разрешения контроля частоты связана с особенностями работы блока. После разрешения контроля частоты значения внутренних регистров блока Checker не сбрасываются, что может привести к некорректно полученным значениям и ложному срабатыванию флагов событий (что, в свою очередь, повлечет, например, ошибочное переключение на частоту HSI, если подобный функционал программно разрешен).

Кроме того, данный сброс необходимо выполнить с некоторой задержкой, равной не менее двух периодов наименьшей из двух частот, поступающих на блок Checker. Это обусловлено наличием в блоке двух частотных доменов. При этом сигнал разрешения пересинхронизируется в оба частотных домена, а длительность процесса синхронизации – не более двух периодов частоты домена. Нормальная работа блока Сhecker возможна только после того, как сигнал разрешения будет установлен в обоих доменах, поскольку сигналы из одного тактового домена используются в качестве асинхронных сбросов регистров в другом.

5. Опционально – включение дополнительного функционала, такого как, например, аварийное переключение на частоту HSI при выработке событий EVENT3:0 (биты EN_CHK_EVENT3:0 регистра PLL0_CLK), или обработка событий блока Checker с помощью контроллера обработки событий отказов, сбоев и ошибок (FTCNTR).

Приложение 1. Пример настройки блока Checker

В качестве примера настройки блока Checker к статье приложен проект для среды Keil uVision, в котором осуществляется настройка контроля частоты для PLL0.

Контактная информация

Сайт:https://support.milandr.ru
E-mail:support@milandr.ru
Телефон: +7 495 221-13-55