Контроллеры памяти могут защитить память пк. Контроллер динамической памяти Основные состояния и режимы работы устройства

Общие принципы организации ПДП. Режим ПДП является самым скорост­ным способом обмена, который реализуется с помощью специальных аппаратных средств – контроллеров ПДП без использования программного обеспечения. Для осу­ществления режима ПДП контроллер должен выполнить ряд последовательных опера­ций (рис. 3.38):

Циклы ПДП выполняются с последовательно расположенными ячейками па­мяти, поэтому контроллер ПДП должен иметь счетчик адреса ОЗУ. Число циклов ПДП определяется специальным счетчиком. Управление обменом осуществляется специаль­ной логической схемой, формирующей в зависимости от типа обмена пары управляю­щих сигналов:
(циклы чтения),
(циклы записи). Из изложенного следует, что контроллер ПДП по запросу должен взять на себя управление системными шинами и выполнять совмещенные циклы чтения/вывода или записи/ввода до тех пор, пока содержимое счетчика циклов ПДП не будет равно нулю. На рис. 3.38 показана структурная схема МПС с контроллером ПДП.

Контроллер ПДП К1810ВТ37 используется в составе МПС, выполненных на базе МПК К580, К1810, К1821, для реализации прямого доступа к памяти по четырем независимым каналам с положительным или отрицательным приращением адреса со скоростью до 1.6 Мбайт/с. КПДП позволяет реализовать передачу память – память, имея широкие возможности программного управления и каскадирования. Каждый ка­нал может выполнить до 64К циклов ПДП и имеет возможность автоматической ини­циализации, т. е. повторения циклов ПДП с теми же параметрами.

Назначение выводов КПДП (рис. 3.39).

CLK – вход для подключения тактового генератора F CLK =3 МГц.

–выбор кристалла.
разрешает работу КПДП.

RESET – сброс. Сигнал высокого уровня переводит КПДП в исходное состоя­ние, устанавливая в нуль регистры команд, условий, временного хранения, а также ус­танавливая в единицу все разряды маски.

READY – готовность. Входной сигнал, используемый для синхронизации ра­боты КПДП с медленнодействующими устройствами.

HLDA – подтверждение захвата. Входной сигнал, используемый ЦП для сооб­щения КПДП о возможности выполнения циклов ПДП.

DREQ 3 – DREQ 0 – входы запросов на ПДП от внешних устройств. Поляр­ность запросов задается программно. Сигналы на этих входах должны удерживаться до прихода сигнала DACK. В исходном состоянии приоритет запросов естественный, DREQ0 имеет наивысший приоритет.

DB 7 – DB 0 – двунаправленная шина данных с буфером, имеющим z-состояние. В циклах ПДП на эти линии выдается восемь старших разрядов адресного кода, кото­рые необходимо «защелкнуть» на внешнем регистре сигналом ADSTB. В режиме ра­боты с ЦП по этим линиям осуществляется прием/передача данных.

–чтение; как вход используется ЦП для чтения содержимого внутренних регистров КПДП; как выход в режиме ПДП разрешает выдачу данных из внешних уст­ройств.

–запись; как вход используется ЦП для загрузки данных в регистры КПДП; как выход в режиме ПДП разрешает запись данных в регистры внешних уст­ройств.

–окончание процесса. Вход/выход, используемый для указания оконча­ния процесса передачи данных в режиме ПДП. Подавая на этот вход сигнал низкого уровня, можно прекратить передачу данных. После завершения передачи данных по одному из каналов на выходе устанавливается сигнал
. По этому сигналу (внешнему или внутреннему) снимается запрос, и обслуживание прекращается. Если установлен режим автоинициализации, то происходит загрузка рабочих регистров дан­ного канала содержимым базовых регистров, а разряды регистра маски не меняются. В режимах без автоинициализации разряды маски и разряд ТС в слове-состоянии уста­навливаются в соответствии с состоянием обслуженного канала. При передаче память – память вывод
ориентирован на выход, и по окончании счета на этом выходе фор­мируется сигнал. Если вывод
не используется, то он должен быть подключен че­рез резистор к шине питания (+5 В) для предотвращения формирования ложных сигна­лов окончания процесса.

А3 – А0 – адресные входы/выходы. Используются как входные в режиме ра­боты с ЦП и для адресации к каналам и регистрам каналов КПДП. В режиме ПДП яв­ляются выходами, по которым передаются четыре младших разряда адреса ОЗУ.

А7 – А4 – адресные выходы, на которые в режиме ПДП передаются соответст­вующие разряды адреса ОЗУ. В режиме работы с ЦП переходят в z-состояние.

HRQ – выход запроса захвата шин. Запрос к ЦП для перехода в режим ПДП.

DACK 3 – DACK 0 – подтверждение ПДП. Выходные линии, на которые выда­ются сообщения для ВУ о возможности выполнения циклов ПДП. Полярность сигнала задается программно. После сигнала RESET на выходах DACK устанавливается нуль.

AEN – разрешение адреса. AEN=1 устанавливается на время выдачи восьми старших разрядов адреса ОЗУ на линии DB7 – DB0.

ADSTB – строб адреса. Выход, на котором формируется импульс (строб), осу­ществляющий запись старших разрядов (А15 – А8) адреса ОЗУ с шин DB7 – DB0 во внешний буферный регистр.

–чтение из памяти. Выход, используемый в режиме ПДП для управ­ления операцией чтения из памяти.

–запись в память. Выход, используемый в режиме ПДП для управле­ния операцией записи в память.

U cc – шина питания (+5 В).

GND – общий.

Структура КПДП (см. рис. 3.39). Контроллер включает четыре канала, каждый из которых состоит из четырех 16-разрядных регистров.

Регистр текущего адреса CAR хранит текущий адрес ячейки памяти при вы­полнении цикла ПДП. После выполнения цикла ПДП содержимое этого регистра уве­личивается или уменьшается на единицу. Оно может быть прочитано или загружено с помощью двух команд ввода – вывода. Содержимое CAR может быть обновлено по сигналу
, если запрограммирован режим автоинициализации.

Регистр циклов ПДП CWR хранит число слов, предназначенных для передачи. При загрузке этого регистра необходимо помнить, что загружаемая константа должна быть на единицу больше числа слов, необходимых для передачи. При выполнении цик­лов ПДП регистр работает в режиме вычитающего счетчика. Разряд TC регистра со­стояния устанавливается в единицу при переходе из нулевого состояния в состояние FFFFH. Чтение и запись содержимого регистра осуществляется двумя последовательно выполняемыми командами ввода – вывода. Содержимое CWR может быть обновлено при автоинициализации по сигналу
либо в регистре сохраняется значениеFFFFH.

Регистр хранения базового адреса BAR и регистр хранения базового числа циклов ПДП WCR хранят базовые значения адреса и числа циклов ПДП, участвуют в автоинициализации. При начальной загрузке контроллера ПДП исходными парамет­рами происходит одновременная запись в регистры CAR, BAR, CWR и WCR. В про­цессе выполнения циклов ПДП содержимое BAR и WCR не изменяется. Прочитать со­стояние этих регистров невозможно.

Кроме того, каждый канал имеет 6-разрядный регистр режима MR , опреде­ляющий режим его работы. При загрузке этого регистра в младших разрядах D1, D0 указывается код номера канала. Назначение разрядов MR показано на рис. 3.40.

С по­мощью разрядов D2, D3 задается один из типов передачи – чтение, запись, проверка. Эти разряды могут принимать любые значения при D6D7=11. Разряд D4 определяет режим автозагрузки. Если D4=1, то при условии автозагрузки CAR и CWR загружаются параметрами BAR и WCR соответственно. Разряд D5 определяет режим изменения CAR. Если D5=0, после каждого цикла ПДП происходит увеличение содержимого CAR; если D5=1, то происходит уменьшение. Разряды D6, D7 определяют режимы работы канала – передачу по запросу, одиночную передачу, блочную передачу, контроллер в режиме каскадирования.

Контроллер ПДП включает три функциональных блока, которые выполняют функции управления. Буфер шины данных служит для согласования работы контрол­лера с ЦП. Некоторые сигналы, обеспечивающие эти функции, используются для управления передачей данных в циклах ПДП. Блок управления контроллером при пере­даче память – память включает один 8-разрядный регистр TR временного хранения данных, обеспечивающий хранение байта в цикле передачи память – память на время изменения адреса.

Последнее загруженное в этот регистр слово сохраняется там до по­ступления сигнала RESET. Блок управления режимом ПДП вырабатывает необходимые сигналы управления при передаче данных в циклах ПДП. Включает два 8-разрядных и два 4-разрядных регистра.

Регистр команд CR определяет основные параметры работы канала. Загрузка CR осуществляется командой вывода от ЦП, а сброс – по сигналу RESET или команде общего сброса. Назначение разрядов регистра показано на рис. 3.41. Разряды D0, D1 используются для задания режимов работы каналов 0 и 1 в режиме память – память. Разряд D2 инициализирует контроллер для выполнения ПДП, разряд D3 определяет режим выполнения циклов ПДП. Если D3=1, циклы ПДП выполняются с пропуском одного такта при изменении адреса в пределах младшего байта. Разряд D4 устанавли­вает режим приоритетов. Если D4=1, запросу обслуженного канала присваивается наи­низший приоритет – режим вращения приоритета. Разряд D5 устанавливает режим удлиненного цикла записи. Если D5=1, сигналы
вырабатываются с двойной длительностью. РазрядамиD6, D7 программируются уровни запросов на ПДП (DREQ) и сигналов подтверждения ПДП (DACK).

Регистр условий SR . Разряды D3 – D0 этого регистра устанавливаются аппаратно при возникновении сигнала ТС, т. е. после окончания циклов ПДП или по внешнему сигналу
. Эти разряды сбрасываются (устанавливаются в нуль) сигналомRESET и после выполнения команды чтения содержимого этого регистра. Разряды D4 – D7 устанавливаются программно при необходимости обслуживания по соответствую­щему каналу. Назначение разрядов SR показано на рис. 3.42.

Регистр запросов RR . Контроллер может обслуживать запросы на ПДП, фор­мируемые как аппаратно – по входам DREQ, так и программно – по состоянию разря­дов (регистров) запросов RR. Каждый разряд этого регистра соответствует запросу по одному из каналов. Разряды этого регистра не маскируются и устанавливаются раз­дельно программно или сигналами TC и
. Программная установка этих разрядов осуществляется командой, формат которой представлен на рис. 3.43. Сброс всех разря­довRR осуществляется сигналом RESET. Для обработки программного запроса кон­троллер должен быть запрограммирован в режиме блочной передачи.

Регистр маски MASK , с помощью которого могут быть замаскированы сиг­налы DREQ каждого канала. Разряды MASK могут быть установлены специальной ко­мандой одновременно (рис. 3.44) или раздельно (рис. 3.45). Кроме того, если канал не запрограммирован на режим автозагрузки, после появления сигнала
соответст­вующий разряд регистра устанавливается в единицу. Все разрядыMASK устанавлива­ются в нули сигналом RESET либо командой CMR (Clear Mask Register).

Режим работы ПДП. Контроллер ПДП может работать в двух основных ре­жимах: с ЦП и выполнения циклов ПДП. В режиме работы с ЦП контроллер восприни­мается им как внешнее устройство, а после загрузки управляющих слов переходит в пассивное состояние S1. В этом состоянии контроллер находится до тех пор, пока на вход одного из каналов не поступит запрос на ПДП DREQ или этот запрос не будет вы­ставлен программно от ЦП. Обнаружив запрос на ПДП, контроллер переходит в со­стояние S0 и выставляет сигнал запроса на захват системной шины HRQ, ожидая от ЦП сигнала подтверждения захвата HLDA.При получении сигнала HLDA контроллер на­чинает выполнять циклы ПДП.

Различают четыре рабочих состояния при выполнении этих циклов: S1 – S4. Если при выполнении циклов ПДП на вход READY подать нуль, контроллер между тактами S2/S3 и S4 выполняет такты ожидания SW. Состояние SW характеризуется ак­тивностью линий передачи данных. При передаче информации в режиме память – па­мять необходимо выполнить два полных цикла чтения и записи, поэтому для передачи одного слова контроллер выполняет два цикла ПДП по четыре такта в каждом: S11 – S14 для чтения из памяти и S21 – S24 для записи в память.

Временная диаграмма работы контроллера в циклах ПДП представлена на рис. 3.46. В пассивном состоянии происходит опрос входов запросов на ПДП и возможно взаимодействие с ЦП при помощи обычных команд ввода – вывода. Так как взаимодей­ствие с ЦП КПДП чаще осуществляет словом из двух байтов, то для правильного их выбора контроллер использует внутренний триггер, указывающий на операцию с младшим или старшим байтом слова. Этот триггер сбрасывается сигналом RESET или командой общего сброса, указывая на операцию с младшим байтом. После выполнения операции с младшим байтом он устанавливается в единицу, указывая старший байт.

Контроллер может быть запрограммирован для выполнения следующих четы­рех режимов работы ПДП. В режиме одиночной передачи осуществляется передача од­ного байта, при этом содержимое счетчика циклов ПДП (CWR) уменьшается, а содер­жимое адресного регистра (CAR) уменьшается или увеличивается на единицу. Бит окончания передачи (TC) в регистре условий устанавливается в единицу, когда содер­жимое CWR примет значение FFFFH. Вход DREQ должен поддерживаться в активном состоянии до прихода сигнала DACK. Если DREQ остается активным и после передачи одного байта, сигнал HRQ снимается, а новый цикл передачи возможен с приходом очередного сигнала HLDA.

В режиме блочной передачи циклы ПДП осуществляются до момента установ­ления бита TC в регистре условий, т. е. когда счетчик циклов ПДП CWR примет значе­ние FFFFH или передача остановится по внешнему сигналу
. Циклы передачи мо­гут быть возобновлены, если канал был запрограммирован на автоинициализацию.

В режиме передачи по требованию циклы ПДП продолжаются до тех пор, пока не установится разряд TC в регистре условий либо не придет сигнал
, либо не снимется сигналDREQ.

В этом режиме передача может осуществляться, пока внешнее устройство не закончит передачу информации. Автоинициализацию в этом режиме можно осуществлять после окончания передачи сигналом
, внешним или выраба­тываемым по признакуTC.

Режим передачи память–память позволяет осуществлять перемещение бло­ков информации в поле оперативной памяти. Для реализации этого режима использу­ются параметры каналов 0 и 1. Передача инициализируется программно установкой DREQ в канале 0. После прихода сигнала HLDA=1 контроллер за четыре такта считы­вает данные из ячейки памяти с адресом из регистра CAR канала 0 и записывает их в регистр временного хранения TR, а затем за четыре такта записывает эти данные в ячейку памяти с адресом из CAR канала 1. Когда содержимое регистра циклов ПДП CWR примет значение FFFFH, установится разряд TC и передача закончится. Канал 0 может быть запрограммирован на передачу информации без изменения адреса, что по­зволяет заполнить ячейки блока ОЗУ константой.

Типы передачи ПДП. Во всех режимах ПДП возможны три основных типа передачи. Запись данных – осуществляется передача данных от внешнего устройства к ОЗУ. Контроллер в этом случае активизирует сигналы
.Чтение данных – осуществляется передача данных от ОЗУ к внешнему устройству, активизируются сиг­налы
. В случаепроверки или псевдопередачи контроллер выполняет дей­ствия такие же, как в цикле чтения/записи, но сигналы управления не вырабатываются. В этом случае сигнал READY не воспринимается. Кроме того, контроллер может быть запрограммирован для выполнения дополнительных функций.

Автоинициализация осуществляется, если установлен соответствующий разряд в регистре условий, и по сигналу
. При автоинициализации содержимое базовых регистровBAR и WCR загружается в регистры текущих значений CAR и CWR. Раз­ряды маски при этом не меняются. После автоинициализации контроллер готов к ра­боте и возобновляет действие с приходом очередного сигнала DREQ. Для автоинициа­лизации обоих каналов в режиме память–память регистры циклов ПДП CWR должны программироваться идентично.

Контроллер может быть запрограммирован для обслуживания каналов с же­стко заданными приоритетами либо с их циклическим изменением . При жестко задан­ном приоритете наивысший приоритет устанавливается за каналом с меньшим номе­ром. При циклическом изменении самый низкий приоритет присваивается каналу после его обслуживания. Это позволяет обслужить все каналы поочередно.

Таблица 3.3

Операция

Чтение регистра состояния

Запись в регистр команд управления

Запись в регистр запросов

Установка всех разрядов маски

Запись в регистр режима

Установка режима ввода младшего байта

Чтение регистра временного хранения

Общий сброс

Сброс всех разрядов маски

Установка разряда маски

Программирование контроллера. Программирование контроллера осуществ­ляется от ЦП командами ввода–вывода и возможно только в пассивном состоянии или при наличии на входе HLDA напряжения низкого уровня, если даже присутствует сиг­нал HRQ. Начальную инициализацию контроллера необходимо осуществить сразу же после включения напряжения питания по всем каналам (если даже они не использу­ются), загружая команды и константы. Адреса внутренних регистров контроллера опре­деляются кодом на выводах А3–А0. В табл.3.3 показаны коды на А3–А0, соответст­вующие выполняемым командам ЦП, а в табл.3.4 – коды на А3–А0, соответствующие адресам регистров КПДП.

Таблица 3.4

Операция

Чтение содержимого CAR канала 0

Чтение содержимого CWR канала 0

Чтение содержимого CAR канала 1

Чтение содержимого CWR канала 1

Чтение содержимого CAR канала 2

Чтение содержимого CWR канала 2

Чтение содержимого CAR канала 3

Чтение содержимого CWR канала 3

Подключение контроллера к системной шине (рис. 3.47). Восемь старших разрядов адреса выдаются на ШД и должны быть записаны сигналом ADSTB во внеш­ний регистр. Линия AEN используется для того, чтобы разряды адреса остались дейст­вующими на ША в течение трех тактовых периодов цикла ПДП. Линии А7 – А0 под­ключаются непосредственно к ША. Сигналы MEMR, MEMW, IOR, IOW управляют в циклах ПДП соответственно ОЗУ и буфером ВУ.

Каскадирование КПДП . Примером каскадного использования КПДП может быть IBM PC/AT, в котором к шине адреса со смещением на 1 байт подключили второй 8237А (рис. 3.48). Его 16-битные регистры адреса способны управлять линиями адреса А16 – А1 (младший байт А0 всегда 0). Таким образом, второй КПДП обеспечивает пере­дачу по два байта. Вторая микросхема 8237А подключена как ведущая и создает три 16-битных канала ПДП.

Вопросы и задания

3.37. В каких режимах работают КПДП и его функции в системе?

      Определите программно-доступные регистры и их адресацию.

      Составьте схему подключения К1810ВТ37 к шинам адреса и данных МПС.

      Составьте программу инициализации контроллера для блочного обмена по одному каналу.

      Поясните реализацию режима ПДП на ВТ37.

      Поясните адресацию к регистрам КПДП при программировании.

      Как формируется 16-битный адрес КПДП при управлении обменом?

      Поясните предоставление ПДП по запросам с ведомого КПДП.

      Какие приоритеты запросов поддерживает 8237 (ВТ37)?

      В какой последовательности необходимо производить загрузку регистров контроллера при его программировании?

Контроллер встроенной флэш-памяти (EFC) является частью контроллера памяти (MC) и предоставляет интерфейс для доступа к блокам флэш-памяти по внутренней 32-битной шине. Это позволяет значительно увеличить скорость выборки команд из флэш-памяти при работе ядра процессора в режиме Thumb (16-битная система команд) благодаря работе 32-битного буфера. Более того, контроллер встроенной флэш-памяти поддерживает полный набора команд для чтения, записи, стирания флэш-памяти, установки и снятия битов защиты.

20.2 Функциональное описание

20.2.1 Организация встроенной флэш-памяти

Интерфейсы встроенной флэш-памяти непосредственно подключены к внутренней 32-битной шине, построенной на основе нескольких нижеследующих интерфейсов.

  • Простая организация памяти: нескольких страниц одинакового размера.
  • Два 32-битных буфера чтения, предназначенных для увеличения скорости чтения флэш-памяти (см. "Команды чтения" на стр. 101).
  • Один буфер записи для хранения данных при программировании одной страницы флэш-памяти. Размер этого буфера равен размеру одной страницы и доступ к нему разрешен только для записи. Кроме того, с помощью буфера записи осуществляется адресация флэш-памяти во всей области размером 1 Мбайт (см. "Команды записи" на стр. 101).
  • Несколько бит защиты (блокировочные биты) для запрета стирания и записи флэш-памяти. Каждая защищаемая область флэш-памяти (все области имею равный размер) состоит фиксированного числа страниц, размещенных последовательно. Каждая одна такая область непосредственно связана только с одним битом защиты.
  • Несколько бит энергонезависимой памяти - NVM-биты (Non Volatile Memory) общего назначения. Каждый из этих битов отвечает за управление определенными узлами микроконтроллера. Для получения более подробной информации о каждом NVM-бите см. соответствующие главы этого документа.
Размер встроенной флэш-памяти, размер её страниц и организация битов защиты описаны в главе 9 "Память" .

Таблица 20-1. Число бит защиты и NVM-бит общего назначения для членов семейства AT91SAM7S

Рисунок 20-1. Карта распределения встроенной флэш-памяти памяти

20.2.2 Команды чтения

Для ускорения процесса чтения флэш-памяти в контроллер EFC встроен специально предназначенный 32-битный буфер. Благодаря наличию этого буфера при работе процессора в режиме Thumb (16-битная система команд) обращение к флэш-памяти происходит в два раза реже, за счет чего увеличивает скорость выборки команд и, следовательно, увеличится скорость работы процессора (рис. 20-2, рис. 20-3 и рис. 20-4).

Эта оптимизация осуществляется только при выборке команд, а при чтении данных из флэш-памяти - не осуществляется.

Команды чтения могут быть выполнены как без включения дополнительных циклов ожидания, так и с ними. Допустима установка только до трех (включительно) циклов ожидания в поле FWS (Flash Wait State) регистра режима флэш-памяти MC_FMR (см. "Регистр режима флэш-памяти", стр. 110). При FWS = 0 обращение к встроенной флэш-памяти осуществляется за один цикл.

Доступ к флэш-памяти возможен 32-битный (словарный), 16-битный (полуслово) и 8-битный.

Поскольку размер встроенной флэш-памяти меньше микроконтроллера, чем размер адресного пространства выделенной для нее внутренней памяти (1 Мбайт), то в контроллере памяти реализовано т.н. дублирование этого блока флэш-памяти по всему выделенному для нее адресному пространству. Например, для AT91SAM7S64 флэш-память размером 64 Кбайта отображена в этом адресном пространстве ровно 1024/64 = 16 раз (прим. переводчика).


Рисунок 20-2. Оптимизация при чтении кода команды в режиме Thumb для FWS = 0


Рисунок 20-3. Оптимизация при чтении кода команды в режиме Thumb для FWS = 1


Рисунок 20-4. Оптимизация при чтении кода команды в режиме Thumb для FWS = 3

20.2.3 Команды записи

Область внутренней памяти, зарезервированной для встроенной флэш-памяти, также может быть записана только через специальный буфер. При выполнении команд записи во флэш-память во внимание принимаются только младшие 8 бит адреса (т.к. речь идет о 32-битных данных, то фактически во внимание принимаются 10 младших бит адреса). В свою очередь старшие 10 бит адреса внутренней области (1 Мбайт), зарезервированной для флэш-памяти, адресуют это т.н. окно, размер которого равен 256 словам (1024 байта). Тактом образом, вся эта внутренняя память состоит из 1024 таких окон.

Любая команда записи во встроенную флэш-память может быть запрещена с помощью модуля защиты памяти MPU (Memory Protection Unit).

Запись во флэш-память память возможна только словарно (32 бита), поэтому любая попытка записи полуслов (16 бит) или байт (8 бит) будет вызывать непредсказуемый результат.

Команды записи выполняются за число циклов ожидания (поле FWS в регистре MC_FMR), указанных для команд чтения, плюс еще один дополнительный цикл, кроме случая при FWS = 3 (см. "Регистр режима флэш-памяти", стр. 110).

20.2.4 Система команд контроллера флэш-памяти

В состав EFCS входят команды для программирования флэш-памяти, команды установки защиты (снятия защиты) ее областей, команды последовательного программирования и установки защиты флэш-памяти, команда полного стирания всей флэш-памяти.

Таблица 20-2. Система команд контроллера флэш-памяти

Перед выполнением любой из указанных команд в поле FCMD регистра MC_FCR должен быть указан код этой команды. Поскольку доступ к регистру MC_FCR возможен только по чтению, то флаг FRDY автоматически сбрасывается. После окончания выполнения команды флаг FRDY автоматически устанавливается, что может вызывать соответствующее прерывание, если оно разрешено через контроллер памяти (MC).

Все команды флэш-памяти защищены от случайного выполнения с помощью одного общего ключевого слова (keyword), которое необходимо указывать в старших 8 битах регистра MC_FCR каждый раз при выполнении очередной команды.

Команда с неверно указанным ключевым словом и/или неверно указанным кодом этой команды не будет выполнена, даже в том случае, если установлен флаг PROGE в регистре MC_FSR. Этот флаг будет автоматически сброшен при очередном чтении регистра MC_FSR.

Попытка выполнения команды записи или стирании страницы, размещенной в защищенной области, не окажет влияния на содержимое флэш-памяти (фактически, эта команда будет проигнорирована), даже в том случае, если установлен флаг PROGE в регистре MC_FSR. Этот флаг будет автоматически сброшен при очередном чтении регистра MC_FSR.


Рисунок 20-5. Блок-схема процесса выполнения команды

Для правильного выполнения команд флэш-памяти в поле длительность цикла в микросекундах (FMCN) в регистре режима контроллера флэш-памяти (MC_FMR) должно быть записано корректное значение (см. "Регистр режима контроллера флэш-памяти памяти", стр. 110).

20.2.4.1 Программирование флэш-памяти

Всего несколько команд могут использоваться для программирования флэш-памяти.

Согласно технологии работы флэш-памяти требуется обязательное ее стирание непосредственно перед процессом ее программирования. Может быть выполнено либо стирание всей области флэш-памяти, либо отдельной страницы с помощью сброса флага NEBP в регистре MC_FMR непосредственно записью кода команды в регистр MC_FCR.

При установке флага NEBP в регистре MC_FMR страница может быть запрограммирована за определенное число этапов, если перед этим она уже очищена (см. рис. 20-6).


Рисунок 20-6. Пример программирования участка страницы флэш-памяти

После окончания процесса программирования страница может быть защищена от случайного или преднамеренного стирания или записи (при защищается вся область, в которую входит эта страница). С помощью команды WPL защита может быть установлена автоматически сразу после окончания цикла записи страницы.

Записываемые данные хранятся во внутреннем буфере, размер которого равен размеру одной страницы флэш-памяти. Этот внутренний буфер охватывает все адресное пространство внутренней флэш-памяти, т.е. фактически может быть целиком отображен на любую из ее страниц.

Примечание: запись байтами (8 бит) или полусловами (16 бит) запрещена, т.к. как вызывает искажение записываемых данных.

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

  • Запись всей страницы, которая может быть размещена по любому адресу внутри всего адресного пространства флэш-памяти, возможна только словарно (32-битные данные).
  • Цикл записи страницы начинается сразу после того, как в регистре MC_FCR указан номер этой страницы и сама код команды записи. При этом автоматически сбрасывается флаг FRDY в регистре статуса программирования флэш-памяти (MC_FSR).
  • Сразу после завершения цикла программирования устанавливается флаг FRDY в регистре статуса программирования флэш-памяти (MC_FSR). Если разрешены прерывания от флага FRDY, то в контроллере памяти (MC) возникнет соответствующий сигнал прерывания.
  • Ошибка программирования (Programming Error): в регистр MC_FSR было записано неверное ключевое слово и/или указана недопустимая команда.

20.2.4.2 Команда полного стирания флэш-памяти

Вся реализованная на кристалле флэш-память может быть очищена, если в регистре MC_FCR записана команда "стереть все" - EA (Erase All).

Стирание всей флэш-памяти возможно только тогда, когда ни одна из ее областей не защищена от стирания и записи (не установлен не один из флагов защиты флэш-памяти). В противном случае (установлен хотя бы один из флагов защиты) эта команда будет проигнорирована. Если установлен флаг LOCKE в регистре MC_FMR, то возникнет соответствующий сигнал прерывания.

После выполнения последней команды программирования или стирания флэш-памяти в регистре MC_FSR автоматически будет установлен флаг FRDY. При этом на выходе контроллера памяти (MC) сразу же возникнет сигнал соответствующего прерывания, если оно разрешено.

В процессе выполнения цикла программирования могут возникать ошибки, которые фиксируются в регистре MC_FSR. Ниже приведены эти ошибки.

  • Ошибка программирования (Programming Error): в регистр MC_FSR было записано неверное ключевое слово (keyword) и/или указана недопустимая команда.
  • Ошибка защиты (Lock Error): была осуществлена попытка программирования защищенной области. Для выполнения корректного программирования этой области ее защита предварительно должна быть снята с помощью команды снятия защиты.

20.2.4.3 Биты защиты флэш-памяти

Каждый из битов защиты привязан к определенной области флэш-памяти, состоящей из определенного числа страниц. Назначение этих битов - защита флэш-памяти от случайного или преднамеренного ее стирания/программирования.

В процессе производства микроконтроллера в нем могут быть установлены некоторые из битов защиты. Их назначение - защита определенной области флэш-памяти, в которой по умолчанию размещена программа, записанная в микроконтроллер при его производстве. Перед программированием/стиранием защищенной области ее защита должна быть снята.

Ниже указана последовательность установки защиты одной области:

В регистр команды флэш-памяти должно быть записано следующее значение: (0x5A после завершения выполнения команды защиты будет установлен флаг FRDY в регистре MC_FSR. При этом на выходе контроллера памяти (MC) сразу же возникнет сигнал соответствующего прерывания, если оно разрешено. ul>

После установки защиты ее можно снять, ниже указана последовательность снятия защиты одной области:

  • в регистр команды флэш-памяти должно быть записано следующее значение: (0x5A после завершения выполнения команды защиты будет установлен флаг FRDY в регистре MC_FSR. При этом на выходе контроллера памяти (MC) сразу же возникнет сигнал соответствующего прерывания, если оно разрешено.

Если в процесс выполнения команды возникла ошибка (в регистре MC_FCR указано неверное ключевое слово и/или неверный код команды), то это факт будет зафиксирован в регистре MC_FSR.

Выполнение команды снятия бита защиты физически выполняет запись "1" в соответствующий бит, хотя при чтении регистра MC_FSR соответствующий бит LOCKx читается как "0". И наоборот, выполнение команды установки бита защиты физически выполняет запись "0" в соответствующий бит, а при чтении регистра MC_FSR соответствующий бит LOCKx читается как "1".

Примечание: независимо от наличия защиты флэш-памяти доступ к ней по-прежнему возможен по чтению.

20.2.4.4 NVM-биты общего назначения

Биты общего назначения - NVM-биты - не связаны со встроенной флэш-памятью, а предназначены для защиты других узлов микроконтроллера. Каждый из этих битов может быть установлен (сброшен) независимо от остальных. Для получения подробностей о NVM-битах см. соответствующие главы этого документа.

Ниже приведена последовательность активации NVM-битов общего назначения.

  • Выполнение команды "установка NVM-битов общего назначения" (Set General Purpose NVM Bit - SGPB) посредством записи в "регистр команд флэш-памяти" (MC_FCR) кода этой команды и количества этих бит в поле PAGEN этого же регистра.
  • после завершения выполнения команды SGPB будет установлен флаг FRDY в регистре MC_FSR. При этом на выходе контроллера памяти (MC) сразу же возникнет сигнал соответствующего прерывания, если оно разрешено.

В процессе выполнения цикла программирования могут возникать ошибки, которые фиксируются в регистре MC_FSR. Ниже приведены эти ошибки.

  • В поле PAGEN регистра MC_FCR указано число бит общего назначения, большее, чем максимально допустимое кол-во реализованных в кристалле NVM-бит. Ниже приведена последовательность очистки NVM-битов общего назначения.
  • Выполнение команды "очистка NVM-битов общего назначения" (Clear General Purpose NVM Bit - CGPB) посредством записи в "регистр команд флэш-памяти" (MC_FCR) кода этой команды и количества этих бит в поле PAGEN этого же регистра.
  • после завершения выполнения команды CGPB будет установлен флаг FRDY в регистре MC_FSR. При этом на выходе контроллера памяти (MC) сразу же возникнет сигнал соответствующего прерывания, если оно разрешено.

В процессе выполнения цикла программирования могут возникать ошибки, которые фиксируются в регистре MC_FSR. Ниже приведены эти ошибки.

  • Ошибка программирования: в регистр MC_FSR было записано неверное ключевое слово и/или указана недопустимая команда.
  • В поле PAGEN регистра MC_FCR указано число бит общего назначения, большее, чем максимально допустимое кол-во реализованных в кристалле NVM-бит.

Выполнение команды "очистка NVM-битов общего назначения" физически выполняет запись "1" в соответствующий бит, хотя при чтении регистра MC_FSR соответствующий бит GPNVMx читается как "0". И наоборот, выполнение команды "установка NVM-битов общего назначения" физически выполняет запись "0" в соответствующий бит, а при чтении регистра MC_FSR соответствующий бит GPNVMx читается как "1".

Примечание: независимо от состояния NVM-битов общего назначения доступ к флэш-памяти всегда возможен по чтению.

20.2.4.5 Бит секретности

Бит секретности предназначается для предотвращения внешних попыток доступа к внутренней системной шине. После установки бита секретности запрещается работа интерфейса JTAG, интерфейса быстрого программирования флэш-памяти и доступ к флэш-памяти по последовательному интерфейсу. Доступ к флэш-памяти через указанные выше интерфейсы вновь разрешается только при полной очистке кристалла по внешнему выводу ERASE - см. главу 4. "Назначение выводов". При подаче на вывод ERASE высокого логического уровня (см. п. 7.4. "вывод управления стиранием") происходит очистка всей реализованной на кристалле флэш-памяти, всех битов защиты флэш-памяти, всех NVM-битов общего назначения и только после всего этого производится очистка бита секретности.

Ниже приведена последовательность установки бита секретности.

  • Выполнение команды "установка бита секретности" (Set Security Bit - SSB) посредством записи в "регистр команд флэш-памяти" (MC_FCR) кода этой команды.
  • после завершения выполнения команды SSB будет установлен флаг FRDY в регистре MC_FSR. При этом на выходе контроллера памяти (MC) сразу же возникнет сигнал соответствующего прерывания, если оно разрешено.

Сразу после установки бита секретности в регистре MC_FSR будет установлен флаг SECURITY.

Процессорное ядро микроконтроллеров:
– арифметико-логическое устройство
– организация памяти

Доброго дня уважаемые радиолюбители!
Приветствую вас на сайте “ “

Сегодня (точнее – в течении нескольких статей) мы с вами более подробно рассмотрим основу любого микроконтроллера процессорное ядро .

Основные элементы:

1. Арифметико-логическое устройство

АЛУ – сердце (а может быть и ум, с честью и совестью) микроконтроллера.
Здесь мы не будем входить в роль “маньяка-расчленителя” и ковыряться во внутренностях этого устройства. Усвоим только, что благодаря АЛУ происходит вся работа микроконтроллера. Если у вас когда-нибудь появится желание более глубже узнать как работает “сердце” микроконтроллера (а будет неплохо, если оно появится), то в книгах замечательных авторов Белова, Рюмика, Евстифеева, Ревича, Баранова и многих других, вы всегда найдете подробный ответ.

2. Память микроконтроллера (организация памяти)

Прежде чем рассматривать память микроконтроллера, немного поговорим о памяти вообще.
Человеческая память – с ней все понятно, – она бывает “твердой” (когда находишься в твердой памяти, а иногда еще и в здравом уме) и, как не прискорбно, – “дырявой”. А вся информация хранится в так называемых “нейронах” – маленьких ячейках памяти.
У микроконтроллеров почти все также. Только, если у человека самая маленькая ячейка для хранения информации называется “нейрон”, то для микроконтроллера самая маленькая ячейка памяти для хранения информации называется “бит “.
В одном бите может храниться или одна логическая единица, или один логический ноль.
Бит минимальная единица измерения объема памяти в микропроцессорной технике .
Следующая основная, или самая распространенная, единица измерения памяти – байт .
Байт это восемь бит информации. В одном байте может храниться только восемь нулей и единиц.
Максимальное число которое можно записать в байт – 255. Если в программе вы будете оперировать большими числами то следует знать (чтобы знать сколько байт потребуется для хранения числа), что максимальное число, которое можно записать в:
– один байт = 255
– два байта = 65 535
– три байта = 16 777 215
– четыре байта – число величиной более 4 миллиардов (если вы не входите хотя бы в сотню журнала “Форбс”, то четыре байта памяти для хранения чисел вам не понадобятся).
Запись в память и чтение из памяти происходит байтами (нельзя записать или считать один бит информации).
Следующая единица измерения – килобайт .
В килобайте помещается 1024 байт информации (именно 1024, а не 1000 байт).
Есть еще и большие величины измерения объема памяти (мегабайт, гигабайт), но в микроконтроллерах они пока не применяются.
Я надеюсь, что с единицами измерения электронной памяти нам все понятно:

Организация памяти в микроконтроллере

Микросхемы AVR имеют три вида памяти:
память программ, она же FLASH-память
память данных, она же ОЗУ (оперативно-запоминающее устройство) , она же SRAM
энергонезависимая память, она же ЭСППЗУ, она же EEPROM
В микроконтроллере выделяется три адресных пространства в которых располагаются вышеперечисленные разновидности памяти. Память данных при этом (в смысле выделенного адресного пространства) оказалась немного обделенной – ей приходится делить свое адресное пространство с ячейками памяти в которых хранятся регистры общего назначения и регистры ввода/вывода (о них вы подробно узнаете в следующей статье). Эти регистры физически не относятся к памяти данных, но находятся в том же адресном пространстве. Если начальные адреса памяти программ и энергонезависимой памяти начинаются с нулевого адреса, то начальный адрес памяти данных не начинается с нулевого адреса – с нулевого адреса занимают места регистры общего назначения и регистры ввода/вывода, и только за ними следуют адреса ячеек памяти программ.
В некоторых видах МК ATiny память данных отсутствует.

Память программ (FLASH память)

Память программ предназначена для хранения в ней наших программ, а также любых нужных нам данных, которые не меняются в ходе выполнения программы (константы). При выключении питания микроконтроллера, все данные в памяти программ сохраняются.
Память программ , естественно, имеют все микроконтроллеры. Размер памяти программ, в зависимости от типа МК, варьируется от 1 килобайта до 256 килобайт.
Доступ к памяти программ имеет только программист при программировании МК, у самого МК доступ к памяти программ тоже имеется, но только для чтения данных из памяти, записать туда он ничего не может (мало ли что, вдруг захочет испортить нашу программу). Правда, у МК семейства Mega есть возможность (с разрешения программиста) вносить изменения в памяти программ, но это отдельная история.
Для памяти программ есть еще два вида измерения объема памяти – “слово ” и “страница “.
Дело в том, что память программ состоит из ячеек состоящих из двух байт . Такая ячейка называется “словом” . А сделано это так потому, что почти все команды МК состоят из двух байт, и, соответственно, для их записи нужно два байта в памяти программ. Каждая команда МК – это одно “слово” . Есть несколько команд, для записи которых требуется 4 байта в памяти – два слова, но такие команды встречаются в МК у которых память программ больше 8 килобайт.
Таким образом, в одну ячейку памяти программ можно записать :
– любую команду, состоящую из двух байт
– половину команды, состоящей из 4 байт
– две константы, каждая из которых умещается в один байт, или одну шестнадцатиразрядную константу. При этом, если вы записываете в память три однобайтовых константы, они все равно займут в памяти четыре байта (два слова).
Кроме того, запись в память программ осуществляется не только “словами”, но еще и “страницами” . Размер “страницы” составляет от 64 до 256 байт (чем больше объем памяти программ, тем больше объем “страницы”). Что это значит. Если вы создали маленькую программку, объем которой составляет 11 слов (22 байта), в памяти программ она все равно займет место в одну страницу, т.е. как минимум 64 байта. “Лишние” 42 байта при этом будут заполнены или нулями, или единицами. Вот такие вот, пироги.
Но и это еще не все.
Память программ может иметь три состояния (если можно так выразиться):
1. Вся память находится в распоряжение программиста
В этом случае мы можем забить всю память полностью своей программой и данными. А программа будет стартовать с нулевого адреса памяти.
2. Часть памяти забирает МК
В случае, если при работе МК используются (а я надеюсь – вы помните, что это такое), часть памяти МК забирает для нужд обработки прерываний и хранит в ней “векторы прерываний “.
Что это такое.
Когда мы разрешаем МК обрабатывать прерывания, он, начиная с нулевого адреса памяти, забирает часть ячеек для хранения в них адресов, по которым надо перейти МК для выполнения подпрограммы прерывания. Для каждого прерывания МК выделяет два байта памяти (одно слово) в которых хранятся адреса подпрограмм обработки прерываний. Вот эти адреса, которые указывают где находится в памяти подпрограмма обработки того, или иного прерывания, называются “векторами прерываний “. А вся область памяти, в которой хранятся “векторы прерываний”, называется таблицей векторов прерываний . Количество занятых ячеек памяти под прерывания зависит напрямую от количества возможных прерываний данного микроконтроллера (от нескольких штук, до нескольких десятков). Все прерывания располагаются в начале памяти программ, с нулевого адреса, и имеют четкую последовательность. По нулевому адресу всегда располагается вектор прерывания по “сбросу” (Reset). Когда мы включаем устройство, или производим сброс кнопкой, срабатывает прерывание по сбросу. МК считывает с нулевого адреса (с ячейки) адрес, который указывает где в памяти находится начало нашей программы, и перейдя по этому адресу начинает выполнять программу. Сама программа в этом случае будет располагаться в памяти программ сразу за таблицей прерываний.
3. МК забирает еще одну часть памяти программ (точнее не забирает, а выделяет область в конце памяти, в которой программист размещает специальную программу – “загрузчик”).
Такое возможно в МК семейства “MEGA”, у которых есть возможность разрешить МК вносить изменения в памяти программ. Что это значит.
Некоторые МК имеют возможность самопрограммироваться . В практике любителей такая возможность МК используется крайне редко. Возможность перепрограммироваться (самопрограммироваться) нужна, в основном, в случаях промышленного производства какого-то устройства на микроконтроллере, для которого потом может выпускаться обновление программного обеспечения. Мы эту возможность рассматривать не будем, по крайней мере пока. Нам достаточно только знать, что в МК, которые поддерживают самопрограммирование, память программ разделяется на две части :
- верхняя – секция прикладной программы , где располагается наша программа и векторы прерываний
- нижняя – секция загрузчика (Boot Loader Section – по английски), где программист располагает свою программу-загрузчик. Размер секции загрузчика зависит от общего размера памяти программ МК, и может составлять от 128 байт до 4096 байт. Если возможность самопрограммирования МК мы не используем, то эта секция отдается для нашей программы и данных.
Ну а FLASH-памятью память программ называют потому, что она делается по так называемой Flash-технологии (как и всем нам привычные компьютерные “флешки”)
Память программ допускает 10 тысяч циклов перепрограммирования.

Память данных (Статическое ОЗУ, SRAM)

Оперативно-запоминающее устройство , оно же память данных типа SRAM , предназначена для хранения в ней различных данных, получаемых в результате работы программы.
При выключении питания микроконтроллера, все данные хранящиеся в ней теряются.
Память данных есть почти во всех микроконтроллерах (отсутствует у простейших МК семейства Tiny).
Во всех МК семейства Mega (и части МК семейства Tiny) объем встроенной памяти данных колеблется от 128 байт до 8 килобайт, и почти вся она отдана в наше полное распоряжение. Только немножко забирает себе МК для организации стека (что это такое узнаем позднее). В некоторых МК предусмотрено подключение внешней памяти (она может быть любого типа – FLASH, SRAM, EEPROM) объемом до 64 килобайт. В случае подключения внешней памяти в таких МК, она становится как-бы продолжением памяти данных.
Запись в память данных и чтение из нее происходит побайтно, и в отличии от памяти программ в ней нет деления на страницы и слова.

Энергонезависимая память (EEPROM)

Энергонезависимая память также относится к памяти данных, но в отличие от последней имеет несколько особенностей. Предназначена она для хранения данных и констант, которые должны сохраняться при отсутствии питания.
EEPROM имеют все микроконтроллеры.
При выключении питания микроконтроллера все данные, хранящиеся в энергонезависимой памяти сохраняются (поэтому она и называется энергонезависимой).
Объем энергонезависимой памяти , в зависимости от типа МК, колеблется от 64 байт до 4 килобайт.
Запись и чтение информации в память производится побайтно. Однако в старших моделях семейства MEGA, энергонезависимая память, так же как и память программ, имеет страничную запись. Объем страницы небольшой, составляет всего 4 байта. На практике эта особенность не имеет значения – и запись, и чтение осуществляется все равно побайтно.
Число циклов записи и стирания памяти достигает 100 000.
Главная особенность EEPROM заключается в том, что при записи в нее данных она становится очень “медленной” – запись одного байта может продолжаться от 2 до 4 миллисекунд (это очень низкая скорость), и может случиться, к примеру, что во время записи сработает какое-либо прерывание и в этом случае процесс записи данных будет загублен.
Кроме того, не рекомендуется записывать данные в энергонезависимую память с нулевого адреса (не помню источника этих сведений, но точно помню, что где-то читал) – возможно повреждение данных в ходе работы МК. Иногда программисты отступают на несколько байт от начала памяти, и только в следующих ячейках начинают запись данных.

В наши дни в цивилизованном мире вы с трудом найдёте человека, который никогда бы не пользовался компьютером и не имел представление о том, что это такое. Поэтому, вместо того чтобы в очередной раз рассказывать обо всем известных частях этой сложной системы, мы расскажем вам о чём-то, что вы ещё не знаете. Мы обсудим и дадим небольшую характеристику контроллерам памяти, без которых работа компьютера была бы невозможна. Если вы хотите вникнуть в систему работы вашего персонального компьютера или ноутбука, то вы обязательно должны знать это. И так, давайте обсудим сегодня, что же такое контроллеры памяти.

Задача, которая стоит перед контроллерами памяти компьютера является очень важной для работы компьютера. Контроллер памяти – это чип, который расположен на материнской плате или на центральном процессоре. Главной функцией, которую выполняет этот крохотный чип, является управление потоками данных, как входящих, так и исходящих. Второстепенной функцией контроллера памяти является увеличение потенциала и работоспособности системы, а так же равномерное и правильное размещение информации в памяти, которое доступно благодаря новым разработкам в области новых технологий.

Размещение контроллера памяти в компьютере зависит от определённых моделей материнских плат и центральных процессоров. В некоторых компьютерах дизайнеры поместили этот чип на северном параллельном присоединении материнской платы, в то время как в других компьютерах они размещены на центральном процессоре типа «die». Те системы, которые рассчитаны на установку контроллера в материнской плате, имеют большое количество новых различных физических гнёзд. Оперативная память, которая используется в компьютерах такого типа, так же имеют новый современный дизайн.

Главная цель использования контроллера памяти в компьютере заключается в том, чтобы система могла считывать и записывать изменения в оперативной памяти, а также обновлять её при каждой загрузке. Это происходит благодаря тому, что контроллер памяти посылает электрические заряды, которые в свою очередь, являются сигналами для выполнения тех или иных действий. Не углубляясь в техническую терминологию, мы можем утвердить тот факт, что контроллеры памяти являются одной из самых важных деталей в компьютере, позволяющих использовать оперативную память, и без которой его работа была бы невозможной.

Контроллеры памяти бывают разных типов. Они различаются на:
- контроллеры памяти с двойной скоростью передачи данных (DDR);
- полностью буферизованные контроллеры памяти (FB);
- двуканальные контроллеры (DC).

Функции, которые могут выполнять контроллеры памяти разных типов, отличаются друг от друга. Например, контроллеры памяти с двойной скоростью передачи данных используются, чтобы передавать данные, в зависимости от увеличения или уменьшения темпа часов памяти. В то время как в двуканальной памяти используется два контроллера памяти параллельно друг от друга. Это позволяет компьютеру увеличить быстродействие системы, создавая больше каналов, но, несмотря на трудности, которые возникают в результате использования кучи проводов, данная система работает довольно эффективно. Однако возникают трудности при создании новых каналов, поэтому данный вид контроллера памяти не безупречен.

Полностью буферизованные контроллеры памяти с другой стороны отличаются от остальных типов контроллеров памяти. В данной технологии используется серийные каналы передачи данных, которые нужны для связи с материнской платой и непохожие на остальные системы схемы оперативной памяти RAM. Преимущество данного типа контроллеров заключается в том, что полностью буферизованные контроллеры памяти уменьшают количество проводов, которые используются в материнской плате, и что позволяет уменьшить затраченное на выполнение задачи время.

Как вы уже убедились, контроллеры памяти очень нужны для стабильной работы компьютера, и разные типы используются для разных целей. Цены на линейки памяти варьируются от очень высоких до очень низких, что зависит от типа и функций, которые выполняет тот или иной контроллер памяти.

Обычно промышленный контроллер состоит из: центрального процессора, сетевых интерфейсов, модулей памяти и различных устройств ввода-вывода.

В состав процессорного модуля ПЛК входят следующие комплектующие: микропроцессор или ЦПУ (центральное процессорное устройство), часы реального времени, запоминающие устройства и watchdog.

К основным характеристикам микропроцессора относятся: тактовая частота, разрядность, поддержка портов для различных устройств ввода-вывода, архитектура, параметры работоспособности при определенных температурных диапазонах, выполнение операций с плавающей точкой, уровень потребляемой мощности.

Показатели производительности микропроцессоров с одинаковой архитектурой пропорциональны тактовой частоте. В большинстве контроллеров применяются микропроцессоры реализованные на RISC (Reduced Instruction Set Computing) архитектуре, которые имеют сокращенное количество команд. В этом случае микропроцессор использует определенное число команд, обладающих одинаковой длиной, и множество регистров. Благодаря сокращенному набору команд можно создавать компиляторы с большими показателями эффективности, а так же конвейер процессора, который за один такт может выдать результат выполнения действий одной из команд.

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

Емкость памяти характеризуется количеством переменных, которые можно обработать за время функционирования ПЛК. Время доступа к памяти микропроцессора - один из наиболее существенных показателей, способных ограничить быстродействие. Из-за этого происходит деление памяти на уровни иерархии, с учетом частоты и скорости использования, имеющихся в ней данных Иерархия памяти – это еще один существенный показатель архитектуры процессора, позволяющий снизить уровень возможного отрицательного воздействия медленной памяти на скорость работы микропроцессора.

Основные типы памяти промышленных контроллеров (ПЛК):

  • ПЗУ – постоянное запоминающее устройство;
  • ОЗУ – оперативное запоминающее устройство;
  • Набор регистров.

Набор регистров - самые быстродействующие элементы памяти, так как их использует АЛУ (арифметико-логическое устройство) для выполнения простейших команд процессора. ПЗУ применяется как место хранения информации, которая редко подвергается изменению – операционная система, загрузчик, драйверы устройств, либо исполняемый модуль какой-либо программы. ОЗУ хранит в себе непосредственно данные подвергающиеся многократному изменению в период работы контроллера. К примеру, информация о проведении диагностики, отображаемые на дисплее переменные, значения тегов, промежуточные вычисления, выводимые на графики данные. В роли ПЗУ (ROM - Read Only Memory), как правило, выступает перепрограммируемая электрически стираемая память (EEPROM - Electrically Erasable Programmable ROM). Кстати, флеш-память по сути - разновидность EEPROM. Принцип действия её заключается в хранении определенного заряда в конденсаторе, который образован подложкой МОП-транзистора и плавающим затвором. Главная особенность флеш памяти – её абсолютная энергонезависимость, т.е. возможность сохранения данных при отсутствии питания. Обновление данных во флеш-памяти происходит не отдельно взятыми ячейками, а за счет применения больших блоков. Все ПЗУ обладают большим недостатком - низким уровенем быстродействия.

Количество циклов ввода информации во флеш-память ограничено всего несколькими десятками тысяч раз. Современными микропроцессорами в качестве ОЗУ применяется статическая память (SRAM - Static Random Access Memory), динамическая память (DRAM- Dynamic Random Access Memory), и синхронная динамическая память (SDRAM - Synchronous DRAM). Выполнение SRAM происходит на триггерах, которые способны хранить информацию неограниченно долгое время при условии наличия питания. Динамическая память промышленного контроллера сохраняет принадлежащие ей данные на конденсаторах, из-за чего требуется периодическая перезарядка конденсаторов. Основным недостатком триггерной памяти является высокий уровень стоимости и отношения цены к емкости. Это связано с тем, что на одном кристалле помещается относительно небольшое число триггеров. К достоинствам можно отнести высокий уровень быстродействия, исчисляемый гигагерцами, в то время как конденсаторная память не может преодолеть планку в несколько сотен герц. Все виды оперативной памяти отличаются тем, что при отсутствии питания все имеющаяся в них информация не сохраняется. Именно поэтому в некоторых типах ПЛК используется батарейное питание, позволяющее сохранить работоспособность системы при условии кратковременного прерывания питания системы.

В модульных и моноблочных промышленных контроллерах используется параллельная шина, позволяющая обмениваться информацией с модулями ввода-вывода, благодаря чему быстродействие опроса значительно выше в сравнении с последовательной шиной. Виды параллельных шин: VME, PCI, ISA, CXM, ComactPCI, PC/104. Последовательная же шина, например RS-485 необходима для подключения удаленных модулей ввода-вывода.

Поделитесь с друзьями или сохраните для себя:

Загрузка...