1. <em id="3qmea"><ol id="3qmea"></ol></em>
    2. <em id="3qmea"></em>
      (玩电子) 电子技术学习与研究
      当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

      分享一些FPGA学习的经验

      作者:佚名   来源:本站原创   点击数:x  更新时间:2012年01月19日   【字体:

           从开始学FPGA到现在粗略算来的话,已经有3个多月了,就目前而言,我并不确定自己算不算高手们所说的入门了。但是不管现在的水平如何,今天就总结一下自己学习它的感受或一些认识吧。

             首先,先说一下自己的在学习中所发现自己的不足之处:

      1.      不会总结。

      2.      学习的?#24049;?#20064;惯没养成。

         在写FPGA的基本模块时,遇到的问题有许多,譬如,?#21019;?#30721;时的警告,特别是一些不能忽视的警告,每次遇到时,总是还要检查一会儿才能改过来,或者有的警告已经出现了几次,但是就是解决不掉。每次在学一个模块时,只要是看懂了,它的一些重点就没有及时的记录在本子上,只有个别的想起来时,才会做?#22987;恰?#27599;做完一个模块,没有及时记录下自己从这个模块中学到了什?#30784;?#19978;面的不足,都是在写模块的过程中,自己逐渐暴露出来的。我很庆幸自己的一些问题能及时的被发现,虽然年前的学习将暂告一段落,但是,在年后的学习中,我一定会时刻记得自己以前在学习上出现了怎样的不足,避免类似的事情再次发生。像遇到警告时,都要记录下来,通过改正后,要注释,写下警告的原因,定期看一下。我上次写的一个代码就没有注释现在自己都看不懂了

      图一:非阻塞赋值 

       

      图二:阻塞赋值

             当想把a先赋给b,然后赋给c时,阻塞赋值是b和c在同一个脉冲下,一起等于a,而非阻塞赋值则是先把a赋给b,在下一个脉冲时,再将b赋给c,这才符合设计的初衷。所以,在运用时,要注意到它们的不同之处。在时序逻辑中,用非阻塞赋值,而在组?#19979;?#36753;中用阻塞赋值。

             除了阻塞与非阻塞赋值的区别要理解清楚外,状态机又是一个重点,会运用状态机非常重要,这是在写可调时钟时,自己深刻意识到的,当时写可调时钟时,想要调节它的不同模式,但是又不能在不同的过程块中,对同一个变量赋值(和C51的不同之处),所以,当时?#21019;?#20195;码的时候,走了弯路。这几次写的几个代码中也用到了状态机,如:矩阵键盘的扫描,串入并出和并入串出,AD0832。它让我越来越?#33455;?#21040;,要想控制好一个层次分明的工作流程,状态机不可少。而要想写好一个状态机,首先要做的就是要确定若干个状态,明确各个状态之间的逻辑关系,转移条件等等。虽然,到目前为止,自己还有几个模块没写完,但是,自己对状态机已经不再是不知道怎样用,而变为遇到一个问题时,总是想到状态机是否能解决这个问题。我想这也是自己在这方面踏出的第一步吧。除了这两点外,让我感触很大的就是除法器的编写,以前在单片机中,用到除法,只需要一个符号:“/”就能搞定,但是,现在让自己写一个除法器,要弄懂它的原理,这让我意识到,往往看起来很简单的一件事,在其背后,总有许多需要我们去挖掘或者说是去认识和学习的地方。除此之外,我?#33455;?#26377;几种编程技巧挺不错的,例如:“Wire    keysign=cnt[19]”这种置标志位的方法,只有当位宽为19的寄存器“cnt”计数计满时,keysign才变为1,同时只保留一个周期,而寄存器“cnt”计满后,自动清零,当下次计满时,keysign才再次被赋值为1;这在矩阵键盘的扫描中,是非常重要的。还?#33455;?#26159;移位寄存器的应用,包括位拼接等等,都挺经典的。

             在学习的过程中,通过学习到的这几种相对较好的编程方法后,我也意识到了自己在学习中的一些不正确的思想,如:以前总?#33455;?#26082;然是?#21019;?#30721;的,最好还是自己写,这样才比较好,照着别人写好的代码看,?#33455;?#22909;像少点什么似的,这可能是心理作用在做怪,而这几?#25991;?#22359;写下来,自己体悟挺深的,刚开始总是自己想着写,进度不仅慢,效率也不是很高。这让我郁闷不已,后来看别人都是看着别人的代码改写的,我想了挺多的。看别人的代码,能看懂其实也是一种本事,作为初级者,首先就是一个学习的过程,不可能什么东西都是“自来熟”,只有先学习别人的长处,掌握了一定的基础,才能去创新。这一点,在我看了网上一些人写的代码后更加相信:大多数的基本模块代码,大家的编程思路都是非常一样。只有在编写一些大型的代码时,才会在原有的基础?#20808;?#36827;行改进和融合。而这些技能离不开平时的积累。

             关于以上的总结,我相信在以后的学习中一定会对自己有莫大的帮助,它会时刻警醒自己,在以前的学习中,自己有哪些不足,以后千万不能再去犯同样的错误,不?#31995;?#32416;正,不?#31995;?#36827;步,相信自己一定会学好FPGA的。

       

      发表评论】【告诉好友】【收藏此文】【关闭窗口

      文章评论

      相关文章

      青海11选5app下载

        
        
        1. <em id="3qmea"><ol id="3qmea"></ol></em>
        2. <em id="3qmea"></em>

            
            
            1. <em id="3qmea"><ol id="3qmea"></ol></em>
            2. <em id="3qmea"></em>
              2012年3d彩票走势图 香港赛马会官方网址下载 香港码报网址 中国体彩网上投注 河南11选5基本走势图 36选7开奖结果玩法 网赌快三庄家控制开奖结果 贵州11选5走试图 体彩青海11选5 腾讯欢乐升级老版本 110期小龙女心水论坛 福建31选7规则 彩票软件编程 福彩新快3 淘宝销量预测