第二章:硬件平台搭建——电源树设计、时钟树规划与Sensor硬件连接
各位同学,大家好。上一章我们聊了图像采集的整体架构,今天咱们来点硬核的——把板子搭起来。
硬件平台搭建,说白了就是三件事:供电、给时钟、连信号。这三件事要是没做好,后面调代码就是白费功夫。我见过太多项目,FPGA代码写得漂漂亮亮,一上板就冒烟,查到最后都是电源纹波太大或者时钟抖动超标。嗯,咱们今天就把这些坑一个个填上。
2.1 电源树设计——别让供电成为瓶颈
电源树设计,我个人的习惯是先算功耗,再选LDO还是DCDC,最后画电源树。顺序不能乱,否则后面改起来很痛苦。
2.1.1 功耗估算
FPGA的功耗主要来自三部分:核心电压(VCCINT)、IO电压(VCCO)和辅助电压(VCCAUX)。Sensor那边更简单,模拟供电(AVDD)、数字供电(DVDD)和IO供电(VDDIO)。
举个例子,我常用的Xilinx Artix-7系列,核心电压1.0V,电流大概2-3A。Sensor像OV5640,AVDD 2.8V/100mA,DVDD 1.5V/200mA,VDDIO 1.8V/50mA。加起来其实不大,但要注意启动瞬间的浪涌电流。
2.1.2 电源树结构
下面这张图是我常用的电源树结构,你们可以参考:
这张图里,我用了两级电源架构。第一级DCDC把12V降到3.3V,第二级再分别转出1.0V、1.8V、2.8V。为什么这么设计?因为12V直接转1.0V压差太大,DCDC效率会很低,而且纹波不好控制。
2.2 时钟树规划——抖动的敌人
时钟是数字系统的脉搏。FPGA图像采集对时钟的要求尤其高,因为像素时钟直接决定了采样精度。
2.2.1 时钟源选择
我一般用有源晶振,频率稳定度在±25ppm以内。Sensor那边通常需要24MHz或27MHz的主时钟,FPGA这边可能需要50MHz或100MHz的系统时钟。
举个例子,OV5640的像素时钟最高可达96MHz,但实际用的时候,我建议先跑24MHz,调通了再往上提。为什么?因为高频时钟对PCB走线要求高,一旦反射或者串扰,图像就会出现条纹。
2.2.2 时钟分配
时钟分配有两种方式:
- 独立晶振:Sensor和FPGA各用一个晶振,互不干扰。优点是设计简单,缺点是成本高、占面积。
- FPGA输出时钟给Sensor:FPGA内部PLL生成时钟,通过IO口输出给Sensor。优点是灵活,缺点是FPGA的IO抖动可能比晶振大。
我个人更倾向独立晶振,尤其是做MIPI接口的时候。MIPI的时钟是差分对,对抖动极其敏感。我曾经试过用FPGA输出时钟给Sensor,结果MIPI眼图闭合,数据全是错的。后来换成独立晶振,问题立刻解决。
2.3 FPGA与Sensor的硬件连接——MIPI/LVDS/并行接口
终于到了最核心的部分。Sensor和FPGA怎么连?这取决于Sensor的输出接口类型。目前主流的有三种:MIPI、LVDS、并行接口。
2.3.1 MIPI接口
MIPI是手机摄像头的主流接口,特点是差分信号、低电压、高速。MIPI的物理层是D-PHY,包含一对时钟和一到四对数据线。
连接时要注意:
- 阻抗匹配:差分阻抗100Ω,单端阻抗50Ω。PCB走线要严格控制。
- 等长走线:同一组差分对内等长,不同组之间也要等长,误差±10mil。
- AC耦合电容:MIPI信号需要串100nF电容,靠近发送端放置。
我画一个MIPI连接的示意图:
2.3.2 LVDS接口
LVDS和MIPI类似,也是差分信号,但电压摆幅更大(350mV vs 200mV),抗干扰能力更强。工业相机常用LVDS接口。
连接要点:
- 终端电阻:在接收端加100Ω匹配电阻,靠近FPGA引脚放置。
- 共模电压:LVDS的共模电压是1.2V,FPGA的LVDS输入需要支持这个范围。
- 走线长度:LVDS可以走1米以上,但板内走线尽量控制在10cm以内。
2.3.3 并行接口
并行接口是最古老的,但也是最简单的。数据线、行同步、场同步、像素时钟,一根根连过去就行。
连接时要注意:
- 数据线等长:所有数据线长度差控制在±50mil以内,否则数据会歪斜。
- 时钟走线:像素时钟要单独走,不要和数据线并排太长距离,避免串扰。
- IO电平匹配:Sensor输出可能是1.8V或2.8V,FPGA的IO bank要配置成对应的电平标准。
2.4 实战检查清单
最后,我给大家列一个检查清单,上板前逐项确认:
| 检查项 | 要求 | 常见问题 |
|---|---|---|
| 电源电压 | ±5%以内 | DCDC反馈电阻焊错,电压偏高烧芯片 |
| 电源纹波 | <50mVpp | LDO输出电容太小,纹波过大导致图像噪点 |
| 时钟频率 | ±100ppm | 晶振负载电容不匹配,频率偏了 |
| MIPI差分阻抗 | 100Ω ±10% | PCB叠层设计不合理,阻抗偏差大 |
| 数据线等长 | ±10mil | 走线绕弯太多,长度差超标 |
| 上电时序 | 核心先于IO | EN引脚没加延时,上电顺序反了 |
嗯,硬件平台搭建就讲到这里。记住一句话:硬件是基础,基础不牢,地动山摇。下一章咱们开始写FPGA代码,把Sensor的数据读进来。
可可精品资料库