第1章:ADC接口设计——数据格式与协议
各位同学,咱们今天聊聊ADC接口。说实话,这个模块在数字前端设计里,看着不起眼,但坑特别多。我做了十几年芯片,见过太多因为ADC接口没处理好,导致整个系统性能崩掉的案例。
ADC接口,说白了就是模拟世界和数字世界的桥梁。你想想看,天线收下来的模拟信号,经过ADC变成数字比特流,然后才轮到咱们数字电路来处理。这座桥要是搭不好,后面再牛的算法也白搭。
1.1 ADC数据格式:你拿到的是什么?
先说说数据格式。ADC输出的数据,常见的有两种:偏移二进制和二进制补码。
| 格式类型 | 特点 | 典型应用 |
|---|---|---|
| 偏移二进制 | 0V对应中间码,满量程对应全1 | 高速ADC、射频直采 |
| 二进制补码 | 符号位+幅度,便于DSP运算 | 基带处理、通信系统 |
我个人习惯用二进制补码。为什么?因为后面做数字信号处理时,加减乘除直接就能算,不用额外做格式转换。但要注意,有些高速ADC默认输出偏移二进制,你得在数字域里做个转换。
关键点:偏移二进制转补码,其实就是把最高位取反。就这么简单,但很多人会忘。
// 偏移二进制转二进制补码
assign data_twos_comp = {~data_offset[N-1], data_offset[N-2:0]};
1.2 接口协议:JESD204B vs LVDS
接下来是接口协议。目前主流就两种:LVDS和JESD204B。嗯,这里要注意,选哪个直接影响你的PCB布局和FPGA资源。
1.2.1 LVDS接口
LVDS是差分信号,一对线传一个bit。好处是成熟、简单、延迟低。坏处是——引脚太多。你想想看,一个14bit的ADC,至少需要14对差分线。要是多通道,那PCB走线简直噩梦。
我在项目中遇到过,一个8通道的接收机,光ADC数据线就占了100多对。布线工程师差点跟我翻脸。后来我们改用了JESD204B,瞬间清爽了。
我的建议:采样率低于500MHz、通道数少的场景,用LVDS没问题。但要是多通道、高速率,直接上JESD204B。
1.2.2 JESD204B接口
JESD204B是串行接口,一对差分线就能传多路数据。它内部有帧结构、有同步机制、还有链路层校验。说白了,它把ADC数据打包成数据包,通过高速SerDes传过来。
JESD204B有几个关键参数:
- L:链路数(几对差分线)
- M:转换器数(几个ADC通道)
- F:每帧字节数
- K:每多帧的帧数
我记得第一次配JESD204B时,被这些参数绕晕了。后来总结了一个口诀:先定M和L,再算F和K。M和L由硬件决定,F和K由数据速率决定。
避坑指南:我曾经因为K值设错了,导致链路同步一直失败。查了三天才发现,K值必须满足:K * F * 8 ≥ 链路延迟的比特数。这个公式一定要记住。
1.3 数据同步与对齐
数据同步,这是ADC接口设计里最头疼的问题。尤其是多通道系统,每个通道的延迟不一样,数据到达时间有偏差。你想想看,如果两个通道的数据差了半个采样周期,那波束成形就没法做了。
常见的同步方法有两种:
- 基于帧同步:JESD204B自带ILAS(初始通道对齐序列),接收端检测到ILAS后对齐。
- 基于训练序列:发送已知的同步码,接收端通过相关检测找到对齐点。
我个人更推荐JESD204B的ILAS方式。它由协议层保证,不需要额外逻辑。但要注意,ILAS只在链路初始化时发送一次。如果链路中途失步,你得重新初始化。
// JESD204B ILAS检测状态机示例
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
state <= IDLE;
end else begin
case (state)
IDLE: if (rx_data == ILAS_START) state <= SYNC;
SYNC: if (rx_data == ILAS_END) state <= DATA;
DATA: if (rx_err) state <= IDLE;
endcase
end
end
1.4 比特误码率检测
最后说说BER检测。ADC接口是高速串行链路,难免有误码。BER检测就是用来评估链路质量的。
常用的方法:
- PRBS检测:发送伪随机序列,接收端用同样的多项式生成参考序列,对比差异。
- CRC校验:JESD204B链路层自带CRC,可以检测传输错误。
我在项目中习惯两种都用。PRBS用于实验室调试,CRC用于在线监控。有一次量产测试,发现某批芯片的BER偏高,一查是PCB走线阻抗不匹配。要不是有BER检测,这个问题根本发现不了。
经验之谈:BER检测的门限一般设为1e-12。如果实测BER高于这个值,说明链路有问题,需要检查PCB、连接器或者时钟质量。
知识体系总览
下面这张图,是我画的ADC接口设计知识体系。你可以把它当作本章的思维导图。
这张图把本章的核心内容串起来了。数据格式是基础,接口协议是通道,同步对齐是保障,BER检测是验证。四者缺一不可。
好了,ADC接口设计的第一章就到这里。内容不少,但都是干货。你把这些吃透了,后面做多通道系统、高速数据采集,心里就有底了。
公众号:蓝海资料掘金营,微信deep3321