跳到正文
XiaoGao 的个人博客

NO.08 · 硬件设计

数字电路与计算机组成:从逻辑门到自制 CPU

数字电路、计算机组成原理和计算机硬件设计笔记——用仿真软件从逻辑门开始,逐步搭出一台能运行汇编程序的简单计算机。

发布 DATE
字数 WORDS
1,147
阅读 READ
3 分钟

理解计算机最好的方式,是自己造一台。这份笔记从二进制和逻辑门开始,用 Digital 仿真软件逐步设计出一台能运行汇编程序的简单计算机,最后延伸到总线、引导程序和单片机启动流程。

学习路线

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
数字电路基础
├── 二进制数据表达
├── 基础逻辑门和组合逻辑
├── 运算器
├── 锁存器、触发器和寄存器
└── Digital 电路仿真
↓
计算机组成原理
├── 冯诺依曼模型
├── CPU、内存和 I/O
├── 程序执行过程
└── 简单计算机
↓
设计计算机硬件
├── ALU 和计算单元
├── 数据存储和指令存储
├── 控制信号和控制器
├── RAM、PC 和指令寄存器
└── 取指、译码与执行
↓
汇编语言、总线与引导程序
├── 自定义指令集和汇编程序
├── 总线与地址映射
└── 引导流程和单片机启动

内容概览

第一章:数字电路基础

  • 理解二进制、位(bit)、字节(byte)和数据单位;
  • 使用 Digital 仿真软件观察数字电路行为;
  • 掌握与门、或门、非门以及其他基础逻辑门;
  • 理解 SR 锁存器、D 锁存器和边沿触发 D 触发器,认识寄存器在时序电路中的作用。

第二章:计算机组成原理

  • 理解冯诺依曼模型计算机的基本结构、CPU、内存和输入/输出系统的职责;
  • 认识程序从存储到执行的基本过程;
  • 对比不同计算机体系结构的特点。

第三章:设计计算机硬件

本章以逐步扩展的方式设计一台简单计算机,重点关注数据通路、控制信号和指令执行:

  • 实现 ALU 和简单计算单元,使用寄存器实现数据存储;
  • 添加指令存储和程序计数器(PC),逐步增加 halt、str、ld、jmp、cmp 和 je 等指令;
  • 设计控制器并维护控制信号查找表,将指令存储和数据存储合并为统一 RAM;
  • 增加立即数功能和 B 寄存器,通过测试程序验证指令集与硬件电路。

第四章:设计计算机汇编语言

  • 根据自定义指令集编写汇编程序;
  • 使用加载、加法、跳转、比较和保存等指令组织程序流程;
  • 通过求和等示例测试汇编程序在自制计算机上的执行结果。

第五章至第六章:总线与引导程序

  • 理解总线的作用、基本组成和地址映射,以及 CPU 如何访问不同的存储和 I/O 设备;
  • 理解计算机上电后的引导流程,设计从初始化、加载到跳转执行的启动过程;
  • 了解单片机引导流程与通用计算机启动过程的联系。

第七章:常用数字芯片

与门、或门、非门、74HC245N(缓冲器/总线收发器)、74HC138(译码器)和 DS1302(实时时钟芯片)。

指令设计演进

课件中的自制计算机按照以下顺序逐步扩展:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
基础加法与减法
↓
halt 停机
↓
str 存储、ld 加载
↓
逻辑运算与寄存器选择
↓
jmp 无条件跳转
↓
cmp 条件比较、je 条件跳转
↓
统一 RAM 与取指/执行周期
↓
立即数
↓
B 寄存器与更完整的指令集
↓
汇编程序和引导程序

核心概念速查

概念 作用
Bit / Byte 最小数据单位 / 通常 8 个 bit
Logic gate 对二进制信号执行逻辑运算
Latch / Flip-flop 按控制条件 / 时钟边沿保存数据
Register 保存多个 bit 的时序电路
ALU 执行算术和逻辑运算
PC 保存下一条指令地址的程序计数器
RAM 保存可读写的数据或指令
Control unit 根据指令生成控制信号
Bus 连接 CPU、内存和 I/O 的共享传输通道
Instruction set 计算机能够识别和执行的指令集合

学习建议

  1. 先掌握二进制、逻辑门、真值表和基本时序电路;
  2. 使用 Digital 仿真软件跟踪每一个输入、输出和控制信号;
  3. 学习 CPU 设计时,分别记录数据通路、控制通路、时钟状态和指令格式;
  4. 阅读每条指令时,同时关注操作码、操作数、寄存器变化和内存变化;
  5. 从简单指令开始编写测试程序,再逐步验证跳转、立即数、寄存器和 I/O 功能。

仓库

    ↑↓ 选择↵ 打开>theme · >random · >top · >archive