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


    问题:

      博客园: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的时序分析,研究时序约束,研究时域分析,研究异常问题,研究系统稳定性能问题。。。。

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

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

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

      

      

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

  • 相关阅读:
    内联函数(inline function)
    被extern "C" 修饰后按照C语言编译
    函数重载-name mangling或mame decoration技术-看看反汇编
    cin、cout
    下载visual studio 环境搭建
    配置共享文件夹
    EFS加密文件系统
    十二、字符串(1)
    十五、文件
    十一、指针
  • 原文地址:https://www.cnblogs.com/lueguo/p/3373666.html
Copyright © 2020-2023  润新知