ATmega16单片机的内部结构

1988天前 · AVR单片机 · 332次阅读

主要构成部分:

  • AVR CPU部分。
  • 程序存储器Flash。
  • 数据存储器RAM和EEPROM。
  • 各种功能的外围接口、I/O口,以及它们相关的数据、控制、状态寄存器等。

中央处理器CPU

包括:

  • 算术逻辑单元ALU
  • 程序计数器PC
  • 指令寄存器
  • 指令译码器
  • 32个8位快速访问通用寄存器组

运算逻辑单元ALU

功能:进行算术运算和逻辑运算;可对半字节(4位)、单字节等数据进行操作。
操作结果的状态,如产生进位、结果为零的状态信息将影响到状态寄存器SREG相应的标志位。
运算逻辑单元ALU还包含一个布尔处理器,用来处理位操作。它可执行置位、清0、取反等操作。
还能实现无符号数、有符号数以及浮点数的硬件乘法操作。一次硬件乘法操作的时间为2个时钟周期。

程序计数器PC、指令寄存器和指令译码器

程序计数器PC用来存放下一条需要执行指令在程序存储器空间的地址(指向Flash空间)。
取出的指令存放在指令寄存器中。
然后送入指令译码器产生各种控制信号,控制CPU的运行(执行指令)。

通用工作寄存器组

AVR中,由命名R0~R31的32个8位通用工作寄存器构成一个“通用快速寄存器组”。
AVR CPU中的ALU与这32个通用工作寄存器直接相连,为了使ALU能够高效、灵活地对寄存器组进行访问操作,通用寄存器组提供和支持ALU使用以下4种不同的数据输入/输出的操作方式:

  • 提供一个8位源操作数,并保存一个8位结果。
  • 提供两个8位源操作数,并保存一个8位结果。
  • 提供两个8位源操作数,并保存一个16位结果。
  • 提供一个16位员操作数,并保存一个16位结果。

这样一来,AVR大多数操作工作寄存器组的指令都可以直接访问所有的寄存器,而且这样的指令的执行时间都只有一个时钟周期。

系统时钟部件

系统时钟

ATmega16的片内含有4种频率(1/2/4/8MHz)的RC振荡源,可直接作为系统的工作时钟使用。同时片内还设有一个由反向放大器所构成的OSC(Oseillator)振荡电路,外围引脚XTAL1和XTAL2分别为OSC振荡电路的输入端和输出端,用于外接石英晶体等,构成高精度的或其他标称频率的系统时钟系统。
ATmega16最高的工作频率为16MHz,但频率越高耗电量也会更大。
为AEmega16提供系统时钟源有以下3种方式:

  • 直接使用片内的1/2/4/8MHz的RC振荡源
  • 在引脚XTAL1和XTAL2上外接由石英晶体和电容组成的谐振回路,配合片内的OSC振荡电路构成的振荡源。
  • 直接使用外部的时钟源输出的脉冲信号。

看门狗时钟

在AVR片内还集成了一个1MHz的独立的时钟电路,它仅供片内的看门狗定时器(WDT)使用。因此,AVR片内的WDT是独立硬件形式的看门狗,使用AVR可以省掉外部的WDT芯片,使用WDT可以有效地提高系统运行的可靠性。

CPU的工作时序

AVR CPU的工作是由系统时钟直接驱动的,在片内不再进行分频。
CPU在启动后的第一个时钟周期取出第一条指令,在第二个时钟周期执行取出的指令,同时有取出第二条指令,依次进行。如此,按流水线的形式进行取指,使AVR单片机可以以非常高的速度执行指令。

存储器

AVR芯片内集成了Flash程序存储器、SRAM数据存储器、EEPROM数据存储器,3个存储器空间相互独立,物理结构也不同。

存储器一个存储单元其他
Flash存储器16位(字)作为数据读取时,以字节为单位;作为擦除、写入时,以页为单位
SRAM数据存储器8位(字节)编址方式采用与工作寄存器组、I/O寄存器和SRAM统一寻址的方式
EEPROM数据存储器8位(字节)读/写操作都以字节为单位

I/O端口

ATmega16有4个8位的双向I/O端口PA、PB、PC、PD,它们对外对应32个I/O引脚,每一位都可以独立地用于逻辑信号的输入和输出。在5V工作电压下:

  • 输出高电平时,每个引脚可输出达20mA的驱动电路。
  • 输出低电平时,每个引脚可吸收最大为40mA的电流,可直接驱动发光二极管LED和小型继电器。
👍 0

none

最后修改于1982天前

评论

贴吧 狗头 原神 小黄脸
收起

贴吧

狗头

原神

小黄脸

目录

avatar

未末

迷失

126

文章数

275

评论数

7

分类