广告

特权和你一起学NIOS2 第五章 实战演练之时序收敛 part6

2010-11-16 16:55 3459 0 8 分类: FPGA/CPLD

 IO接口约束之output delay约束


         学习完相关的理论知识,下面就要结合工程进行计算。我们所使用的SDR SDRAM是三星的K4S641632,它在芯片上的引脚分布如图5.22所示。



c37f54dd-1965-4198-9216-cd2f0ddc68bd.JPG


图5.22


         这些引脚大致分为四个部分,即时钟信号(CLK)、地址总线(A0-A11/BA0-1)、数据总线(DQ0-DQ15)、控制信号(LDQM/UDQM/CS/WE/CAS/RAS/CKE)。


         时钟信号在前面已经做过约束,即FPGA器件内部定义为sdram_clk的引脚,对于SDRAM芯片而言这是一个外部输入(FPGA输出)的时钟信号。控制信号中LDQM/UDQM分别控制数据总线的低字节和高字节是否有效,通常均拉低,表示高低字节的数据都有效;CS是片选信号,WE是写选通信号,CAS是列选通信号,RAS是行选通信号,CKE是时钟有效信号,这五个信号的不同电平组合(满足一定时序要求)构成了不同的SDRAM控制指令。


         对于FPGA而言,SDRAM的所有控制信号以及地址总线都是output,而数据总线则是inout。因此,在IO约束中,我们需要对所有这些信号做output delay约束,同时还要对数据总线做input delay约束。它们的参考时钟即前面定义的生成时钟SDRAM_CLK。


         为了帮助大家更快理解SDRAM的基本时序关系,就用图5.23所示最简单的突发长度为4的SDRAM读写周期时序来做分析。通常一次读或写数据,先发起RAS选通命令,同时送行地址;然后间隔tRCD时间后发起CAS选通命令,同时送列地址,如果是写数据,则从该时钟周期开始连续写入4个有效数据(因为突发长度为4);如果是读数据,再等待2-3个时钟周期(通常称作潜伏期CL)后的连续4个时钟周期内数据总线的有效数据可供读取。



4bcffddb-3b71-4471-9ad9-f11980fd7822.GIF


图5.23


         在这整个时序关系中,我们不仅关心数据信号与时钟的关系,还有地址总线、控制总线与时钟的关系也是我们需要关注的,毕竟他们都是IO约束的一部分,他们的时序也都必须达到收敛。


         光靠时序图肯定还不够,细心的读者一定注意时序图中还有不少时间符号的标注,没有错,这些时间值都可以在datasheet里提供的时间表里对照的找到。下表就是图5.23对应的时间表。


cf24fa47-cae1-4a85-8f04-fd2e1b026315.JPG



         在这个表里,我们在理论中所提到的芯片内部建立时间、保持时间等都可以查到。我们将先对SDRAM的output接口做时序约束,那么需要先找出output max/min delay运算公式中的相关参数。


         先从上面的时间表里,我们可以看到Input setup time和Input hold time参数,其含义就是SDRAM信号的输入建立时间和保持时间。正好是output max/min delay运算公式中的外部器件的 和 两个参数。先做个说明,因为我们所使用的SDRAM器件速度等级为-75,所有下面的分析均以此列为准。所以,外部器件的 =2ns,外部器件的 =1ns。


         接下来我们来算PCB data delay的最大和最小值,好在我们的PCB是自己画的,Altium Designer也提供了一个很便利的功能。如图5.24所示,在PCB面板下选择All Nets,然后下面的列表中出现了所有网络连线的长度,我们也只要找到相关总线的最大最小线长,然后换算成延时时间即可。



2968e793-8966-4e2d-8ef1-318571acf784.JPG 


图5.24


         在这里要计算的相关SDRAM输出信号(时钟信号除外)中,最长连线为1982mil,最短连线为671mil,时钟信号(sdram_clk)为737mil。那么这三者分别带来前面的公式换算成延时时间为:


1.982*0.18ns(1000mil) = 0.36ns


0.671*0.18ns(1000mil) = 0.12ns


0.737*0.18ns(1000mil) = 0.13ns


         由此可得:<PCB max data delay> = 0.36ns,<PCB min data delay> = 0.12ns。


最后还差PCB clock skew值没有计算,我们重新来看图5.25中的时钟信号,这里的Ext_clk也就是sdram_clk,他们的相位通常都需要调整,肯定会有些偏差。而sdram_clk信号传输在PCB上的那一段走线延时即PCB clock skew值。有些人可能会纳闷sdram_clk从PLL输出到外部管脚这一部分走线也会有延时,为什么不算在PCB clock skew值中?其实这段延时值和sys_clk的时钟网络延时值一样,都是在FPGA内部,我们只要按照前面的方法约束好了这个sdram_clk,那么TimeQuest会乖乖的把它计算到时序分析的公式中去的,所以根本没有必要我们多此一举再去考虑它。因此,这里也得到了<PCB max/min clock skew> = -0.13ns。为什么是负数?大家回到前面复习下就明白,呵呵!



13c6db16-505c-423a-b5fa-340f5fd109ea.JPG


图5.25


         最后,我们再将前面得到的参数代入output max/min delay计算公式中,得到:


Output Max Delay = 0.36ns + 2ns + 0.13ns = 2.49ns


Output Min Delay = 0.12ns – 1ns – 0.13ns = -1.01ns


         分别再给点余量,取Output Max Delay = 2.6ns,Output Min Delay = -1.1ns。


         最后要把我们算得的结果告诉TimeQuest,点击菜单栏的ContrainsàSet Output Delay…。如图5.26和图5.27进行约束。



0fae28dd-5126-4b7a-8b6d-d03b65237540.JPG


图5.26



a8be3afc-fee4-408f-82ce-87d9fbe97216.JPG


图5.27


在console栏里会出现如下两个语句:


set_output_delay -clock { SDRAM_CLK } -max 2.6 [get_ports {sdram_addr[0] sdram_addr[1] sdram_addr[2] sdram_addr[3] sdram_addr[4] sdram_addr[5] sdram_addr[6] sdram_addr[7] sdram_addr[8] sdram_addr[9] sdram_addr[10] sdram_addr[11] sdram_ba[0] sdram_ba[1] sdram_cas_n sdram_cke sdram_cs_n sdram_data[0] sdram_data[1] sdram_data[2] sdram_data[3] sdram_data[4] sdram_data[5] sdram_data[6] sdram_data[7] sdram_data[8] sdram_data[9] sdram_data[10] sdram_data[11] sdram_data[12] sdram_data[13] sdram_data[14] sdram_data[15] sdram_ldqm sdram_ras_n sdram_udqm sdram_we_n}]


 


set_output_delay -clock { SDRAM_CLK } -min -1.1 [get_ports {sdram_addr[0] sdram_addr[1] sdram_addr[2] sdram_addr[3] sdram_addr[4] sdram_addr[5] sdram_addr[6] sdram_addr[7] sdram_addr[8] sdram_addr[9] sdram_addr[10] sdram_addr[11] sdram_ba[0] sdram_ba[1] sdram_cas_n sdram_cke sdram_cs_n sdram_data[0] sdram_data[1] sdram_data[2] sdram_data[3] sdram_data[4] sdram_data[5] sdram_data[6] sdram_data[7] sdram_data[8] sdram_data[9] sdram_data[10] sdram_data[11] sdram_data[12] sdram_data[13] sdram_data[14] sdram_data[15] sdram_ldqm sdram_ras_n sdram_udqm sdram_we_n}]


 

广告

文章评论 8条评论)

登录后参与讨论

ilove314_323192455 2011-1-17 12:58

对的,确实代错了,谢谢提出

gongjunjie1989_803067586 2011-1-15 22:03

特权大哥 我认为 Output Max Delay = 0.36ns + 2ns + 0.13ns = 2.49ns Output Min Delay = 0.12ns – 1ns – 0.13ns = -1.01ns这两个表达式有误的,按你和参考资料,你公式里边的PCB clock skew值是从源到目的寄存器的,所以我觉得这里的PCB clock skew应该是个负值-0.13ns, Output Max Delay = 0.36ns + 2ns + (-0.13ns) = 2.23ns Output Min Delay = 0.12ns – 1ns –(-0.13ns) = -0.99ns

yfm1202 2010-11-16 21:14

知道了,谢谢了

ilove314_323192455 2010-11-16 17:12

哈哈,是我用错datasheet了,不过表我贴上去了,重点学方法啊。有时间我相应更改一下

yfm1202 2010-11-16 15:18

下表就是图5.23对应的时间表。这个表看不到? 我查了一下SDRAM_K4S641632H-UC60.pdf,它里面,使用的SDRAM器件速度等级为75时,Input setup time为1.5,Input hold time为0.8呀,而在这里是2和1,我看错了吗?

sxmman_829049687 2010-11-16 09:11

谢谢你

ilove314_323192455 2010-11-16 08:55

特权同学的认知也在逐步的完善或者说是进步,目前这篇文章提到的应该是正确的。这篇文章说到的就是Output delay的计算,你可以认真看下来,他不涉及sdram的Tco,只有在计算Input delay的时候才涉及这个参数,下一篇文章应该要谈到这个查询方式和计算方法。谢谢

sxmman_829049687 2010-11-15 22:41

output delay呢?我看见您在深入浅出的那个实例里面的时序分析.txt,Tco是-2ns~4.5ns,但是SDRAM的Tco应该是Tac=Thz吧?我的这个SDRAM的datasheet上只有最大值5.4ns,没有负的值啊?为什么呢?还有就是在计算相移的那篇文章里,FPGA的Tco是添加output delay后的还是器件本身的Tco?我看见Altera官方的一个文档 FPGA_pll_tuning.pdf里面用的是IOE的固有的参数Tco...而特权您在博文里面的数值我估计是添加延迟后的吧?麻烦指点指点小弟我啊。谢谢了
相关推荐阅读
ilove314_323192455 2016-06-30 21:16
例说FPGA连载6:FPGA开发所需的技能
例说FPGA连载6:FPGA开发所需的技能 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   前面的文字已经做了很多铺垫,相信读...
ilove314_323192455 2016-06-28 21:09
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
ilove314_323192455 2016-06-28 21:05
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
ilove314_323192455 2016-06-26 22:11
例说FPGA连载4:FPGA语言与厂商介绍
例说FPGA连载4:FPGA语言与厂商介绍 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   Verilog与VHDL 说到FP...
ilove314_323192455 2016-06-23 21:26
例说FPGA连载3:FPGA与其它主流芯片的比较
例说FPGA连载3:FPGA与其它主流芯片的比较 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   FPGA、ASIC和ASSP...
ilove314_323192455 2016-06-21 20:32
例说FPGA连载2:FPGA是什么
例说FPGA连载2:FPGA是什么 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   2015年伊始,Intel欲出资百亿美金收...
我要评论
8
0
广告