NRZ、曼彻斯特与8B/10B编码在高速串行通信中的选型
扫描二维码
随时随地手机看文章
在FPGA与高速接口(如PCIe、以太网)设计中,原始数据并不能直接扔到差分线上。选择合适的线路编码(Line Coding) 是平衡带宽效率、时钟恢复与直流平衡的关键。本文将对比NRZ、曼彻斯特与8B/10B三种经典编码,给出明确的工程选型指南。
一、三种编码机制速览
编码类型 核心机制 带宽开销 时钟恢复 直流平衡
NRZ (Non-Return-to-Zero) 高电平=1,低电平=0 最低 (1:1) ❌ 极差(长串0/1无跳变) ❌ 无
曼彻斯特 (Manchester) 每个比特周期中心必须翻转 最高 (1:2) ✅ 极好(每bit必跳变) ✅ 完美
8B/10B 将8位数据映射为10位码组 中等 (1:1.25) ✅ 良好(限制连续0/1) ✅ 良好
二、NRZ:简单粗暴的“裸奔”模式
NRZ是带宽效率最高的编码,没有额外开销。但它是纯粹的“裸数据”,存在两个致命弱点:
1. 时钟恢复困难:如果出现连续的“00000000”或“11111111”,接收端无法提取时钟,导致采样错位。
2. 直流漂移:长串相同电平会导致信号基线漂移,影响判决。
适用场景:
• 短距离、低成本链路(如板内FPGA互连)。
• 带外时钟:当发送端和接收端有时钟线(如SPI、I2C)或共用时钟源时。
• 配合扰码器(Scrambler):在高速SerDes中,NRZ常与扰码器联用(如PCIe Gen1/2),通过随机化数据来解决长串0/1问题。
// NRZ编码/解码(概念代码)
assign tx_serial = tx_parallel_data[0]; // 最简单的NRZ,直接输出
assign rx_parallel_data[0] = rx_serial; // 直接采样
三、曼彻斯特:自带时钟的“稳健派”
曼彻斯特编码强制每个比特周期中心发生跳变(如“0”=低到高,“1”=高到低)。这意味着信号自带时钟信息,接收端通过锁相环(PLL)轻松恢复时钟。
工程取舍:
• 优势:无需复杂的CDR(时钟数据恢复)电路,抗干扰能力强。
• 劣势:50%的带宽开销。原本1Gbps的数据,需要2Gbps的波特率,这在高速链路中是无法接受的。
适用场景:
• 中低速、长距离总线(如经典的10BASE-T以太网、CAN总线)。
• 无PLL环境:单片机或简单硬件无法负担复杂CDR时。
四、8B/10B:高速串行通信的“黄金标准”
8B/10B是目前高速串行接口(1Gbps以上)的绝对主流。它通过查找表将8位数据映射为10位码组,巧妙地解决了NRZ的痛点,同时避免了曼彻斯特的带宽浪费。
1. 核心原理:运行 disparity
8B/10B编码的核心在于Running Disparity(RD)控制。它确保发送的10位码组中,1和0的数量差不超过2(即最多6个0或6个1),从而保证接收端能通过跳变恢复时钟,并维持直流平衡。
2. 工程实现(FPGA IP核)
在FPGA中,8B/10B通常由硬核(Hard IP)或软核IP实现,极少手写。
// 使用Xilinx 8B/10B Encoder IP核示例
module encoder_8b10b (
input wire [7:0] d_in,
input wire ctrl_in, // 控制字符标志 (K码)
output wire [9:0] q_out
);
// 内部包含查找表和RD状态机
// 输入8bit,输出10bit
endmodule
适用场景:
• 所有主流高速接口:PCIe、USB 3.0、SATA、DisplayPort、JESD204B。
• 长距离光纤通信:对直流平衡要求极高。
五、选型决策树
面对具体项目,请遵循以下决策流程:
1. 看速率:
◦ < 100 Mbps:首选曼彻斯特(简单、自带时钟)。
◦ 100 Mbps - 1 Gbps:8B/10B 或 4B/5B(如100BASE-TX)。
◦ > 1 Gbps:8B/10B 或 64B/66B(如10G以太网)。
2. 看时钟架构:
◦ 有独立时钟线:直接用NRZ(如LVDS并行总线)。
◦ 无独立时钟(嵌入式时钟):必须用8B/10B或曼彻斯特。
3. 看硬件资源:
◦ 低端MCU无CDR:曼彻斯特。
◦ FPGA/ASIC有SerDes硬核:8B/10B。
六、结语
在高速串行通信中,编码方式的选择是物理层设计的基石。NRZ胜在简洁但需外援(扰码/时钟线);曼彻斯特胜在稳健但带宽浪费严重;8B/10B则在带宽效率与时钟恢复之间取得了最佳平衡,是构建Gbps级链路的必选项。





