硬件寄存器的理解
1 从软件角度看的概念
就是设备的配置文件。。。(唯一的例外是参与运算的通用寄存器,R0~R15),参考中的这个图个人觉得非常贴切。就是0和1的开关,可以看到,一共是15位。
如果要说美中不足,就是有些硬件变化,好像不能反映。好像跳闸可以,开关自动往上跳,表示电路中存在短路。
2 寄存器的硬件实现
从软件来说,其实不关心寄存器的硬件实现。只要能存储,不管是寄存器,RAM,FLASH,甚至打孔纸都可以。
但是在现代计算机系统中,考虑到速度,成本这些内容,寄存器主要使用的D触发器实现。触发器其实很像之前接触过的锁存器,只是改成了上升沿才触发。
下面是几种存储的比较。
| 存储类型 | 最小单元(1 bit) | 存储原理 | 特点 |
| 寄存器 | D 触发器 (约 20-30 个晶体管) | 电流回路。只要有电,电子就在门电路里打转。 | 极其昂贵、极大、极快。 |
| RAM (SRAM) | 6-T 单元 (6 个晶体管) | 交叉耦合锁存。结构比触发器紧凑,适合大规模集成。 | 成本中等、容量中等、速度快。 |
| Flash | 浮栅晶体管 (1 个晶体管) | 捕获电荷。把电子“关进”一个绝缘层里。 | 便宜、极密、掉电不丢、写得慢。 |
D触发器(Data Flip-Flop)
3 硬件实验
使用元器件:
74HC175 芯片(内含 4 个 D 触发器),16DIP封装。
4 个拨码开关(作为输入数据 $D_0-D_3$)。
4 个 LED 灯(作为输出显示 $Q_0-Q_3$)。
1 个点按开关(作为时钟信号 Clock,即“保存键”)。
面包板、电阻、5V 电源。
74HC175引脚定义:
| 引脚类型 | 名称 | 对应 CPU 的概念 | 接线建议 |
| 电源 | VCC (16), GND (8) | 供电系统 | 接 5V 和地线 |
| 数据输入 | D1-D4 (4, 5, 12, 13) | Data Bus (数据总线) | 接 4 个拨码开关 |
| 时钟输入 | CLK (9) | Clock Signal (时钟脉冲) | 接一个点按开关(作为写入触发) |
| 数据输出 | Q1-Q4 (2, 7, 10, 15) | Internal State (内部状态) | 接 4 个 LED 灯(加限流电阻) |
| 强制清零 | MR (1) | Reset (重置) | 接 VCC(正常工作),接 GND(清零) |
接线逻辑:
将拨码开关连接到 74HC175 的 $D$ 输入引脚。
将 LED 连接到 74HC175 的 $Q$ 输出引脚。
将点按开关连接到芯片的 CLK 引脚。
实验现象:
拨动开关,LED 灯不会跟着变。当按下点按开关的一瞬间,芯片捕捉到电平上升沿。此时,开关的状态被“锁”进芯片,LED 灯亮起。松开手,哪怕把开关全部拨乱,LED 灯依然保持刚才那一刻的状态。
74HC175 是上升沿触发。这意味着在D端拨动开关时,LED 没反应。只有当按下 CLK 开关,电平从低变高的一瞬间,数据才会被“采样”并存入。
回头做了实验。。。不过并不是很成功。我是只接了一个LED,但是显示的状态比较异常,尤其是CLK那个角,甚至有时候要手放在旁边感应才会亮。。。
暂时不知道原因。后面有机会再解决吧。
https://www.youtube.com/watch?v=6GbTk753Muk
软件是如何控制硬件的?单片机软硬件互动的核心秘密