Микроконтроллер

Полезная модель относится к вычислительной технике, а именно к микроконтроллерам для применения в программируемых логических контроллерах (ПЛК), и может применяться для построения АСУ критической инфраструктуры средней сложности в сферах ТЭК, нефтегазовой промышленности и других отраслях.
ПЛК, как правило, являются модульными системами и состоят из процессорного модуля и модулей ввода/вывода внешних сигналов и интерфейсов. Процессорный модуль осуществляет управление всей логикой работы ПЛК и имеет в своем составе процессор или микроконтроллер, а также память. Для улучшения эффективности работы микроконтроллера со внешней памятью может использоваться механизм прямого доступа к памяти (ПДП).
Наиболее близким аналогом микроконтроллера, содержащего в себе механизм ПДП, является LPC435x фирмы NXP (https://www.nxp.com/docs/en/data-sheet/LPC435X_3X_2Х_1X.pdf, раздел 7.18.1 General purpose DMA, где DMA означает direct memory access, он же прямой доступ к памяти в русской терминологии). Этот микроконтроллер позволяет с помощью ПДП передавать данные из памяти в память, из памяти в периферийное устройство и обратно и между периферией.
Общая схема известного микроконтроллера с функцией прямого доступа к памяти показана на Фиг. 1.
Микроконтроллер в общем случае содержит вычислительное микропроцессорное ядро (ЦПУ) 1. По включению питания микроконтроллер получает доступ в накристалльное ПЗУ 2, выполняя заранее прошитую программу стартовой загрузки. По мере инициализации и развертывания выполнения программы микроконтроллерное ядро обращается в периферийные устройства 3 (порты ввода-вывода, последовательный порт UART, интерфейсы SPI, I2C и т.п.) и системные устройства 4 (таймеры, контроллер прерываний, сторожевой таймер и т.п.). Также микроконтроллер содержит в своем составе контроллер памяти 5 со внешней или накристалльной памятью 6. Микропроцессорное ядро 1 может обращаться в память 6 через контроллер памяти 5 как напрямую, так и с помощью механизма прямого доступа к памяти (ПДП) 7. Ядро 1 микроконтроллера настраивает контроллер ПДП, после чего тот может автоматически скопировать область памяти 6 по другим адресам в пределах этой памяти, также, в зависимости от реализации микроконтроллера, возможно взять данные из периферийных устройств 3 и положить в память 6 через контроллер ОЗУ 5 с помощью контроллера ПДП 7, либо наоборот, взять данные из памяти 6 через контроллер ОЗУ 5 с помощью контроллера ПДП 7 и отправить их в периферийные устройства 3.
По включению питания оперативная память заполнена неопределенными данными, зависящими от технологического разброса параметров ячеек памяти при ее изготовлении. Часто необходимо память привести в определенное состояние, например, для работы с кодом коррекции ошибок, для тестирования памяти, при подготовке массива данных для тестирования какого-либо устройства и т.п. Программное, то есть с использованием ядра центрального процессора, заполнение массива данных занимает длительное время, при этом занимая ресурсы ядра центрального процессора и увеличивает время инициализации устройства, а конкретно - программируемого логического контроллера. То есть для заполнения памяти каким-то значением контроллер ПДП 7 непригоден, так как не содержит подобного функционала.
Улучшить ситуацию может введение данной функции, а именно - аппаратной реализации заполнения памяти константой или инкрементирующимися/декрементирующимися значениями. Ее введение позволит ускорить загрузку или тестирование ПЛК.
Технический результат от использования патентуемой полезной модели заключается в повышении функциональности контроллера прямого доступа к памяти и уменьшения времени на инициализацию или заполнение памяти при тестировании. Как следствие, уменьшающееся время запуска всей системы приводит к повышению производительности, уменьшению времени восстановления при возможных сбоях и повышению уровня доверенности.
Указанный технический результат достигается микроконтроллером, включающим вычислительное микропроцессорное ядро (ЦПУ) с шиной данных и шиной управления, запоминающее устройство (ОЗУ) с контроллером ОЗУ и контроллер прямого доступа (ПДП), связанного с контроллером ОЗУ, и снабженным основным мультиплексором, блоком генерации констант размером 8, 16, 32 и 64 бита и инкремента/декремента с шагом размером 8, 16, 32 и 64 бита, содержащим дополнительный мультиплексор, регистр и сумматор, а также блоком конфигурационных регистров, состоящих из конфигурационных регистров начального значения константы, признака начала работы блока генерации констант, признака сложения или вычитания, величины инкремента/декремента, его знака и включения функции значения памяти, при этом основной мультиплексор связан с контроллерами ОЗУ и ПДП и с регистром блока генерации констант размером 8, 16, 32 и 64 бита и инкремента/декремента с шагом размером 8, 16, 32 и 64 бита, который в свою очередь связан с контроллером ПДП и с дополнительным мультиплексором, связанным с сумматором и с конфигурационным регистром начального значения константы, а сумматор также связан с конфигурационным регистром величины инкремента/декремента и конфигурационным регистром его знака, причем, все конфигурационные регистры связаны с шиной данных и шиной управления ЦПУ, а основной мультиплексор связан с регистром включения функции заполнения памяти.
Осуществление полезной модели иллюстрируется Фиг. 2, на котором представлена блок-схема патентуемого микроконтроллера.
Указанный микроконтроллер работает со следующими функциональными компонентами, обозначенными арабскими цифрами на Фиг 2:
5 - контроллер ОЗУ, как внешний, так и встроенный;
6 - оперативное запоминающее устройство (ОЗУ);
7 - контроллер ПДП, формирующий обращения к контроллеру ОЗУ 2 для чтения и записи данных;
8 - основной мультиплексор, переключающий источник данных с полученных из контроллера ОЗУ 2 на блок генерации констант 9;
9 - блок генерации констант размером 8, 16, 32 и 64 бита и инкремента/декремента с шагом размером 8, 16, 32 и 64 бита;
10 - блок конфигурационных регистров блока генерации констант размером 8, 16, 32 и 64 бита и инкремента/декремента значений с шагом размером 8, 16, 32 и 64 бита;
Блок 9 генерации констант размером 8, 16, 32 и 64 бита и инкремента/декремента с шагом размером 8, 16, 32 и 64 бита содержит дополнительный мультиплексор 11, сумматор 12 и регистр 13.
Блок 10 конфигурационных регистров блока генерации констант размером 8, 16, 32 и 64 бита и инкремента/декремента с шагом размером 8, 16, 32 и 64 бита состоит из конфигурационных регистров начального значения константы 14, признака начала работы ПДП 15, величины инкремента/декремента 16, его знака 17 и включения функции заполнения памяти 18.
Основной мультиплексор 8 связан с контроллерами ОЗУ 5 и ПДП 7 и с регистром 13 указанного блока 9 генерации констант и инкремента/декремента. Регистр 13 в свою очередь связан с контроллером ПДП 7 для приема сигнала Load и с дополнительным мультиплексором 11, связанным с сумматором 12 и с конфигурационным регистром начального значения константы 14 для приема сигнала Const, а сумматор 12 также связан с конфигурационным регистром величины инкремента/декремента 16 для приема сигнала inc/dec и конфигурационным регистром его знака 17 для приема сигнала i/d const, причем, все конфигурационные регистры связаны с шиной данных CPU data и шиной управления CPU str. 1-5 ЦПУ 1 (на фиг. 2 не показан), а основной мультиплексор 8 связан с регистром включения функции заполнения памяти 18 для переключения мультиплексора 8 на получение данных для записи в память из блока генерации констант 9.
Новыми функциональными компонентами на Фиг. 2 являются мультиплексор 8, который переключает источник данных, блок генерации констант и инкремента/декремента 9 и блок конфигурационных регистров 10. В блоке конфигурационных регистров 10 содержатся значения начальной константы, а также величины, на которые следует ее инкрементировать/декрементировать, запись этих значений производится с помощью ЦПУ 1 через шину данных CPU data и шину управления CPU str.1-5 ЦПУ 1.
После старта контроллер ПДП 7 обращается в контроллер ОЗУ 5 за данными, которые он должен будет скопировать из одной области памяти 6 в другую. Но вместо чтения из памяти с помощью основного мультиплексора 8 на вход контроллера ПДП 7 подается из блока 9 либо указанная константа, либо значение после инкремента/декремента. Указанный мультиплексор 8 должен переключаться только один раз перед началом работы контроллера ПДП 7. Выбор, какой тип величины будет подан, а также ее значение, осуществляется с помощью записи в регистры 10 со стороны ЦПУ 1. Затем контроллер ПДП 7 снова обращается в контроллер памяти 5 и производит запись константы по адресу, заданному логикой работы контроллера ПДП 7. После записи контроллер ПДП 7 выставляет блоку генерации констант 9 строб (по сигналу str.2 на регистр 17), разрешающий декрементировать/инкрементировать значение константы. Цикл повторяется до тех пор, пока не будет записан нужный объем данных, заданный при конфигурации контроллера ПДП 7.
Блок генерации констант обозначен цифрой 9. Дополнительный мультиплексор 11 выбирает в процессе работы, какое значение будет занесено в регистр: стартовое Const, пришедшее из блока конфигурационных регистров от регистра 14 или пришедшее из сумматора 12. Сигнал Load, разрешающий защелкивание входных данных в регистр 13, приходит из контроллера ПДП 7. Сумматор 12 на входе имеет в качестве первого аргумента выход регистра 13, в качестве второго - значение инкрементирования/декрементирования константы i/d const, пришедшее из блока конфигурационных регистров 10 от регистра 17. Также на сумматор 12 приходит из блока конфигурационных регистров 10 от регистра 16 признак операции inc/dec, отвечающий за то, какая операция будет совершаться над аргументами, сложение или вычитание. Получившаяся константа берется каждый цикл вычисления с выхода регистра 13 и идет на мультиплексор 8.
Блок конфигурационных регистров 10 состоит из набора регистров. Под позицией 14 показан 64-разрядный регистр, в котором хранится начальное значение константы - операция const. Позиция 15 - регистр начала работы блока генерации констант - операция start, управляет загрузкой начального значения для работы блока генерации констант. Позиция 16 - регистр с признаком операции для сумматора, сложения или вычитания - операция inc/dec. Позиция 17 - 64-разрядный регистр с величиной, на которую будет инкрементирована или декрементирована константа в каждый шаг работы контроллера ПДП 7 - операция i/d const. Позиция 18 - конфигурационный одноразрядный регистр, который включает функцию заполнения памяти с помощью блока генерации констант, переключая мультиплексор 8 на получение данных для записи в память из блока генерации констант 9 - операция start.
Запись данных в регистры 14, 15, 16,17 и 18 происходит с шины данных CPU data ЦПУ 1 при выставленном с его стороны соответствующем стробе CPU str. 1-5.