一直想写点有关xilinx方面的东西,但踌躇半天,无从下笔,一是自己文采所限,另一方面又觉得无甚内容,思来想去,还是把自己使用xilinx的过程记录下来。我对xilinx的使用也是从入门到提高,这中间也走过很多弯路,现在回头看以前的经历,有时觉得好笑,那时感觉很难的东西,可能现在一两分钟就可解决,容易的东西,随着研究深入,又会发现很多意想不到的、豁然贯通的方法。现在的经历将来难道不会再现?把自己使用过程点点滴滴记录下来,一是给自己一个很好的总结,也是把自己的失败、曾经的经历剖析出来,另一个如果能给他人些微的启迪,岂不也是一件好事?
初次接触xilinx,还是08年。以前主要使用它家器件,使用xilinx也是工作使然。换一个平台,谁都不乐意,可这是公司要求,屋檐下不得不低头。幸亏以前有fpga设计的底子,转到xilinx平台,主要是工具的熟悉。注意:团队的好处这时最容易体现出来,xilinx的界面不是很友好,对入门来讲确实要花点时间。幸亏有同事对这方面很熟悉,所以解决这种界面操作问题,只需跑个腿,张嘴问一下。当时的感觉:一个字爽。其实团队的力量不光是在这个时候体现出来,fpga的设计越来越复杂,单靠个人把各个方面吃透太难。借助于团队,每个人可对某个专题做深入了解,然后大家一起讨论、综合,
你会发现这种方式,对个人和团队水平的提升非常有益。记住团队的力量。
另外,兴趣是你最好的老师。只有你对fpga的设计非常着迷,你才会不断发现问题,然后穷尽脑汁解决它,周而复始,螺旋上升。没有强烈的兴趣作支撑,就不会深入去了解、设计fpga,不会有发现问题那种焦头烂额、不撞南山不回头的感觉,也不会有解决掉某个问题带来的那种发自内心的喜悦和成就感。兴趣应是你某个选择最主要的参考,记住,选择fpga,你是否有兴趣?
个人现在感觉设计fpga的难点,主要在于接口时序和内部逻辑。接口时序主要是fpga怎样把外部数据无误搬移到fpga内部。内部逻辑主要是怎样在尽可能高频率下、小面积实现功能。接口时序主要分析器件的时钟和物理接口,譬如DCM、PLL、serdes、delayline等。内部逻辑主要考虑时钟和代码风格等,我想再看器件手册,一般是先看看CLOCK部分,然后再看看selectIO部分。这两部分熟悉了,就有可能设计出高速、可靠的产品。譬如dcm的使用,可能很少有人使用dcm的动态调整功能,xilinx的spartan3对ddr的设计就使用这一功能。利用动态调整时钟,做到内部时钟和数据相位对齐。spartan6中sdi的一个例程,使用延迟线的方法,使时钟和数据相位对齐。在高速接口部分,几乎无一例外,都使用xilinx最底层的东西。注意对器件手册的详细了解。
另一个,在网上多看看论文和原厂的**。读了很多xilinx的源码,真的受益非浅。这些源码本来就是专业人士所写,他们的想法、思维,会给你一个新的诠释。另外还有很多好的**,也会给你有益的启示。最近对异步fifo很感兴趣,网上搜了篇非常经典的**,读了之后,如醍醐灌顶。再给我多少时间,很多问题我也不一定分析出来,这就是高度和差距。站在巨人的肩膀,你也是一个高人。
随心所欲,想到哪里就写到哪里,文笔不好,也无组织,本来还想聊聊自己丰富工作经历,一看偏离主题,算了,以后有机会再聊。 |