📖 第1课:数字电路基础与RISC-V入门

在看 rv_control 芯片之前,先搞懂几个基本概念:什么是数字电路、RISC-V 是什么、Verilog 怎么描述硬件。

🎯 本课目标

理解组合逻辑vs时序逻辑、时钟/复位的作用、RISC-V指令集的基本概念、Verilog和软件编程的区别。

一、组合逻辑 vs 时序逻辑

两种逻辑的对比

flowchart LR subgraph COMB["组合逻辑: 输出只取决于当前输入"] C1["a ──→ AND门 ──→ out = a & b"] C2["b ──→"] end subgraph SEQ["时序逻辑: 输出取决于输入+历史"] S1["D ──→ 触发器(FF) ──→ Q"] S2["clk ──→ ↑ 上升沿更新"] end style COMB fill:#3987e5,color:#fff style SEQ fill:#199e70,color:#fff

组合逻辑就像普通计算器——输入变了,输出立刻变(经过一段延迟后)。比如 `AND` 门:两个输入都是 1,输出才是 1。

时序逻辑的关键是时钟——在时钟的上升沿(从0变1的瞬间)才更新输出。触发器(Flip-Flop, FF)是最基本的时序元件,它的输出会"记住"上一次上升沿时的输入。

二、时钟和复位 —— 芯片的心跳和重启

时钟(clk)就是一根周期性地在 0 和 1 之间跳变的信号线。它像心跳一样给芯片里所有的触发器提供同步节奏。rv_control 的时钟频率是 200MHz——也就是每秒跳变 2 亿次。

复位(rst_n)让所有触发器回到初始状态(通常是 0)。rv_control 用的是"异步复位"——`rst_n=0` 时立即复位(不等时钟沿),`rst_n=1` 时正常工作。`_n` 后缀表示"低有效"(0=复位, 1=正常)。

三、RISC-V 是什么?

RISC-V 是一套开源免费的CPU指令集——它定义了 CPU 应该支持哪些指令、每种指令怎么编码,但不强制你用特定的硬件实现。你可以用 VHDL、Verilog、甚至电路板搭出来。

rv_control 用的是 RV32I——"32位基础整数指令集":

四、Verilog 和软件编程有什么不同?

软件编程 (C/Python)硬件描述 (Verilog)
指令顺序执行所有语句同时执行(并行)
可以随时改变变量`wire` 是连线,不能"赋值两次"
循环自动串行`for` 循环是"复制N份电路"
`=` 是赋值`<=` 是非阻塞赋值(在时钟沿一起更新)
`if/else` 是分支`if/else` 被综合成 MUX(多路选择器)
💡 理解 Verilog 的关键

Verilog 描述的不是"步骤"而是电路连接关系。`assign out = a & b;` 的意思是"在芯片上放一个 AND 门,输入接 a 和 b,输出接 out",而不是"计算 a & b 然后存到 out"。

五、知识图谱:rv_control 入门概念关系

基础概念之间的关联

graph TB A["组合逻辑
(AND/OR/NOT门)"] --> D["CPU ALU
(算数逻辑单元)"] B["时序逻辑
(触发器FF)"] --> E["CPU 寄存器
(x0-x31)"] B --> F["流水线寄存器
(IF→ID→EX)"] C["时钟 clk"] --> B C --> G["时钟树 (CTS)
(同步分发时钟)"] H["RISC-V 指令集
(RV32I)"] --> I["CPU 译码
(32bit→操作+操作数)"] A --> J["总线译码器
(地址→设备选择)"] B --> K["外设 FIFO
(8字节缓冲)"]