(玩电子) 电子技术学习与研究
当前位置单片机教程网 >> MCU设计实例 >> 浏览文章

分享一些FPGA学习的经验

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

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

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

1.      不会总结

2.      学习的己习惯没养成

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

图一非阻塞赋值 

 

图二阻塞赋值

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

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

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

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

 

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

文章评论

相关文章

ձһhƬձƵ ձƵɫwww ձƵ:ɫ