AVR系列单片机的基本架构(翻译自俄语讲义)

长平狐 发布于 2012/11/12 11:38
阅读 166
收藏 1


本文章由zhmxy555(毛星云)编写,转载请注明出处。

http://blog.csdn.net/zhmxy555/article/details/7685596


作者:毛星云    邮箱: happylifemxy@qq.com    期待着与志同道合的朋友们相互交流





这篇文章节选自我的导师,来自乌克兰国立航空航天大学的萨沙教授提供的单片机讲义,原文由俄语书写。

浅墨在学习过程中将文章翻译成了中文,以便于更深刻的理解。

由于浅墨是单片机这块的初学者,这里在将我的部分译文发出来,理解不深刻之处还希望单片机方面的行家给予指正,

或者若乌克兰单片机方的知识与国内存在不同之处,也希望能与大家交流,毕竟交流是学习和提高很好的途径。





一、单片机的基本架构 
 
(Основные архитектуры микро-ЭВМ)

 

单片机的名称来自于它的用途——用于控制某些过程或者子系统(因此得名控制器,单片机)。随着计算能力的发展,使其被运用到数字化加工处理成为了可能。

单片机——即一个包含了单芯片处理器的系统所基本的所有基本要求的设备,这些要求包括,CPU,RAM,ROM,输入端口,输出端口,定时器。模数转换器,数模转换器,硬件接口以及其他的部件。事实上,单片机是一个内建于芯片上的系统,且有着很大的多样性。分为家用的无线电电子系统用途方向(手机,音乐电台,电视等等),以及工业上的无线电电子系统用途方向(流程控制系统,传感器,嵌入式系统,数字数据处理)。

 

在之前,最常见的单片机, Intel的8051系列收到了广泛的认可。到目前为止,各大厂商生产的处理器芯片都是在模仿Intel 8051的基础上的。

 


 


图1中呈现了单片机的结构框图。

 

 

Рис. 1. i8051系列单片机的架构图


图中对应的词汇:

аккумулятор 蓄电池

декодер команд 指令解码器

регистр команд 注册指令

генератор тактовых импульсов 时钟脉冲发生器

регистр статуса状态寄存器

ОЗУ  RAM

указатель стека 堆栈指针

память 内存

счетчик команд 程序计数器

таймеры 计时器

счетчики 定时器

модуль прерываний 中断模块

8-разрядная шина команд и данных 8位总线指令和数据

 

 

 

单片机建立在名为冯·诺伊曼架构的单一总线的数据与命令上。

 

微型计算机的结构体系概念是很复杂的,其中包括:


1.   微型计算机的组织结构图图示。


2.   微型计算机各设备的访问方法和方式图示。


3.   内存寻址的方法。


4.   微型计算机的数据结构和遍历方式。


5.   机器码的设置


6.   机器码的格式


7.   中断

 

因此,微型计算机架构的概念包括了开发人员需要了解的几乎所有必要的信息。



缺点:

冯·诺依曼架构规定了数据总线的指令和数据采用交替采样的方式,而这与并行访问相比,需要花费更多的时间。


 

优点:

冯·诺依曼架构可以实现程序的自动调试。


 

工作原理:


这种架构的工作原理如下。单片机的所有操作都同步到时钟脉冲。随着从程序内存中的下一个时钟脉冲指令(即通过总线,使命令和数据传输到指令寄存器和解码器的一些指令)被选中,然后通过相应的指令读取数据总线,获取相应的数据。

第一步,数据通过总线由аккумулятор(俄语意思为蓄电池,但是逻辑不通啊。。。。求解)提供。

第二步,操作在算术逻辑单元之中执行,即进行算术逻辑运算,然后将结果通过总线返回到аккумулятор中。

因此,总线的数据和命令总是处于占用状态。此外,所以的操作都必须通过通用寄存器,即累加器。


 

基于冯·诺依曼架构的微型计算机大部分都是做为一般用途。

相对于冯·诺依曼显著提高单片机性能的哈佛架构(Гарвардская архитектур)拥有独立的总线数据和指令。在这个架构的基础上,出现了很多如今的单片机,后面我们将讨论这种架构。

 




 

二、各厂商间单片机特性的比较


Сравнение МК различных производителей)


 选择特定功能的单片机需要考虑很多方面的问题。


选择一款单片机型号时,重点考虑主要的参数 有:  

 

1.工作效率 [MIPS](Million Instruсtions perSecond)


2.时钟频率[MHz]


3.功率[mW / MHz]


4.输入/输出的线路数


5.所需的外围设备


6.可用性和辅助调试工具


7.开发人员的习惯与喜好


8.价格


 

以上的每一项都是独立的,需要单独进行考虑。

 

现今有几家厂商出品的单片机比较的出色。

 

如:MSP430(TexasInstruments德州仪器),AVR (Atmel 公司 ),PICxx (Microchip公司),H8(Hitachi日立),MC68 (Motorola摩托罗拉),以及生产8051的各种厂商。

 

不同单片机型号完成特定功能所需代码量的规模可以在下图中看到,其中16位表现最好的为MSP430,8位中表现最好的为AVR系列。


 


Рис. 1. 代码量规模走势比较图

 

单片机可达到的最高性能由时钟频率以及运行一个命令的周期时间决定。但不同的单片机规定的时钟周期间会有差异。

 



表一中列举了一系列型号单片机的分频系数

 

Таблица 1


 

从表中可以看到,PIC系列的单片机的分频系数为AVR和MSP430系列的4倍。

因此,在8位单片机中,来自Atmel公司的AVR型表现最为出色。



 




Рис. 2 分别采用各式型号单片机的完成相同任务的周期比较图

 

 




 

三、Atmel公司的AVR系列单片机


 (МК серии AVR фирмы Атмел)

 

Atmel公司的AVR系列单片机基于扩展型的哈佛架构,具有独立的数据总线和程序。这个8位的RISC单片机用于嵌入式应用,具有便利的编程模式,提供了广泛的软件和硬件的支持。

如果在使用说明中表明时钟频率最大可达到20MHz,即性能上可以达到近20MIPS。

 

所有的AVR型单片机都用于快闪记忆体的存储程序,位于处理器的单芯片上,并允许高达10,000的写入周期。此外,AVR系列单片机大多数拥有EEPROM内存构成,确保了高达10,000的擦除和读写信息的周期。具有闪存和EEPROM,就可以在内电路中进行编程。

将可编程的单片机安装在印刷电路板上之后,就可以通过代码的编写来制订和改变程序的运作。


AVR型的单片机能支持内部以及外部的RC发生器,对每个负载的负载能力最高可达20mA。AVR单片机可在非常宽的电压范围内工作,电压范围可在1.8V到6V之间。就因为这样,单片机的特点便是具有相当低的电流消耗值。例如,频率为4MHz下,耗费量只有3mA,而在节能模式下,耗费量仅2mA。

 

AVR型单片机存在着工业(记作“I类”- Industrial)和商业(记作“C“-Commercial)两种类型的性能标准。其中商业标准采用工作温度为0°C... +70°C之间,而工业标准为- 40°C...... +85°C。

 

AVR型单片机的线路目前有至少20种不同的类型,可分为四大组:

 

•   XMega AVR (前缀为 ATXmegaXXX);

•   Mega AVR (前缀为 ATmegaXXX);

•   Classic AVR (前缀为 AT90SXXX);

•   Tiny AVR (前缀为 ATtinyXXX);

下面对除Xmega AVR其他的三项做一个简要的介绍



Mega AVR:

     Mega AVR在AVR单片机四个系列中拥有最大的记忆体,最多的端口支持和最丰富的外设集。


Classic AVR:

Classic AVR 单片机系列包含不同的外设组合,拥有均衡的内存大小,不同数量的接口。因此,开发人员能够根据实际情 况做出最佳的选择,而不是使用不合适的接口数量,造成成本上的浪费。


Tiny AVR:

微小的Tiny AVR排在最后。作为非常廉价的晶体,价值大约1美元。

拥有数量不多的接口,可以在低压电源的或者有供源能力的外设下工作,如ADC。

 

由于AVR单片机系列的硬件功能相当的通俗易懂,因此如果要研究单片机,通过AVR系列来学习将是明智的选择。

 

 




 

四、AVR系列单片机的硬件特性和架构


(Аппаратные особенности и архитектураAVR-микроконтроллеров.)

 

在此讲义之中,学习过程将基于型号为Atmega16的单片机。

 

产品规格:

▲130个队列,即可以在一个时钟周期内执行的最大队列数。

▲约16 MIPS的最大输出功率(在16MHz的时钟频率下)

▲内置周期为2的乘法器

▲非易失性的程序储存器和数据:

     16KB的系统可编程程序存储器

     512字节的数据存储器

▲1KB的内建RAM

▲JTAG型接口

▲集成的外设

▲6种低能耗的模式

▲工作电压:

     2,7 - 5,5 V(ATmega16L);

4,5 - 5,5 V(ATmega16);

     ▲工作频率  

 

         0 - 8 МHz(ATmega16L);

 0 - 16МHz(ATmega16).



 

1.   ATmega16系列单片机的引脚分配

(Назначениевыводов МК ATMega16)

  


 


 

 引脚介绍:

PA7…PA0 –端口А的引脚;

PB7…PB0 –端口B的引脚;

PC7…PC0 –端口C的引脚;

PD7…PD0 –端口D的引脚

VCC – 数字电源部分

GND – 接地

RESET – 单片机复位输入端

XTAL1 –输入时钟信号端;

XTAL2 – 输出时钟信号端

AVCC –ADC电源

AREF –输入ADC的参考电压

AGND – 接地;

 

 


2.ATMega16单片机的架构

(Архитектура МК ATMega16)

AVR系列的单片机基于扩展型哈佛架构,是一种拥有单独的数据和地址总线的架构,程序存储器和数据存储器都具有独立的地址空间。

AVR系列的单片机为单芯片上的中央处理单元(CPU),ROM,RAM和外设的组合。

 

ATMega16单片机的架构如下图:



Рис. 1. ATMega16型单片机的架构图


 图中单词解释:


Генератор тактовых импульсов 时钟脉冲发生器

Счетчик команд 计数器

Указатель стека 堆栈指针

Память програми 存储器中的程序

ОЗУ RAM

16-разрядная шина команд16位总线指令

Рабочие регистр工作计数器

Регистр команд 注册指令

Декодер команд 指令解码器

Порт A   端口A

АЦП  ADC(模数转换器)

Порт B   端口B

Таймеры/счетчики   定时器/计数器

Сторожевой таймер 看门狗定时器

Память данных  数据存储器

Порт D  端口D

УАПП 串口

Компаратор比较器

Порт C 端口C

Последовательный интерфейс связи с периферией 外设的串行通信接口

 

ROM包含两个独立的区域 - 程序存储器和数据存储器。

单片机程序存储在程序存储器中,在数据存储器可以存储用户数据(此外,用户数据可以被暂时存储在RAM中)。

 


 

程序存储器地址空间的分布如下图:


 

Рис. 2. AVR的程序存储器的空间地址分布图


 

程序存储器分为两个部分 - 用户程序区(应用Flash区)和启动分区(Boot区)。

大部分AVR命令都拥有一个16位字的形式,用一个16位的命令来连接程序存储器的每个地址,由零地址开始(即0000)

 

程序执行命令后,单片机重置,由程序存储器中的零地址开始复位。

程序存储器在工作时主要利用了单级管道——当某命令在执行的时候,下一个命令从程序存储器器中进行选择。这种方式允许我们处理每个时钟周期,处于同一时间的命令,必须从程序计数器的队伍中进行选择(即程序计算器指定的下一个命令的地址)。




文章完。


7月4号补充:

AVR 单片机的堆栈与MCS 51 单片机不同, 是倒置的。凡倒置的堆栈, 堆栈指针初始化时都取栈区最高地址, 进栈为减地址, 出栈为加地址。



相关俄语单词列表:


архитектуры  架构


микроконтроллеров 单片机,微控制器


изначального 原始的


предназначения 目的,目标


управлять 控制


контроллер 控制器


предназначались旨在,打算


реализации 实施,执行


развитием 发展


вычислительной 计算


стало 是,为,被


содержащее  包含


кристалле水晶


ОЗУ  RAM


ПЗУ  ROM


процессор 处理器,CPU


порты ввода 输入端口


порты вывода 输出端口


таймеры 定时器


АЦП 模数转换器 ADC


ЦАП 数模转换器 DAC


аппаратные 硬件


аппаратные интерфейсы связи 硬件通讯接口


узлы 节点


По сути 事实上


Благодаря 归功于,感谢,得益于,owe to


области 对


разнообразны 各不相同


бытовые 家喻户晓的,家庭的


радиоэлектронные  电子的


промышленные 产业


подсистемами 分系统,子系统


опроса 测量


датчиков 传感器


встроенные системы  嵌入式系统


данных 数据


обработки 处理


наиболее  最


 распространенными 常见,普遍


процессорного  处理器的,CPU的


ядра 核心,内核


производителями制造商


ныне 现在,现今


декодер 解码器


команд 指令


регистр 注册


указатель 指数,索引,指针


стека 堆栈


память 内存,记忆


счетчик команд 程序计数器 


генератор тактовых импульсов 时钟脉冲发生器


таймеры 计时器


счетчики 定时器


модуль прерываний 中断模块


УАПП 自动再重启装置


порт 端口


8-разрядная шина команд и данных 8位总线指令和数据


построены 建立


средства 方式,手段


форматы данных 数据格式


представления 浏览


набор 设定


Недостаток 缺点


параллельном доступе 并行访问


синхронизируются  同步


инструкция 指令


потребление 消费


коммерческого 商业的


префикс 前缀 


数据传输指令表:


指令  操作数  说明  操作  影响标志  周期


MOV Rd , Rr 寄存器传送Rd←Rr 0≤d≤31 , 0≤r≤31 1 

LDS Rd , k 从SRAM 中装入Rd← ( k) 0 ≤ d≤ 31 , 0 ≤ k≤ 64K 3

 STS k , Rr 数据送SRAM ( k) ← Rr 0 ≤ r ≤31 , 0 ≤ k≤ 64 K 3

 LDI Rd , K 装入立即数Rd← K 16≤d≤31 , 0≤K≤255 2 

LD Rd , X X 间址取数Rd← ( X) 0 ≤ d≤ 31 2 

LD Rd , X + X 间址取数后增1 Rd← ( X) , X←X + 1 0≤d≤31 2

 LD Rd , - X X 减1 后间址取数X←X - 1 , Rd← (X) 0≤d≤31 2

ST X, Rr X 间址存数(X)←Rr 0≤r≤31 2

 ST X + , Rr X 间址存数后增1 (X)←Rr , X←X + 1 2

 ST - X, Rr X 减1 后间址存数X←X - 1 , ( X) ← R r 2 

LD Rd , Y Y 间址取数Rd← ( Y) 0≤d≤31 2

 LD Rd , Y + Y 间址取数后增1 Rd← ( Y) , Y←Y + 1 0≤d≤31 2

 LD Rd , - Y Y 减1 后间址取数Y←Y - 1 , Rd← (Y) 0≤d≤31 2

 LDD Rd , Y + q Y 带偏移量间址取数Rd← ( Y + q) 0 ≤ d≤ 31 , 0 ≤ q≤63 2

 ST Y , Rr Y 间址存数(Y)←Rr 0≤r≤31 2

 ST Y + , R r Y 间址存数后增1 (Y)←Rr , Y←Y + 1 2

 ST - Y, R r Y 减1 后间址存数Y←Y - 1 , ( Y) ← Rr 2 

STD Y + q , Rr Y 带偏移量间址存数(Y + q )← Rr 0≤q≤63 2

 LD Rd , Z Z 间址取数Rd← ( Z) 0≤d≤31 2

 LD Rd , Z + Z 间址取数后增1 Rd← ( Z) , Z←Z + 1 0≤d≤31 2

 LD Rd , - Z Z 减1 后间址取数Z←Z - 1 , Rd← ( Z) 0≤d≤31 2

 LDD Rd , Z + q Z 带偏移量间址取数Rd← ( Z + q ) 0 ≤ d≤ 31 , 0 ≤ q≤63 2

 ST Z , Rr Z 间址存数(Z)←R r 0≤r≤31 2

 ST Z + , Rr Z 间址存数后增1 (Z)←R r , Z←Z + 1 2

 ST - Z, Rr Z 减1 后间址存数Z←Z - 1 , (Z) ← Rr 2

STD Z + q , Rr Z 带偏移量间址存数(Z + q)← Rr 0≤q≤63 2

 LPM 从程序区取数R0← (Z) 2 IN Rd , P 从I/ O 口取数Rd←P 0≤d≤31 , 0≤P≤63 1 

OUT P, R r 数据送I/ O 口P←R r 0≤P≤63 1 

PUSH Rr 压栈( SP )←Rr , SP←S P - 1 2

 POP Rd 出栈S P←SP + 1 , Rd←( SP ) 0≤d≤31 2





































原文链接:http://blog.csdn.net/zhmxy555/article/details/7685596
加载中
返回顶部
顶部