原创 VGA接口时序约束-下

2013-5-31 19:47 2129 12 14 分类: FPGA/CPLD 文集: VGA接口时序约束

VGA接口时序约束-

SF-VGA模块购买地址:http://myfpga.taobao.com/

         如此这般约束之后,我们可以重新编译一下系统,然后看看约束结果,我们拿到一条setup时间的分析报告。如图所示,数据路径的分析没有啥问题,我们约束的0.62nsmax set_output delay值出现在了data required path中,说明我们的约束生效了。

17-1.jpg

 

         再来看hold报告,也是随便找一条路径。-1.28nsmin set_output_delay也已经生效了。

20130531174105538002.jpg

         即便如此,细心的读者一定没有忘记,前面的分析中我们忽略了时钟偏斜的延时值。没错,下面我们就要将它也考虑到路径延时中去。因为,我们的LCD_CLK直接就是连接到了驱动FPGA内部模块的时序产生时钟信号,所以它的偏斜其实就是PLL输出的这个时钟信号到管脚的延时值。因为这个路径其实也应该算在了reg2pin的时序路径中,如果不做约束系统不会对其进行分析的。所以,为了获得这条路径的延时信息,我们势必需要对这条路径做一下约束。我们可以先试试将这条路径用set maximum delayset minimux delay约束在0~5ns之间(怎么?你还不了解这两条约束语句,你out了,赶紧回到SDRAM约束的章节中好好复习一下)。

set_max_delay -to [get_ports {vga_clk}] 5.000

set_min_delay -to [get_ports {vga_clk}] 0.000

         约束完成后,我们重新编译下系统,再来看看约束的结果。Setup时间余量最小的路径如下。

20130531174110808003.jpg

         Hold时间余量最小的路径如下。

20130531174114633004.jpg

         从这份报告中,我们获得的信息是,从PLLclk[1]输出到LCD_CLK管脚的延时为2.116ns~2.598ns,那么给这个延时留一些余量,可以继续将他们的约束范围限制在2ns~2.7ns之间,即:

set_max_delay -to [get_ports {vga_clk}] 2.700

set_min_delay -to [get_ports {vga_clk}] 2.000

加上前面我们已经计算的LCD_CLKPCB上的走线延时,可以得到LCD_CLK的中偏斜时间约为2.44ns~3.14ns。留足余量,我们可以取LCD_CLK的时钟偏斜为2.4ns~3.2ns。其实在比较严谨的系统中,通常用于给外部芯片的时钟信号要走FPGApll输出专用管脚,并且也最好这个时钟信号是PLL直接输出供给的,满足这两个条件的时钟输出路径偏斜其实会限定在一个非常小的范围里,而不会像我们这个设计一样出现理论计算这么宽的时钟偏斜范围(大家领会精神就行,这个时钟速率还不算太高,不用苛刻的约束去做也就能够满足我们的系统要求)。我们这个设计实际上也是PLL直接供给的,虽然没有和数据驱动时钟没有做相位差调整。如果整个LCD_CLK连接到了FPGA的专用时钟输出管脚上,那么时钟偏斜会小很多,这也是只所以推荐走PLL专用输出时钟管脚的原因。

20130531174118704005.png

         接下来,我们需要将LCD_CLK的时钟偏斜值代入output max delayoutput min delay的计算公式。原公式中,cd_alt参数实际上都出现在了时序分析的launch edge的时钟网络延时中(如图所示),所以我们无需再代入,直接取值为0ns即可。

output max delay = 1ns + 0.2ns + (0ns – 3.2ns) = -2ns

output min delay = 0ns – 1.5ns + (0ns – 2.4ns) = - 3.9ns

20130531174123913006.jpg

         重新约束后如下:

set_output_delay -clock { LCD_CLK } -max -2.4 [get_ports {vga_b[0] vga_b[1] vga_b[2] vga_b[3] vga_b[4] vga_g[0] vga_g[1] vga_g[2] vga_g[3] vga_g[4] vga_g[5] vga_r[0] vga_r[1] vga_r[2] vga_r[3] vga_r[4] adv7123_blank_n}]

set_output_delay -clock { LCD_CLK } -min -3.9 [get_ports {vga_b[0] vga_b[1] vga_b[2] vga_b[3] vga_b[4] adv7123_blank_n vga_g[0] vga_g[1] vga_g[2] vga_g[3] vga_g[4] vga_g[5] vga_r[0] vga_r[1] vga_r[2] vga_r[3] vga_r[4]}]

         最后,再次编译系统,查看时序报告。我们看到数据总线的SetupHold时间的余量都很充足,这样看来,我们的设计达到了时序收敛的目的。

20130531174130849007.png

20130531174134359008.jpg

         为了帮助大家进一步的理解时序的概念,这里可以找一条路径,将他们的建立时间和保持时间波形图同时拉出来,如图所示,大家便可一目了然。建立时间和保持时间会分别使用他们最坏的情况进行分析,然后得出相应的时序余量。左图的蓝色线条是时钟的latch沿,我们看在它前面9.713ns数据都是保持稳定的,完全满足ADV7123芯片datasheet上的0.2ns建立时间要求;右图的蓝色是保持时间的latch沿,它和launch沿是对齐的,我们看到它以后大约3.9ns数据才会发生变化,也完全满足ADV7123芯片datasheet上的1.5ns保持时间要求。

20130531174138148009.jpg

 

SF-VGA模块购买地址:http://myfpga.taobao.com/

 

 

文章评论2条评论)

登录后参与讨论

用户1633069 2013-8-5 09:08

上一节在计算output max/min delay的时候PCB延时还是0.42和0.22ns,到了这里怎么变成1ns和0ns了额。。。。。

sunce_464022046 2013-6-25 16:29

下载
相关推荐阅读
特权ilove314 2016-06-30 21:16
例说FPGA连载6:FPGA开发所需的技能
例说FPGA连载6:FPGA开发所需的技能 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   前面的文字已经做了很多铺垫,相信读...
特权ilove314 2016-06-28 21:09
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
特权ilove314 2016-06-28 21:05
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
特权ilove314 2016-06-26 22:11
例说FPGA连载4:FPGA语言与厂商介绍
例说FPGA连载4:FPGA语言与厂商介绍 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   Verilog与VHDL 说到FP...
特权ilove314 2016-06-23 21:26
例说FPGA连载3:FPGA与其它主流芯片的比较
例说FPGA连载3:FPGA与其它主流芯片的比较 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   FPGA、ASIC和ASSP...
特权ilove314 2016-06-21 20:32
例说FPGA连载2:FPGA是什么
例说FPGA连载2:FPGA是什么 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   2015年伊始,Intel欲出资百亿美金收...
我要评论
2
12
关闭 站长推荐上一条 /2 下一条