1. 数字电路基础回顾:二进制与逻辑门、组合逻辑与时序逻辑、触发器与寄存器、同步与异步概念

各位同学,欢迎来到《Verilog入门到串口收发实战》的第一章。

说实话,每次带新人,我都要先问一句:「你懂二进制吗?」

别笑。我见过不少写Verilog代码很溜的人,一遇到跨时钟域就翻车,根本原因就是数字电路基础不牢。所以这一章,咱们把地基打扎实。

1.1 二进制:数字电路的「母语」

数字电路只认两种状态:0和1。说白了,就是电压高一点(比如3.3V)算1,电压低一点(比如0V)算0。这就是二进制。

你想想看,我们平时用的十进制,逢十进一。二进制呢?逢二进一。就这么简单。

二进制与十进制的对应关系(4位为例):

二进制十进制说明
00000全0
00011最低位为1
00102第二位为1
01004第三位为1
10008最高位为1
111115全1,最大值

我在项目中遇到过一位同事,写状态机时直接用十进制数赋值,结果综合出来的电路面积大了三倍。嗯,这就是不懂二进制的代价。

1.2 逻辑门:搭建数字世界的「积木」

逻辑门是数字电路最基本的元件。与门、或门、非门,就这三样,能搭出任何复杂的数字系统。

  • 与门(AND):两个输入都是1,输出才是1。我常跟新人说:「与门很严格,一个都不能少。」
  • 或门(OR):只要有一个输入是1,输出就是1。说白了就是「有1则1」。
  • 非门(NOT):把输入取反。0变1,1变0。最简单的门,但最常用。

还有几个组合门:与非门(NAND)、或非门(NOR)、异或门(XOR)。这些在Verilog里直接用运算符表示,比如 & 是与,| 是或,~ 是非,^ 是异或。

我的小技巧:写Verilog时,尽量用括号明确运算优先级。别问我为什么——我曾经因为少写一个括号,仿真结果和实际电路对不上,查了整整两天。

1.3 组合逻辑与时序逻辑:两种「思维模式」

这是数字电路里最重要的两个概念。我换个说法你就能记住:

  • 组合逻辑:输出只取决于当前输入。就像开关控制灯泡,一按就亮,一松就灭。没有记忆能力。
  • 时序逻辑:输出不仅取决于当前输入,还取决于之前的状态。说白了就是「有记忆」的电路。

举个例子:一个加法器是组合逻辑,输入两个数,马上输出和。但一个计数器就是时序逻辑,它需要记住「我数到几了」。

组合逻辑 vs 时序逻辑(核心区别):

特性组合逻辑时序逻辑
记忆能力无有
输出依赖仅当前输入当前输入 + 历史状态
时钟不需要需要时钟驱动
典型电路加法器、多路选择器计数器、状态机

我个人习惯,在设计初期先分清哪些是组合逻辑、哪些是时序逻辑。这样写代码时思路特别清晰。

1.4 触发器与寄存器:数字电路的「记忆细胞」

触发器(Flip-Flop)是时序逻辑的基本单元。最常见的叫D触发器,它有一个数据输入D、一个时钟CLK、一个输出Q。

工作原理很简单:每个时钟上升沿(或下降沿),D触发器把D端的值「拍」到Q端。其他时间,Q保持不变。

寄存器呢?说白了就是多个D触发器并排放在一起。比如一个8位寄存器,就是8个D触发器,同时受同一个时钟控制。

避坑指南:我曾经犯过一个低级错误——在组合逻辑里用寄存器。结果综合出来的电路里多了一堆不必要的触发器,功耗和面积都超标。记住:只有需要「记住」数据的地方才用寄存器。

在Verilog里,寄存器用 reg 类型声明,但要注意:reg 不一定综合成寄存器,它也可能只是组合逻辑中的一个变量。这个坑我后面会细讲。

1.5 同步与异步:时钟的「纪律」

同步设计,就是所有寄存器都受同一个时钟控制。就像军队里所有人听同一个口令,步调一致。

异步设计呢?不同模块用不同的时钟,或者同一个模块里有些信号不受时钟控制。这就像两个乐队各打各的鼓点,容易乱套。

在实际项目中,90%以上的设计都是同步设计。为什么?因为同步设计容易分析、容易验证、不容易出bug。

我的经验:除非万不得已(比如必须处理两个不同频率的接口),否则一律用同步设计。异步设计里的亚稳态问题,处理起来真的很头疼。我见过一个项目,因为异步复位没处理好,芯片在某些温度下会随机复位——查了三个月才找到原因。

同步设计还有一个好处:时序约束容易写。你只需要告诉工具「时钟频率是多少」,工具就能自动检查所有路径是否满足时序要求。

本章知识体系

下面这张图,是我自己总结的数字电路基础知识框架。你把它记在脑子里,后面学Verilog会轻松很多。

数字电路基础:知识体系 数字电路基础 二进制 0和1的世界 逢二进一 逻辑门 与、或、非 组合逻辑基础 组合 vs 时序 有无记忆能力 是否依赖时钟 触发器与寄存器 D触发器原理 寄存器 = 多个触发器 同步 vs 异步:时钟的纪律

这张图把本章的核心内容串起来了。你从「二进制」出发,理解「逻辑门」如何搭建组合逻辑,再理解「组合逻辑 vs 时序逻辑」的区别,最后掌握「触发器与寄存器」以及「同步与异步」的概念。这就是数字电路的全部基础。

好了,第一章就到这里。记住:基础不牢,地动山摇。后面我们写Verilog代码时,这些概念会反复出现。到时候你回头看这一章,会发现——原来就这么点东西。

可可精品资料库