Микроконтроллеры для систем автоматики - часть 3

 

  Главная      Учебники - Производство     

 

поиск по сайту           правообладателям

 

 

 

 

 

 

 

 

 

содержание   ..  1  2  3  4  ..

 

Микроконтроллеры для систем автоматики - часть 3

 

 

 

11 

3. ПРОЦЕССОРНОЕ ЯДРО 

3.1. Основные элементы 

Каждый  производитель  микроконтроллеров  для  серии  выпускаемых  им  изделий 

разрабатывает и патентует своё оригинальное процессорное ядро (MCU – Microprocessor 
Core Unit).
 Однако в большинстве из них присутствуют одни и те же элементы:  

º 

регистр инструкций,  

º 

программный счетчик,  

º 

арифметико-логическое устройство,  

º 

регистры общего назначения,  

º 

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

º 

регистры ввода/вывода,  

º 

стек.  

П

Р О Г Р А М М Н Ы Й   С Ч Е Т Ч И К

 

Программный  счетчик  (PC - Program counter) – регистр,  предназначенный  для 

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

Например,  программный  счетчик  у  микроконтроллеров  с  ядром AVR имеет 

разрядность  16  бит.  В  общем  случае  он  позволяет  адресовать  до 64К  ячеек  памяти. 
Микроконтроллер ATmega163  с  ядром AVR имеет  только  8К  ячеек  памяти  программ, 
поэтому в нем используется только 13 младших бит программного счетчика ядра AVR (2

13 

8К)

Р

Е Г И С Т Р   И Н С Т Р У К Ц И Й

 

Регистр  инструкций  (IR - Instruction register) – регистр,  предназначенный  для 

хранения  считанной  из  памяти  программ  инструкции.  Считанная  из  памяти  программ 
инструкция  декодируется  дешифратором  команд  и  исполняется  микропрограммным 
автоматом  ядра.  Разрядность  регистра  инструкций  определяется  разрядностью  памяти 
программ.  

Например, ядро AVR в своей структуре имеет 16-битный регистр инструкций. Эта 

разрядность обеспечивает ему работу с 16-битной памятью программ.  

А

Р И Ф М Е Т И К О

-

Л О Г И Ч Е С К О Е   У С Т Р О Й С Т В О

 

Арифметико-логическое устройство (ALU - Arithmetic Logic Unit) – логическая схема, 

непосредственно  осуществляющая  преобразование  одной  или  двух  переменных  в 
соответствии  с  инструкцией  занесенной  в  регистр  команд.  Стандартное ALU способно 
выполнять  простейшие  арифметические  и  логические  операции  над  одной  или  двумя 
переменными.  

Типовые арифметические операции ALU: 

º 

сложение (addition), 

º 

вычитание (subtract), 

º 

инкремент (increment), 

 

12 

º 

декремент (decrement). 

Типовые логические операции: 

º 

инверсия (NOT),  

º 

логическое сложение (OR),  

º 

логическое умножение (AND),  

º 

исключающее ИЛИ (exclusive OR).  

Некоторые производители интегрируют на кристалл также встроенный умножитель 

двух переменных.  

В  частности ALU ядра AVR способно  выполнить  арифметические  операции: 

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

Все  арифметические  и  логические  операции  (за  исключением  умножения) 

выполняются  за  один  такт  работы  процессорного ядра. Перемножение двух переменных 
выполняется за два такта. 

Р

Е Г И С Т Р Ы   О Б Щ Е Г О   Н А З Н А Ч Е Н И Я

 

Регистры  общего назначения предназначены для временного хранения данных в 

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

Например, ядро AVR имеет 32 регистра общего назначения(GPR - General purpose 

registers). Каждому регистру (рис. 3.1) соответствует дополнительно адрес в памяти данных, 
отображающий их в первых 32 ячейках пространства данных. Хотя они не используются как 
физические  ячейки SRAM, такая  организация  памяти  обеспечивает  гибкое  обращение  к 
регистрам. 

 General 

purpose 

7    registers         0 

 

SRAM 

 

 R0 

$00 

 

 

R1 $01 

 

 

 

 

 

 

 

 

 

 R26 

$1A X-register 

low 

byte 

 R27 

$1B X-register 

high 

byte 

 R28 

$1C 

Y - register low byte 

 R27 

$1D 

Y - register high byte 

 R30 

$1E 

Z - register low byte 

 R31 

$1F 

Z - register high byte 

 

13 

Рис.3.1.  Файл регистров общего назначения ядра AVR 

Все  инструкции,  в  которых  происходит  обращение  к  регистрам,  выполняются 

процессорным ядром AVR в течении одного тактового цикла.  

Самые общие арифметические и логические инструкции между двумя регистрами 

или  с  одним  регистром  используют  для  записи  результата  тоже  регистры  этого 
регистрового файла. 

Шесть  из 32 регистров ( R26 …. R31),  кроме  обычной  для  прочих  регистров 

функций,  выполняют  функцию  16-битных  указателей  адреса  при  косвенной  адресации 
памяти данных и памяти программ . Эти три регистра косвенной адресации определяются 
как регистры X, Y и Z. При этом в четных регистрах хранятся младшие байты 16-битных 
переменных, а в нечетных – старшие ( рис. 3.3). 

 

15 0 

 

Регистр X 

7                                      0  7                                      0 

 

 R27($1B) R26($1A)  

 

15 0 

 

Регистр Y 

7                                      0  7                                      0 

 

 R29($1B) R28($1A)  

 

15 0 

 

Регистр Z 

7                                      0  7                                      0 

 

 R31($1B) R30($1A)  

 Рис. 3.3 Регистры косвенной адресации архитектуры AVR 

Р

Е Г И С Т Р Ы   В В О Д А

/

В Ы В О Д А

 

Регистры  ввода/вывода  предназначены  для  управления  функциональными 

блоками микроконтроллера, энергонезависимой памятью данных и программ. В различных 
операциях регистры могут участвовать целиком или отдельными битами. Отдельный бит 
регистра  обычно  именуется  флагом  (flag).  Обращение  к  регистрам  в  различных 
архитектурах организуется различным образом. Обычно обращение к ним осуществляется 
как к элементам процессорного ядра по присвоенным в архитектуре именам и адресам, в 
ряде случаев к ним обращаются с помощью специальных команд ввода/вывода. 

Например,  в  микроконтроллере  ATmega163  предусмотрено 64 регистра 

ввода/вывода  (Input/output registers).  Все  они  размещены  в  пространстве  ввода/вывода 
процессорного  ядра  по  адресам  от $00 по $3F. Для  обращения  к  регистрам  можно 
использовать  специальные  инструкции (IN) и  вывода (OUT). При  этом  в  инструкции 
необходимо  указывать  адрес  регистра.  Одновременно  регистры  ввода/вывода 
представлены  также  в  адресном  пространстве  памяти  данных  (рис. 2.2) и  к  ним  можно 
адресоваться  как  к  обычным  ячейкам SRAM с  адресами  от $20 до $5F. Адрес SRAM 
получается  простым  добавлением $20 к  непосредственному  адресу  регистра.  В 
дальнейшем,  при  описании  регистров,  адрес SRAM приводится  в  круглых  скобках  после 
непосредственного  адреса  регистра  ввода/вывода.  Регистры  побитно  адресуются 
специальными командами  работы с битами: установки бита в регистре и очистки бита в 
регистре.  Состояние  каждого  отдельного  бита  этих  регистров  может  быть  проверено 
командами переходов

Каждый регистр микроконтроллера имеет своё оригинальное имя. 

Все регистры микроконтроллера ATmega163 представлены в следующей таблице. 

 

14 

Таблица 3.1.  

Регистры ввода/вывода микроконтроллера AТmega163 

I/O адрес (SRAM 

адрес) 

Имя 

Функция регистра 

$3F ($5F) 

SREG 

Status Register 

$3E ($5E) 

SPH 

Stack Pointer High 

$3D ($5D) 

SPL 

Stack Pointer Low 

$3B ($5B) 

GIMSK 

General Interrupt Mask Register 

$3A ($5A) 

GIFR 

General Interrupt Flag Register 

$39 ($59) 

TIMSK 

Timer/Counter Interrupt Mask Register 

$38 ($58) 

TIFR 

Timer/Counter Interrupt Flag Register 

$37 ($57) 

SPMCR 

SPM Control Register 

$36 ($56) 

TWCR 

2-wire Serial Interface Control Register 

$35 ($55) 

MCUCR 

MCU general Control Register 

$34 ($54) 

MCUSR 

MCU general Status Register 

$33 ($53) 

TCCR0 

Timer/Counter0 Control Register 

$32 ($52) 

TCNT0 

Timer/Counter0 (8-bit) 

$31 ($51) OSCCAL 

Oscillator Calibration Register 

$30 ($50) 

SFIOR 

Special Function I/O Register 

$2F ($4F) 

TCCR1A 

Timer/Counter1 Control Register A 

$2E ($4E) 

TCCR1B 

Timer/Counter1 Control Register B 

$2D ($4D) 

TCNT1H 

Timer/Counter1 High-byte 

$2C ($4C) 

TCNT1L 

Timer/Counter1 Low-byte 

$2B ($4B) 

OCR1AH 

Timer/Counter1 Output Compare Register A High-byte 

$2A ($4A) 

OCR1AL 

Timer/Counter1 Output Compare Register A Low-byte 

$29 ($49) 

OCR1BH 

Timer/Counter1 Output Compare Register B High-byte 

$28 ($48) 

OCR1BL 

Timer/Counter1 Output Compare Register B Low-byte 

$27 ($47) 

ICR1H T/C 1  Input Capture Register High-byte 

$26 ($46) 

ICR1L T/C 1  Input Capture Register Low-byte 

$25 ($45) 

TCCR2 

Timer/Counter2 Control Register 

$24 ($44) 

TCNT2 

Timer/Counter2 (8-bit) 

$23 ($43) 

OCR2 

Timer/Counter2 Output Compare Register 

$22 ($42) 

ASSR 

Asynchronous Mode Status Register 

$21 ($41) WDTCR 

Watchdog Timer Control Register 

$20 ($40) 

UBRRHI 

UART Baud Rate Register High-byte 

$1F ($3F) 

EEARH 

EEPROM Address Register High-byte 

$1E ($3E) 

EEARL 

EEPROM Address Register Low-byte 

$1D ($3D) 

EEDR 

EEPROM Data Register 

$1C ($3C) 

EECR 

EEPROM Control Register 

$1B ($3B) 

PORTA 

Data Register, Port A 

$1A ($3A) 

DDRA 

Data Direction Register, Port A 

$19 ($39) 

PINA 

Input Pins, Port A 

 

 

 

 

 

содержание   ..  1  2  3  4  ..