我有一个使用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的路由: