我有一个使用LPC1788和 ISSI ( IS42S32800D ) 的 SDRAM 模块的设计。这是一个 32 位的接口。
我已经完成了这个设计,并与一家 PCB 制造商制作了一个原型,该制造商制作了 6 层原型。原型 PCB 工作正常。然后我想我会从我通常的 PCB 供应商那里获得小批量(100 个)制造的 PCB。我给了他们我的原型用来确保没有问题的堆叠信息。
然而!我的生产板有很多问题。起初,我无法使用我在原型板上使用的相同代码从 SDRAM 获得任何响应。以前的板在 120Mhz 下工作,所以我确信这个新板有问题。然后我发现一个帖子,人们建议在 SDRAM 数据线上使用中继器模式(我以前没有使用过),这引起了 SDRAM 的响应,但它并不稳定。我可以写入 16 个左右的地址,但随后读取返回的数据(在每个地址)是我最后写入的数据(可能是由于中继器模式)。当我禁用中继器模式时,返回的数据是 0xFFFFFFF。我现在正在尝试以 48Mhz 连接,这是我有计时的最低配置。
我在两块板上都使用相同的 22 欧姆终端电阻(在数据线上),数据线平均长 3 厘米。时钟线长2.4cm。地址线平均长度为 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 的路由: