Скачать 0.58 Mb.
|
2. Структурная организация и режимы работы ОМК с RISC архитектурой 2.1. Общие сведения об ОМК PIC16/17 и их классификация В 1975 году фирма GI разработала периферийный контроллер (Peripheral Interface Controller или PIC), предназначенный для поддержки ввода-вывода 16-ти разрядного процессора. В нем не требовалась сложная обработка информации, поэтому его набор команд был сильно ограничен, но почти все команды в нём выполнялись за один машинный цикл. Этот контроллер, имевший RISC-архитектуру стал прообразом сегодняшней архитектуры микроконтроллеров PIC [3-6], выпускающихся с конца 80-х годов компанией Arizona Microchip TechnologyLtd., дочерней компанией GI Microelectronics Inc. Микроконтроллеры семейства PIC объединяют все передовые технологии ОМК: мировое лидерство по гибкой однократно или многократно электрически перепрограммируемой пользователем технологии ППЗУ, минимальное энергопотребление, исключительную производительность, мощную RISC-архитектуру и минимальные размеры корпуса. Эти широкие возможности и низкая стоимость сделали серию микроконтроллеров PIC лучшим выбором для инженерных применений. Более 200 миллионов микроконтроллеров PIC используется в нескольких тысячах приложений по всему миру. Использовать эти микроконтроллеры рекомендуется во всех случаях, когда критично энергопотребление, габариты и стоимость устройства. Вот только некоторые примеры применений микроконтроллеров PIC:
В зависимости от разрядности команд , архитектурных особен-ностей и функциональных возможностей однокристальные микроконт-роллеры (ОМК) PIC делятся на четыре основные группы (семейства) :
Подавляющее число ОМК, также как и микроконтроллеры серии К1816, имеет традиционную (Фон-Неймановскую или Принстонскую) архитектуру в которой команды и данные передаются по одной шине [2,7]. Архитектура же ОМК PIC основана на концепции раздельных шин и областей памяти для данных и команд (Гарвардская архитектура) [3-6]. Шина и память данных (ОЗУ) имеет ширину 8 бит, а программная шина и память (ПЗУ или ППЗУ) имеет ширину 12, 14 или 16 бит в зависимости от семейства ОМК. Такая концепция обеспечивает простую, но мощную систему команд а двухступенчатый конвейер обеспечивает их одновременную выборку и исполнение. Все команды состоят из одного слова (шириной 12, 14 или 16 бит) и исполняются за один цикл (200 нс при тактовой частоте 20МГц), кроме команд перехода, которые выполняются за два цикла. За счет этого ОМК с RISC-архитектурой типа PIC 16/17 имеют самое высокое быстродействие по сравнению с большинством наиболее распространенных 8-битовы микроконтроллеров аналогичного класса и обеспечивают более чем в 5-10 раз лучшую производительность.Контрольные испытания показывают [3], что применение ОМК се-рии PIC позволяют уменьшить время отладки в 1,5-2 раза по сравнению с обычными 8- разрядными микроконтроллерами. Система команд ОМК PIC 12/16/17 включает только 33/35/57 команд и может быть легко и быстро изучена. В конструкцию PIC включено много энергосберегающих особенностей, делающих их на сегодняшний день самыми микропотребляющими (в режиме SLEEP потребляемый ток менее 1 мкА), самым низковольтным по напряжению питания (2В) программируемыми пользователем микроконтроллерами. Простейшие типы таких ОМК содержат 8-битный таймер-счетчик с 8- битным программируемым предварительным делителем (фактически 16-битный таймер) и 6-20 линий двунаправленного ввода/вывода. Корпус таких ОМК имеет 8(18) выводов. Микроконтроллеры расширенного и высокопроизводительного семейств содержат кроме этого целый ряд дополнительных функциональных узлов и блоков таких, например, как: многоканальные аналого-цифровые преобразователи, разветвленную систему прерываний, блоки управления жидкокристаллическими индикаторами, компараторы, широтно-импульсные модуляторы, параллельные и последовательные интерфейсы типа I2C, RS-232 и т.д., цифровые умножители, дополнительные таймеры-счетчики, увеличенное количество портов ввода/вывода дискретных сигналов и прочее. Таким образом, ОМК PIC имеют существенные преимущества по сравнению с другими типами микроконтроллеров такого же класса. В настоящее время выпускаются микроконтроллеры с различным объемом постоянной и оперативной памяти, с различными типами тактовых генераторов, с различными быстродействием и конструктивным исполнением, а также с различными функциональными возможностями. Конкретный тип микроконтроллера для решения определенной задачи можно выбрать на основании критериев, рассмотренных ранее в разделе 1, используя соответствующую информацию, приведенную в Приложении А и в справочной литературе [3-7]. В зависимости от технологии изготовления ПЗУ все типы МК разделяются на пять групп: 1. Микроконтроллеры многократно программируемые пользователем, которые, в свою очередь могут быть разделены также на две следующие группы: 1) Микроконтроллеры с ультрафиолетовым стиранием. Эти МК оптимальны для экспериментальных разработок и отладки программ. Необходимую конфигурацию тактового генератора 2) Микроконтроллеры с многократно электрически программируе-мыми пользователем ППЗУ (EEPROM) программ и данных. Эти МК (такие например, как PIC 16C84X или 16F84X) позволяют легко подстраивать программу и данные под конкретные требования даже после завершения ассемблирования и тестирования. Эта возможность может быть использована как для тиражирования, так и для занесения калибровочных данных уже после окончательного тестирования разработанного МКУ. Однако, данные МК имеют ограниченное количество циклов перепрограммирования. 2. Однократно программируемые микроконтроллеры (ОТР). Эти МК могут быть однократно запрограммированы пользователем и применяются в тех случаях, когда нет необходимости часто менять содержание программы или конфигурацию микроконтроллера в разрабо-танном МКУ. Для некоторых типов МК (таких например, как PIC 16C54, PIC 16C55, PIC 16C57 и т.д.) тип генератора задается на заводе-изготовителе и микроконтроллер тестируется только для заданного типа генератора. Для других типов МК (таких, например, как PIC16C52, PIC16C54A, PIC16C58A и т.д.) тип генератора программируется пользователем. Дополнительно можно при этом подключить сторожевой таймер и/или логику защиты программ от считывания. Так же можно запрограммировать 16 специальных битов для идентификации. 3. Микроконтроллеры, программируемые изготовителем (QTP). Эти МК являются заказными и полностью программируемыми на заводе- изготовителе по заранее предоставленной пользователем информации. То есть, это так же однократно программируемые контроллеры (ОТР) с единственной разницей, что программирование осуществляется не пользователем, а на заводе-изготовителе. 4. Микроконтроллеры, последовательно программируемые изготовителем (SQTP). Это так же заказные однократно программируемые на заводе-изготовителе МК типа QTP, в которых несколько задаваемых пользователем ячеек в каждом микроконтроллере программируются различными серийным номерам. Причем, эти номера могут быть случайными, псевдослучайными или последовательными. Последовательное программирование позволяет каждому МК иметь собственный номер, который может быть использован в качестве пароля, кода доступа или идентификации. 5. Масочные микроконтроллеры (ROM). Эти МК также являются заказными и обеспечивают максимально низкую стоимость при крупно- серийных заказах (например, такими МК являются PIC16CR54, PIC16CR56, PIC16CR57, PIC16CR58 и т.д.). 2.2. Однокристальные микроконтроллеры семейства PIC16C5X 2.2.1. Структурная организация микроконтроллеров PIC16C5X Особенности архитектуры и структурная схема. Структурная схема ОМК PIC16C5X показана на рис.2.1. Основу структуры данного микроконтроллера составляют две внутренние шины: двунаправленная 8-битная шина данных и 12-битная шина команд. Это соответствует, как уже упоминалось ранее, Гарвардской архитектуре, основанной на концепции раздельных шин и областей памяти для данных и команд Шина данных связывает между собой все основные функциональные блоки МК: память данных (ОЗУ); арифметико-логическое устройство (ALU); порты ввода/вывода (Port A, B и С); регистры состояния (Status), косвенной адресации (FSR), таймера-счетчика (RTCC/TMRO), программного счетчика (PCL). Регистры разделяются на две функциональные группы: специаль-ные регистры и регистры общего назначения. Специальные регистры включают в себя регистр таймера/счетчика реального времени (TMRO/RTCC), счетчик команд (PC), регистр состояния (STATUS), регистры ввода/ вывода (PORT) и регистр косвенной адресации (FSR). Кроме того, специальные регистры (TRIS) управляют конфигурацией портов ввода-вывода и режимом предварительного делителя (OPTION). Регистры общего назначения (Register File) используются программой для хранения переменных по усмотрению пользователя. В микроконтроллерах семейства Р1С 16С5Х существуют прямая и косвенная адресация всех регистров и ячеек памяти. Все специальные регистры и счетчик команд также отображаются на память данных. Микроконтроллеры Р1С16С5Х имеют ортогональную (симметричную) систему команд, позволяющую выполнять любую операцию с любым регистром, используя любой метод адресации. Это облегчает программирование для них и значительно уменьшает время, необходимое на обучение работе с ними. В микроконтроллерах Р1С16С5Х имеется 8-разрядное арифметико-логическое устройство (АЛУ) и рабочий регистр W. АЛУ выполняет сложение, вычитание, сдвиг, битовые и логические операции. В командах, имеющих два операнда, одним из операндов является рабочий регистр W. Второй операнд может быть константой или содержимым любого регистра ОЗУ. В командах с одним операндом, операнд может быть содержимым рабочего регистра или содержимым любого регистр. Для выполнения всех операций АЛУ используется рабочий регистр W, который не может быть прямо адресован. В зависимости от результата выполнения операции, могут измениться значения битов переноса С, десятичного переноса DC и нуля Z в регистре состояния STATUS. При вычитании биты С и DC работают как биты заема и десячного заема, соответственно. В описании команд SUBWF и ADDWF приведены необходимые примеры [8]. В состав микроконтроллеров PIC16C5X входит еще целый ряд функциональных блоков и узлов, таких, например, как: ПЗУ/ППЗУ прог-рамм (EPROM), счетчик команд или программный счетчик (PC), стек (Stack 1,2), регистры управления портами ввода/вывода (TRIS A,B,C ), сторожевой таймер Watch Dog Timer (WDT), предварительный делитель (Prescaler) для WDT и TMRO/RTCC, ячейка (слово) конфигурации (Configuration EPROM), топологические расположенное в ПЗУ программ, блок генераторов тактовых последовательностей и сигналов управления (Oscillator Timing & Control). Входная тактовая частота, поступающая с вывода OSC1/CLKIN, внутри делится на четыре и из нее формируются четыре циклические не перекрывающиеся тактовые последовательности Q1, Q2, Q3 и Q4. Счетчик команд увеличивается в такте Q1, команда считывается из памяти программы и защелкивается в регистре команд в такте Q4. Команда декодируется и выполняется в течение последующего цикла в тактах Q1...Q4. Выборка команды и ее выполнение совмещены по времени таким образом, что выборка команды занимает один цикл, а выполнение следующий цикл. Эффективное время выполнения команды составляет один цикл. Если команда изменяет счетчик команд (например, команда GOTO), то для выполнения этой команды потребуется два цикла. Цикл выборки начинается с увеличения счетчика команд в такте Q1. В цикле выполнения команды выбранная команда защелкивается в регистр команд в такте Q1. В течение тактов Q2, Q3 и Q4 происходит декодирование и выполнение команды. В такте Q3 считывается память данных (чтение операнда), а запись происходит в такте Q4. Таким образом, цикл выполнения команды (рис. 2.2) состоит из 4-х тактов Q1-Q4, в каждом из которых производятся различные, заранее определенные действия: Q1 - Выборка определенной команды из памяти программ и ее декодирование или вынужденный NOP, Q2 - Выборка данных или NOP, Q3 - Выполнение команды и обработка данных, Q4 - Запись данных или NOP. ![]() OSC1 Q1 Q2 Q3 Q4 PC OSC2/CLKOUT (RC-генератор) Рис. 2.2. Цикл выполнения команды Рассмотрим последовательно основные элементы структуры а также особенности организации и функционирования МК. 2.2.2.Обозначение выводов и их функциональное назначение Обозначение выводов PIC16C5X и их функциональное назначение приведены на рис. 2.3 а также в табл. 2.1 и 2.2. Таблица 2.1. Обозначение и функциональное назначение выводов ОМК PIC 16C52/16C54/16C56/16C58
Таблица 2.2 Обозначение и функциональное назначение выводов ОМК PIC 16C55/16C57
Обозначения: I - вход, O - выход, I/O - вход/выход, Р - питание, — - не используется, TTL - вход ТТЛ, ST - вход с триггером Шмидта. PDIP, SOIC, CERDIP, Windov 1 18 PIC16C55/57 14 15 1 18 PIC16C54/56 9 10 14 15 R ![]() ![]() ![]() ![]() ![]() R ![]() ![]() ![]() ![]() R ![]() ![]() ![]() ![]() / ![]() ![]() ![]() ![]() ![]() ![]() ![]() V ![]() ![]() R ![]() ![]() ![]() ![]() ![]() R ![]() ![]() ![]() ![]() ![]() R ![]() ![]() R ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Рис. 2.3. Расположение выводов PIC16C5X. 2.2.3.Организация памяти программ Память программ (ПЗУ/ППЗУ) имеет страничную организацию (рис.2.4). Объем одной страницы 512 байт поэтому прямая адресация памяти программ в семействе Р1С16С5Х возможна в пределах 512 байт. Микроконтроллеры PIC 16C5X имеют одну, две или четыре страницы памяти программ для хранения 12-ти разрядных кодов команд (512X12, 1024Х12, 2048Х12). В соответствии с этим все ОМК данного семейства можно разделить на три группы. Доступ к памяти свыше 512 байт осуществляется после переключения на соответствующую страницу памяти. Микроконтроллеры PIC16C52/54/C54A/CR54/CR54A/CR54B/C55 имеют одну страницу памяти программы, PIC16C56/CR56 имеет 2 страницы по 512 байт, PIC16C57/CR57A/CR57B/C58A/CR58A/CR58B имеют 4 страницы по 512 байт каждая. 2.2.4. Организация памяти данных Память данных (ОЗУ) также имеет страничную организацию (рис. 2.5). Она состоит максимум из 4-х банков (0...3). Причем, банки в различных типах PIC могут иметь различные объемы. Минимальный объем банка 16 байт, а максимальный 32 байта Шина данных разрядностью 8 бит соединяет группу регистров ОЗУ, порты ввода/вывода и 8- разрядное арифметико-логическое устройство(АЛУ). Прямо адресуются 32 байта оперативной памяти, остальная память адресуется банками по 16 байт каждый. Микроконтроллеры PIC16C52/C54/C54A/CR54/CR54A/CR54B/C56/CR56 имеют один банк оперативной памяти объемом 32 байта, из которых 25 байт могут быть ![]() GOTO, CALL и команды, модифицирующие PC……..из PA1 STATUS<5> GOTO, CALL……………………...из команды Команды, модифицирующие PC…...всегда ‘0’ GOTO, CALL……………...из команды Команды, модифицирующие PC…..из АЛУ 9-11 бит 2 1 8 000 00 0FF Страница 0 100 17F PIC16C52 180 1FF PIC16C54/C54A/CR54/CR54A/CR54B/C55 200 01 Страница 1 2FF 300 3FF PIC16C56/CR56 400 10 Страница 2 4FF 500 5FF 600 11 Страница 3 6FF 700 7FF PIC16C57/CR57A/CR57B/C58A/CR58A/CR58B Рис. 2.4. Организация памяти программ использованы в качестве регистров общего назначения. Для Р1С16С55, имеющего PORTC, объем - 24 байта. PIC16C57/CR57A/CR57B и PIC16C58A/CR58A/CR58B имеют 4 банка памяти данных и объем для них 72 и 73 байта соответственно. Регистры могут быть адресованы прямо или косвенно, с исполь-зованием регистра косвенной адресации FSR. Непосредственная адре-сация поддерживается специальными командами, загружающими данные из памяти программы в рабочий регистр W. Регистры, как уже упоминалось, разделяются на две функциональные группы: специальные Адрес регистра 7 6 5 4 3 2 1 0 0 ![]() 01 RETLW 10 9 8 7 6 5 4 3 2 1 0 10 9 8 7 6 5 4 3 2 1 0 02 03 04 7 6 5 4 3 2 1 0 05 06 5 4 3 2 1 0 07 08 09 0A Регистры К регистрам 0B общего через АЛУ 0C назначения 0D 0E От памяти программы 0F Биты 6,5 FSR: Выбор банка (только для PIC16C57/CR57A/CR57B/C58A/CR58A/CR58B) 00 01 10 11 10 11 30 50 70 12 13 14 15 16 17 Регистры общего назначения 18 (только для PIC16C57/CR57A/CR57B/C58A/CR58A/CR58B) 19 1A 1B 1C 1D 1E Банк 1 (***) Банк 2 (***) Банк 3 (***) 1F 3F 5F 7F (*) - Регистр физически не существует (**) - Регистр 07h для PIC16C52/C54/C56 используется как регистр общего назначения (***) - Банк 0 доступен во всех микроконтроллерах семейства PIC16C5X. Банки 1, 2, 3 доступны только в PIC16C57/58. Рис.2.5. Организация памяти данныхрегистры и регистры общего назначения. Специальные регистры (табл. 2.3) включают в себя регистр таймера/счетчика реального времени (RTCC-TMRO), счетчик команд (PC), регистр состояния (STATUS), регистры ввода/вывода (PORT) и регистр косвенной адресации (FSR). Кроме того, специальные регистры управляют конфигурацией портов ввода-вывода и режимом предварительного делителя. Регистры общего назначения используются для хранения переменных по усмотрению пользователя. Таблица 2.3 Описание специальных регистров Р1С16С5Х
Обозначения: x - не определено, u - не меняется, — - отсутствует, читается как '0', ? - значение зависит от условий сброса. Примечания: 1. Старшие разряды счетчика команд непосредственно не доступны. Обращение к старшим битам осуществляется через биты РА1, РАО (STATUS<6:5>). 2. Для PIC16C52/54/C54A/CR54/CR54A/CR54B/C56/CR56/C58A/CR58A/CR58B регистр 07h является регистром общего назначения. 3. Заштрихованы физически отсутствующие биты. При непосредственной (прямой) адресации (рис. 2.6) выбор банка осуществляется с помощью 2-х бит PR0 и RP1, которые находятся в 5 и 6 разрядах регистра косвенной адресации (FSR/Pointer) соответственно. Выбор регистра в банке осушествляется с помощью 5-ти разрядного адреса, поступающего в ОЗУ прямо из кода команды по выделенной для этих целей отдельной шине адреса, которая связывает регистр команд и память данных. При косвенной адресации (рис. 2.6) используется переключатель косвенной адресации (регистр f0 в памяти данных, который физически не существует) и указатель Pointer (регистр f4 - FSR). Существуют некоторые отличия при осуществлении косвенной адресации для различных типов МК. Так для PIC16C54/C55/C56: биты 0-4 регистра (f4) выбирают один из 32 регистров в режиме косвенной адресации, т.е. когда в команде есть обращение к регистру косвенной адресации (f0). Биты 5-7 не используются и всегда читаются как единицы. Если косвенная адресация Прямая адресация Косвенная адресация из кода команды ![]() Выбор банка Выбор регистра Выбор банка Выбор регистра 00 01 10 11 00 Память 0F данных 10 Банк 0 Банк 1 Банк 2 Банк 3 FSR - Регистр косвенной адресацииRP1, RP0 – Биты 6 и 5 регистра FSR, соответственноРис. 2.6. Прямая и косвенная адресация не используется, регистр f4 может быть использован как 5-ти битовый регистр общего назначения. Для PIC16C57 первые 16 байт каждого банка представляют собой физически одни и те же регистры. Только тогда, когда бит 4 (f4) установлен в единицу (указывает на следующие 16 байт), биты 5 и 6 выбирают один из четырех банков по 16 регистров каждый. Бит 7 регистра (f4) не используется и всегда читается как единица. 2.2.5.Регистр состояния STATUS Регистр состояния (f3) содержит арифметические флаги АЛУ, состояние контроллера при сбросе и биты выбора страниц для программ с обьемом памяти превышающим 512 слов (PIC16C56/PIC16C57).Регистр STATUS доступен для любой команды так же, как любой другой регистр. Однако, биты TO и PD устанавливаются аппаратно и не могут быть записаны в регистр статуса программно. Это следует иметь в виду при выполнении команды с использованием регистра статуса. Например, команда CLRF f3 обнулит все биты, кроме битов TO и PD, а затем установит бит Z=1. После выполнения этой команды регистр статуса может и не иметь нулевое значение (из-за битов TO и PD) f3= 000??100. Поэтому рекомендуется для изменения регистра статуса использовать только команды битовой установки BCF, BSF, MOVWF, которые не изменяют остальные биты статуса. Воздействие всех команд на биты статуса можно посмотреть в «Описании команд» [8]. Биты 5-6 регистра статуса определяются как биты адреса страниц PA0-PA1 программной памяти(только для PIC16C56/PIC16C57 !!!). Когда исполняются команды GOTO, CALL и команды, когда программный счетчик изменяется, например MOVWF 2, биты адреса страниц PA0-PA1 загружаются в биты программного счетчика A9-A10. Таким образом, прямой адрес, указанный в слове команды, указывает на место внутри определенной страницы памяти. Команда RETLW не изменяет биты выбора страниц. После сигнала «Сброс»биты регистра статуса PA0-PA1 обнуляются. Размещение флагов в регистре STATUS (Адрес: 03h. Значение по включению питания: 0001 1ххх) следующее: b7 b6 b5 b4 b3 b2 b1 b0
|