嵌入式硬件实战提升篇(二)PCB高速板设计 FPGA核心板带DDR3 PCB设计DDR全面解析
引言:设计一款高速板,供读者学习,FPGA核心板,带一颗DDR3内存,FPGA型号:XC6SLX16-2FTG256C。
随着嵌入式硬件技术的快速发展,高速板设计逐渐成为嵌入式系统设计中的核心技术之一。高速板的设计要求技术人员具备信号完整性、电源完整性及高频布线的综合能力,特别是在FPGA与高速存储器(如DDR3)的结合应用中,更是对硬件设计提出了严苛的挑战。
本项目旨在通过设计一款基于FPGA XC6SLX16-2FTG256C核心板的高速板,带一颗DDR3内存模块,采用项目导向的学习方式,结合实际绘制和理论分析,全面解析高速板的设计方法和DDR3的PCB设计要点。通过本项目,读者将从基础理论到实践操作,逐步构建起一套适合实际开发的高速PCB设计知识体系,为后续复杂嵌入式硬件开发奠定坚实基础。
通过项目导向性进行学习最切合实际的高速板的绘制和理论结合实践的知识体系构建!
目录
一、何为高速板?
1.1. 高速板的核心特点
1.2. 高速板与传统PCB的区别
1.3. 高速板的设计关键点
1.4. 高速板的典型应用
1.5. 本项目的高速板设计
二、不同DDR详解
2.1.不同DDR管脚介绍
2.2.不同DDR封装结构
2.3.DDR实例详解
三、PCB设计不同DDR思路要点
3.1.DDR1和DDR2 PCB设计要点
3.1.1.DDR布线要求
3.1.2.DDR2的三类
3.1.3.Class规则设置
3.1.4.等长设计
3.1.5.其他要求
3.2.DDR3和DDR4 PCB设计要点
3.2.1.DDR信号线分组
3.2.2.DDR时序同步
3.3.DDR PCB设计共同点
3.4.DDR PCB设计不同点
3.5.SDRAM,DDR1,DDR2,DDR3,DDR4传输速率和供电电压的汇总
四、原理图设计
五、PCB设计
六、3D预览图
一、何为高速板?
高速板是指在电路板设计中,能够支持高频率、高速率信号传输的PCB(Printed Circuit Board)。随着电子技术的快速发展,嵌入式系统、通信设备、计算机等领域对数据传输速率的要求越来越高,传统PCB设计无法满足信号完整性和高速传输的需求,高速板设计应运而生。
1.1. 高速板的核心特点
高速板的设计具有以下几个显著特点:
- 高速信号传输:支持百兆、千兆甚至更高传输速率的信号,典型应用包括DDR3/DDR4内存、FPGA、PCIe、USB 3.0 等高速接口。
- 严格的信号完整性要求:为保证高速信号传输的稳定性和可靠性,需要控制信号的阻抗、时序和串扰,避免信号畸变。
- 多层结构:高速板通常采用多层结构(6层或以上),提供完整的参考平面(电源和地),以降低电磁干扰(EMI)并提高信号质量。
1.2. 高速板与传统PCB的区别
高速板和传统PCB设计的主要区别在于对高频信号传输的要求和处理方式:
- 信号频率:传统PCB主要处理低频信号(如模拟电路或低速数字电路),而高速板需要处理频率达到数百MHz或GHz的高速信号。
- 设计复杂度:高速板需要考虑串扰、反射、延迟、时序等因素,设计难度远高于传统PCB。
- 仿真验证:在高速板设计中,仿真验证工具(如SI仿真、PI仿真)是不可或缺的一环,用于验证设计是否满足信号完整性和电源完整性要求。
1.3. 高速板的设计关键点
设计高速板需要掌握以下关键技术:
- 阻抗匹配:控制传输线的特性阻抗,使其与源端或负载端阻抗一致,避免信号反射。
- 信号完整性:关注高速信号的时序、抖动、串扰等问题,优化信号传输路径。
- 电源完整性:确保电源分布网络(PDN)低噪声,避免对高速信号产生干扰。
- 差分对布线:高速差分信号(如DDR3的时钟线)需按差分规则布线,保持差分对的长度和间距一致。
1.4. 高速板的典型应用
高速板广泛应用于现代电子系统中,尤其是在以下场景中更为常见:
- 嵌入式系统中的处理器核心板设计(如带DDR3/DDR4的FPGA或ARM核心板)。
- 高速通信设备,如路由器、交换机。
- 消费电子产品,如智能手机、平板电脑、笔记本电脑。
- 工业控制系统和医疗设备中的高速采集与处理模块。
1.5. 本项目的高速板设计
本文以设计一款基于FPGA(型号:XC6SLX16-2FTG256C)的核心板为案例,重点解析DDR3在高速板中的设计实现。读者将通过项目实践掌握高速板的设计方法和DDR3的关键布线要点,为后续深入学习打下坚实基础。
二、不同DDR详解
2.1.不同DDR管脚介绍
以下是DDR1、DDR2、DDR3、DDR4、DDR5 各代内存的管脚定义概要表,涵盖主要管脚及其功能的对比。
管脚名称 | DDR1 | DDR2 | DDR3 | DDR4 | DDR5 |
---|---|---|---|---|---|
VDD | 2.5V | 1.8V | 1.5V | 1.2V | 1.1V |
VDDQ | 同VDD | 同VDD | 同VDD | 同VDD | 独立,1.1V |
时钟 (CLK) | 差分信号,单方向 | 差分信号,单方向 | 差分信号,单方向 | 差分信号,单方向 | 差分信号,单方向 |
地址 (Annn) | A0:120:120:12, 包括BA信号 | A0:130:130:13, 包括BA信号 | A0:150:150:15, 包括BA信号 | A0:160:160:16, 包括BG信号 | A0:170:170:17, 包括BG信号 |
命令 (CMD) | RAS, CAS, WE, CS | RAS, CAS, WE, CS | RAS, CAS, WE, CS | RAS, CAS, WE, CS | RAS, CAS, WE, CS |
数据 (DQ) | 单端,双向 | 单端,双向 | 单端,双向 | 单端,双向 | 单端,双向 |
数据掩码 (DM) | 可选 | 可选 | 可选 | 替换为DBI | 替换为DBI |
数据时钟 (DQS) | 单端,同步 | 差分,同步 | 差分,同步 | 差分,同步 | 差分,同步 |
芯片选择 (CS) | 单路 | 多路 | 多路 | 多路 | 多路 |
行位选通 (RAS) | 行选择 | 行选择 | 行选择 | 行选择 | 行选择 |
列位选通 (CAS) | 列选择 | 列选择 | 列选择 | 列选择 | 列选择 |
银行选择 (BA) | BA0:20:20:2 | BA0:20:20:2 | BA0:20:20:2 | BG0:10:10:1, BA0:10:10:1 | BG0:10:10:1, BA0:10:10:1 |
复位 (RESET) | 无 | 无 | 可选 | 必需 | 必需 |
校验信号 (PAR) | 无 | 无 | 支持ECC | 支持ECC | 支持ECC |
阻抗匹配 (ZQ) | 无 | 支持 | 支持 | 支持 | 支持 |
温度传感器 (TS) | 无 | 可选 | 可选 | 支持 | 支持 |
能效管理 (PMIC) | 无 | 无 | 无 | 无 | 集成 |
说明:
- 时钟信号:DDR2起采用差分时钟信号,相比单端信号抗干扰能力更强。
- 数据总线宽度:通常为64位,ECC内存添加8位校验。
- 电压变化:随代数提升,工作电压逐步下降,提高功耗效率。
- 地址/命令信号扩展:更高代数支持更多存储容量,因此地址位数增多,增加银行组信号 (BG)。
- DBI(Data Bus Inversion):从DDR4开始引入,用于数据线上的电平反转以降低功耗。
- PMIC(电源管理芯片):DDR5内存将PMIC集成到内存模块中,进一步优化供电和稳定性。
2.2.不同DDR封装结构
如下就是封装结构了,我们了解即可。
相关管脚介绍如下所示:
2.3.DDR实例详解
由于我们这次项目用的是DDR3,我们在此实际调研并运用,如下就是DDR3L SDRAM的数据手册图了。
引脚定义如下所示:
因此我们对于上述内容做总结,得到如下的表格,这里我也是精简了一下,读者最好还是回到手册去读取相关内容。
信号名称 | 类型 | 描述 |
---|---|---|
A14:13], A\[12/BC#], A11, A10/AP, A\[9:0 | 输入 | 地址输入:提供行地址(激活命令),列地址和自动预充电位(A10)用于读/写命令。PRECHARGE命令中,A10用于指定单个或所有bank的预充电。A12/BC#用于动态切换突发模式 (BL8 或 BC4)。 |
BA2:02:02:0 | 输入 | Bank地址输入:定义当前命令(ACTIVATE、READ、WRITE、PRECHARGE)作用的目标Bank,或定义加载模式寄存器的编号(MR0-MR3)。 |
CK, CK# | 输入 | 差分时钟输入:用于采样控制信号和地址信号,DQS信号也以其为参考。 |
CKE | 输入 | 时钟使能:控制内部电路的启用(高电平)和关闭(低电平)。在低电平时,可进入预充电省电模式、自刷新模式或激活省电模式。 |
CS# | 输入 | 芯片选择:低电平启用命令解码,高电平屏蔽所有命令。用于多Rank系统中的Rank选择。 |
LDM | 输入 | 数据屏蔽信号:用于写入数据时屏蔽低字节数据(高电平时屏蔽)。 |
UDM | 输入 | 数据屏蔽信号:用于写入数据时屏蔽高字节数据(高电平时屏蔽)。 |
ODT | 输入 | 芯片内终端:控制内部终端电阻启用(高电平)或禁用(低电平),作用于数据线和数据相关信号。 |
RAS#, CAS#, WE# | 输入 | 命令输入:与CS#一起定义进入的命令(如激活、读取、写入、预充电等)。 |
RESET# | 输入 | 复位:低电平有效的异步复位信号,复位输入参考VSS,提供设备复位功能。 |
DQ15:015:015:0 | 双向 | 数据输入/输出:双向数据总线,用于传输数据,分为高字节 (DQ15:815:815:8) 和低字节 (DQ7:07:07:0)。参考电压为VREFDQ。 |
LDQS, LDQS# | I/O | 数据选通信号(低字节):读数据时与数据边缘对齐;写数据时与数据中心对齐。 |
UDQS, UDQS# | I/O | 数据选通信号(高字节):读数据时与数据边缘对齐;写数据时与数据中心对齐。 |
VDD | 电源 | 主电源:1.5V ± 0.075V。 |
VDDQ | 电源 | 数据电源:1.5V ± 0.075V,独立设计以改善噪声抑制能力。 |
VREFCA | 电源 | 控制、命令和地址信号的参考电压:需要在所有操作模式下维持。 |
VREFDQ | 电源 | 数据信号的参考电压:需要在所有非自刷新模式下维持。 |
VSS | 电源 | 地电源。 |
VSSQ | 电源 | 数据信号地电源:独立设计以改善噪声抑制能力。 |
ZQ | 参考 | 外部参考端:用于输出驱动校准,与外部240Ω电阻(RZQ)连接至VSSQ。 |
NC | - | 无连接信号:这些引脚未连接至DRAM内部或外部。 |
结构如下所示:
三、PCB设计不同DDR思路要点
3.1.DDR1和DDR2 PCB设计要点
3.1.1.DDR布线要求
1.所有信号连线过孔数量都是两个,都是从顶层到底层,线宽都要一样,走线方向要一致,平行走线不得有交叉,弯线平滑处理,不得有直角,锐角,线距为线宽两倍。
2.要求等长差分走线的必须先布好,如时钟线。
3.以时钟线长度为基准,等长布其它信号线。
忽略电源,地网络
3.1.2.DDR2的三类
1.差分时钟信号:CLKN.CLKP
2,数据线DO0-DO15,数据掩码信号DOMO,DOM1,数据选通信号DOS*_N,DOS*_P3,地址线/控制线:除数据,时钟外的其他信号,如A0A12,WE,CS,BA02,CKE等。
3.1.3.Class规则设置
1.DATA L BUS:00-DO7.DOMO.DOS0 NDOS0_P
2.DATA H BUS:08-DO15.DOM1.DOS1 N.DOS1_P
3.ADDR BUS: 除数据线外的其他信号
4.CLK DIFF: CLK N,CLK P
3.1.4.等长设计
1,所有信号线参考差分时钟的长度作等长
2,DATA_L_BUS共11根走在同层,与差分时钟的长度误差25mil
3,DATA H BUS共11根走在同层,与差分时钟的长度误差25mil
4,ADDR BUS:与差分时钟的长度误差200~300mil
3.1.5.其他要求
1.特性阻抗: 单端 50欧,差分100欧
2.保证完整的参考平面
3,VREF电容要靠近相关的电源管脚,线宽尽量在40mil以上
4,信号线不能跨分割.
5.DDR2走线区域不允许有其他信号穿过
6,去耦电容要靠近相关IC的电源管脚
7.尽量采用多层板
以下是对DDR1和DDR2 PCB设计思路要点的总结表格:
设计要点 | 详细说明 |
---|---|
DDR布线要求 | - 信号连线过孔数量为两个,从顶层到底层。 - 线宽一致,走线方向一致,平行走线不得交叉。 - 弯线需平滑处理,不得有直角、锐角,线距为线宽两倍。 - 差分走线(如时钟线)需优先布线并等长处理。 |
时钟线基准等长布线 | 以时钟线长度为基准,等长布其它信号线。 |
DDR2三类信号 | 1. 差分时钟信号:CLK_N,CLK_P。 2. 数据信号:D0-D15,数据掩码信号(DM0, DM1),数据选通信号(DQ_N, DQ_P)。 3. 地址/控制信号:A0-A12,WE,CS,BA0-BA2,CKE等。 |
Class规则设置 | 1. DATA L BUS:D0-D7, DM0, DQ0_N, DQ0_P。 2. DATA H BUS:D8-D15, DM1, DQ1_N, DQ1_P。 3. ADDR BUS:除数据线外的其他信号。 4. CLK DIFF:CLK_N, CLK_P。 |
等长设计 | 1. 所有信号线等长参考差分时钟线。 2. DATA L BUS:11根,误差≤25mil。 3. DATA H BUS:11根,误差≤25mil。 4. ADDR BUS:误差在200~300mil范围内。 |
特性阻抗要求 | - 单端信号:50欧姆。 - 差分信号:100欧姆。 |
参考平面 | 确保完整的参考平面,不允许信号线跨分割区域。 |
VREF电容布局 | VREF电容应靠近相关电源管脚,线宽尽量≥40mil。 |
去耦电容布局 | 去耦电容应靠近相关IC的电源管脚。 |
信号区域限制 | DDR2走线区域不允许其他信号穿过。 |
板层设计建议 | 尽量采用多层板以优化信号完整性和隔离。 |
3.2.DDR3和DDR4 PCB设计要点
3.2.1.DDR信号线分组
将DDR布线的信号进行分组,可以分为时钟线、地址线、命令控制线、数据线四部分。
(1)、时钟线的布线规则:为高速差分信号线,按照差分布线规则进行布线,而且需要在接收端进行阴抗匹配
(2)、地址线与命令控制线布线规则:地址和命令信号线要进行端接匹配,通过匹配电阻接端接电源VTT。
(3)、数据线布线规则:数据线由于采用了ODT技术,因此不需要外部进行端接匹配。另外需要注意的是:对于时钟线、地址线、命令控制线和数据线,对等长布线要求较高,除了每一组信号线内部要求等长布线以外,还要保持时钟线、地址线和数据线等组间信号线尽量保持等长。尽量保持同组信号线保持在同层,避免跨层布线。对于差分信号线,为了避免信号间的串扰,要使用3W原则进行布线。除此之外,为了使DDR电路具备完整的参考地平面和电源平面,因此在DDR保护区内不得出现与DDR无关的信号且信号走线的参考平面不能中断。DDR的PCB单端走线阻抗一般控制为50欧,差分走线阻抗一般控制为100欧。对于多块DDR芯片的布局布线,根据菊花链的拓扑结构进行布置即可。
3.2.2.DDR时序同步
作为源同步系统的DDR电路设计来说,时序控制至关重要,共有三组时序设计要求如下:
(1)、DQ和DQS的等长关系:所有数据线DQ参考DOS的差分线等长,DOS差分线误差控制在5mil,所有数据线误差控制在DOS目标长度的15mil。
(2)、时钟CLK和地址线、命令控制线的等长关系:所有地址和命令控制线参考差分时钟线CLK等长,所有地址和命令控制线误差控制在时钟CLK目标长度的50mil。
(3)、时钟CLK和DQS线的等长关系:对于DDR2来说,时钟CLK和DQS线的时序关系是松散的时序关系,它们之间的时序参数为,一般控制在100mil即可,但是在DDR3中,时钟CLK和DOS线的时序没有严格要求。
下是对DDR3和DDR4 PCB设计要点的总结表格:
设计要点 | 详细说明 |
---|---|
DDR信号线分组 | DDR信号分为四类:时钟线、地址线、命令控制线、数据线。 |
时钟线布线规则 | - 高速差分信号线,按照差分布线规则布线。 - 接收端需进行阻抗匹配。 |
地址线与命令控制线规则 | - 地址线和命令信号需端接匹配,通过匹配电阻接端接电源VTT。 |
数据线布线规则 | - 数据线采用ODT技术,无需外部端接匹配。 - 组内信号需等长布线,组间信号需尽量等长。 - 数据线与其他组信号保持层内布线,避免跨层。 |
差分信号布线规则 | - 使用3W原则布线,避免信号串扰。 |
信号参考平面要求 | - 确保完整的参考地平面和电源平面。 - DDR保护区内不得有无关信号,参考平面不能中断。 |
特性阻抗要求 | - 单端阻抗:50欧姆。 - 差分阻抗:100欧姆。 |
多块DDR芯片布局 | - 使用菊花链拓扑结构布置信号。 |
DQ和DQS的等长关系 | - 数据线DQ参考DQS差分线等长。 - DQS差分线误差控制在5mil以内。 - 数据线误差控制在DQS目标长度的15mil以内。 |
CLK与地址/命令线等长关系 | - 地址线与命令控制线参考CLK差分时钟线等长。 - 误差控制在CLK目标长度的50mil以内。 |
CLK与DQS等长关系 | - DDR2中CLK与DQS线时序参数为100mil以内。 - DDR3中CLK与DQS线的时序要求更为松散。 |
3.3.DDR PCB设计共同点
1、确定PCB叠层设计
2、理清高速信号线的阻抗计算要求
3、信号分类处理
4、根据CPU出线确定DDR布局及走线的拓扑结构(T型或者菊花链)5、布线要求同组同层,最好都参考地平面
6、信号线之间尽量保证3W线宽
7、数据线等长误差要求控制在5-15mil,地址线、控制线、时钟线等长误差要求控制在20-50mil
8、所有DDR3滤波电容紧挨电源管脚放置,以免影响滤波效果,最好每个电源管脚对应一个滤波电容
9、DDR电源模块要尽量靠近CPU及DDR放置,减少平面分割面积
10、所有信号线都有完整的参考平面,以免由于跨分割带来的阻抗跳变
3.4.DDR PCB设计不同点
快速辨别方法如下:
1、红色方框的内存芯片,DDR1代是大片,DDR2和DDR3是小片,直观吧!
2、绿色方框的内存卡口,DDR1和DDR2是圆口的,DDR3是方口的,直观吧!
3、DDR3的缺口在左边,DDR4的缺口在右边,DDR4 将内存金手指设计为中间稍突出、边缘收矮的形状!
综合起来就是:DDR1=大片+圆口;DDR2=小片+圆口;DDR3=小片+方口左;DDR4=小片+方口右;
3.5.SDRAM,DDR1,DDR2,DDR3,DDR4传输速率和供电电压的汇总
四、原理图设计
本次设计的主要目标是开发一块带 DDR3 内存的 FPGA 核心板,面向高速电路项目,为后续的高速设计积累经验。重点包括:
- 优化 IO 分配,尤其是 LVDS 等低压差分高速接口。
- 使用 4 层 PCB,探索低成本低复杂度的实现方式,同时保证较高的运行速度。
- 为了简化设计,板上不集成 FLASH,仅通过 JTAG 加载程序,适合调试应用。
通过上述的理论支撑,我们知道原理图应该如何设计,具体如下所示:
如上分别为DDR原理图电路图,以及总体的电路图。
IO 分配策略
根据项目需求和设计权衡,对各 Bank 的 IO 做了如下分配:
-
Bank2:
- 电压:2.5V
- 配置:全部引脚以差分对形式引出,共计 18 对(17 对等长)。
- 用途:标准 LVDS 输入输出。
-
Bank0:
- 电压:3.3V
- 配置:全部引脚以差分对形式引出,共计 20 对,全部等长。
- 用途:一般 IO 输入输出。
-
Bank3:
- 电压:3.3V
- 配置:部分引脚引出,用于板载外设 IO 或扩展 Bank0 的 IO 数目。
-
Bank1:
- 电压:1.5V
- 配置:专门用于连接 DDR3 内存颗粒。
设计调整建议:
考虑到 Bank0 和 Bank2 的供电电压可以互换,将 Bank0 调整为 2.5V 供电,可统一作为 LVDS 接口。但需注意 JTAG 接口电压将降至 2.5V,可能需要带 Buffer 的下载器支持。
FPGA高速板设计总结
设计目标与总体思路
本次设计的主要目标是开发一块带 DDR3 内存的 FPGA 核心板,面向高速电路项目,为后续的高速设计积累经验。重点包括:
- 优化 IO 分配,尤其是 LVDS 等低压差分高速接口。
- 使用 4 层 PCB,探索低成本低复杂度的实现方式,同时保证较高的运行速度。
- 为了简化设计,板上不集成 FLASH,仅通过 JTAG 加载程序,适合调试应用。
IO 分配策略
根据项目需求和设计权衡,对各 Bank 的 IO 做了如下分配:
-
Bank2:
- 电压:2.5V
- 配置:全部引脚以差分对形式引出,共计 18 对(17 对等长)。
- 用途:标准 LVDS 输入输出。
-
Bank0:
- 电压:3.3V
- 配置:全部引脚以差分对形式引出,共计 20 对,全部等长。
- 用途:一般 IO 输入输出。
-
Bank3:
- 电压:3.3V
- 配置:部分引脚引出,用于板载外设 IO 或扩展 Bank0 的 IO 数目。
-
Bank1:
- 电压:1.5V
- 配置:专门用于连接 DDR3 内存颗粒。
设计调整建议:
考虑到 Bank0 和 Bank2 的供电电压可以互换,将 Bank0 调整为 2.5V 供电,可统一作为 LVDS 接口。但需注意 JTAG 接口电压将降至 2.5V,可能需要带 Buffer 的下载器支持。
DDR3 设计注意事项
- 信号完整性:
- DDR3 校准电阻(RZQ)和 VREF 电压的正确接入不可忽略。
- ODT 和 RST 信号线因高速切换需求不高,允许一定灵活性,无需严格等长。
- 布局布线:
- DDR3 信号线宽约 5 mil,阻抗控制在 50 欧姆左右;过孔数限制为最多两个。
- 受限于四层板的走线空间,仅支持单颗 DDR3 的布线设计。
电源设计与去耦
- 电源方案:采用经典的 EA3059 单芯四路电源管理方案,满足 XC6SLX16-2FTG256C 的供电需求。
- 去耦设计:
- 每路电压设置独立的去耦电容。
- 按官方手册推荐配置:
- 每个 Bank 一个大容量贴片电容;
- 每个供电轨靠近芯片处放置两到三个 4.7μF 电容;
- 在芯片正背面分别放置 470nF 电容用于高频去耦。
五、PCB设计
PCB 设计原则
- 四层板布局:
- 顶层和底层用于高速信号走线。
- 中间两层分别分配为电源层和地层,保证参考平面的完整性。
- 阻抗控制:
- 信号线宽为 5 mil,经阻抗计算结果约为 54 欧姆,可通过加宽微调至 50 欧姆。
- 走线优化:
- 高速信号避免分层和过孔,DDR 信号尽量等长布线。
- 为便于走线,放弃设计双颗 DDR3 的支持。
设计优化经验
- 双颗 DDR3 的挑战:
- 使用四层板设计时,Bank3 的内存引脚在等长布线和信号完整性方面遇到严重困难,最终放弃双颗 DDR3 的支持。
- 可改进点:
- 进一步优化 Bank0 和 Bank2 的分配逻辑,统一 LVDS 接口电压标准,提高信号一致性。
如下分别为四层的PCB结构图。
网络长度查看如下所示,等长,这里就随便拿出两组来对比。