首先,请注意,您已选择绝对最差的封装来实现同步开关问题,因为PQ208具有较长的引线框架,因此具有较高的引线电感。
话虽这么说,你需要非常小心DDR SDRAM的布局。
理想情况下,您应该将多个引脚上的引脚分散以减少接地反弹,但当然这可能会干扰可能需要另一个Vcco电压的其他逻辑连接。
另请参阅MIG是否支持您选择的器件,并使用MIG生成引脚排列以避免IOB对冲突和其他细微的布线问题。
例如,由于DDR时钟路由限制,DQS引脚无法与DQ引脚共享IOB对(这在过去让我感到烦恼,因为我的64位DIMM的可用宽度为55位)。
最后,FPGA和SDRAM之间的路由长度应该非常短,特别是因为您的4层电路板不具备最佳的传输特性。
您最好的布局可能涉及将SDRAM芯片直接放置在电路板底层的FPGA下面。
当然这意味着很多过孔。
如果你有任何备用IO引脚(不太可能,因为你已经在谈论如何使用仅输入引脚),将一些作为虚拟地点分配是有用的。
不幸的是,仅输入引脚不适用于虚拟接地。
匹配线长时,保持合理。
较短的线条比完美匹配的线条更好。
许多人使用自动路由工具将线路长度与最近的密耳相匹配,同时使所有路线更长,以便为必要的慢跑腾出空间。
在165 MHz时,您可以使用+/- 0.5“来实现跟踪匹配,而不会出现任何实际问题。还要记住除DQS和时钟之外的地址和控制线实际上是单数据速率,因此如果您需要权衡一条路由的质量
另一方面总是优先考虑DQ,DQS和其他线路上的时钟。
将大量信号连接到另一台Spartan 3E可以为您带来银行业务的灵活性。
显然,您不需要这些互连都使用相同的IO标准,因此您可以在任何银行中找到备用引脚。
除此之外:
查看实际带宽要求,看看是否可以使用较慢的SDRAM或缩小总线宽度以减少SSO问题。
考虑外包焊接和BGA封装。
在设计印刷电路板之前,无论如何都要尝试在存储器接口部分建立FPGA设计。
正如我所提到的,如果你可以使用MIG来生成SDRAM引脚,你应该相当确信不存在IO路由问题,但是建立整个设计会更好。
祝你好运,
的Gabor
- Gabor
以上来自于谷歌翻译
以下为原文
First, be aware you have chosen the absolute worst package for simultaneous switching issues, as the PQ208 has a long leadframe and therefore high lead inductance. That being said, you need to be very careful with layout for the DDR SDRAM. Ideally you should spread out the pins on multiple banks to reduce ground bounce, but of course that may interfere with other logic connections that may need another Vcco voltage. Also see if MIG supports the part you chose, and generate a pinout using MIG to avoid IOB pair conflicts and other subtle routing issues. For example a DQS pin cannot share an IOB pair with a DQ pin due to DDR clock routing constraints (This burned me in the past leaving me with a 55-bit usable width of a 64-bit DIMM). And finally the route lengths should be very short between the FPGA and the SDRAM, especially since your 4-layer board will not have the best transmission characteristics. Your best layout may involve placing the SDRAM chips directly under the FPGA on the bottom layer of the board. Of course this means a lot of vias. If you have any spare IO pins (unlikely since you're already talking about how to use the input-only pins) it would be useful to assign some as virtual grounds. Unfortunately the input-only pins won't do for virtual grounds.
When matching line lengths, keep it reasonable. Shorter lines are better than perfectly matched lines. Many people use the automated routing tools to match line lengths to the nearest mil, while making all of the routes much longer to make room for the necessary jogs. At 165 MHz you can get away with +/- 0.5" for trace matching without any real problems. Also remember that address and control lines other than DQS and clock are effectively single data rate so if you need to trade off the quality of one route for another always give preference to the DQ, DQS and clock over these other lines.
Connecting a number of signals to another Spartan 3E can win you some flexibility with banking. Obviously you don't need those interconnects to all use the same IO standard, so you can find spare pins in any bank for this.
Other than that:
Go through your actual bandwidth requirements and see if you can use slower SDRAMs or narrow the bus width to reduce SSO problems.
Consider outsourcing you soldering and going to a BGA package.
In any case try to build the FPGA design, at lease the memory interface portion, before you design the printed circuit board. As I mentioned, if you can use MIG to generate the SDRAM pinout you should be fairly confident that there won't be IO routing issues, but having the entire design built would be preferable.
Good Luck,
Gabor
-- Gabor