|
大家好,我是一个FPGA的初学者,最近做了一个最简单的FPGA板子,上面就只有EP2C5,一个EPCS,一个SDRAM。用SOPC做好软核后(有根据网上的教程建立EPCS控制器和SDRAM控制器),进入NIOS II后,写了一个最简单的小测试代码,编译下载后发现出现了Verify fail的问题,后经网上找寻资料,得知是SDRAM的相位脚需要建立一个PLL并加延时。我在quartus 9.0中做了一个ALTPLL,其中输入频率27M,C0输出27M,C1输出108M给NIOS核,C2输出108M给SDRAM的时钟(C0,C1均无移相),但是C2的移相却不知道该如何计算,网上都是给一个经验值-63度,可我想知道这个值是怎么计算来的。
另:网上也找到些计算公式,如下:
SDRAM的时钟滞后控制器的时钟值读取滞后或滞后中的较小值。
读滞后:tOH(SDRAM)-tH_MAX(FPGA)
写滞后:tCLK(FPGA)-tCO(max) - tDS(SDRAM)
SDRAM的时钟超前控制器的时钟值取读超前或写超前中的较小值。
读超前:tCO_MIN(FPGA)-tDH(SDRAM)
写超前:tCLK-tHZ(SDRAM)-tSU_MAX(FPGA)
然后将这两组值相加后取平均。
其中SDRAM的参数我在SDRAM的规格书的参数表AC CHARACTERISTICS (AC operating conditions unless otherwise noted)中都找到了对应的值,
FPGA的参数我在quartus编译后的时序报告中找到了tH, tSU,其中tH_MAX是我取时序报告tH栏中所有与SDRAM有关的信号的最大值。
但是tCO我却不知道该如何取值了,本来按我的理解tCO(max)和tCO(min)应该是tCO里面的最大值和最小值,但是看网上的计算参数,tCO(max)和tCO(min)大概有1ns多的差距,可我的时序报告里面有tCO的差距都很小,只有0.0xns,我想问一下这tCO(max)和tCO(min)这两个值我是不是取错了?
另外大家计算SDRAM的相位延时时都是按这种方法计算的吗?有没有其他什么计算方法的?
|
|