# 串行输出与并行输出详解:原理、时序、优缺点及应用场景
串行输出与并行输出详解:原理、时序、优缺点及应用场景
前言
在单片机、嵌入式系统、数字电路和计算机组成原理中,数据经常需要在芯片、模块和设备之间传输。
按照多个数据位的传输方式,可以将数据传输简单分为两类:
- 串行输出:多个数据位按照时间顺序,一个接一个地传输。
- 并行输出:多个数据位通过多条数据线,在同一时刻一起传输。
可以用道路交通来理解:
串行输出像单车道,车辆需要一个接一个通过。
并行输出像多车道,多辆车可以同时通过。
本文将从基本原理、工作时序、优缺点、常见接口和应用场景等方面,详细介绍串行输出与并行输出的区别。
一、串行输出和并行输出的直观区别
假设现在需要传输一个8位二进制数据:
101100101. 串行输出
串行输出会将8个数据位按照时间顺序依次发送。
时刻 t0:1 时刻 t1:0 时刻 t2:1 时刻 t3:1 时刻 t4:0 时刻 t5:0 时刻 t6:1 时刻 t7:0可以简化表示为:
发送端 ── 1 ── 0 ── 1 ── 1 ── 0 ── 0 ── 1 ── 0 ──> 接收端 时间方向每一个时间段只传输一位数据。
2. 并行输出
并行输出会使用多条数据线,每一条数据线负责传输一个数据位。
D7 = 1 D6 = 0 D5 = 1 D4 = 1 D3 = 0 D2 = 0 D1 = 1 D0 = 0可以简化表示为:
发送端 ── D7:1 ──> 接收端 ── D6:0 ──> ── D5:1 ──> ── D4:1 ──> ── D3:0 ──> ── D2:0 ──> ── D1:1 ──> ── D0:0 ──>接收端可以在同一个采样时刻获得完整的8位数据。
二、什么是串行输出
串行输出是指多个数据位通过一条或少量数据通道,按照规定的时间顺序逐位发送。
串行输出的核心特点并不是“整个系统只能有一根线”,而是:
同一个数据通道中的多个数据位,需要按照时间顺序依次出现。
例如:
- UART一般使用TX和RX数据线;
- SPI通常包含时钟线、数据线和片选线;
- I2C通常包含SCL和SDA两条信号线。
虽然这些接口可能不止一根线,但数据仍然是按照时间顺序逐位传输的,因此它们都属于串行接口。
1. 串行输出的基本结构
一个简单的串行输出系统可以表示为:
发送端 → 数据线 → 接收端根据具体通信协议,还可能包含:
- 时钟信号;
- 片选信号;
- 起始位;
- 停止位;
- 校验位;
- 应答信号。
由于串行传输使用的数据线较少,因此可以减少芯片引脚占用和PCB布线压力。
三、串行输出的工作过程
串行输出一般包括以下几个步骤。
第一步:发送端准备数据
假设发送端需要发送一个8位数据:
10110010第二步:将数据拆分成多个数据位
发送端将完整数据拆分成独立的数据位:
1、0、1、1、0、0、1、0第三步:按照时间顺序发送
发送端根据时钟频率或通信波特率,依次将每一位数据放到数据线上。
时间:t0 t1 t2 t3 t4 t5 t6 t7 数据: 1 0 1 1 0 0 1 0第四步:接收端按照时序采样
接收端需要在正确的时间读取数据线上的高低电平。
如果采样时间不正确,就可能把原本的0读取成1,或者把原本的1读取成0。
第五步:重新组合数据
接收端将接收到的数据位按照原来的顺序重新组合:
1 + 0 + 1 + 1 + 0 + 0 + 1 + 0最终还原为:
10110010因此,串行传输不仅要保证数据内容正确,还要保证数据位的先后顺序正确。
四、串行输出的优点
1. 占用数据线少
串行传输通常只需要一条或少量数据线。
对于引脚资源有限的单片机来说,这是一个非常重要的优势。
2. PCB布线简单
由于信号线数量少,PCB上的走线数量也会减少。
这能够降低:
- PCB布线难度;
- 连接器尺寸;
- 过孔数量;
- 电路板面积;
- 线缆成本。
3. 硬件成本较低
当数据线数量减少后,芯片引脚数量、连接器针脚数量和PCB布线资源也会减少,因此整体硬件成本通常更低。
4. 更适合较长距离传输
并行传输需要保证多条数据线之间的时序一致,而串行数据通常集中在一条数据通道上传输,因此更容易控制线路之间的时序差异。
5. 便于实现高速差分通信
现代高速通信接口大量采用串行传输,例如:
- USB;
- PCI Express;
- SATA;
- HDMI;
- Ethernet。
这些接口通过高速串行、差分信号、数据编码和时钟恢复等技术,实现了非常高的数据传输速率。
五、串行输出的缺点
1. 单个时刻传输的数据位较少
普通串行传输在一个时钟周期内通常只传输一位数据。
如果需要发送8位数据,就需要连续传输多个时钟周期。
2. 需要进行串并转换
发送端需要将完整数据拆分成串行数据。
接收端需要将收到的串行数据重新组合成完整数据。
3. 依赖通信协议
接收端必须知道:
- 数据什么时候开始;
- 每一位持续多长时间;
- 数据按照什么顺序发送;
- 是否存在校验位;
- 数据什么时候结束。
如果发送端和接收端的通信参数不一致,就可能导致数据接收错误。
4. 提高速度会增加系统要求
提高串行通信速率后,对以下因素的要求也会提高:
- 时钟精度;
- 信号完整性;
- 抗干扰能力;
- 收发器性能;
- PCB阻抗控制;
- 接收端采样能力。
六、常见的串行通信接口
1. UART
UART是一种常见的异步串行通信接口。
常见信号包括:
TX:发送数据 RX:接收数据 GND:公共地UART通信双方通常不需要共享时钟线,而是提前约定相同的波特率。
常见应用包括:
- 单片机调试串口;
- GPS模块;
- 蓝牙模块;
- 串口传感器;
- 单片机与上位机通信。
需要注意的是,UART通常是双向通信接口,而“串行输出”主要描述其中的发送方向。
2. SPI
SPI是一种同步串行通信接口。
常见信号包括:
SCLK:串行时钟 MOSI:主机输出、从机输入 MISO:主机输入、从机输出 CS:片选信号SPI通常具有较高的通信速率,常用于:
- Flash存储器;
- ADC和DAC;
- 显示屏;
- 高速传感器;
- 无线通信模块。
SPI虽然包含多根信号线,但每一条数据线上的数据仍然按照时间顺序逐位传输,因此SPI属于串行接口。
3. I2C
I2C通常使用两条信号线:
SCL:时钟线 SDA:数据线I2C支持多个设备连接在同一条总线上,常用于:
- 温湿度传感器;
- EEPROM;
- 实时时钟;
- 电源管理芯片;
- 配置类外设。
七、什么是并行输出
并行输出是指多个数据位分别通过多条数据线,在同一个时刻同时输出。
例如,一个8位并行接口通常包含8条数据线:
D7、D6、D5、D4、D3、D2、D1、D0如果需要输出数据:
10110010发送端可以把每一位数据放到对应的数据线上:
D7 = 1 D6 = 0 D5 = 1 D4 = 1 D3 = 0 D2 = 0 D1 = 1 D0 = 0接收端在时钟、锁存信号或数据有效信号到来时,对所有数据线进行采样,一次获得完整的8位数据。
八、并行输出的工作过程
第一步:发送端准备多位数据
发送端准备一个完整的数据字节:
10110010第二步:将不同数据位放到不同线路
发送端将每一个数据位放到对应的数据线上:
D7 → 1 D6 → 0 D5 → 1 D4 → 1 D3 → 0 D2 → 0 D1 → 1 D0 → 0第三步:等待数据稳定
由于不同数据线的长度、负载和电气特性可能不同,各条线路上的数据不一定在完全相同的瞬间稳定。
因此,发送端需要保留一定的数据建立时间。
第四步:产生采样或锁存信号
当数据稳定后,发送端产生时钟、锁存或数据有效信号。
第五步:接收端同时采样
接收端在规定时刻同时读取D0到D7的数据状态。
D7:1 ───────── D6:0 ───────── D5:1 ───────── D4:1 ───────── D3:0 ───────── D2:0 ───────── D1:1 ───────── D0:0 ───────── ↑ 同时采样接收端一次即可获得完整数据:
10110010九、并行输出的优点
1. 单次可以传输多个数据位
8位并行总线在一次采样中可以传输8位数据。
16位并行总线在一次采样中可以传输16位数据。
2. 单周期吞吐量高
在相同总线时钟条件下,并行接口可以在一个周期内传输更多数据。
例如:
1位串行接口:一个周期传输1位 8位并行接口:一个周期传输8位 16位并行接口:一个周期传输16位3. 数据结构直观
每一条数据线对应一个数据位,硬件逻辑比较直观。
4. 适合短距离高速连接
在同一块PCB或者相邻芯片之间,并行接口可以获得较高的单周期数据吞吐量。
十、并行输出的缺点
1. 占用芯片引脚多
一个8位并行接口至少需要8条数据线。
如果再加上时钟、片选、读写和锁存信号,实际占用的引脚数量会更多。
2. PCB布线复杂
多条数据线需要同时连接发送端和接收端,容易造成:
- PCB走线密集;
- 过孔数量增加;
- 连接器体积增大;
- PCB层数增加;
- 布线成本提高。
3. 数据线之间可能存在时序偏差
不同数据线的物理长度、负载和寄生参数很难完全相同,因此数据到达接收端的时间可能存在差异。
这种现象通常称为:
数据偏斜如果某些数据线提前到达,某些数据线延后到达,接收端就可能在错误的时间读取到不完整的数据。
4. 高速时需要进行等长布线
为了减小多条数据线之间的传播延迟差异,高速并行总线通常需要进行等长设计。
这会明显增加PCB设计难度。
5. 不适合长距离传输
传输距离增加后,线路延迟、信号反射、串扰和电磁干扰都会变得更加明显。
因此,并行接口通常更适合芯片内部、设备内部或同一块电路板上的短距离连接。
十一、常见的并行接口
并行传输常见于以下场景:
- CPU与存储器之间的数据总线;
- MCU的GPIO并行输出;
- SRAM、SDRAM等存储器接口;
- RGB LCD显示接口;
- 摄像头并行数据接口;
- FPGA内部数据通道;
- 传统打印机并口。
例如,单片机可以通过8个GPIO引脚同时输出一个字节:
#include<stdint.h>voidparallel_output(uint8_tdata){// 示例代码:将一个字节写入8位GPIO端口GPIO_PORT=data;}当输出数据为:
parallel_output(0xB2);0xB2对应的二进制形式为:
101100108个GPIO引脚会分别输出对应的高低电平。
十二、串行输出与并行输出对比
| 比较项目 | 串行输出 | 并行输出 |
|---|---|---|
| 数据传输方式 | 按照时间顺序逐位传输 | 多位数据同时传输 |
| 数据线数量 | 较少 | 较多 |
| 芯片引脚占用 | 较少 | 较多 |
| PCB布线复杂度 | 较低 | 较高 |
| 硬件成本 | 通常较低 | 通常较高 |
| 单周期传输位数 | 通常较少 | 通常较多 |
| 传输距离 | 更适合较长距离 | 更适合较短距离 |
| 同步要求 | 相对容易控制 | 多条数据线需要保持同步 |
| 数据偏斜问题 | 相对较少 | 比较明显 |
| 典型接口 | UART、SPI、I2C | 存储器总线、LCD并口、GPIO并口 |
| 典型应用 | 模块通信、传感器、设备间通信 | 板内总线、存储器、显示接口 |
十三、并行传输一定比串行传输快吗
很多初学者会认为:
并行接口一次可以传输多位数据,所以并行传输一定比串行传输快。
这种说法并不完全正确。
在较低频率、较短距离和相同时钟频率条件下,并行传输确实可以在单个周期内传输更多数据。
例如:
8位并行总线:一个周期传输8位 1位串行总线:一个周期传输1位但是,当通信速率不断提高时,并行总线会遇到很多问题:
- 多条数据线的传播延迟不一致;
- 数据线之间可能产生串扰;
- PCB走线需要严格控制长度;
- 时钟与数据难以保持同步;
- 芯片引脚和连接器数量过多;
- 长距离传输时信号完整性变差。
串行接口虽然单条数据通道一次传输的数据位较少,但可以通过提高信号速率获得更高的总带宽。
现代高速串行接口还会使用:
- 差分信号;
- 多通道传输;
- 时钟恢复;
- 高速编码;
- 预加重;
- 均衡技术。
因此,很多现代高速接口都采用串行传输,例如:
USB PCI Express SATA HDMI Ethernet所以,更准确的结论是:
并行接口在短距离、低到中等频率场景中,具有较高的单周期吞吐量;串行接口在线路数量、传输距离和高速扩展方面通常更有优势。
十四、串行输出和并行输出应该怎么选择
实际项目中不能只比较“哪一种更快”,还需要综合考虑:
- 传输速率;
- 通信距离;
- 芯片引脚数量;
- PCB空间;
- 硬件成本;
- 抗干扰要求;
- 连接器尺寸;
- 软件和协议复杂度。
1. 适合选择串行输出的场景
当项目具有以下特点时,可以优先选择串行接口:
- 单片机引脚数量有限;
- 设备之间距离较远;
- PCB空间有限;
- 连接器需要尽量小;
- 硬件成本比较敏感;
- 多个设备需要共享总线;
- 数据量不是特别大。
常见选择包括:
调试通信 → UART 传感器连接 → I2C Flash存储器 → SPI 显示模块 → SPI 远距离设备通信 → UART、RS-485等2. 适合选择并行输出的场景
当项目具有以下特点时,可以考虑并行接口:
- 发送端和接收端距离很短;
- 芯片引脚数量充足;
- 需要一次传输多个数据位;
- 对单周期吞吐量要求较高;
- PCB线路长度容易控制;
- 接口主要位于同一块电路板内部。
常见选择包括:
MCU连接并口LCD CPU连接外部存储器 FPGA连接高速ADC GPIO输出8位或16位数据 芯片内部模块之间传输数据十五、常见误区
误区一:接口线少就是串行接口
不一定。
判断一个接口是串行还是并行,关键是看数据位的传输方式,而不是只看信号线总数量。
SPI虽然可能包含多根信号线,但每一条数据线上的数据仍然按时间顺序传输,因此SPI属于串行接口。
误区二:并行接口不需要时钟
并行接口同样需要确定数据在哪一个时刻有效。
常见的同步信号包括:
- 时钟信号;
- 锁存信号;
- 读写信号;
- 数据有效信号;
- 片选信号。
误区三:串行传输一定很慢
现代高速串行接口可以达到非常高的传输速率。
影响通信速度的不只是“一次传输多少位”,还包括:
- 信号频率;
- 数据编码效率;
- 通道数量;
- 通信协议;
- 信号完整性;
- 硬件处理能力。
误区四:并行数据绝对同时到达
实际电路中的多条数据线不可能做到传播延迟完全相同。
工程上所说的“同时到达”,通常是指所有数据位都能够在规定的采样窗口内稳定有效。
误区五:串行输出等于串行通信
二者并不完全相同。
“串行输出”强调数据从发送端向外输出的过程,而“串行通信”通常同时包含发送和接收两个方向。
例如UART、SPI和I2C属于串行通信接口,其中都可能包含串行输出过程。
十六、总结
串行输出和并行输出的核心区别可以概括为:
串行输出: 使用较少的数据线,多个数据位按照时间顺序依次传输。 并行输出: 使用多条数据线,多个数据位在同一时刻一起传输。串行输出的主要特点包括:
- 连线少;
- 占用引脚少;
- PCB布线简单;
- 成本较低;
- 适合较长距离;
- 更容易实现现代高速差分通信。
并行输出的主要特点包括:
- 一次可以传输多个数据位;
- 单周期吞吐量较高;
- 占用引脚较多;
- PCB布线复杂;
- 多条线路同步要求较高;
- 更适合板内短距离通信。
在实际项目中,串行和并行并不存在绝对的优劣关系,需要结合速度、距离、引脚数量、硬件成本和系统可靠性进行选择。
最后可以用一句口诀来记忆:
串行省线依次走,并行多线一起走。
文章标签
嵌入式 单片机 串行通信 并行通信 UART SPI I2C 数字电路 计算机组成原理