时序分析,重中之重,柳暗花明又一村 搞定美女了

问题:

  博客园:http://www.cnblogs.com/crazybingo/archive/2010/12/01/1892610.html

  博客园:http://www.cnblogs.com/crazybingo/archive/2010/12/04/1896645.html

  OURAVR:http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4437397&bbs_page_no=1&search_mode=1&search_text=VGA&bbs_id=9999

经过了无数个无眠的夜晚,问题终于解决了。。。柳暗花明又一村。。。

经过了n个网友的帮助:狼来了、最后的红旗手、达克斯特、Neddy、七哥、牙缝、湘雨潇潇等人的人心帮助下,以及万般努力的情况下终于解决了。。。

现在我把我的问题,把我的bug,把我的经历,都告诉你们

首先,有几个必须要了解的知识,这些都是我个人转载整理归纳总结的:

  (1)影响FPGA设计中时钟因素的探讨http://www.cnblogs.com/crazybingo/archive/2010/12/08/1900450.html

  (2)门控时钟与多扇出问题解决方案http://www.cnblogs.com/crazybingo/archive/2010/12/08/1900388.html

  (3)FPGA你必须知道的那些事儿http://www.cnblogs.com/crazybingo/archive/2010/12/07/1899597.html

  (4)全局时钟--复位设计http://www.cnblogs.com/crazybingo/archive/2010/12/04/1896593.html

接下来就剩下我的心里话了:

  最重要的一句话是:“重大的失败,往往是因为微小的细节”,细节决定成败。

  其次,学会FPGA真的挺简单的,相信给你一个月时间你要不能驱动VGA那可能智商不够吧,但是要想学好,没那么容易,往往因为细节,让你的东西永远不完美

  最后,完美是没有极限的。。。

解释一下我的项目当时显示的美女出现边沿闪电的原因:

  (1)时序约束,时钟优化,

  (2)时序建立时间,保持时间的把握

  (3)时序逻辑,组合逻辑传输延时

  (4)最可怕的 时钟在寄存器之间的传输延时

  (5)时序逻辑的信号滞后,超前

  (6)跨时钟域信号传输,同步处理

  (7)门控时钟,始终满天飞,(用最高时钟控制一切)

部分原因还是结合代码跟你们解释吧:

(1)输入时钟是CLOCK,CLOCK2 是50MHz的,经过综合器设置适当的时钟约束(105%)可以将相关的逻辑在布线时尽量布的靠近一点,从而减少走线的时延 

(2)always@(posedge MCU_CLK or negedge RST_n)

    MCU_CLK是CPU 的写时钟,没一个时钟的上升沿,verilog读取数据写入SRAM,在表上看着完全没有问题。

    实际上,当然在写数据上没问题,但因为用的不是全局时钟,是门控时钟,会影响组合逻辑Tdelay,
    我尝试了n遍,最后换成了使能时钟,跨时钟域信号同步处理(CPU 20Mhz,verilog 65MHz)reg同步时钟,写入SRAM,这样会更加的稳定,数据没有缺失

(3)always @ (negedge VGA_HS or negedge RST_n)

    VGA驱动的地方,本来VS是在HS的上升沿变化的,为了达到的数据的稳定变化(排除异常),我用HS_CLK最为跳变时钟,自我感觉良好

    但实际上在65MHz  1024*768的吞吐率下,虽然VS本身的确没有任何问题,但是由于门控时钟的介入,使布线不稳定,重者造成设计混乱。门控时中较多,也会使得整个设计的最大工作速度下降,降低产品的性能

    因此因为这一步的出错,使得整个系统性能大大下降,数据出现了不稳定甚至亚稳态,数据不能够在保持时间内传输,以至于出现边缘闪电(变化快)

    最后我还是通过判断hcnt写成了使能时钟(问题解决)

(4)位置有点点点点不正常,盯着他才能看出来,我在我的ColorTest观察过,实际上是因为时序逻辑,组合逻辑的问题

  类似if( (hcnt >= H_DISP+H_FRONT) && (hcnt < H_DISP+H_FRONT+H_SYNC) )的地方,实际上你在时序逻辑判断时钟给一个信号赋值,但经过建立时间,组合延时,保持时间之后,已经是下一个clk了,数据的出现实际滞后了一个clk,所以要保证时序的绝对准确,要把条件减小1,这样因为超前+滞后 刚刚满足了时序

  

  就在要回寝室的那一刻,我看到了亲爱的美女,完全不在有色差 ,开心,一切尽在时序中。。。

  突然想起暑假的时候师父跟我说过:“为了系统的稳定以及高速时钟干扰,整个系统要用最高时钟控制,不能用门控时钟,只能用使能时钟”,NND问题就出在这里

  经过了冰山火海,终于解决了,我提醒我自己,回去再好好研究FPGA的时序分析,研究时序约束,研究时域分析,研究异常问题,研究系统稳定性能问题。。。。

  要做出一个东西简单,要做好一个东西真的没那么容易。。。。。

  明天把图片放上来。。。。。

  谢谢大家的关心。。。 时序分析,你完蛋了。。。

  

  

继续。。。。走一步 ,再走一步,。。。    

posted on 2010-12-09 00:21  CrazyBingo  阅读(4617)  评论(3编辑  收藏  举报

导航