第2章 AVR单片机的基本结构
2.1 单片机的基本组成
2.1.1 单片机的基本组成结构
学过MCS-51单片机的读者都知道单片机的基本组成,即单片机是由中央处理器(CPU中的运算器和控制器)、只读存储器(通常表示为ROM)、读写存储器(又称随机存储器,通常表示为RAM)、输入/输出口(又分为并行口和串行口,表示为I/O口)等组成。实际上单片机里面还有一个时钟电路,使单片机在进行运算和控制时,都能有节奏地进行。另外,还有所谓的“中断系统”,这个系统有“传达室”的作用,当单片机控制对象的参数到达某个需要加以干预的状态时,就可经此“传达室”通报给CPU,使CPU根据外部事态的轻重缓急来采取适当的应付措施。
那么,这么多组成模块是如何共同工作的呢?如图2-1所示,单片机内部有一条将它们连接起来的“纽带”,即所谓的“内部总线”。此总线有如大城市的“干道”,而CPU、ROM、RAM、I/O口、中断系统等就分布在此总线的两旁,并与它连通。从而,一切指令、数据都可经内部总线传送,有如大城市内各种物品的传送都经过干道进行。
图2-1 常见单片机的基本组成结构
2.1.2 单片机的基本单元与作用
典型的单片机包括了MCU单元、片内存储器、程序存储器、数据存储器、I/O口及寄存器。各组成部分功能如下:
1.MCU单元
MCU(Microcontroller Unit)单元部分包括了CPU、时钟系统、复位、总线控制逻辑等电路。CPU是按照面向测控对象、嵌入式应用的要求设计的,其功能有进行算术、逻辑、比较等运算和操作,并将结果和状态信息与存储器以及状态寄存器进行交换(读/写)。时钟和复位电路实现上电复位、信号控制复位,产生片内各种时钟及功耗管理等。总线控制电路则产生各类控制逻辑信号,满足MCU对内部和外部总线的控制。其中,内部总线用以实现片内各单元电路的协调操作和数据传输,而外部总线控制用于单片机外围扩展的操作管理。
2.片内存储器
单片机的存储器一般分为程序存储器和数据存储器,它们往往构成相互独立的两个存储空间,分别寻址,互不干扰。在这一点上,与通用计算机系统的结构是不同的。通用计算机系统通常采用冯·诺依曼结构,在这种结构体系中采用了单一的数据总线用于指令和数据的存取,因此数据和指令是存放在同一个存储空间中的,CPU使用同一条数据总线与数据和程序进行交换,如在计算机原理课程中介绍的8086/8088微处理器。而单片机的内部结构通常使用哈佛体系结构,在这种体系中采用分开的指令和数据总线,以及分开的指令和数据地址空间。单片机采用哈佛双(多)总线结构的优点是,指令和数据空间完全分开,分别通过专用的总线与CPU交换,可以实现对程序和数据的同时访问,提高了CPU的执行速度和数据的吞吐率。
早期的单片机,如典型的8031单片机,在片内只集成少量的数据存储器RAM(128/256B),没有程序存储器。因此,程序存储器和大容量的数据存储器需要进行片外的扩展,增加外围的存储芯片和电路,这给构成嵌入式系统带来了麻烦。后期的单片机则在片内集成了相当数量的程序存储器,如与8031兼容的AT89S51、AT89S52在片内集成了4K/8K的Flash程序存储器。而现在新型的单片机,则在片内集成了更多数量和更多类型的存储器。如AVR系列的ATmega16在片内就集成了16KB的Flash程序存储器,1KB的RAM数据存储器,以及512B的EEPROM数据存储器,这就大大方便了应用。
3.程序存储器
程序存储器用于存放嵌入式系统的应用程序。由于单片机嵌入式系统的应用程序在开发调试完成后不需要经常改变,因此单片机的程序存储器多采用只读存储器(ROM),用于永久性存储系统的应用程序。为适应不同的产品、用户和场合的需要,单片机的程序存储器有以下几种不同形式:
1)ROMLess型。这种形式的单片机片内没有集成程序存储器,使用时必须在单片机外部扩展一定容量的EPROM器件。因此,使用这种类型的单片机就必须使用并行扩展总线,增加芯片,增加硬件设计的工作量。
2)EPROM型。单片机片内集成了一定数量的EPROM存储器用于存放系统的应用程序。这类单片机芯片的上部开有透明窗口,可通过约15min的紫外线照射来擦除存储器中的程序,再使用专用的写入装置写入程序代码和数据,写入次数一般为几十次。
3)MaskROM型。使用这种类型的单片机时,用户要将调试好的应用程序代码交给单片机的生产厂商,生产厂商在单片机芯片制造过程的掩膜工艺阶段将程序代码掩膜到程序存储器中。这种单片机便成为永久性专用的芯片,系统程序无法改动,适合于大批量产品的生产。
4)OTPROM型。这种类型的单片机与MaskROM型的单片机有相似的特点。生产厂商提供新的单片机芯片中程序存储器可由用户使用专用的写入装置一次性编程写入程序代码,写入后也无法改动了。这种类型的单片机也是适用于大批量产品的生产。
5)FlashROM型。这是一种可供用户多次擦除和写入程序代码的单片机。它的程序存储器采用快闪存储器(FlashMemory),现在可实现大于1万次的写入操作。
内部集成FlashROM型单片机的出现,以及随着Flash存储器价格的下降,使得使用FlashROM的单片机正在逐步淘汰使用其他类型程序存储器的单片机。由于FlashROM可多次擦除(电擦除)和写入的特性,加上新型的单片机又采用了在线下载ISP技术(In System Program,即无需将芯片从系统板上取下,直接在线将新的程序代码写入单片机的程序存储器中),不仅为用户在嵌入式系统的设计、开发和调试带来了极大的方便,而且也适用于大批量产品的生产,并为产品的更新换代提供了更广阔的空间。
4.数据存储器
单片机在片内集成的数据存储器一般有两类:随机存储器(RAM)和电可擦除存储器(EEPROM)。
1)随机存储器(RAM)。在单片机中,随机存储器(RAM)是用来存储系统程序在运行期间的工作变量和临时数据的。一般在单片机内部集成一定容量(32~512B或更多)的RAM。这些小容量的数据存储器以高速RAM的形式集成在单片机芯片内部,作为临时的工作存储器使用,可以提高单片机的运行速度。
在单片机中,常把内部寄存器(如工作寄存器、I/O寄存器等)在逻辑上也划分在RAM空间中,这样既可以使用专用的寄存器指令对寄存器进行操作,也可将寄存器当做RAM使用,为程序设计提供了方便和灵活性。
对一些需要使用大容量数据存储器的系统,就需要在外部扩展数据存储器。这时,单片机就必须具备并行扩展总线的功能,同时外围也要增加RAM芯片和相应的地址锁存、地址译码等电路。这不仅增加了硬件设计的工作量,产品的成本,同时降低了系统的可靠性。
目前,许多新型单片机片内集成的RAM容量越来越大。片内集成的RAM容量增加,不仅减少了在片外扩展RAM的必要性,提高了系统的可靠性,而且更重要的是,使得单片嵌入式系统的软件设计思想和方法有了许多改变和发展,给编写系统程序带来很大的方便,更加有利于结构化、模块化的程序设计。
2)电可擦除存储器(EEPROM)。一些新型的单片机,在芯片中还集成了电可擦除存储器(EEPROM)的数据存储器。这类数据存储器用于存放一些永久或比较固定的系统参数,如放大倍率、电话号码、时间常数等。EEPROM的寿命大于10万次,具有掉电后不丢失数据的特点,并且通过系统程序可以随时修改,这些特性都给用户设计开发产品带来极大的方便和想象空间。
5.输入/输出(I/O)口
为了满足嵌入式系统“面向控制”的实际应用需要,单片机提供了数量众多、功能强、使用灵活的输入/输出口,简称I/O口。端口的类型可分为以下几种:
1)并行总线输入/输出口(并行I/O口)。用于外部扩展和扩充并行存储器芯片或并行I/O芯片等使用,包括数据总线、地址总线和读写控制信号等。
2)通用数字I/O口。用于外部电路逻辑信号的输入和输出控制。
3)片内功能单元的输入/输出口。如定时器/计数器的计数脉冲输入,外部中断源信号的输入等。
4)串行I/O通信口。用于系统之间或与采用专用串行协议的外围芯片之间的连接和交换数据。如UART串行接口(RS232),I2C串行接口,SPI串行接口,USB串行口等。
5)其他专用接口。一些新型的单片机还在片内集成了某些专用功能的模拟或数字I/O口,如A/D输入、D/A输出接口,模拟比较输入端口,脉宽调制(PWM)输出端口等。有的单片机还将LCD液晶显示器的接口也集成到单片机芯片中了。
为了减少芯片引脚的数量,又能提供更多性能的I/O口给用户使用,大多数的单片机都采用了I/O口复用技术,即某一端口,它既可作为一般通用的数字I/O口使用,也可作为某个特殊功能的端口使用,用户可根据系统的实际需要来定义使用。这样就为设计开发提供了方便,大大拓宽了单片机的应用范围。
6.操作管理寄存器
操作管理寄存器也是单片机芯片中的重要组成部分之一。它的功能是管理、协调、控制和操作单片机芯片中的各功能单元的使用和运行。这类寄存器的种类有状态寄存器、控制寄存器、方式寄存器、数据寄存器等。各种寄存器的定义、功能、状态、相互之间的关系和应用相对比较复杂,而且往往与相应的功能单元的使用紧密相关。因此,用户应非常熟悉各个寄存器的作用以及如何与不同的功能单元的配合使用,这样才能通过程序指令对其编程操作,以实现对单片机芯片中各种功能的正确使用,充分发挥单片机的所有特点和性能,设计和开发出高性能、低成本的电子产品。可以这样讲,当你对某个单片机芯片中各个操作管理寄存器的作用、功能、定义非常透彻地掌握了,那么你已经完全精通和能够熟练使用该单片机了。