一、串口通信介绍
1.1、核心概念
并行通信 (Parallel):像高速公路,8 车道同时跑 8 辆车。速度快,但占用引脚多,且在长距离传输时容易出现'时钟偏差(Skew)'导致数据错位。
串行通信 (Serial):像单行道,车必须一辆接一辆地排队走。引脚少,成本低,且现代高速串行技术(如 PCIE, SATA)通过差分信号解决了速度问题。
我们常说的'串口'通常特指 UART (Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)。
1.2、逻辑层面
UART 是一种异步通信协议。
- 异步 (Asynchronous):发送方和接收方之间没有公共的时钟线(不像 SPI 或 I2C 有 CLK 线)。
- 约定:双方必须提前约定好相同的波特率 (Baud Rate),否则就像两个人语速不同,无法交流。
数据帧格式 (Frame Format)
FPGA 的状态机就是根据这个时序图来写的:
- 空闲位 (Idle):默认高电平(1)。
- 起始位 (Start Bit):拉低 1 个周期。告诉接收方:'注意,我要开始说话了!'(这是我们在 Verilog 里检测下降沿的原因)。
- 数据位 (Data Bits):通常是 8 位(1 Byte),LSB (低位) 先发。
- 校验位 (Parity):可选(奇/偶/无)。用于简单的检错,但在工业应用中常被 CRC 取代。
- 停止位 (Stop Bit):拉高 1 或 2 个周期。表示一帧结束,并为空闲状态做准备。
1.3、物理层
FPGA 产生的信号只是逻辑上的 0 和 1(TTL 电平),要传输出去,需要穿上不同的'外衣'(电气标准),也就是 PCB 板上的芯片。
| 标准 | 传输方式 | 电平特征 | 典型距离 | 拓扑 | 典型应用 |
|---|---|---|---|---|---|
| TTL | 单端 | 0~5V | <30cm | 点对点 | 芯片间通信 |
| RS232 | 单端 | ±5~±12V | <15m | 点对点 | 老式 PC,工控机 |
| RS485 | 差分 | A-B 电压差 | <1200m | 多点/总线 | PLC、电表 |
| RS422 | 差分 | 4 线全双工 | <1200m | 点对多 | 较少见,类 485 |
注意:
- RS-232 是负逻辑(-12V 是逻辑 1),但 MAX3232 芯片会自动帮你翻转,你在 FPGA 里只需按正逻辑写。
- RS-485 是抗干扰之王,因为它看的是两根线的压差,外界的共模噪声会被抵消。
1.4、FPGA 实现
在设计代码时应特别关注以下影响设计稳定性的细节:
A. 采样策略 (Sampling)



