最近我用 EP2C5核心板做niosii的实验,再添加SDRAM后,
在IDE上 run总是出现 Verify failed between address 0x1800000 and 0x180FAF7,
这部分地址是SDRAM的。
在论坛上也看了些帖子,关于verify failed的,想想我的问题可能是以下几点:
1: SDRAM 数据线是双向的,(我在 assignment => pin 里将 SDRAM_DQ 的 direction 都设成 bidir的,应该可以了吧?)
只是其中 SDRAM_DQ[1]管脚没有配置,(在 核心板的管脚配置表里 没有 SDRAM_DQ【1】的对应管脚。)
2: SDRAM的时钟问题:
我按照 handbook 里的方法计算 pll 的相位偏移,还是verify failed。可能我计算数据不对,以下是我的计算数据,
首先在 SDRAM datasheet 里找 ·T oh ——output data hold time. 2.5ns
·T hz (dataout high-impedance time) 5ns (我用Tshz ——clk to output in hi-z)
·T ss -- data input setup time 1.5ns
·T sh -- data input hold time 1ns
然后 compile
在 classic timing analysis 的 report里 找到 和SDRAM有关的 最大 tsu tco th 以及最小的 tco 分别是:
·tco-min 2.833ns
·tco-max 7.672ns
·th -max -1.202ns
·tsu-max 1.552ns
实际时钟周期是14.461ns (理想的为20ns)
计算时钟偏移:
read lag = toh - th_max = 2.5 - (-1.202) = 3.702 ns
write lag = t_clk - tco_max -tss = 14.461 - 7.672 - 1.5 =5.289 ns
read lag < write lag
read lead = tco_min - tsh = 2.833 -1 = 1.833 ns
write lead = t_clk - thz - tsu_max = 14.461 - 5 - 1.552 = 7.909 ns
read lead < write lead
取较小的进行计算 t_delay = (- read lag + read lead)/2 = - 0.935 ns
设置好pll 的时钟偏移后 仍然出现 verify failed
大侠们 这样计算有问题吗?
能不能贴贴你们成功的设计。 thanks