寄存器

Register

连接软硬件的桥梁

一方面,CPU 可以对寄存器进行读写;另一方面,寄存器的每一位都连接导线,可以控制外设电路的状态。寄存器中的每一位数据,都对应了硬件电路的状态,所以软件读写寄存器,就相当于控制硬件的执行
寄存器是数字电路中用于存储二进制数据和指令的时序逻辑电路。它由一个或多个触发器组成,能够存储多位二进制信息,是计算机和其他数字系统中高速、临时存储数据的基本单元。

Important

寄存器是连接软件和硬件的桥梁。一方面,CPU 可以对寄存器进行读写操作;另一方面,寄存器的每一位都连接着硬件电路,可以控制外设电路的状态。因此,软件通过读写寄存器,就能够直接控制硬件的执行。

一、基本概念与分类

寄存器根据其数据输入/输出方式和功能可以分为多种类型:

  1. 并行输入/输出寄存器:数据可以同时并行地输入和输出。
  2. 串行输入/输出寄存器:数据一位一位地串行输入和输出。
  3. 移位寄存器:数据可以在寄存器内部进行左移或右移操作,常用于串行-并行转换、并行-串行转换、数据处理和算术运算。
  4. 计数器:一种特殊的寄存器,其内容(状态)在时钟脉冲作用下按特定规律(如二进制序列)进行增减。

二、工作原理

一个 N 位寄存器由 N触发器组成,每个触发器存储一位二进制数据。所有触发器通常共享一个公共的时钟信号,以实现同步操作。当加载信号有效时,输入数据被并行地加载到各个触发器中;当移位信号有效时,数据在触发器之间进行移位。

例如,一个4位并行输入并行输出寄存器由4个 D 触发器组成,每个 D 触发器的 D 输入端连接到数据输入线,Q 输出端连接到数据输出线,所有触发器的时钟端连接到公共时钟线。

三、在微控制器中的作用

在微控制器(如51 单片机STM32)中,寄存器扮演着核心角色:

  1. 特殊功能寄存器 (SFR):这些寄存器用于控制微控制器的各种外设(如定时器、串口、GPIO等)和内部功能。通过直接读写这些寄存器,程序可以精确地控制硬件的行为。
    • 51 单片机:其编程模型高度依赖于对特殊功能寄存器的直接位操作,开发者需要深入了解每个寄存器的地址和位定义。
  2. 通用寄存器:用于临时存储数据、运算结果和地址信息,供 CPU 进行快速访问和处理。
  3. 程序计数器 (PC):存储下一条要执行指令的地址。
  4. 指令寄存器 (IR):存储当前正在执行的指令。
Note

尽管现代微控制器开发(如 STM32)通常会提供封装好的库函数来简化对外设的访问,但这些库函数的底层实现仍然是对相应寄存器的读写操作。理解寄存器的概念有助于更深入地理解硬件工作原理和进行底层优化。

四、其他应用

除了微控制器,寄存器在数字系统的各个层面都有广泛应用:

数字电路
时序逻辑电路
触发器
移位寄存器
计数器
CPU
51 单片机
STM32
特殊功能寄存器