SDRAM原型与生产困境


11

我有一个使用LPC1788和ISSI(IS42S32800D)的SDRAM模块的设计。这是一个32位接口。

我已经把这种设计排除在外了,并有一个由PCB制造商制造的原型,该原型制造6层原型。原型PCB可以正常工作。然后,我以为我可以从通常的PCB供应商那里小批量(100)批量生产PCB。我给了他们我的原型用来确保不会出现问题的堆栈信息。

然而!我的生产板有很多问题。最初,我无法使用原型板中使用的相同代码来提高SDRAM的响应能力。前一块板的工作频率为120Mhz,所以我确定这个新板有问题。然后,我发现了一个帖子,有人建议在SDRAM数据线上使用“转发器模式”(我以前没有使用过),这引起了SDRAM的响应,但是它并不稳定。我可以写入16个左右的地址,但是随后的读取操作(每个地址处)返回的数据就是我最后写入的数据(可能是由于Repeater Mode)。当我禁用中继器模式时,返回的数据为0xFFFFFFF。我现在正在尝试以48Mhz的速度连接,这是我有时间限制的最低配置。

我在两块板上都使用相同的22Ω终端电阻(数据线上),数据线平均长3厘米。时钟线长2.4厘米。地址线平均长3.8厘米。

这是否太不合规格,如果时钟明显缩短,我应该延迟更长的时间吗?我真的被困在这里,因为我对设计的任何改变都没有改变,我希望可以无缝制造这些板。

Maximum Data Line Length: 59mm (Although this includes the branch to the NAND Flash)
Minimum Data Line Length (Ctrl to Res): 18mm
Maximum Address Line Length: 44mm
Minimum Address Line Length: 24mm
CLK: 24.5mm
CKE: 25mm
CAS: 28mm
RAS: 28.7mm

这是原始(工作中)原型的PCB堆栈配置: 在此处输入图片说明

这是用于生产(非工作)PCB的PCB堆栈配置 在此处输入图片说明

这是SDRAM的路由: SDRAM路由


3
原型和生产运行之间的阻抗控制是否相同?
dext0rb

我不确定。我对信号完整性了解不足,无法为板级房屋正确定义这些参数。我觉得,如果我指定的参数不知道我在做什么,那我会提出问题而不是解决问题。
詹姆斯

您是否支付了他们的费用来验证阻抗(@dextorb建议您控制)?
布莱恩·卡尔顿

无关紧要的是平均长度。它是组中的最小值和最大值。
布莱恩·卡尔顿

1
时钟走线上的信号完整性如何看待SDRAM引脚?
布莱恩·卡尔顿

Answers:


10

那是一个糟糕的堆栈。芯线应为0.2毫米,厚度的平衡应在第3层和第4层(内层1和内层2)之间的预浸料中。

原因是,对于走线上的任何信号,在其下方的平面上都需要有一个返回电流路径。平面中的返回电流将尝试最小化电感(即环路面积),这意味着它将尝试跟随信号走线。如果信号走线远离平面,它将寻找其他走线来找到返回路径。这是您要对抗的电磁波。

此外,与外层距离相比,通过使内层与参考平面的距离不同(请记住,所有电源轨看起来像是AC处的接地!),每次交换层时都会产生阻抗变化(尽管可以通过以下方式抵消)跟踪宽度的变化,尽管我发现仅值得一次解决此问题),并且您显着增加了串扰和其他干扰的可能性。

您需要检查的另一件事是所使用的材料:例如,有20多种不同的材料称为“ FR-4”。我通常使用的材料称为370-HR。对于高速100-500 MHz信号,它的性能相当好。

关于时钟线,在所有地址和数据线都稳定之后,在我的上一个SDRAM设计中,IIRC设置了时钟,因此其边缘最后出现了(其迹线最长1厘米)。因此,是的,延迟时钟值得尝试。我不需要在SDRAM线上进行任何阻抗控制。

您的终端电阻应放置在尽可能靠近线路驱动器的位置。如果距离不在0.5厘米之内,它们自身会引起反射,从而导致过冲和振铃。恕我直言,3 cm的走线长度太短了,需要端接电阻(我从6-10 cm开始使用它们);你试过把它们拿出来吗?

要检查的另一件事是飞机:您是否有穿过飞机切口的信号迹线?这是一个很大的禁忌,因为它迫使返回电流在切割周围走很长的路。

最后,边缘速率在这些设计中是一个巨大的问题。许多芯片的上升和下降时间不必要地缩短,降低时钟频率对此没有影响。这些快速边缘非常适合创建反射。这就是您的22欧姆终端电阻器要尝试解决的问题:它们会使边缘变慢。但是,如果您真的要推动它,可以使用Mentor Graphics的HyperLynx之类的工具来找到最佳的端接设计。

我可以向您推荐一些涵盖所有这些内容以及更多内容的书,我们在工作中向他们发誓:

这些书涵盖了EMI降低,屏蔽设计,PCB堆叠,阻抗控制,电源去耦等等。此外,奥特先生还教授有关该主题的研讨会(附赠书免费)。


亨利·奥特(Henry Ott)的书对我来说是1980年的一本圣经。但是,在我读这本书之前,我已经熟练掌握了机械/电气设计中的射频泄漏,甚至还没有进行EMC测试。插槽,辐射器,电介质天线和I / O总线电缆是进出的最佳天线。
Tony Stewart Sunnyskyguy EE75

很好的信息,根据基于我输入的仿真数据的Hyperlynx仿真,需要22 Ohm电阻,否则来自SDRAM的数据线上的波形(以1ns的上升时间驱动)会发生严重失真,并且一些反射会穿越参考电压。
詹姆斯

另外,堆叠建议也不错。原型制造商和制造商之间的堆叠差异很小。我正在将图表添加到“问题”中供您查看。另外-我一直在阅读Eric Bogatin简化的《信号完整性》。此处的信息不错,但需要花费一些时间来消化和吸收,以便根据他的建议开始新的板布局。
詹姆斯

对于它的价值,OP最初看起来像Altium图片。Altium有自己的一套信号完整性工具,可以使用IBIS文件。它还可以检查串扰。但是它需要确切的堆栈信息来执行此操作。
ajs410 2012年

1
所以在这一点上,我最关心的是电阻器。它们似乎位于痕迹的中间,而不是它们所属的驱动程序。在这些应用中,最好不要使用电阻器组,而应使用单个的小型电阻器。如果必须使用电阻器包,你应该花时间做了很多更好的工作交换了电阻使布局较少通过疯狂。这就是我可以从您的布局中看到的全部内容,该布局没有封装轮廓,并且使一半的图层难以看清。
Mike DeSimone 2012年

4

以这种频率,我认为磁道长度类型的问题不太可能成为主要问题,当然对于延迟问题也是如此。由于问题是从新PCB开始的,因此首先要做的是测试所有线路的连续性(针对数据表,而不是原理图,以防原理图有错误),并确定每个引脚的范围以检查波形是否在似乎不太合理-即使您的示波器无法检查时序细节,也应很明显地发现引脚是否存在开路或短路。

在没有适当范围的情况下进行此类工作充满了潜在的危险-您如何知道自己有多少利润?即使可行,您如何知道自己是否处于边缘,是否容易由于容差,温度或月相而出现现场/生产故障?


2

第二添加我们假设您的设计已经过边缘测试,并且代码对您的问题很完美。(不是)我建议您验证以下内容;

  1. 将IO配置为具有快速转换并禁用输入过滤器
  2. 启用时钟输入模式
  3. 设置压摆率位(9?)以增加SDRAM接口引脚的压摆率
  4. 启用中继器模式,因为它们是双向的,并且不得在cmos输入上悬空。
  5. 更改电源电压以确定对误差的敏感性。
  6. 数据总线引脚的默认复位模式为FUNC = 0X00,MODE = 0X02,HYSTERESIS = ENABLED,INVERT = DISABLED和SLEW = STANDARD
  7. 您是否使用新函数值调用PINSEL_ConfigPin(),是否将MODE重置为INACTIVE(无下拉/上拉电阻)并关闭HYSTERESIS?
  8. 您是否正在使用for / next循环或离散代码,例如;

    • LPC_IOCON-> P3_0 | = 1; // D0 @ P3.0
    • LPC_IOCON-> P3_1 | = 1; // D1 @ P3.1
    • LPC_IOCON-> P3_2 | = 1; // D2 @ P3.2等
  9. 您是否断言每次需要时都重新启用WE引脚?
  10. 你用吗?* pPIN&=〜(0x00000007); //清除功能位“

我记得我是从一名物理研究生毕业的学生调试我的第一个CMOS设计的,用于地震便携式记录,可切换计时器逻辑板。没有固件或uC,但他从未做过最坏情况下的公差分析,并且当我自己构建和调试十几个板时,硬件到处都有竞争状况。地震教授请来了物理系主任,问我为什么不能调试电路板,然后我不得不建议他,由于亚稳态条件和所用时钟的缘故,组件变化会暴露出许多设计缺陷,称为定时竞赛条件。他仍然还是不明白,然后我问他告诉我,在我的手从低到高达到腰高之前,我放开了几根手指。然后他说,您不能那样做并且期望正确的答案。我说的很准确。多数民众赞成在原始的种族条件。随着复杂程度的提高,它们变得不那么明显。曼尼托巴大学1973年。

第一次添加:您使用了哪种总线终端方案? 总线 首选方法(1),1.25Vdc干净吗?


  1. 这些委员会是否为ICT付费? 裸板测试是必须的
  2. 您是否在Gerber布局说明中指定了阻抗?
  3. 您是否在具有公差的布局上运行模拟?
  4. 电路板上和预浸料的#of层上的介电常数控制带状线和微带的阻抗以及走线宽度和间隙。

    有许多免费的带状线在线Z计算器。

    您可以尝试在较大的走线或接地平面上测量电容,并比较两个裸板。

    还要查看具有高速示波器的信号,并观察过冲和时钟<>数据眼图。

对于错误必须有一个简单的解释,但要找到它并不容易。但是,一旦找到根本原因,您就不会再犯该错误了。

补充: 我发现的另一个错误是您的堆叠高度图未指示铜层的厚度,除非有错误或铜层厚度为0.039毫米(不是;),否则不足以容纳6层。


只是对OP的评论-我看到OP正在使用Altium Designer,并且软件中内置了一个阻抗计算器。我没有用太多,但我知道它在某处!
dext0rb

2
布线时(在PCB视图中按W),按Tab键,您将看到估计的阻抗。
ajs410 2012年

通常对于低复杂度的100 PWB,我不会为ICT(测试)付费,但是它们有盲区,因此,我需要考虑...并测量裸板上的电容V + <> GND
Tony Stewart Sunnyskyguy EE75'5

我没有为这些板上的阻抗控制付费。根据我的路由设计,Hyperlynx(MentorGraphics)中的模拟线显示出非常完美的波形(或在规格范围内)。为了对此建模,我重新创建了每条传输线,并通过IBIS模型。我没有足够带宽的范围来适当研究实际信号=(
詹姆斯

1
您好@TonyStewart,感谢您的支持。1)原型板不需要快速旋转。启用且没有任何更改。2)不确定这是什么意思-时钟是输出吗?3)滞后保持启用状态。禁用,没有任何改变。4)未在proto上启用增加的压摆。启用且没有任何更改。5)未经测试。7)引脚配置功能不会更改其他位。8)控制引脚的离散代码,数据/地址循环的离散代码9)什么时候需要启用WE?EMC控制器应该为我这样做吗?10)在设置位之前,请注意。我还有另外一个原型订单,下周在这里。
詹姆斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.