新闻  |   论坛  |   博客  |   在线研讨会
【转】NiosII中SDRAM相移计算
502593045 | 2011-02-26 16:17:03    阅读:4999   发布文章

如何连接Nios IISDRAM

SDRAMNios II连接的典型电路框图如下图所示。SDRAMSystem使用同一个PLL输出时钟,可以保证System ClockSDRAM Clock的相对抖动比较小。外部晶振的时钟送入PLL,然后由PLL产生两个同频的时钟一个供给Nios II系统使用,另一个供给SDRAM使用。(把PLL设置成Zero Buffer Mode可以比较方便地控制SDRAM Clock和输入时钟Extern Clock的相位关系。)Nios II系统中的SDRAM控制器和SDRAM通过双向数据线以及其它的单向控制线和SDRAM相连。

SDRAM Clock通常是E0输出或者C2输出,E0和C2都是PLL专用于输出外部时钟的,有比较小的抖动。由于一个FPGA中通常有若干个PLL,综合后使用哪个PLL是由输入时钟Extern Clock决定的,所以SDRAM Clock必须和Extern Clock是同一个PLL的专用输入管腿和专用输出管腿。调试SDRAM和Nios II 的最关键是调整SDRAM Clock的相位。下面推导SDRAM Clock和Extern Clock的相位关系。

用实线向上箭头表示Extern Clock的上升沿,用虚线向上箭头表示Sdram Clock的上升沿。先看第一种情况:FPGA输出数据,而SDRAM采样数据。FPGAExtern Clock上升沿的时候送出数据,经过最大Tcoutmax(FPGA)的时间在FPGA的管腿输出,由于SDRAM的输入建立时间为Tsu(SDRAM),所以Sdram Clock的采样时机必须在信号到达SDRAM后再等Tsu(SDRAM)。忽略PCB板传输延时,有:

Tlead=T(Tcoutmax(FPGA)+ Tsu(SDRAM));其中TleadSDRAM Clock相对Extern Clock的最大提前量,T为时钟周期。

在下一个时钟上升沿来了后,FPGA会驱动新的信号,在经过最小Tcoutmin(FPGA)的时间(相当于输出保持时间)可能把先前驱动的信号冲掉,而SDRAM要求输入信号要求在采样的时候保持Tih(SDRAM)的时间,所以SDRAM的采样时机必须在Tcoutmin(FPGA)到来之前Tih(SDRAM)。忽略PCB板传输延时,有:

Tlag=Tcoutmin(FPGA)-Tih(SDRAM);其中TlagSDRAM Clock相对Extern Clock的最大落后量,Tih(SDRAM)SDRAM输入保持时间。

第二种情况:SDRAM输出数据,FPGA采样数据。分析和上面类似,最后有:

TleadTcoutmin(SDRAM)-Tih(FPGA)

Tlag= T(Tcoutmax(SDRAM)+ Tsu(FPGA))

选取最小的Tlead和最小的TlagSDRAM Clock的允许最大提前量和最大的落后量。举个例子:Nios IISDRAM(MT48LC4M32B2-7)相连主频100MHz。其数据如下:

-       Data In: Tsu= 2 ns, Tih= 1 ns

-       Data Out: Toh(Tcoutmin)= 2.5 ns, Thz/tac(Tcoutmax)= 5.5 ns (CL=3)

l      2.55.5 ns (Data Undefined)

FGPA的数据可以在编译报告的时序分析部分得到,Tcoutmax(FPGA)Tsu(FPGA)Tih(FPGA)分别可以从TcoTsuTh部分得到各个SDRAM相关信号的最大值。而Tcoutmin(FPGA)则可以运行Fast timing model timing analyzer来得到。

比如:

-       Data In: Tsu= 1.75 ns, Tih= 0 ns

-       Data Out: Tcoutmin(FPGA) = 2 ns, Tcoutmax(FPGA)=5.5 ns

 

Tlead=T(Tcoutmax(FPGA)+ Tsu(SDRAM))10ns5.5ns2ns2.5ns

TleadTcoutmin(SDRAM)-Tih(FPGA)2.5ns0ns2.5ns

选一个小的,仍然是2.5ns。即Tlead2.5ns

Tlag=Tcoutmin(FPGA)-Tih(SDRAM)2ns1ns1ns

Tlag= T(Tcoutmax(SDRAM)+ Tsu(FPGA))105.5ns1.75ns2.75ns

选一个小的,即Tlag=1ns

所以SDRAM Clock的相对External Clock相位为-2.5ns~+1ns之间。在生成PLL时指定在这个范围内的相位偏移就可以了。

注意:因为FPGA的时序分析报告都是以External Clock来算的,所以我们并没有使用System Clock来分析。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
虾虽在江湖,江湖却没有关于虾的传说!
推荐文章
最近访客