微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 嵌入式编程之单片机的基本构成、工作原理

嵌入式编程之单片机的基本构成、工作原理

时间:07-09 来源:电子发烧友网 点击:

  本连载讲解作为嵌入式系统开发技术人员所必需具备的基础知识。这些基础知识是硬件和软件技术人员都应该掌握的共通技术知识。有了电子电路和数字电路的基础知识,就可以开始学习嵌入式系统的核心元件-单片机。本文我们将为大家介绍单片机的基础知识。

  在单片机入门系列讲座中,首先学习单片机的基本构成和工作原理、以及外围功能电路,然后,挑战一个实际单片机的运行。

  单片机是控制电子产品的大脑

  现如今,我们生活中的许多电器都使用了单片机。例如:手机、电视机、冰箱、洗衣机、以及按下开关,LED就闪烁的儿童玩具。那么,单片机在这些电器中究竟做了些什么呢?

  单片机是这些电器动作的关键,是指挥硬件运行的。例如:接收按钮或按键的输入信号,按照事先编好的程序,指挥马达和LCD的外围功能电路动作。

  那么,单片机是如何构成的呢?(图1)

  单片机是由CPU、内存、外围功能等部分组成的。如果将单片机比作人,那么CPU是负责思考的,内存是负责记忆的,外围功能相当于视觉的感官系统及控制手脚动作的神经系统。

  

  图1:单片机的构成要素

  尽管我们说CPU相当于人的大脑,但是它却不能像人的大脑一样,能有意识的、自发的思考。CPU只能依次读取并执行事先存储在内存中的指令组合(程序)。当然CPU执行的指令并不是"走路"、"讲话"等高难度命令,而是一些非常简单的指令,象从内存的某个地方"读取数据"或把某个数据"写入"内存的某个地方,或做加法、乘法和逻辑运算等等。然而这些简单指令的组合,却能实现许多复杂的功能。

  会思考的CPU

  让我们从CPU的构成来了解它的作用吧。(图2)

  

  图2:CPU的作用

  ◇程序计数器

  CPU读取指令时需要知道要执行的指令保存在内存的什么位置,这个位置信息称为地址(相当于家庭住址)。程序计数器(PC)就是存储地址的寄存器。通常,PC是按1递增设计的,也就是说,当CPU执行了0000地址中的指令后,PC会自动加1,变成0001地址。每执行一条指令PC都会自动加1,指向下一条指令的地址。可以说,PC决定了程序执行的顺序。

  ◇指令解码电路

  指令解码电路是解读从内存中读取的指令的含义。运算电路是根据解码结果操作的。确切地讲,指令解码电路就是我们在"数字电路入门(2)"中学过的解码电路,只不过电路结构稍微复杂些,所以,指令解码电路的工作原理就是从被符号化(被加密)的指令中,还原指令。

  ◇运算电路

  运算电路也称为ALU(Arithmetic and Logic Unit),是完成运算的电路。能进行加法、乘法等算术运算、也能进行AND、OR 、BIT-SHIFT等逻辑运算。运算是在指令解码电路的控制下进行的。通常运算电路的构成都比较复杂。

  ◇CPU内部寄存器

  CPU内部寄存器是存储临时信息的场所。有存储运算值和运算结果的通用寄存器,也有一些特殊寄存器,比如存储运算标志的标志寄存器等。也就是说,运算电路进行运算时,并不是在内存中直接运算的,而是将内存中的数据复制到通用寄存器,在通用寄存器中进行运算的。

  CPU的工作原理

  让我们通过一个具体运算3+4,来说明CPU的操作过程吧。

  假设保存在内存中的程序和数据如下。

地址 指令
(实际上指令是用二进制码表示的,为了方便理解,我们用文字说明)
0000 读取0100地址的内存,存入寄存器1
0001 读取0101地址的内存,存入寄存器2
0002 将寄存器1与寄存器2的值相加,结果存入寄存器1
地址 数据
0100 3
0101 4

  ◇步骤1:当程序被执行时,CPU就读取当前PC指向的地址0000中的指令(该操作称为指令读取)。经过解码电路解读后,这条指令的意思是"读取0100地址中的内容,然后,保存到寄存器1"。于是CPU就执行指令,从0100地址中读取数据,存入寄存器1。

  寄存器1: 0→3(由0变为3)

  由于执行了1条指令,因此,PC的值变为0001

  ◇步骤2:由于PC的值为0001,因此CPU就读取0001地址中的指令,经解码电路解码后,CPU执行该指令。然后PC再加1。

  寄存器2:0→4(由0变为4)

  PC:0001→0002

  ◇步骤3:由于PC的值为0002,因此CPU从0002地址中读取指令,送给指令解码电路。解码结果是:将寄存器1和寄存器2相加,然后将结果存于寄存器1。

  寄存器1:3→7

  PC:2→3

于是3+4的结果7被存于寄存器1,加法运算结束。CPU就是

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top