欢迎来到Pi.MX8开源计算机模块项目的新一期!在这个系列中,我们将深入探讨基于NXP的i.MX8M plus处理器的系统模块的设计和测试。
在上一次更新中,我们完成了布局准备。这包括创建阻抗配置文件,根据板材制造商的规格添加设计规则,并定义应用特殊设计规则的区域。我们还完成了LPDDR4接口的布线,但暂时没有进行长度调整。
在我们开始对DRAM接口进行长度调整之前,我们将查看Pi.MX8模块上其余接口的布线。板上有很多高速和低速总线,其中一些是占用大量布线空间的宽并行总线。为了给每个接口分配足够的空间,我们将首先为模块上的每个布线层创建一个粗略的平面图。
路由计划将帮助我们确定如何在可用的信号层中分配所有高速和低速接口。通过提前设置一个大致指南,我们可以确保在当前工作的层上有足够的路由空间。这也有助于我们最小化层之间的转换,并减少在路由过程中需要重做的工作量。
设置布局规划有几种方法,主要取决于可用的工具。我们只需要一个基本的绘图工具,允许我们在现有图像上进行草图绘制。在这个例子中,我们将使用Inkscape。
在Inkscape中,我们可以添加一个背景图像,显示组件放置和以彩色气线形式展示的未路由接口。注意,这个截图中隐藏了电源网络,因为我们将只关注将在信号层上路由的网络。在原理图中,我们在每个电源网络上放置了一个网络类指令,通过简单地在布局编辑器中启用或隐藏相关的网络类,就可以轻松识别哪些网络在平面层上被路由。
对于实际的布线,我们只需在Inkscape中添加线条来代表我们想要在相应层上布线的接口。我们可以调整这些线条的宽度,以表示接口中将要布线的信号数量。线条的颜色可以从背景图像中选择,以便更容易识别正在表示的接口。
由于层间转换也需要在所有层上分配空间,我们可以在每条线的末端添加一个块来详细说明层间转换。
在Inkscape中使用Altium Designer截图作为背景图像进行布局规划
一旦我们对每个布线层重复上述过程,我们就可以开始实际的布线过程了。
有了布线策略后,让我们开始在顶层布线接口。由于我们已经完成了顶层组件的风扇出线布线,我们可以使用所有剩余空间进行信号布线。剩下的空间不多,但我们所拥有的还是可以通过在不会干扰到内层布线的区域策略性地放置过孔来使得内层信号层的布线更加容易。这是提前规划布局的另一个好处,否则这些区域在这个阶段不会被定义。
顶层对PiMX8模块的布线
在顶层放置走线时,我们还应该考虑到我们需要一些空间来添加如定位点或标签等特征在顶层。激光蚀刻的数据矩阵码也可能需要一个纯铜区域或一个没有走线的区域来提供均匀的对比度,意味着这些区域不能用于布线。
大多数连接将放置在我们在层堆栈管理器中定义的两个内部信号层上。让我们开始布线所有高速同步接口。在我们的案例中,这些接口可能包括MIPI-CSI、MIPI-DSI和LVDS接口。这些接口都使用低压差分信号,并且都带有一个专用的时钟线和至少两条数据线。它们需要大量的布线空间,因为每条数据线的长度必须在一定的时间范围内与时钟线匹配。匹配多个差分对的长度可能需要很多空间,因为很可能接口内的一个或多个对会引入必须考虑的显著延迟。通过首先布线这些接口,我们可以确保稍后进行长度调整时有足够的空间。
在这些高速差分对的层转换处靠近放置返回路径过孔也很重要,以确保信号完整性。返回路径过孔可以占用多个层的空间,因此应该在放置信号转换后尽快放置这些过孔。
接下来,我们可以布线其他高速接口,如PCIe、USB、HDMI和以太网。这些接口在成对长度匹配的要求上不那么严格,因此我们不需要为长度匹配分配太多空间。然而,对这些信号实施稳固的回路路径管理和基本的高速设计方法仍然非常重要,尽管将它们放在布线优先级列表的第二位。
最后但同样重要的是,我们可以布线剩余的低速接口,如SDIO、GPIO、RGMII以及其他杂项总线,如UART或I2C和SPI。这些接口仍以高边沿速率运行,这意呀着我们仍需要将它们视为高速信号。
布线内部信号层1
布线内部信号层2
就PiMX8板而言,我们可以将底层视为就可用空间而言的内部布线层。模块的顶层放置了大多数活动组件,只留下少数电压调节器和被动组件,如去耦电容和配置电阻在底层。
底层的布线优先级与内层相同,因此我们将从MIPI-CSI、MIPI-DSI和LVDS接口开始。在PiMX8模块上,一个高速多路复用器可以在DSI和LVDS端口之间选择。这个组件放置在靠近板对板连接器的底层。由于多路复用器的引脚布局,连接到复用器的一个信号线上会有显著的延迟。我们将在长度匹配过程中更仔细地查看这一点,但我们需要在底层预留一些空间以容纳更大的延迟。
带有一个长线的多路复用器引脚布局
底层布线PiMX8模块
PiMX8模块上有几种情况在延迟调整时需要特别注意。我们将广泛使用X信号来克服其中的一些挑战。这些挑战究竟是什么,以及我们如何实施X信号来提供跨多个接口共享的组件的精确延迟调整,将是下一次更新的内容。敬请期待!